ECE 39595 - Object-Oriented Programming with C++

Note:

CMPE students may only take this course or ECE 39595 Object Oriented Programming with Java as a CMPE Selective.

Course Details

Lecture Hours: 3 Credits: 3

Counts as:

  • EE Elective
  • CMPE Selective

Experimental Course Offered:

Fall 2020

Requisites:

ECE 20875 and EE 26400

Requisites by Topic:

Programming ability, pointers, memory allocation, objects

Catalog Description:

This course teaches C++ and the principles object oriented programming using Java. It covers the basics of the C++ language, including inheritance, virtual function calls and the mechanisms that support virtual function calls. Design patterns and general principles of programming will be covered. If Object-Oriented Programming with Java is also taken, only one will count toward BSCmpE degree credits as a CmpE Selective.

Required Text(s):

  1. C++ Crash Course: A Fast-Paced Introduction , Lospinoso, Josh , No Starch Press , 2019 , ISBN No. 13: 978-1593278885
  2. Head First Design Patterns , 1st Edition , Eric Freeman, Elisabeth Robson, Bert Bates and Kathy Sierra , O'Reilly Media , 2004 , ISBN No. 13: 978-0596007126
  3. The Pragmatic Programmer: From Journeyman to Master , 1st Edition , David Thomas and Andrew Hunt , Addison-Wesley Publishing Co. , 1999 , ISBN No. 13: 978-0201616224

Recommended Text(s):

  1. Refactoring: Improving the Design of Existing Code , 2nd Edition , Martin Fowler , Addison-Wesley Publishing Co. , 2018 , ISBN No. 978-0134757681
  2. The Clean Coder , 1st Edition , Robert C. Martin , Prentice Hall , 2011 , ISBN No. 978-0132542913

Learning Outcomes:

A student who successfully fulfills the course requirements will have demonstrated:
  1. the ability to analyze a specification and develop a significant C++ program that meets those specifications. [1]
  2. the ability to apply a design pattern to a particular problem. [2]
  3. an understanding of basic Object Oriented concept of classes, objects, inheritance and polymorphism. [1]
  4. the ability to implement a properly synchronized multithreaded program. [1]

Lecture Outline:

Lectures Lecture Topics
1 Overview, quick test on sobjects and virtual function calls
1 virtual and non-virtual functions
1 Constructors, destructors and call order
1 Protection levels and access levels
2.5 Abstract classes and interfaces; Parameter passing and casts, references, copy constructors
1 Function resolution and containers
1 Friend functions and operator overloading
1 Exceptions; Multithreading
1 Templates
2 Ivalues and rvalues, other kinds of constructors
.5 Linkers and loaders
2 Exams

Engineering Design Content:

  • Synthesis
  • Analysis
  • Construction
  • Testing

Engineering Design Consideration(s):

  • Economic

Assessment Method:

Exams, quizzes, projects, homework