Fundamentals of Software Engineering
Session 1: Introduction to Computing
- Bits and logic
- Memory and control
- Computers
Session 2: Assembly Language Programming
- Constants
- Opcodes
- Operands
- Labels
Session 3: Pointers
- Pointers and Arrays
- Style Points
- Finer Points on Pointers
Session 4: Fundamentals of Data Structures and Algorithms (Part 1)
- Vector: an introduction to ADTs
- Design and implementation
- Performance analysis
- void* and generic vector
Session 5: Fundamentals of Data Structures and Algorithms (Part 2)
- Recursion
- Fibonacci
- Efficiency of recursive algorithms
- Sorting
Session 6: Fundamentals of Data Structures and Algorithms (Part 3)
- Tokens
-The C "Switch" statement
-Dictionaries (Maps)
Session 7: Software Systems
- Compiling
- Linking
- Executable formats
- Libraries
- Virtual memory
Session 8: Computer System Architecture and Device Drivers
- Device Design
- Memory mapped devices
- The I/O space
Session 9: Concurrency, Synchronization and Programming with Threads
- The Concurrency Model
- Atomicity
- CS with busy flags
- OS synchronization help
Session 10: Advanced Algorithms and Data Structures
- Graphs
- Internal representations
- Breadth-First Search
- Analysis of Dijkstra's Algorithm