Computer Science

ECS 34 Software Development in UNIX and C/C++

ECS 34 Software Devleopment in UNIX and C/C++ (4 units)


Lecture: 3 hours

Discussion: 1 hour

Catalog Description:

UNIX Operating system tools and programming environment. Methods for debugging and verification. Principles of C and object-oriented programming in C++. Extensive programming.


ECS 032B C- or better; or Consent of Instructor.

Credit restrictions/cross listings:

Only three units of credit for students who have previously taken ECS 036B.



Summary of Course Content:

  • The UNIX Environment
    • First-level understanding of the nature of UNIX processes and job control
    • UNIX hierarchical file system
    • UNIX utilities, e.g., find, grep, sort, uniq, head
    • Shell scripts
  • Software engineering: running, debugging, testing programs, building quality program using software development tools
    • Debugging techniques, especially using UNIX debugging aids such as gdb/ddd
    • Program development as multi-file modules, and use of the UNIX “make” program to organize them
    • Integrated Development Environments
    • Version Control
    • Unit Testing (e.g. Google Test)
    • Program development using third party libraries
  • Programming in C
    • Basic syntax differences of C other languages, including Python
    • Data structures: single and multidimensional arrays; character strings; structs Use of system files such as library and “include” files
    • Pointers and dynamic memory allocation
    • Function pointers and inversion of control.
  • C++ Topics Pointer manipulation including dynamic memory allocation
    • Linked lists
    • Advanced object-oriented programming: Polymorphism and operator overloading
    • Templates and the Standard Template Library
    • C++11
  • Analysis of Graph Algorithms
    • Critical path analysis, depth-first search, shortest path, minimum spanning tree, and network flow

Illlustrative Reading:

C++ Primer, Fifth Edition, by Stanley B. Lippman, Josee Ltajoie, and Barbara E. Moo.

1. Getting Started. 2. Variables and Basic Types. 3. Strings, Vectors, and Arrays. 4. Expressions. 5. Statements. 6. Functions. 7. Classes. 8. The IO Library. 9. Sequential Containers. 10. Generic Algorithms. 11. Associative Containers. 12. Dynamic Memory. 13. Copy Control. 14. Overloaded Operations and Conversions. 15. Object-Oriented Programming. 16. Templates and Generic Programming. 17. Specialized Library Facilities. 18. Tools for Large Programs. 19. Specialized Tools and Techniques


Science & Engineering

ABET Category Content:


This course is a non-major analog of ECS 036B and will overlap significantly in concepts. ECS 34 introduces UNIX and analysis of graph algorithms, which is not covered in ECS 036B.