CS107 - Programming Paradigms from Stanford Engineering Everywhere
Advanced memory management features of C and C++; the differences between imperative and object-oriented paradigms. The functional paradigm (using LISP) and concurrent programming (using C and C++). Brief survey of other modern languages such as Python, Objective C, and C#.
Prerequisites: Programming and problem solving at the Programming Abstractions level. Prospective students should know a reasonable amount of C++. You should be comfortable with arrays, pointers, references, classes, methods, dynamic memory allocation, recursion, linked lists, binary search trees, hashing, iterators, and function pointers. You should be able to write well-decomposed, easy-to-understand code, and understand the value that comes with good variable names, short function and method implementations, and thoughtful, articulate comments.
View notes on Github Pages
- Programming Paradigms
- C Programming
- C Pointer
- Generic Pointer
- Generic Data Structure
- Generic Function
- Memory Management
- Stack and Heap
- Assembly Language
- Activation Record and Return Value
- C++ and C, Reference and Pointer
- Preprocessor and Macro
- Compile and Linking
- More Assembly
- Tick Agent: Going to concurrency.
- Semaphore: More examples.
- Dining Philosophers: More examples.
- IceCream Store Simulation: The most complicated example.