Understanding program structure
Running program on hardware and system
Communication and cloud
Prerequisite:
Programming experience
Module 1 : Program structure: Review of machine level program representation, compilation overview, running program on processor architecture, memory hierarchy
Module 2: Running program on hardware: Linking, Exceptions, process control, signals, Virtual memory: memory management, memory protection, address translation, memory mapping, dynamic memory allocation, garbage collection
Module 3: Network: Foundations - What is the Internet? The Network Edge, The Network core, Protocol layers (OSI); Application layer - HTTP, DNS; Transport layer - Multiplexing and Demultiplexing, TCP and UDP; Data Plane (Network layer) - Routing and Switching, IPv4 and IPv6; Control Plane - Routing algorithms, OSPF and BGP; Socket Programming
Module 4: Distributed Systems amd Multi-core and Multi-processors: Networked systems to distributed systems, architectural styles - Layered, SOA, and Publish-Subscribe, Virtualization - Principles, VMs, and Containers, Communication - RPCs and Message-oriented communication; Introduction to GPUs, Multiprocessor Network Topologies; Cluster Networking
Monday (10AM to 11AM)
Tuesday (10AM to 11AM)
Wednesday (10AM to 11AM)
Venue: CS Seminar room
Send an email to get the appointment
Google classroom for discussions, announcements and distribution of notes
The tentative schedule is as follows. A few topics may be added or removed based on class progress
Week 1
L1 (July 24) : Compilation overview - single file compilation. Further reading: First chapter of compiler's Dragon book
Week 2
L2 : (July 29) Multi file compilation, symbol resolution. Further reading: Section 7.3 to 7.5 of Bryant Computer System book
L3: (July 30) Libraries and symbol resolution. Further reading: Section 7.5 and 7.6 of Bryant Computer System book.
L4: (July 31) SimpleRISC processor. Arithmetic, logical and branch instructions. Further reading. Chapter 3, Basic Computer Architecture by Smruti Sarangi
Week 3
L5 (Aug 5): SimpleRISC processor. Call and return instructions. Further reading. Chapter 3, Basic Computer Architecture by Smruti Sarangi
L6 (Aug 6): Cache Instruction encoding. Chapter 3, Basic Computer Architecture by Smruti Sarangi Processor Design: Chapter 9
L7 (Aug 7): Cache Variable to memory section mapping. Memory latency.
Week 4
L8 (Aug 12): Program optimization Chapter 9 of Bryant's book. Section 9.1 to 9.6
L9 (Aug 13): Program optimization Chapter 9 of Bryant's book. Section 9.1 to 9.6. Storage technologies can be referred from section 6.1
L10 (Aug 14): Program optimization Multiple level page table
Week 5
L11 (Aug 19): Virtual memory : Section 9.7 of Bryant's book. (TLB, i7 and ARM virtual memory system)
L12 (Aug 20): Virtual memory memory allocation : Malloc (Section 9.9.1 to 9.9.6 of Bryant)
L13 (Aug 21): Virtual memory memory allocation - Malloc
Week 6
Aug 26: Public holiday
L14 (Aug 27): Malloc - Multicore processors, Light weight threads (Chapter 4 of OS reference book)
L15 (Aug 28) Monday time table : Malloc Amdahl's law, Process creation using fork.
Week 7
L16 (Sept 2) : Fork continued - process reaping, and context switch (Section 8.2 and 8.4 of Bryant)
L17 (Sept 3): Class cancelled.
L18 (Sept 4): Process synchronisation - shared memory and message passing.
Week 8
L19 (Sept 9): Signals - Section 8.5 of Bryant book
L20 (Sept 10): Scheduling (Chapter 5 of OS reference book)
L21 (Sept 11): Operating system - overview
L17 (Sept 12) . Class in lieu of missed lecture on Sept 3. Revision and problem solving
Week 9
Mid term exam
Sept 30 ( Week 10)
Sep 30 Introduction to Internet, the Network Edge, the Network core, Delay, Loss and Throughput in Packet-Switched networks
Oct 1 Layered architecture — OSI, TCP/IP
Oct 7 (Week 11)
Oct 7 The Web and HTTP
Oct 8 DNS
Oct 9 Multiplexing and Demultiplexing
Tutorial: Introduction to Mininet
Oct 14 (Week 12)
Oct 14 TCP and UDP
Oct 15 TCP and UDP
Oct 16 TCP Congestion
Tutorial: Principles of Reliable Data Transfer
Oct 21 (Week 13)
Oct 21 Network layer, Routing, and Switching
Oct 22 The Internet Protocol (IPv4)
Oct 23 Routing Algorithms — Distance vector and Link State
Tutorial: ICMP, Network Management (SNMP and NETCONF/YANG)
Oct 28 (Week 14)
Oct 28: Introduction to Socket Programming
Oct 29: OSPF
Oct 30: BGP
Tutorial: Ethernet MAC layers
Nov 4 (Week 15)
Nov 4: Networked systems to distributed systems and Design goals
Nov 5: Architecture Styles – Layered, SOA, and Publish-Subscribe
Nov 6: Virtualization — VMs and Containers
Tutorial: Setting up Virtual box and running dockers
Nov 11 (Week 16)
Nov 11: RPCs
Nov 12: Message-Oriented Communication
Nov 13: Introduction to GPUs
Tutorial: GPU programming using Python
Nov 18 (Week 17)
Nov 18 Buffer
Nov 19 Buffer
Each lab assignment will be 3-4 week long.
CS206:
Mid term (42%)
End term (42%)
Daily quizzes (16%)
CS207:
Lab assignments (100%)
CS527
Mid term (30%)
End Term (30%)
Lab assignments (30%)
Class participation (in-class quizzes and in-class assignments) (10%)
80% would be considered for evaluation. Each in-class activity would account for 1 point. For example: If total activities were 40, then maximum marks in class participation would be 32 which in tern would be scaled to 10 points.
- All the submissions should be on time. Delayed submission will attract penalty at the rate of 10% per day. After delay of 10 days, no marks will be given to a assignment.
- Plagiarism of any sort (from internet resource or from friends) will be heavily penalised. In case, the case of copy is from other students of the course, both parties will get negative marks equal to double the weightage of assignment/submission. In second instance will be given F.
Text Books
Computer Systems – A programmer;s perspective by R. E. Bryant and D. R. O’Hallaron, Pearson publisher, 3rd edition (most of the content will be covered from this book)
Parallel Computer Architecture: A Hardware/Software approach, by David E Culler, J.P Singh and Anoop Gupta. Publisher: Morgan Kaufmann. 1999.
Compilers – Principles, Techniques and Tools by Aho, Sethi and Ulmann, Publisher: Pearson, 2nd edition (this is required for week 1)
James F. Kurose and Keith W. Ross, Computer Networking: A Top-down Approach, 8th Edition
Maarten Van Steen and Andrew S. Tanenbaum, Distributed Systems, 4th Edition