CS595: Topics and Applications in Programming Languages, Fall 2021Instructor: Stefan Muller,Lectures: Mon, Wed. 11:15-12:30, Stuart 204 Course DescriptionType systems provide many programming languages with a certain guarantee of runtime safety, usually that type errors will not occur at runtime. More advanced and exotic type systems can guarantee more interesting properties of programs, and are used in active research to guarantee information security, resource (e.g., time, energy, space) usage bounds, safety properties of concurrent programs and even to prove complex mathematical theorems. This course will teach the formal theory underlying the study of programming languages and, in particular, type systems, and the techniques that are used to prove properties of programming languages. We will also explore interesting applications of type systems in modern research, including some drawn from those above and others based on students' interest and research. Students will complete a final project in which they design a type system or language model (or extension of an existing one) to solve an interesting problem related to their own research or other interests. Prerequisites: There are no formal prerequisites beyond mathematical sophistication and experience programming in any statically typed programming language (e.g., C/C++, Rust, Java, Haskell, ML). In addition, experience with functional programming will be helpful but not required. Advanced undergraduate students are welcome to take this class, but may require permission to register. Textbook: There is no required textbook for the class.
For students wanting a reference and additional depth into some of the material,
the following books may be useful, but there is no need to buy one for
the class. Course Objectives: After taking this class, students should be able to:
ScheduleNote: this schedule is tentative and subject to change. The last ~1/3 of the class will consist largely of presentations; the schedule is TBD.
ApplicationsThis course is largely about applying programming language techniques (which you'll learn in the first ~2/3 of the class) to solve problems in other areas. Your paper presentation and your final project will focus on these applications. Here are some ways people have applied PL techniques to solve other problems (both inside and outside of computer science!) for inspiration. When thinking about your own application for your project, you should feel neither constrained to pick something from this list nor forbidden from picking something already on the list. These are only examples. I'd encourage you to pick something related to your own interests (CS or non-CS) and/or research (if you're doing research). If you're having trouble figuring out how to connect an interest to PL, we'll discuss it and try to figure something out! The linked papers will be quite difficult to read at first; hopefully over the first part of the class, you'll find them easier. However, we still may not learn all of the techniques and notations used in these papers in the class. If you'd really like to understand one of these papers and still find it difficult, I'd be happy to discuss it!
PoliciesAttendance/COVIDThe plan is for this class to meet in person, as discussion and participation will be important for the nature of the class. Remote participation can be arranged with the instructor if necessary for particular classes (e.g., if quarantine restrictions, etc., prevent you from being on campus for an extended period of time). The course modality (in-person/online) and schedule are of course, subject to possible change based on changes in IIT or Chicago policies. GradingFinal grades will be based on the following:
Late Days/Late WorkEach student has 4 "late days" to use on homeworks over the course of the semester. Using a late day extends the deadline by 24 hours. You do not need to let me know you're using late days; they'll be deducted automatically when you hand in the work. Important: No more than two late days may be used on any one assignment. Late days may not be used on the paper presentation or the final project. After 48 hours, or if you have used up your late days, late work will not be accepted without the instructor's permission (and will be granted only for good reasons, e.g., medical emergencies). CollaborationHomeworks are to be completed individually. Discussing general course concepts with other students to get a better understanding is permitted (and encouraged!). More specific discussions about homework questions is permitted as long as:
Policies for the paper presentation and final project are still TBD, but it is likely working with a partner/team will be allowed. Illinois Tech's Sexual Harassment and Discrimination InformationIllinois Tech prohibits all sexual harassment, sexual misconduct, and gender discrimination by any member of our community. This includes harassment among students, staff, or faculty. Sexual harassment of a student by a faculty member or sexual harassment of an employee by a supervisor is particularly serious. Such conduct may easily create an intimidating, hostile, or offensive environment. Illinois Tech encourages anyone experiencing sexual harassment or sexual misconduct to speak with the Office of Title IX Compliance for information on support options and the resolution process. You can report sexual harassment electronically at iit.edu/incidentreport, which may be completed anonymously. You may additionally report by contacting the Title IX Coordinator, Virginia Foster at foster@iit.edu or the Deputy Title IX Coordinator at eespeland@iit.edu. For confidential support, you may reach Illinois Tech's Confidential Advisor at (773) 907-1062. You can also contact a licensed practitioner in Illinois Tech's Student Health and Wellness Center at student.health@iit.edu or (312)567-7550. For a comprehensive list of resources regarding counseling services, medical assistance, legal assistance and visa and immigration services, you can visit the Office of Title IX Compliance website at https://www.iit.edu/title-ix/resources. |