NOC:Foundations to Computer Systems Design


Lecture 1 - Introduction to the Course


Lecture 2 - CMOS Transistors and Gates


Lecture 3 - Basic Gates


Lecture 4 - Building Gates Using Simulator


Lecture 5 - Hierarchical Design and Verification


Lecture 6 - Building Blocks of a Digital Computer


Lecture 7 - Binary Number Systems


Lecture 8 - Signed Number Systems


Lecture 9 - Twos Complement Number System


Lecture 10 - Binary Adder Circuits


Lecture 11 - Building the ALU of HACK


Lecture 12 - HACK ALU Functionality


Lecture 13 - Tips for Project P1


Lecture 14 - Sequential Logic Design


Lecture 15 - Latches and Flipflops


Lecture 16 - The Memory Hierarchy


Lecture 17 - Design of Program Counter


Lecture 18 - Introduction to Computer Organization: The HACK Instruction Set Architecture (ISA)


Lecture 19 - Memory Mapped I/O


Lecture 20 - Tips for Projects P2 and P3


Lecture 21 - Tips for Project 4


Lecture 22 - Tips for Project 4


Lecture 23 - Introduction to Computer Architecture


Lecture 24 - The HACK Microarchitecture


Lecture 25 - The HACK CPU - A Deep Dive - Part 1


Lecture 26 - The HACK CPU - A Deep Dive - Part 2


Lecture 27 - The Data Memory


Lecture 28 - The HACK Computer


Lecture 29 - The Assembler Construction


Lecture 30 - Understanding the Working of Assembler


Lecture 31 - Assembler : Symbol Table Construction


Lecture 32 - Assembler : Pass 1


Lecture 33 - Assembler : Pass 2


Lecture 34 - Project 6 : Demonstration


Lecture 35 - Virtual Machines - What and Why?


Lecture 36 - The VM Instruction Set Architecture


Lecture 37 - The execution of a VM Program


Lecture 38 - How powerful is the VM?


Lecture 39 - Project 7 : VM ISA to HACK Mnemonic Translation


Lecture 40 - Project 7 : Demo


Lecture 41 - Deep Understanding of VM ISA using VM Emulator


Lecture 42 - Virtual Machine II - Program flow commands and Introduction to Function Calls


Lecture 43 - Implementation of Function Call


Lecture 44 - Working of the Virtual Machine


Lecture 45 - Project 8 : Translation of Program Flow and Function Call to HACK Mnemonic


Lecture 46 - Handling Static Variables


Lecture 47 - Project 8 : Implementation tips in a Nut Shell


Lecture 48 - Introduction to The JACK Programming Language


Lecture 49 - Project 9 : Basic Steps


Lecture 50 - Understanding Syntax of JACK using Examples


Lecture 51 - Project 9 : More Examples


Lecture 52 - The JACK Syntax - Language Specification


Lecture 53 - Application Development using JACK


Lecture 54 - JACK Compiler: Lexical Analysis - Tokenization


Lecture 55 - Project 10 : Compiler for JACK - Part-1 Demo


Lecture 56 - The JACK Grammar


Lecture 57 - Compiler for JACK: Parsing the JACK Program


Lecture 58 - The Token Analyzer


Lecture 59 - Testing the Correctness


Lecture 60 - The Jack Compiler - Back-end Introduction


Lecture 61 - The Jack Compiler - Handling Variables


Lecture 62 - The Jack Compiler - Handling Expressions


Lecture 63 - The Jack Compiler - Handling Flow of Control


Lecture 64 - The Jack Compiler - Handling Objects


Lecture 65 - The Jack Compiler - Handling Arrays


Lecture 66 - The Jack Compiler Backend: An XML guided approach


Lecture 67 - The Jack Compiler Backend: Populating the Class and Subroutine Symbol tables.


Lecture 68 - The Jack Compiler Backend: Code Generation - 1


Lecture 69 - The Jack Compiler Backend: Code Generation - 2


Lecture 70 - The Jack Compiler Backend: Code Generation - 3


Lecture 71 - The Jack Compiler Backend: Code Generation - 4


Lecture 72 - Jack Compiler: Code Generation - 5


Lecture 73 - Jack Compiler: Code Generation - 6


Lecture 74 - Jack Compiler: Code Generation - 7


Lecture 75 - Understand the Operating System - Compiler Interactions


Lecture 76 - Project 12 - One sample journey from Jack to Hack


Lecture 77 - Concluding Remarks