A course on software design in C++ and engineering communication. Preceded by ECE244 — Programming Fundamentals.
Two useful textbooks are:
- CLRS; for Dijkstra’s algorithm, travelling salesman problem, etc.
- AIMA; for local search as well as advanced topics like simulated annealing.
Software design
- 10x programmer
- Debugging
- Programming styles
- Program testing
- Graph theory
- Data structure
- Algorithms
- Travelling salesman problem
- Computational complexity theory
- NP-completeness
- Algorithms and heuristics
- Parallel computing
C++ language features
- Templates (Standard Template Library)
- Iterator
- Data types (
auto
) and range-based for loops - Inline function
Tools
- OpenStreetMap (StreetDatabaseAPI)
- Version control (Git)
- Compilation (Make)
- Virtual machine (Oracle VM VirtualBox)
- SSH
- VNC (iCtrl)
- Integrated development environment (CLion)
- Linux (Debian)
- Valgrind
- GTK (Glade, EZGL)
Communication
Extra notes
We have three Makefile configurations:
make conf="release"
make conf="debug"
make conf="debug-check
- and
make clean
- Also add the
-j16
flag to parallelise compilations.
To run the autotester for milestone , we use ece297exercise n
. To submit, we use ece297submit n
.