Course Timing and Venue: TBD
Instructor: Aditya Kanade (Office hours: TBD)
Our dependence on software is increasing at a phenomenal rate. As a consequence, the concerns about reliability of software in terms of correctness and security are taking the center stage. In this course, we study the state-of-the-art techniques for analyzing and improving software reliability. Our focus will be on: (1) understanding the dominant models of concurrent programming and formal reasoning for them and (2) understanding the nature and causes of security vulnerabilities and techniques to detect them. We will study concurrency and security issues related to smartphone and web programming in addition to more traditional software issues.
The course has no pre-requisites but requires the inclination and ability to understand programming semantics and concepts from theoretical computer science.