NPTEL : NOC:Foundations to Computer Systems Design (Computer Science and Engineering)

Co-ordinators : Prof. V. Kamakoti


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