[Teaching home]

EEL702: Computer System Software

If you're doing the course, please join the Piazza forum (the access code has been e-mailed to you).

Instructor: Sumeet Agarwal
4 credits (3-0-2)
Pre-requisites: CSL201 & EEL308
Overlaps with: CSL728
I Semester 2014–15
M Th 9:30–10:50, IIA-305 (Bharti building)
TAs: Arihant Jain, Samarjeet Singh

This course covers a number of different strands. It is primarily meant to be an overview of the tools and techniques that go into developing systems software, which is software that forms the interface between user applications and the computer system. We will cover C and other programming/scripting tools which are typically used to develop such software. A substantial chunk of the course will be devoted to the theory and practice of developing programming language compilers. We will also cover some aspects of programming paradigms, object-oriented design, and touch upon modern distributed systems software such as Hadoop.

Evaluation components

Planned outline

References:
Week(s) Topics References
1–3 Introduction to automata theory, regular expressions and formal languages FOCS Chapt. 10; CPTT Chapt. 3
4–5 Compilers: Lexical analysis Compilers overview slides [CS143]; CPTT Chapt. 3; Flex tutorial; IBM developerWorks; Flex & Bison book
6–7 Compilers: Syntactic analysis CPTT Chapt. 4; Yacc examples
8–10 Compilers: Semantic analysis, type checking, run-time environments CPTT Sections 5.1, 6.2, 6.4, 6.5, 7.2, 7.3; Type-checking slides, Scoping slides, IR and Runtime environments slides [CS143]
11 Programming language paradigms; object-oriented programming Programming language slides
11–12 Hadoop + MapReduce A very short Intro to Hadoop [by Ken Krugler]; Hadoop on Ubuntu tutorial; WordCount example code
12–13 Intermediate representations: Syntax trees, DAGs, Three-address code, Postfix; Code generation for an Abstract Stack Machine CPTT Sections 2.8, 6.1, 6.2, 6.4, 6.6
13–14 Optimisations CPTT Sections 8.4, 8.5, 9.1, 9.2; IR optimisation slides [CS143]

[Teaching home]