![]() |
The C++ Programming Language, 3rd Edition, Bjarne Stroustrup, 1997 Addison-Wesley. |
This course is a comprehensive introduction to object-oriented software development in the C++ programming language. The fundamentals of object-oriented design and programming are presented and related to features of C++. The syntax and behavior of C++ language elements and idioms are illustrated through discussion and demonstration.
The lectures cover the principles and techniques of object-oriented design and programming, notation used in object modeling, C++ class and interface design and construction. Specific language topics such as data types, variables, pointers, arrays, storage classes, function call convention, references, execution control, overloading, virtual member functions, single and multiple inheritance, member access control, "Orthodox Canonical Form", templates, the STL, and exception handling are covered. Topics in OO-Analysis and OO-Design include object identification, classification, CRC, use cases, UML and the iterative/incremental development cycle. As time permits, the course may also address related topics such as C++/Java contrasts, building on application frameworks, design patterns, or multithreaded programming.
This course is best suited to students with previous structured programming experience. Although the course covers much of C as background for C++, students with experience in C will be better able to focus on the OO/C++ aspects of the material.
Class meetings take the form of lectures and discussion. In addition to the lecture material, the course uses handouts, weekly reading assignments, and design and programming exercises.
Students are welcome to use any C++ compiler for the programming coursework, provided it supports current ANSI/ISO standards such as the Standard Template Library (STL) and exceptions. The instructor recommends Microsoft Visual C++ v6.0 or the latest version of GNU C++, both of which meet this requirement.
Week
|
Date | Lecture | Homework | Reading |
1
|
9/11 | 1 | HW1, due week 2 | Chapters 1, 2 |
2
|
9/18 | 2 | HW2, due week 3 | Chapter 3 |
3
|
9/25 | 3 | HW3, due week 4 | Chapter 23 |
4
|
10/2 | 4 | HW4, due week 5 | Chapters 4, 5, 6.2-6.6 |
5
|
10/9 | 5 | HW5, due week 6 | Chapter 7 |
6
|
10/16 | 6 | Prepare for Mid-Term | Review Chapters 1-7 and Lecture Notes |
7
|
10/23 | Mid-Term Exam | ||
8
|
10/30 | 7 | HW6, due week 9 | Chapter 10 |
9
|
11/6 | 8 | HW7, due week 10 | Chapter 11, 12 |
10
|
11/13 | 9 | HW8, due week 11 | Chapter 13 |
11
|
11/20 | 10 | Prepare for Presentation | Chapter 14, 16 |
12
|
11/27 | Thanksgiving Holiday | ||
13
|
12/4 | Project Presentations | Chapter 15 | |
14
|
12/11 | 11 | Prepare for Final | Review Chapters 10-16 and Lecture Notes |
15
|
12/18 | Final Exam |
Grades for the course are broken down as follows:
Homework | 100 points |
Mid-term exam | 100 points |
Final exam | 100 points |
Project | 200 points |
Total | 500 points |
Letter grades will be given as follows:
Point total | Letter Grade |
450-500 | A |
425-449 | A- |
400-424 | B+ |
375-399 | B |
350-374 | B- |
325-349 | C+ |
300-324 | C |
250-299 | C- |
Lecture 1 - Object-Oriented Principles
OO contrasted with conventional approach. Concepts of class, objects, encapsulation,
inheritance, polymorphism and overloading introduced. Code organization basics.
Reading:
Assignment: Hello World!
Lecture 2 - OO Software Development (1) - Process
Object-oriented "programming-in-the-large", overview of techniques and steps
in analysis and design. Using Use Cases to capture and document software
requirements.
Reading:
Assignment: Project Use Cases
Lecture 3 - OO Software Development (2) - Using
UML
The Unified Modeling Language (UML). Using Rational Rose to create
analysis and design models. Automatic code generation and Reverse engineering.
Class Responsibilities and Collaboration (CRC) exercise on term project.
Reading:
Assignment: Project Analysis model
Lecture 4 - Core C++ (1)
Language fundamentals: data types, variables, pointers, arrays, statements,
expressions and operators. Execution control. Defining functions, argument matching.
Reading:
Assignment: Dates and pointers
Lecture 5 - Core C++ (2)
Closer look at OO fundamentals mapped to specific C++ features: the class, access
control, inheritance, overloading and polymorphism. The Minefield
game.
Reading:
Assignment: Extending Minefield
Lecture 6 - Core C++ (3)
Constructors and destructors introduced. Storage types. Argument passing conventions.
Const. Standard library introduced; vector and string classes.
Reading:
Assignment: Fractions
Lecture 7 - The C++ Class (1)
Designing the class. Embedding objects vs. pointers to objects.
Virtual member functions. Abstract base classes, inline, "this" pointer.
The "shapes" program.
Reading:
Assignment: review for midterm.
Mid-term exam
Lecture 8 - The C++ Class (2)
Inheritance access specification, "Orthodox Canonical Form": defining the class
ctor, dtor, copy ctor and assignment operator. User-defined conversions.
Reading:
Assignment: Project Object Model
Lecture 9 - Templates, Generic Programming
Function and class templates, generic programming.
Reading:
Assignment: Integer stack
Lecture 10 - The C++ Standard Library
Stream-based I/O; The Standard Template Library (STL) - Template-based container
classes, generic algorithms, auto_ptr
Reading:
Assignment: TBD
Lecture 11 - Design Patterns
Motivation for and introduction to Design Patterns. Implementation
of design patterns in C++
Reading:
Assignment: TBD
Lecture 12 - Odds & Ends
Design and use of C++ exceptions. Multiple inheritance. Run-time type
information (RTTI), C++ casts.
Reading:
Assignment: finish projects, prepare for presentations.
Lecture 13 - Project Presentations
10-15 minute presentations of project design, implementation, and operation.
Discussion of lessons learned, design
Reading:
Projects due.
Assignment: review for final exam.
Final Exam