Discussion - 1.0 hours
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
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.
Science & Engineering
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.