CP1A+Standards+&+Objectives

(2006 June Version)
 * Computer Programming IA**


 * Grade Levels: 10-12**
 * Units of Credit: .5**
 * CIP Code: 11.0201**
 * Prerequisites:** **Algebra I, Keyboarding Proficiency, and Computer Technology (Computer Literary)**
 * Skill Certification Exam: #802**


 * COURSE DESCRIPTION**

An introductory course in computer programming/software engineering and applications. The course introduces students to the fundamentals of computer programming. Students will learn to design, code, and test their own programs while applying mathematical concepts. It is recommended that teachers introduce programming concepts and problem solving skills to beginning programming students through high interest programs such as Lego robots, Alice, Java Script or KPL followed by an introduction to C++, Visual Basic or Java.


 * COURSE STANDARDS AND OBJECTIVES**


 * STANDARD**
 * 110201-01** Students will be familiar with and use a programming environment.

__**OBJECTIVES**__ 110201-01__01__ Demonstrate knowledge of external and internal computer hardware.
 * Describe the functions of basic computer hardware devices (monitor, system board, printer, CD-ROM drive, hard drive, floppy drive, keyboard, mouse, adapters, ports, other devices).
 * Describe the functions of the internal components of computers (CPU, RAM, ROM, registers, ALU).
 * Translate to and from binary code (Computer number systems).

110201-01__02__ Demonstrate knowledge of software concepts.
 * Define computer software.
 * Explain the process of software installation.

110201-01__03__ Develop the ability to use a current operating system.
 * Demonstrate how to load, save and back up files.
 * Demonstrate how to rename and delete files.
 * Demonstrate how to move, copy and compress files.
 * Demonstrate how to display and print files.
 * Demonstrate the ability to manage files on a PC and network.
 * Create Folders
 * Create and use appropriate directory and path structures
 * Copy files between folders
 * Understand the organization of files on a hard drive and a network
 * Demonstrate how to execute a program.

110201-01__04__ Demonstrate the ability to use the editor to enter programs.
 * Demonstrate how to enter text and commands.
 * Demonstrate the process of selecting a block of text.
 * Demonstrate how to move blocks of text.
 * Demonstrate how to copy blocks of text.
 * Demonstrate how to delete blocks of text.

110201-01__05__ Demonstrate the ability to compile, debug and execute programs.
 * Demonstrate how to use the editor to compile and run programs.
 * Understand the difference between syntax, run-time, and logic errors.
 * Demonstrate how to debug programs.


 * STANDARD**
 * 110201-02** Students will employ accepted programming methodology.

__**OBJECTIVES;**__ 110201-02__01__ Demonstrate the ability to use good programming style.
 * Demonstrate how to use white space properly.
 * Employ the use of case-sensitive commands for clarity.
 * Construct programs with meaningful identifiers.

110201-02__02__ Employ the proper steps to programming in order.
 * Prepare specifications for computer programs.
 * Design solutions using algorithms such as flow charts, pseudocode, UML, N-S charts.
 * Develop the code for a program.
 * Test programs for effectiveness and completeness.
 * Provide full documentation for a program.

110201-02__03__ Employ proper program design process.
 * Use step-wise refinement (top-down design) in programming.
 * Employ program modularity in writing programs.
 * Produce logical algorithms to solve problems with a computer program.

110201-02__04__ Demonstrate the ability to program for automatic error checking (robustness).
 * Explain how to protect program execution from incorrect input.
 * Describe how to protect program execution from run-time errors.
 * Employ verification to protect program results from logic errors.


 * STANDARD**
 * 110201-03** Students will properly use language-fundamental commands and operations.

__**OBJECTIVES:**__ 110201-03__01__ Demonstrate the ability to use basic elements of a specific language.
 * Write programs using a language-specific template.
 * Declare and assign values to constants and variables in programs.
 * Output text with formatting.
 * Demonstrate how to pause programs in order to view the output.
 * Demonstrate the ability to use input/output commands in programs.
 * Input values into identifiers.
 * Output values stored in identifiers.

110201-03__02__ Employ arithmetic expression in programs.
 * Arithmetic operators.
 * Unary operators.
 * Modulus division.
 * Integer division.
 * Order of operators.

