Carnegie Mellon University

Object Oriented Programming - C++


Roger Dannenberg

Number of Lectures


Course Description

This course builds on the first year’s programming foundation and focuses on both the topics and methods needed to build larger and more complex systems, while adding more tactical methods and techniques required to produce correct and effective applications. The first part of this course will be dedicated to the production of a simple unlimited precision math programming language system.  This will be done in three increments while the student learns a new programming language (e.g. C++ or C#), as well as the use of tools common is software development.  Since the new language is similar to the JAVA language from the first year, the student is expected to learn the language in just a few lectures supported by a series of individual readings and exercises.  The remaining time will be spent on implementing a project-planning tool that extends and builds upon the time card tool they implemented in the Fundamentals of Computing 2 and provides support for a number of simultaneous users.

The course covers the following topics:
Programming Skills in C++ or C#; introduction to a web-programming language and database query language, software tools, develop large and complex systems with source and version control, automated build and test, bug tracking, software notations including: BNF, regular expressions, UML, software tools and prototype, design patterns, databases, middleware, servers, designing and implementing systems using well-known design patterns, algorithms, and data structures, standalone applications, shared data applications, distributed applications, thin and thick clients, and the performance and other non-functional trade-offs.



Recommended Textbook

Mark Allen Weiss, C++ for Java Programmers