EECS 590: Advanced Programming Languages

Basic Information
Instructor: Chandrasekhar Boyapati
Credits: 4

For CSE graduate students, counts as a software kernel course and towards software area qualification.
For CS-ENGR and CS-LSA undergraduate students, counts as an upper-level CS technical elective.


Course Overview
The motivation behind this course is the need for reliable and secure software. Software has become pervasive in our civilian infrastructure. All activities including transportation, telecommunications, energy, medicine, and banking rely on the correct working of software systems. Consequently, the problem of making software reliable and secure has become one of today's most important challenges. Multi-hundred-million-dollar space projects are interrupted by software glitches, power-grid failures are caused by bugs in software, and new security exploits are announced daily. Software reliability is crucial in critical systems, where failures can lead to loss of life---with risks ranging from a few individuals (anti-lock braking systems and airbag-deployment systems) to a few hundred (aircraft collision-avoidance systems) to tens of thousands (nuclear reactors and weapons systems). Software reliability also impacts security because buggy code underlies most security violations and progress in making systems more reliable will make them more resistant to deliberate attack as well. Moreover, software reliability has a significant impact on economy. Studies estimate that bugs in software cost businesses worldwide about $175 billion annually.

This course covers basic and advanced topics in programming languages, and shows how good programming languages and tools can significantly improve the reliability and security of software systems. This course has three objectives: 1) To understand fundamental concepts in programming languages, 2) To study some recent topics and trends in PL research, and 3) To gain experience planning and carrying out a modest PL research project.


Topics

Recommended Textbooks
Benjamin Pierce: Types and Programming Languages
Flemming Nielson, Hanne Nielson, Chris Hankin: Principles of Program Analysis
Glynn Winskel: Formal Semantics of Programming Languages

Grading
30%: Assignments, Paper Summaries, Paper Presentation, and Class Participation
70%: Research Project

--------------------------

[Mail] [bchandra at eecs dot umich dot edu]