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