ECS 034: Software Development in UNIX & C++

Subject
ECS 034
Title
Software Development in UNIX & C++
Status
Active
Units
4.0
Effective Term
2021 Winter Quarter
Learning Activities
Lecture - 3.0 hours
Discussion - 1.0 hours
Description
UNIX Operating system tools and programming environment. Methods for debugging and verification. Principles object-oriented programming in C++. No credit to students who completed ECS 036B, ECS 036C, ECS 040, or ECS 060. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
ECS 032C C- or better; or Consent of Instructor.
Credit Limitation
No credit to students who completed ECS 036B, ECS 036C, ECS 040, or ECS 060.

Summary of Course Content

  • The UNIX Environment
    • Review of basic UNIX environment concepts (e.g. processes/job control, file system, utilities, etc.)
    • Shell scripts
  • Software Engineering & Tools
    • Debugging techniques using aids such as gdb/ddd.
    • Review of software engineering tools (e.g. make, git, etc.)
    • Unit Testing (e.g. Google Test)
    • Program development using third party libraries.
    • Other Tools (e.g. IDEs, ssh clients, linters, etc.).
  • 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.
  • Object-Oriented Programming in C++
    • Object-oriented design and implementation, polymorphism, operator overloading, encapsulation, derivation
    • Modular programming: programs composed of multiple C++ files and headers, overview of the
    • compilation/linking sequence
    • Pointer manipulation including dynamic memory allocation
    • Implementation of data structures (e.g. trees, graphs, etc.)
    • Templates and the Standard Template Library
    • Modern C++ (e.g. C++11, C++14, C++17, etc.)
  • Analysis of Graph Algorithms
    • Critical path analysis, depth-first search, shortest path, minimum spanning tree, and network flow

Illustrative Reading

S. Lippman, J. Lajoie, and B. Moo, C++ Primer Fifth Edition, Addison Wesley, 2013.

W. Shotts, The Linux Command Line 2nd Edition, No Starch Press, 2019.

GE3
Science & Engineering

Overlap
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.

Course Category