├── README.md └── resrc └── nand2tetris_lecture_slides ├── chapter 1 lecture.pdf ├── chapter 10 lecture.pdf ├── chapter 11 lecture.pdf ├── chapter 12 lecture.pdf ├── chapter 2 lecture.pdf ├── chapter 3 lecture.pdf ├── chapter 4 lecture.pdf ├── chapter 5 lecture.pdf ├── chapter 6 lecture.pdf ├── chapter 7 lecture.pdf ├── chapter 8 lecture.pdf └── chapter 9 lecture.pdf /README.md: -------------------------------------------------------------------------------- 1 | # Course: Compiler Construction 2 | 3 | Our first attempt at auditing select Computer Science courses. 4 | 5 | > ℹ️ You can suggest what we should do next [here](https://github.com/csklub/next-course-suggestions) 6 | 7 | ## Motivation 8 | 9 | Even if you are not a CS major, this will make you a better software engineer -- by understanding the things that make your code talk to the machine. 10 | 11 | ## Primary Course 12 | 13 | - [Build a Modern Computer from First Principles: Nand to Tetris Part II (project-centered course) | Coursera](https://www.coursera.org/learn/nand2tetris2) - _start by signing up here, choose the **Audit** option. You are also encouraged to pay if you can._ 14 | - [More polished version of the projects from HUJI](https://github.com/AvivYaish/nand2tetris_HUJI) 15 | 16 | ## Meeting Schedule 17 | 18 | - Saturdays 7 - 8 AM EAT, if missed, Sundays 7 - 8 PM EAT. 19 | - **Starts:** Jan 14, 2023 20 | - **Ends:** April 29, 2023 21 | - **Meeting Link:** shared on the mailing-list 22 | - _Invite Only_ for now. 23 | 24 | ## Course Schedule 25 | 26 | - This is self-paced, but our general agreed pace (for the slowest) should be 2 weeks to cover 1 week of [the Coursera course](https://www.coursera.org/learn/nand2tetris2). So we will take 14 weeks for the 7 c/weeks. 27 | 28 | ![compilers-session](https://user-images.githubusercontent.com/261265/212459967-f858f07d-9150-45d2-9201-dc20fad8b15b.png) 29 | ![image](https://user-images.githubusercontent.com/261265/212460076-964fd467-4450-4bc1-97f2-98822f13469f.png) 30 | 31 | 32 | ## Communication 33 | 34 | - **MAIN:** For posterity, let's use the mailing-list - `compilers-cs-ke@googlegroups.com` (alias: `compilers@cs.ke`) 35 | - See all the past communications here - [https://groups.google.com/g/compilers-cs-ke](https://groups.google.com/g/compilers-cs-ke) 36 | - For quick chats, we can use the Slack Channel, `#course-compiler-construction` 37 | 38 | ## Course Structure 39 | 40 | - **Module 0: Machine Lanaguage** - _**Key concepts:** op codes, mnemonics, binary machine language, symbolic machine language, assembly, low-level arithmetic, logical, addressing, branching, and I/O commands, CPU emulation, low-level programming._ 41 | - **Module 1: Virtual Machine, Part I** - _**Key concepts:** two-tier compilation (overview), virtualization, virtual machines, VM abstraction, stack processing, pointers, VM implementation, VM translators._ 42 | - **Module 2: Virtual Machine, Part II** - _**Key concepts:** branching, functions, function call-and-return, dynamic memory management, stack processing, pointers, standard mapping, VM implementation._ 43 | - **Module 3: High-Level Language** - _**Key concepts:** procedural programming, object-based programming, classes, methods, functions, constructors, list processing, recursion, developing interactive applications, graphics optimization._ 44 | - **Module 4: Compiler I (Syntax Analysis)** - _**Key concepts:** tokenizing, grammars, parsing, parse trees, XML / mark-up, compilation._ 45 | - **Module 5: Compiler II (Code Generation)** - _**Key concepts:** compiling procedural code, compiling the construction and manipulation of arrays and objects, code generation techniques, recursive compilation engine, symbol tables, memory management._ 46 | - **Module 6: Operating System** - _Key concepts: running-time analysis, resource allocation, heap management, input handling, vector graphics, fonts, textual outputs, type conversions, string processing, booting, OS implementation issues._ 47 | 48 | 49 | ## Recordings 50 | 51 | - Will be shared privately on our mailing-list. 52 | - Will adhere to _our privacy terms_. 53 | 54 | 55 | ## Reference Material / Further Reading 56 | 57 | - [Compilers Course @ Edx](https://learning.edx.org/course/course-v1:StanfordOnline+SOE.YCSCS1+3T2020/home) 58 | - [Book: Crafting Interpreters](https://craftinginterpreters.com/) 59 | - [Create Your Own Compiler - Caught in the Web (citw.dev)](https://citw.dev/tutorial/create-your-own-compiler?p=1) 60 | - _**More to be added**_ 61 | 62 | ## Tools, etc. 63 | 64 | - [Nand2Tetris IDE VScode Extension](https://marketplace.visualstudio.com/items?itemName=AvivYaish.nand-ide) 65 | - [https://godbolt.org/](https://godbolt.org/) 66 | 67 | ## Limited Registration 68 | 69 | This first pilot program is _invite-only_ for now. However, if you really reaaally want to join, fill in the form here - [https://forms.gle/da7fKkjv6fRwW1oS8](https://forms.gle/da7fKkjv6fRwW1oS8) 70 | 71 | 📨 _**For any enquiries, you can reach us on compilers@cs.ke**_ 72 | -------------------------------------------------------------------------------- /resrc/nand2tetris_lecture_slides/chapter 1 lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csklub/course-compiler-construction/dee567d90efbb01166a7de9d9a0370726669d014/resrc/nand2tetris_lecture_slides/chapter 1 lecture.pdf -------------------------------------------------------------------------------- /resrc/nand2tetris_lecture_slides/chapter 10 lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csklub/course-compiler-construction/dee567d90efbb01166a7de9d9a0370726669d014/resrc/nand2tetris_lecture_slides/chapter 10 lecture.pdf -------------------------------------------------------------------------------- /resrc/nand2tetris_lecture_slides/chapter 11 lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csklub/course-compiler-construction/dee567d90efbb01166a7de9d9a0370726669d014/resrc/nand2tetris_lecture_slides/chapter 11 lecture.pdf -------------------------------------------------------------------------------- /resrc/nand2tetris_lecture_slides/chapter 12 lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csklub/course-compiler-construction/dee567d90efbb01166a7de9d9a0370726669d014/resrc/nand2tetris_lecture_slides/chapter 12 lecture.pdf -------------------------------------------------------------------------------- /resrc/nand2tetris_lecture_slides/chapter 2 lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csklub/course-compiler-construction/dee567d90efbb01166a7de9d9a0370726669d014/resrc/nand2tetris_lecture_slides/chapter 2 lecture.pdf -------------------------------------------------------------------------------- /resrc/nand2tetris_lecture_slides/chapter 3 lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csklub/course-compiler-construction/dee567d90efbb01166a7de9d9a0370726669d014/resrc/nand2tetris_lecture_slides/chapter 3 lecture.pdf -------------------------------------------------------------------------------- /resrc/nand2tetris_lecture_slides/chapter 4 lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csklub/course-compiler-construction/dee567d90efbb01166a7de9d9a0370726669d014/resrc/nand2tetris_lecture_slides/chapter 4 lecture.pdf -------------------------------------------------------------------------------- /resrc/nand2tetris_lecture_slides/chapter 5 lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csklub/course-compiler-construction/dee567d90efbb01166a7de9d9a0370726669d014/resrc/nand2tetris_lecture_slides/chapter 5 lecture.pdf -------------------------------------------------------------------------------- /resrc/nand2tetris_lecture_slides/chapter 6 lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csklub/course-compiler-construction/dee567d90efbb01166a7de9d9a0370726669d014/resrc/nand2tetris_lecture_slides/chapter 6 lecture.pdf -------------------------------------------------------------------------------- /resrc/nand2tetris_lecture_slides/chapter 7 lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csklub/course-compiler-construction/dee567d90efbb01166a7de9d9a0370726669d014/resrc/nand2tetris_lecture_slides/chapter 7 lecture.pdf -------------------------------------------------------------------------------- /resrc/nand2tetris_lecture_slides/chapter 8 lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csklub/course-compiler-construction/dee567d90efbb01166a7de9d9a0370726669d014/resrc/nand2tetris_lecture_slides/chapter 8 lecture.pdf -------------------------------------------------------------------------------- /resrc/nand2tetris_lecture_slides/chapter 9 lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csklub/course-compiler-construction/dee567d90efbb01166a7de9d9a0370726669d014/resrc/nand2tetris_lecture_slides/chapter 9 lecture.pdf --------------------------------------------------------------------------------