# Foundations to Computer Systems Design

- Institution: IIT Madras
- Department: Computer Science and Engineering
- Teacher: Prof. Kamakoti Veezhinathan
- Level: Undergraduate
- Language: English
- Subjects: Computer science, Engineering
- Source: [NPTEL](https://nptel.ac.in/courses/106106197)
- Licence: [CC BY-NC-SA](https://nptel.ac.in/faq) (Non-commercial use only.)
- Syllabus: [at the source](https://nptel.ac.in/courses/106106197)
- Who can watch: Tweens profiles and older (sources give no ratings; placed by Invisible Network from the source's own words)

## Lectures

1. [Module 1.1: Introduction to the Course](https://invisiblenetwork.ai/learn/nptel/106106197/58c254f4c08c) (Video)
2. [Module 1.2: CMOS Transistors and Gates](https://invisiblenetwork.ai/learn/nptel/106106197/5ec54915566d) (Video)
3. [Module 1.3: Basic Gates](https://invisiblenetwork.ai/learn/nptel/106106197/d6f9b80ab5a9) (Video)
4. [Module 1.4: Building Gates Using Simulator](https://invisiblenetwork.ai/learn/nptel/106106197/210d55eaa079) (Video)
5. [Module 1.5: Hierarchical Design and Verification](https://invisiblenetwork.ai/learn/nptel/106106197/afbd02183e69) (Video)
6. [Module 1.6: Building Blocks of a Digital Computer](https://invisiblenetwork.ai/learn/nptel/106106197/992b675a8e0f) (Video)
7. [Module 2.1: Binary Number Systems](https://invisiblenetwork.ai/learn/nptel/106106197/566e987f865f) (Video)
8. [Module 2.2: Signed Number Systems](https://invisiblenetwork.ai/learn/nptel/106106197/48417196ef56) (Video)
9. [Module 2.3: Two's Complement Number System](https://invisiblenetwork.ai/learn/nptel/106106197/2b52eb9f0b27) (Video)
10. [Module 2.4: Binary Adder Circuits](https://invisiblenetwork.ai/learn/nptel/106106197/9e3c2bddc0cb) (Video)
11. [Module 2.5: Building the ALU of HACK](https://invisiblenetwork.ai/learn/nptel/106106197/2f686f62daf2) (Video)
12. [Module 2.6: HACK ALU Functionality](https://invisiblenetwork.ai/learn/nptel/106106197/76f37663a972) (Video)
13. [Module P1: Tips for Project P01](https://invisiblenetwork.ai/learn/nptel/106106197/dddbaa2b3dcd) (Video)
14. [Module 3.1: Sequential Logic Design](https://invisiblenetwork.ai/learn/nptel/106106197/b05eef4aad45) (Video)
15. [Module 3.2: Latches and Flipflops](https://invisiblenetwork.ai/learn/nptel/106106197/85c73c969469) (Video)
16. [Module 3.3: The Memory Hierarchy](https://invisiblenetwork.ai/learn/nptel/106106197/87ee1b2e1695) (Video)
17. [Module 3.4: Design of Program Counter](https://invisiblenetwork.ai/learn/nptel/106106197/e3b1487bdc5e) (Video)
18. [Module 3.5: Introduction to Computer Organization: The HACK Instruction Set Architecture (ISA)](https://invisiblenetwork.ai/learn/nptel/106106197/d99042c08de7) (Video)
19. [Module 3.6 Memory Mapped I/O](https://invisiblenetwork.ai/learn/nptel/106106197/e8438f742b35) (Video)
20. [Module P2: Tips for Projects P02 and P03](https://invisiblenetwork.ai/learn/nptel/106106197/77ca9e4a2823) (Video)
21. [Module P3: Tips for Project 04](https://invisiblenetwork.ai/learn/nptel/106106197/a1db41c87be3) (Video)
22. [Module P4: Tips for Project 04](https://invisiblenetwork.ai/learn/nptel/106106197/88243c9d316b) (Video)
23. [Introduction to Computer Architecture](https://invisiblenetwork.ai/learn/nptel/106106197/24592d4053fa) (Video)
24. [The HACK Microarchitecture](https://invisiblenetwork.ai/learn/nptel/106106197/b28a286caad2) (Video)
25. [The HACK CPU - A Deep Dive: Part 1](https://invisiblenetwork.ai/learn/nptel/106106197/7db71b404d00) (Video)
26. [The HACK CPU - A Deep Dive: Part 2](https://invisiblenetwork.ai/learn/nptel/106106197/b0fa479a5d3e) (Video)
27. [The Data Memory](https://invisiblenetwork.ai/learn/nptel/106106197/f7911609b691) (Video)
28. [The HACK Computer](https://invisiblenetwork.ai/learn/nptel/106106197/2b006cc6b095) (Video)
29. [The Assembler Construction](https://invisiblenetwork.ai/learn/nptel/106106197/f8a86f235721) (Video)
30. [Understanding the Working of Assembler](https://invisiblenetwork.ai/learn/nptel/106106197/506650308755) (Video)
31. [Assembler: Symbol Table Construction](https://invisiblenetwork.ai/learn/nptel/106106197/5695a59bf7df) (Video)
32. [Assembler: Pass 1](https://invisiblenetwork.ai/learn/nptel/106106197/90fc9e7ebac2) (Video)
33. [Assembler: Pass 2](https://invisiblenetwork.ai/learn/nptel/106106197/edcec7e26bcc) (Video)
34. [Project 06 - Demonstration](https://invisiblenetwork.ai/learn/nptel/106106197/dcffc8b47828) (Video)
35. [Virtual Machines - What and Why?](https://invisiblenetwork.ai/learn/nptel/106106197/1e089711231b) (Video)
36. [The VM Instruction Set Architecture](https://invisiblenetwork.ai/learn/nptel/106106197/5befc9737d1a) (Video)
37. [The execution of a VM Program](https://invisiblenetwork.ai/learn/nptel/106106197/cde1a29b636c) (Video)
38. [How powerful is the VM?](https://invisiblenetwork.ai/learn/nptel/106106197/bcd26b01025b) (Video)
39. [Project 07: VM ISA to HACK Mnemonic Translation](https://invisiblenetwork.ai/learn/nptel/106106197/b82ef633b700) (Video)
40. [Project 07: Demo](https://invisiblenetwork.ai/learn/nptel/106106197/e39653c2d80a) (Video)
41. [Deep Understanding of VM ISA using VM Emulator](https://invisiblenetwork.ai/learn/nptel/106106197/3d7f991785cc) (Video)
42. [Virtual Machine II - Program flow commands and Introduction to Function Calls](https://invisiblenetwork.ai/learn/nptel/106106197/b3d90a3fe210) (Video)
43. [Implementation of Function Call](https://invisiblenetwork.ai/learn/nptel/106106197/a8bfc1912ad2) (Video)
44. [Working of the Virtual Machine](https://invisiblenetwork.ai/learn/nptel/106106197/1d8f00722746) (Video)
45. [Project 08: Translation of Program Flow and Function Call to HACK Mnemonic](https://invisiblenetwork.ai/learn/nptel/106106197/dae3ab229597) (Video)
46. [Handling Static Variables](https://invisiblenetwork.ai/learn/nptel/106106197/c17348fccef0) (Video)
47. [Project 08: Implementation tips in a Nut Shell](https://invisiblenetwork.ai/learn/nptel/106106197/dd4993839c29) (Video)
48. [Introduction to The JACK Programming Language](https://invisiblenetwork.ai/learn/nptel/106106197/b7f006b14474) (Video)
49. [Project 09: Basic Steps](https://invisiblenetwork.ai/learn/nptel/106106197/b372b3ed5902) (Video)
50. [Understanding Syntax of JACK using Examples](https://invisiblenetwork.ai/learn/nptel/106106197/9cdadc41662f) (Video)
51. [Project 09: More Examples](https://invisiblenetwork.ai/learn/nptel/106106197/03a657afa294) (Video)
52. [The JACK Syntax - Language Specification](https://invisiblenetwork.ai/learn/nptel/106106197/642b55f35f86) (Video)
53. [Application Development using JACK](https://invisiblenetwork.ai/learn/nptel/106106197/b98e713cb8ed) (Video)
54. [JACK Compiler: Lexical Analysis - Tokenization](https://invisiblenetwork.ai/learn/nptel/106106197/6291da24cec0) (Video)
55. [Project 10: Compiler for JACK - Part-1 Demo](https://invisiblenetwork.ai/learn/nptel/106106197/642856ffffdf) (Video)
56. [The JACK Grammar](https://invisiblenetwork.ai/learn/nptel/106106197/af17bdd82192) (Video)
57. [Compiler for JACK: Parsing the JACK Program](https://invisiblenetwork.ai/learn/nptel/106106197/695a04076d9c) (Video)
58. [The Token Analyzer](https://invisiblenetwork.ai/learn/nptel/106106197/54b1865013b6) (Video)
59. [Testing the Correctness](https://invisiblenetwork.ai/learn/nptel/106106197/d9aaa02a280c) (Video)
60. [The Jack Compiler - Back-end Introduction](https://invisiblenetwork.ai/learn/nptel/106106197/68301f25a084) (Video)
61. [The Jack Compiler - Handling Variables](https://invisiblenetwork.ai/learn/nptel/106106197/8f39d714751a) (Video)
62. [The Jack Compiler - Handling Expressions](https://invisiblenetwork.ai/learn/nptel/106106197/eccae4bbdf69) (Video)
63. [The Jack Compiler - Handling Flow of Control](https://invisiblenetwork.ai/learn/nptel/106106197/f7a5f50217c7) (Video)
64. [The Jack Compiler - Handling Objects](https://invisiblenetwork.ai/learn/nptel/106106197/f62593c1978d) (Video)
65. [The Jack Compiler - Handling Arrays](https://invisiblenetwork.ai/learn/nptel/106106197/58bebe5c3723) (Video)
66. [The Jack Compiler Backend: An XML guided approach](https://invisiblenetwork.ai/learn/nptel/106106197/0728194b0cf9) (Video)
67. [The Jack Compiler Backend: Populating the Class and Subroutine Symbol tables.](https://invisiblenetwork.ai/learn/nptel/106106197/543633e3982c) (Video)
68. [The Jack Compiler Backend: Code Generation - 1](https://invisiblenetwork.ai/learn/nptel/106106197/ca7d9cca8034) (Video)
69. [The Jack Compiler Backend: Code Generation - 2](https://invisiblenetwork.ai/learn/nptel/106106197/723fe8e683d5) (Video)
70. [The Jack Compiler Backend: Code Generation - 3](https://invisiblenetwork.ai/learn/nptel/106106197/01dcb08d422a) (Video)
71. [The Jack Compiler Backend: Code Generation - 4](https://invisiblenetwork.ai/learn/nptel/106106197/0e8cc213d9e0) (Video)
72. [Jack Compiler: Code Generation - 5](https://invisiblenetwork.ai/learn/nptel/106106197/a78c77e7bd78) (Video)
73. [Jack Compiler: Code Generation - 6](https://invisiblenetwork.ai/learn/nptel/106106197/63d49bbd3bdb) (Video)
74. [Jack Compiler: Code Generation - 7](https://invisiblenetwork.ai/learn/nptel/106106197/f6bae21f7bba) (Video)
75. [Understand the Operating System - Compiler Interactions](https://invisiblenetwork.ai/learn/nptel/106106197/6c86c44a1de9) (Video)
76. [Project - 12: One sample journey from Jack to Hack](https://invisiblenetwork.ai/learn/nptel/106106197/7b878e850314) (Video)
77. [Concluding Remarks](https://invisiblenetwork.ai/learn/nptel/106106197/32d77a4d22a5) (Video)
