The primary goal in CS202 is to prepare students for programming in the upper division 3xx and 4xx level classes. To achieve this goal, CS202 focuses on three areas: object oriented programming, advanced C++, and Java.
The majority of the term is spent introducing students to object-oriented programming while learning advanced C++ syntax as well as Java syntax. Students will understand the difference between procedural abstraction and object oriented solutions. Students spend the term designing and programming with inheritance hierarchies, with the goal of solving problems efficiently: producing high quality, robust, maintainable as well as efficient object oriented solutions. This provides students with the chance to experience object oriented design and programming at the same time as becoming better acquainted with advanced data structures. C++ skills developed include:
á Single, multiple, virtual inheritance
á copy constructors
á dynamic binding
á function overloading
á operator overloading
á user defined type conversion
á namespaces
á exception handling
á template introduction
Java skills developed include writing two programs using advanced data structures in Java with strict requirements to follow OOP guidelines Ð all data members private, no friendly access, and complete implementation of functions required to handle issues of deep versus shallow copies and compares. Students learn the relationship between the two languages and the similarity of JavaÕs references to pointers.
Then, the rest of the term compares Java to C++, where we will work through example projects in both languages.
The following are Powerpoint slides that
can be viewed for CS202. Please send email to karlaf@cs.pdx.edu
if you have difficulty viewing these slides. Your feedback is welcome as well!
Slides are available in both HTML as well as downloadable as PPT files:
Topic #1:
Responsibility Driven Design
Topic #3:
Introduction to Inheritance, Copy
Constructors
Topic #4:
Dynamic Binding, RTTI and User Defined Conversion
Topic #6:
Operator Overloading, Operator
Overloading Guidelines
Topic #7:
Friends, Nesting, Static Members, Template Functions & Classes
The following are Lecture Notes that can
be viewed for CS202. Please use the course outline
to determine when this material will be covered in class. Please send email to karlaf@cs.pdx.edu if you have difficulty
viewing these files. Your feedback is welcome as well!
Lecture
Notes #1: Review of ADTs
Lecture
Notes #2: Classes, Copy Constructors
Lecture
Notes#3: Operator Overloading
Lecture
Notes #4: Guidelines to Operator Overloading
Lecture
Notes #5: Single Inheritance
Lecture
Notes #6: Multiple & Virtual Inheritance
Lecture
Notes #7: Dynamic Binding & RTTI
Lecture
Notes #8: User Defined Conversions
Lecture
Notes #9: Friends, Nesting, Static Members
The handouts and assignments for Winter 2006 are:
Syllabus: CS202 Winter
06 Syllabus
Course Outline: CS202 Winter
06 Course Outline
Style Sheets: CS202
Winter 06 Style Sheet, C++ Style
Requirements
Cover Sheet: CS202
Winter 06 Program Cover Sheet
Program #1: CS202
Winter 2006 Program #1
Program #2: CS202
Winter 2006 Program #2
Program #3: CS202
Winter 2006 Program #3
Programs #4 and #5: CS202 Winter
2006 Progs #4 and #5