Computer Programming II
Course Preface
Printable Version (pdf)

Course Description

Core Standards of the Course

Standard 1
Students will develop applications which make advanced use of the skills and concepts developed in Computer Programming IA & IB.

Objective 1
Demonstrate the ability to develop advanced applications.

1. Develop advanced applications using input, calculations, and output.
2. Develop advanced applications using control structures.
3. Develop advanced applications in object-oriented programming.
4. Develop advanced applications using data structures
5. Develop advanced applications using files (sequential files).

Objective 2
Utilize recursive algorithms

1. Analyze and solve recursive methods
2. Utilize recursive algorithms to solve a problem
3. Identify the base case, recursive case, and action of each recursive function
4. Understand the use of a recursive helper function

Objective 3

1. Understand and create overloaded methods.
2. Create and use overloaded operators (C++).

Standard 2
Students will use searching and sorting algorithms.

Objective 1
Demonstrate the ability to search data structures in programs.

1. Develop a binary search.
2. Compare efficiency of sequential and binary searches.

Objective 2
Demonstrate the ability to sort data structures in programs.

1. Sort arrays using the selection sort algorithm.
2. Sort arrays using another sorting algorithm (insertion, merge, quick, heap, bubble).
3. Compare the efficiency of differing sorting algorithms.

Standard 3
Students will utilize multidimensional arrays.

Objective 1
Utilize multidimensional arrays.

1. Initialize arrays.
2. Input data into arrays.
3. Output data from arrays.
4. Perform operations on arrays.
5. Perform searches on arrays.

Standard 4
Students will properly employ dynamic data structures and abstract data types (ADTs).

Objective 1
Demonstrate the ability to use stacks in programs.

1. Declare stack structures.
2. Initialize stacks.
3. Check for empty and full stacks.
4. Push on to and pop off values from stacks.
5. Develop an application that utilizes stacks.

Objective 2
Demonstrate the ability to use queues in programs.

1. Declare queue structures.
2. Check for empty and full queues.
3. Initialize queues.
4. Enqueue values on to and dequeue values off of queues.
5. Develop an application that utilizes queues.

Objective 3
Demonstrate the ability to use maps.

1. Define a hashing algorithm and what makes a good hash.
2. Understand collisions and how they are handled.
3. Declare a map structure.
4. Determine whether a key exists in the map.
5. Assign a value to a given key in the map.
6. Retrieve values using a key.
7. Develop an application that utilizes maps.

Objective 4
Utilize type-safe data structures (generics or templates)

1. Utilize data structures that are type-safe using generics or templates.
2. Understand how type-safe data structures prevent errors.
3. Optional — Demonstrate how to create a template or generic class.

Standard 5
Students will design and implement advanced objected oriented concepts.

Objective 1
Implement object oriented programs

1. Create classes that have high cohesion and low coupling.
2. Understand and use composition and aggregation (HAS-A) relationships.
3. Understand the use of class variables (static variables).

Objective 2
Implement Inheritance in an objected oriented program.

1. Utilize class hierarchies (parent-child relationships).
2. Understand IS-A Relationships.
3. Override methods. Understand how to call the overriding method from the child.
4. Understand the protected modifier
5. Call a parent class constructor from the child's constructor

Objective 3
Create and use Abstract Classes

1. Create and implement abstract classes
2. Implement interfaces (purely abstract classes).
3. Abstract classes

Objective 4
Implement polymorphism

1. Demonstrate the use of abstracting a child instance as a parent instance.
2. Determine IS-A relationships at run-time.

Objective 5

Standard 6
Students will use Unified Modeling Language (UML) to design object oriented programs

Objective 1
Demonstrate the use of an Activity Diagram.

1. Create an activity diagram to flow-chart how an algorithm works.
2. Translate an activity diagram to code.

Objective 2
Demonstrate the use of a Use Case Diagram.

1. Design a class diagram for the class hierarchy of a program.
2. Translate a class diagram into code.

Objective 3
Show how to use a Sequence Diagram

1. Define how objects communicate via a sequence diagram
2. Show how a class diagram's message relates to a function call

Standard 7
Students will develop an individual program of significant complexity and size (300-500 lines) and portfolio of their work.

Objective 1
Create an individual program of significant complexity and size (300-500 lines).

1. Create a UML diagram for the project
2. Organize the project in modular programming.

Objective 2
Compile a portfolio of the individual and group programs developed.

1. Include sample design work
2. Include sample program source code and output

Standard 8
Students will participate in a work-based learning experience and/or competition.

Objective 1
Participate in a work-based learning experience.

1. Take a field trip to a software engineering firm
2. Participate in a Job shadow
3. Work an Internship
4. Listen to an Industry guest speaker or posst-secondary guest speaker
5. Intverview with an industry representive
6. Participate in a competition

These materials have been produced by and for the teachers of the State of Utah. Copies of these materials may be freely reproduced for teacher and classroom use. When distributing these materials, credit should be given to Utah State Office of Education. These materials may not be published, in whole or part, or in any other format, without the written permission of the Utah State Office of Education, 250 East 500 South, PO Box 144200, Salt Lake City, Utah 84114-4200.