This course teaches advanced programming techniques to those who have learned basic programming concepts and are ready to learn in-depth programming. It focuses on object-oriented programming using C++. The main concepts discussed are: Objects, Data Abstraction, Data Encapsulation, Polymorphism, and Inheritance. We teach the C++ language constructs that are used to implement these concepts. For example, Classes, Overloaded Operators, Overridden Methods, Friend Functions, Virtual Functions, and Templates, etc.
Core/Elective
Core
Pre-requisites
Proficiency in C language programming (pointers, arrays, file I/O, dynamic memory allocation, etc.)
Reasonable knowledge of lists, structures, sorting, stylized programming
(NOTE: CS 192 should be good enough)
Goals
Become familiar with breaking down a problem into objects rather than procedures
Learn object-oriented programming in C++
Learn what is available off the shelf to facilitate C++ development (tools, libraries)
Why C++?, OOP Overview, Classes, Members, Procedures versus Objects, E1* given
Class Design, Data Modeling, PA1* given, E2 given
Introductory STL, iterators and containers
Overloading, E3 given
Inheritance, PA2 given, E4 given
Midterm
Virtual Methods. Abstract classes, Destruction, and Polymorphism, E5 given
Stream I/O in C++, PA3 given
Templates, STL Details, E6 given
Exception Handling
* E1 indicates Exercise 1