HTTPS clone URL
Subversion checkout URL
Teaching CS from the top and bottom
Fetching latest commit...
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
This material aims to teach principles and understanding fundamental to study of Computer Science and programming in general. It is intended to be accesible to motivated beginners, but useful to those with programming experience. It is not a tutorial or a getting started guide for a particular language, paradigm, or application, but general fundamentals. The general philosophy of this material is that Computer Scientists need to have an understanding of both mathematical theory (the "top" or "high level") and inner machine workings (the "bottom" or "low level") and practical applications of both. == Outline so far == === Assembly === * Registers and instructions * Labels, branches, conditional execution, and procedures * TODO: Program layout and pipelining * Interacting with RAM, The Stack, and saving registers * Pointers, pointer arithmetic, and arrays * Talking to hardware and bitmasks * Recursion and tail-call elimination === Untyped Lambda Calculus === * ULC syntax and alpha equivalence * Beta reduction * Normal form and reduction strategies * Boolean Algebra * Church Numerals * Fixed-point combinators == C == * Procedures, recursion, and tail-call elimination * Libraries, build systems, and the preprocessor * Syscalls, Pointers, and RAM == Haskell == * Names and pattern matching * Modules and build systems * Types * Merge sort and runtime analysis