ECS 036B: Software Development & Object-Oriented Programming in C++

Subject
ECS 036B
Title
Software Development & Object-Oriented Programming in C++
Status
Active
Units
4.0
Effective Term
2018 Fall Quarter
Learning Activities
Lecture - 3.0 hours
Discussion - 1.0 hours
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. Not open for credit to students who have taken ECS 032B, 032C, 034, previous ECS 040 or ECS 060. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
ECS 030 C- or better or ECS 036A C- or better
Credit Limitation
Not open for credit to students who have taken ECS 032B, ECS 032C, ECS 034, previous ECS 040 or ECS 060.
Enrollment Restrictions
Pass One open to Computer Science, Computer Science & Engineering, and Computer Engineering majors only. Pass Two open to Computer Science, Computer Science & Engineering, Computer Engineering, Applied Physics, and Cognitive Science majors only.

Summary of Course Contents

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

Illustrative Reading
Stanley Lippman, Josee Lajoie, and Barbara Moo: C++ Primer, 5th ed., Addison-Wesley, 2013. 

GE3
Science & Engineering

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

Course Category