Instructors: Sumantra Dutta Roy (SDR) and Sumeet Agarwal (SA)
4 credits (3-0-2)
Pre-requisites: CSL201 & EEL308
Overlaps with: CSL728
I Semester 2013–14
Tu W F 8–8:50, II-325
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 software modelling and verification, programming paradigms, and touch upon modern distributed systems software such as Hadoop.
Week(s) | Topics | References | Primary instructor |
1 | Introduction to automata theory: Finite state machines | FOCS Chapt. 10 | SDR |
2 | A brief introduction to C programming | SDR | |
3 | Formal languages, regular expressions | FOCS Chapt. 10 | SDR |
4–5 | Compilers: Lexical analysis | CPTT Chapt. 3; Flex tutorial; IBM developerWorks; Flex & Bison book | SDR |
6–8 | Compilers: Syntactic analysis | Compilers overview slides [CS143]; CPTT Chapt. 4; Yacc examples | SA |
8–9 | Compilers: Semantic analysis, type checking, run-time environments | CPTT Chapt. 5–7; Semantic analysis slides, Type-checking slides, Scoping slides [CS143] | SA |
9 | Assemblers, code generation | CPTT Chapt. 8–10 | SDR |
10 | Programming language paradigms; object-oriented programming | Programming language slides | SA |
10–12 | Shell scripting | Example scripts | SDR |
12–13 | Software modelling and formal verification | Overview slides; Software development slides; Formal verification overview; Model checking; Linear Temporal Logic | SA |
14 | Hadoop + MapReduce | A very short Intro to Hadoop [by Ken Krugler]; Hadoop on Ubuntu tutorial; WordCount example code | SA |