Catalog Description

An introduction to object-oriented techniques of software development including data abstraction, inheritance, poly- morphism, and object-oriented design. Extensive practice using a computer to solve problems, including construction of graphical user interfaces and a multi-threaded client/server applications.

Basic Information

  • Course Title: Advanced Programming (CMPS 109)
  • Prerequisites: Introduction to Programming and Data Structures (CMPS 13H), or Introduction to Data Structure/ Data StructuresLab (CMPS 12B/ CMPS 12M).
  • Lectures: TuTh 01:30 PM - 03:05 PM (Steven Acad 175)
  • Instructor: Dr. Karim Sobh (
  • TAs:

Karthik Mohan Kumar (, Office Hours: 10:00-11:30 MWF.

Sharath TS (, Office Hours: 9:30-11:30 W, 15:00-17:00 Th.


Textbooks and References

It is required to use the first book, and any C++ book or reference not discussing C++11 should be considered obsolete. We will also cover some material from the last book, Grady Booch, related to the OO design notation. you can use also any of the listed references as complementary sources.

  1. Bjarne Stroustrup : Programming Principles and Practice Using C++, second edition. Addison-Wesley, 2014. ISBN 0-321-99278-4. This is an elementary textbook for a first course in C++. The previous edition will also work, or any other C++ textbook you may already have. It is strongly recommended that you read a book advertising the use of C++11. Any C++ book not discussing C++11 should be considered obsolete.
  2. Paul Deitel and Harvey Deitel: C++ How to Program (Early Objects Version), Prentice Hall, 9th edition (Febru- ary 22, 2013), ISBN-13: 978-0133378719.
  3. Bjarne Stroustrup: The C++ Programming Language (4th Edition), Addison-Wesley Professional, 4th edition (May 19, 2013), ISBN-13: 978-0321563842.
  4. Stanley B. Lippman, Josee Lajoie, Barbara E. Moo: C++ Primer, 5th edition. Addison-Wesley, 2013. A good primer discussing C++11.
  5. Frank B. Brokken: C++ Annotations Version 10.5.0, Center of Information Technology, Published at the Uni- versity of Groningen, ISBN 9036704707,
  6. Nicolai M. Josuttis : The C++ Standard Library, 2nd edition : A Tutorial and Reference. Addison-Wesley, 2012. A specific tutorial on the library, with C++11
  7. Bjarne Stroustrup FAQs
  8. P.J. Plauger, Alexander Stepanov, Meng Lee, David Musser : The C++ Standard Template Library. Prentice- Hall, 2001. Detailed description of the implementation of the STL, showing detailed code examples.
  9. Grady Booch et al.: Object-Oriented Analysis and Design with Application,  Third Edition. Addison-Wesley, 2007. ISBN-13: 978-0201895513.

Course Goals

  1. Understand the basic object-oriented programming concepts.
  2. Understand the basic object-oriented modeling concepts.
  3. Develop hands-on experience in advanced object-oriented programming.
  4. Understand the importance of code reuse.
  5. Be able to design and implement a medium-sized object-oriented software.


Major Topics Covered

The course is mainly about object-oriented programming and design using C++/C++11.

  1. Fundamentals: C vs. C++, Declaration and Definition, Data Types, Function calls and Return Values, Pointers to functions, Order Evaluation, Memory Allocation, Code Organization, make files and compilers.
  2. Standard Library: Containers and Iterators.
  3. Object-Oriented Programming in C++: Main, OO Characteristics, Classes, Objects, Constructors, Inheritance, Virtual Methods and Polymorphism, Virtual Methods, Templates, Exception Handling, Operator Overloading, Static Methods, and Virtual Tables.
  4. Object-Oriented Design and Modeling: CASE-Tools, UML, Booch, OO Design and Modeling Process and Diagrams.
  5. GUI: QT UI Components, Signal/Slot Communication Model.
  6. Multithreading and Concurrency: C++11 Native Multi-threading, POSIX Threads, and QT Threads.
  7. Networking APIs: BSD Sockets.