CS162 – Intro to CS II	Updated: June 30, 2010
May 2009
Course Title:	Intro to CS II
Course Number:	CS 162
Credit:	4
Institution:	Clackamas Community College
Outline Developed by:	Nick Molatore
Course Description:
Continuation of CS 161. Effective methods of designing large programs.  Includes elementary and dynamic data structures, recursion, and data abstraction.  An introduction to Object Oriented Programming using C++.  A substantial project will be required.  This course continues to overview of Computer Science started in CS 161.
Expected Student Outcomes: 
	Upon successful completion, the student should be able to
•	Apply syntax learned in CS161 and CS162 to a large programming problem.  
•	Become proficient at writing algorithms and experiment with other forms of design, such as using structure charts or data flow diagrams.  
•	Program using functions with pass by reference, arrays of structures, classes, pointers, dynamic memory, and linear linked lists.  
•	Design solutions to large and complex programming problems.  
•	Debug large programs.  
•	Write technical manuals, such as user’s manuals and external design documents. Understand the purpose of each.  (8C)
•	Describe the use and purpose of functions and recursion.  
•	Describe the importance of desk checking due to logic errors.  
•	Describe the importance of clearly and precisely specifying the requirements of a problem.  
•	Develop a consistent programming style.  
•	Understand data abstraction, separate compilation and the use of library procedures.  
•	Produce meaningful complete software package for an end user. 
Length of Course:
One quarter with 40 lecture hours.
Prerequisite:
CS161
Grading Method:
Letter grades are assigned on the standard 10% increment scale. The course may also be taken as a Pass/No-Pass by prior arrangement only.
Required Texts:
C++ Programming: Program Design Including Data Structures by D. S. Malik. 4th edition

Use of library and information resources is integrated into computer science certificate and degree programs in general education requirements and in computer science classes as relevant to the curriculum. Use of library and information resources is encouraged and students can access a variety of program-appropriate materials via the library's web-based electronic databases and print materials. Instruction in use of library  and information resources is available to all students

Course Outline
I.	Review			2
	A.	Principles of good programming style,  expression and documentation
	B.	Structured coding
	C.	Modularity

II.	Structured Designing		6
	A.	Step wise refinement of program flow and data structures
	B.	Debugging and testing
	C.	Program efficiency
	D.	Recursion
	E.	Pointers and strings
	F.	Structures
	G.	Classes

III	Object Oriented Programming	 8
	A.	Encapsulation with Information Hiding
	B.	Inheritance

III.	Data Structures		 8
	A.	Accessing functions 
	B.	Linear allocation of stacks and queues
	C.	Linked allocation of stacks and simple linked lists
	D.	Dynamically allocated variables 

IV.	Designing a Large Program Such As:		12
	A.	Assembler (one or two pass)
	B.	Small pseudo-operating system
	C.	Machine language interpreter
	D.	Symbol cross reference

V.	Exams and review		4

VI. Labs		30

Total	 70