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++. Only 2 units of credit for students who have previously taken ECS 036B. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
ECS 032C C- or better; or Consent of Instructor.
Credit Limitation
Only 2 units of credit for students who have previously taken ECS 036B.

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.

Instructors
Staff

Course Category