| 
   Catalog Description: 
   | 
  
   Builds
  on foundation provided by CMPS221 to introduce the concepts of  object-oriented programming. The course
  focuses on the definition and use  of
  classes and the fundamentals of object-oriented design. Other topics  include an overview of programming
  language principles, basic searching 
  and sorting techniques, and an introduction to software engineering
  issues. 
   | 
 
 
  | 
   Prerequisite: 
   | 
  
   CMPS 221 
   | 
 
 
  | 
   Units: 
   | 
  
   5 
   | 
 
 
  | 
   Coordinator: 
   | 
  
   Donna Meyers 
   | 
 
 
  | 
   Goals/Objectives: 
   | 
  
	
	   - 
		To gain an in depth understanding of object-oriented programming and design concepts
	   
 - 
		To design and implement a software project involving multiple files and classes using
		formal software engineering strategies
	   
 - 
		To be introduced to searching and sorting algorithms and linked structures
	   
 - 
		To enhance the problem solving and debugging skills learned in 221 
	   
 
	 
   | 
 
 
  | 
   Current Text(s): 
   | 
  
   Deitel and Deitel. C++: How to Program (4th edition) 
   | 
 
 
  | 
   Topics: 
   | 
  
	
	   - 
		(PF1) Review of basic syntax, semantics, data types, operations,
		control structures, functions, parameter passing, pointers 
	   
 - 
		(PL1) Differences and trade-offs between procedural and object-oriented language paradigms 
		(PF2) Problem-solving and debugging strategies for larger projects 
	   
 - 
		(PL6) OO design; encapsulation and information-hiding; separation of behavior and
		implementation; classes, subclasses, and inheritance; polymorphism; class hierarchies;
		templates; STL; iostreams; exception handling 
	   
 - 
		(PF3) Implement simple linked structures 
	   
 - 
		(AL3) Implement simple searching and sorting algorithms: linear search, recursive binary search 
	   
 - 
		(SE1) Design and implement a large project using software engineering strategies 
	   
 - 
		(HC1) Design and implement a good user interface; implement usability testing 
	   
 
	 
	
   | 
 
 
  | 
   ACM Sub Areas or Units Covered: 
   | 
  
   
	| 
 		(PF1) Fundamental programming constructs
	 | 
		.20  
	 |  
	| 
		(PL1) Overview of programming languages
	 | 
		 .10 
	 |  
	| 
		(PF2) Algorithms and problem-solving
	 | 
		.20  
	 |  
	| 
		(PL6) Object-oriented programming
	 | 
		3.5
	 |  
	| 
		(PF3) Fundamental data structures
	 | 
		.25  
	 |  
	| 
		(AL3) Fundamental computing algorithms
	 | 
		.25  
	 |  
	| 
		(SE1) Software design
	 | 
		.25  
	 |  
	| 
		(HC1) Foundations of human-computer interface
	 | 
		.25  
	 |  
      
	PL: Programming Fundamentals    AL: Algorithms and Complexity    
	SE: Software Engineering    HC: Human-Computer Interaction
   | 
 
   | 
	Laboratory:
   | 
  
	The laboratory session will parallel the lectures, providing
	students with the opportunity to develop algorithms and problem-solving skills 
   | 
 
 
  | 
  Oral and Written Communication:
   | 
  
	Assigned work requires written documentation.
   | 
 
 
  | 
  Social and Ethical Issues:
   | 
  
  	Briefly covered, Plagiarism punished. 
   | 
 
 
  | 
	Problem Analysis:
   | 
  
 	Maximal (use case plus conceptual models).
   | 
 
 
  | 
	Solution Design:
   | 
  
 	Strong emphasis on OO design using UML, Standard data structures and
  algorithms
   | 
 
 
  | 
	Version & Date:
   | 
  
	Version 1, 5/9/2003
   | 
 
 
  | 
	Comments:
   | 
  
  	The first draft based on ACM curricula 2001 in the format of ABET sample
  course description.
   |