110201-03__03__ Demonstrate the ability to use atomic data types in programs.
 * Declare and use integer identifiers.
 * Declare and use character identifiers.
 * Declare and use floating point (real) identifiers.
 * Declare and use Boolean identifiers.
 * Declare and use constants.

110201-03__04__ Demonstrate the ability to use strings in programs.
 * Declare string identifier.
 * Input string identifiers.
 * Output string identifiers.


 * STANDARD**
 * 110201-04** Students will properly employ control structures.

__**OBJECTIVES:**__ 110201-04__01__ Demonstrate the ability to use relational and logical operators in programs.
 * Compare values using relational operators.
 * Form complex expressions using logical operators.

110201-04__02__ Demonstrate the ability to use decisions in programs.
 * Employ simple IF structures.
 * Use IF-ELSE structures.
 * Write programs with nested IF-ELSE structures.
 * Make multiple-way selections (switch, case).

110201-04__03__ Demonstrate the ability to use loops in programs.
 * Use initial, terminal, and incremental values in loops.
 * Construct both pre-test and post-test loops.
 * Demonstrate how to use counted loops.
 * Describe the use of flagged (sentinel-controlled) loops.
 * Utilize nested loops.
 * Explain how to avoid infinite loops.
 * Accumulate running totals using loops.

110201-04__04__ Demonstrate the ability to use sub-programs in programs.
 * Demonstrate how to use language-predefined sub-programs.
 * Call sub-programs.
 * Develop sub-programs.
 * Send to and retrieve data from sub-programs.
 * Utilize value, constant, and reference parameters.
 * Understand the scope of identifiers in sub-programs.


 * STANDARD**
 * 110201-05** Students will demonstrate knowledge of current ethical issues dealing with computers and information in society.

__**OBJECTIVES;**__ 110201-05__01__ Demonstrate knowledge of programmer ethics.
 * Show knowledge of the importance of correct programming.
 * Check for program correctness using verification.
 * Know proper and improper standards in programming.

110201-05__02__ Demonstrate knowledge of the social and ethical consequences of computers.
 * Describe how computer-controlled automation affects workers and management.
 * Explain the ramifications of society's dependance on computers.
 * Identify advantages and disadvantages of changing workplace environments.

110201-05__03__ Demonstrate knowledge of the right to privacy.
 * Explain how computers can compromise privacy.
 * Exhibit knowledge of privacy laws.
 * Describe responsibilities of people who control computer information.

110201-05__04__ Demonstrate knowledge of computer, information and software security.
 * Exhibit knowledge of copyright laws.
 * Explain how computers can be used to compromise copyright laws.
 * Give examples of ways to protect information on computer systems.
 * Identify ways to protect against computer viruses.


 * STANDARD**
 * 110201-06** Students will develop an awareness of career opportunities in the Computer Programming/Software Engineering industry and of its history.

__**OBJECTIVES**__ 110201-06__01__ Develop career awareness related to working in the Computer Programming/Software Engineering industry.
 * Identify personal interests and abilities related to Computer Programming/Software Engineering careers
 * Identify personal creative talents
 * Identify technical/programming talents
 * Identify organizational and leadership skills
 * Explore aptitude for innovation
 * Determine aptitude for working as a member of a Computer Programming/Software Engineering team
 * Identify Computer Science career fields
 * Software Engineer
 * Systems Analyst
 * Applications Programmer (Gaming, Multimedia Etc.)
 * Investigate career opportunities, trends, and requirements related to Computer Programming/Software Engineering careers
 * Identify the members of a Computer Programming/Software Engineering team: Team Leader, Analyst, Sr. Developer, Jr. Developer, and Client/Subject Matter Expert
 * Describe work performed by each member of the Computer Programming/Software Engineering team
 * Investigate trends associated with Computer Programming/Software Engineering careers
 * Develop a realistic Student Education Occupation Plan (SEOP) to help guide further educational pursuits
 * Identify factors for employability and advancement in Computer Programming/Software Engineering careers
 * Survey existing Computer Programming/Software Engineering businesses to determine what training is required
 * Survey universities and colleges to determine higher education options
 * Develop employability competencies/characteristics: responsibility, dependability, respect, and cooperation
 * Achieve high standards of personal performance
 * Develop a positive work ethic
 * Compile a portfolio of the individual and group programs developed during the course
 * Discuss relevant history of computer technology and the Computer Programming/Software Engineering industry.