ECS 36B Software Development and Object-Oriented Programming (4 units)

Lecture: 3 hours
Discussion: 1 hour

Catalog Description:

Object-oriented programming in C++. Basic data structures and their use. Writing good programs of increased complexity and efficiency. Methods for debugging and verification.


ECS 030 C- or better or ECS 036A C- or better

Credit restrictions/cross listings:

Not open for credit to students who have taken ECS 034, previous course ECS 040 or ECS 060.

Summary of course contents

Object-Oriented Programming and the C++ Language.
Object-oriented design and implementation, polymorphism, operator overloading, encapsulation, derivation, exceptions.

  1. Programming in C
  2. Basic syntax and difference of C and other languages, including Python, and semantic differences of C with C++
  3. Data types: single and multidimensional arrays, character strings, structs.
  4. Use of system files such as library and “include” files
  5. Pointers and dynamic memory allocation.
  6. Functions: declaration and calls, & and * operators, parameters, function call stacks.
  7. Function pointers and inversion of control
  8. Software Engineering & Tools
  9. Integrated Development Environments
  10. Debugging techniques, especially using UNIX debugging aids such as gdb/ddd.
  11. Version Control
  12. Unit Testing (e.g. GoogleTest)
  13. Program development using third party libraries, and use of the UNIX “make” program to organize them.
  14. Function pointers and inversion of control
  15. Advanced Programming Concepts in C++
  16. Singly-and doubly-linked lists, recursion, and, if time permits, one or more topics chosen from: binary trees, stacks, queues
  17. Templates and the Standard Template Library
  18. Modern C++


Illustrative reading

Stanley LippmanJosee Lajoieand Barbara Moo: C++ Primer, 5th ed., Addison-Wesley, 2013. 

Engineering Design Statement:


ABET Category Content:




Science & Engineering


ECS 36B/40 and ECS 34 both cover object-oriented programming. 

Instructors: Staff





Added 9.4.2018 (CSUGA)