Algorithm Analysis
-> HW1: Simulate Turing machine in python
-> HW2: Measure complexity of mergesort and insertionsort
-> HW3: Implement two sat solvers
-> HW4: Polynomial reduction from k vertex cover to SAT
Assembly
-> HW1: Make our own printf in C
-> HW2: String manipulation in assembly
-> HW3: Construct AST tree in assembly
-> HW4: binary exploitation
-> HW4-bonus: AVX vector optimization
Object Oriented Programming
-> HW1: GPS
-> HW2: Store management
-> Project: Auction house
Communication Protocols
-> HW1: Router
-> HW2: TCP server and client
-> HW3: HTTP client
Algorithm Design
-> HW1: DP, Greedy
-> HW2: Backtracking, Graphs
Programming paradigms
-> Project: Course grades statistics in Haskell