CS 599 D1: Programming Language Foundations for Concurrency, Spring 2024

Course Overview

Software systems around us are getting more and more complex by the day with multi-processor systems, microservices, and distributed programming. At the center of all this complexity lies concurrency, i.e., processes can execute in arbitrary orders and failures (e.g., network faults, node crashes, etc.) are pervasive. Building software systems is no longer straightforward (probably never was) and the issues introduced by concurrency cannot be ignored. This course will study the foundations of where these challenges arise from and will equip students with tools to handle these challenges.

The ultimate goal is for students to build robust concurrent software systems using state-of-the-art PL tools and techniques.

Instructor: Ankush Das, ankushd [at] bu [dot] edu
Class Schedule: Mon & Wed, 4:30pm - 5:45pm
Class Location: MCS B29
Office Hours: Wed, 9am - 10am, CDS 721 (or with appointment with instructor)
Piazza: Please join the class using the following link: https://piazza.com/bu/spring2024/cs599d1. We will be using Piazza for class announcements and discussions.
Gradescope: Please sign up for a student account on https://gradescope.com using your BU email address. The entry code for the course is XX438J. Homework assignments are to be submitted to Gradescope in PDF format.
Course Website: https://ankushdas.github.io/CS599.html

Course Schedule

Will be updated regularly!

Date Topics Lecture Notes Further Reading
Jan 22, 2024 LL1: A Language for Arithmetic Expressions Lecture 1
Jan 24, 2024 Untyped Lambda Calculus Lecture 2
Jan 29, 2024 An Introduction to Types Lecture 3
Jan 31, 2024 Simply-Typed Lambda Calculus Lecture 4
Feb 5, 2024 Substructural Inference and Logic TBA Notes by Frank Pfenning
Feb 7, 2024 Linear and Ordered Inference TBA Notes by Frank Pfenning
Feb 12, 2024 Harmony: Identity and Cut Admissibility TBA Notes by Frank Pfenning
Feb 19, 2024 President's Day: No Lecture
Feb 21, 2024 Session Typed Proof Terms TBA Chapter 2.1 from PhD Thesis
Feb 26, 2024 Session Typed Proof Terms (Continued) TBA Chapter 2.1 from PhD Thesis
Mar 4, 2024 Mid-Term NA
Mar 6, 2024 Mid-Term Discussion TBA Chapter 2.1 from PhD Thesis
Mar 11, 2024 Spring Break
Mar 13, 2024 Spring Break
Mar 18, 2024 Semantics of Session Types TBA Chapter 2.1 from PhD Thesis
Mar 20, 2024 Session Type Configurations TBA Chapter 2.1 from PhD Thesis
Mar 25, 2024 Preservation Theorem TBA Chapter 2.1 from PhD Thesis
Mar 27, 2024 Progress Theorem TBA Chapter 2.1 from PhD Thesis
Apr 1, 2024 Co-Induction and Session Type Equality TBA Subtyping for Session Types
Apr 3, 2024 Refinement Session Types TBA Chapter 3 from PhD Thesis

Assignment Schedule

Release Date Due Date Assignment PDF Template TEX
Jan 22, 2024 Feb 7, 2024 Assignment 1 (Template 1)
Feb 7, 2024 Feb 21, 2024 Assignment 2 (Template 2)
Feb 27, 2024 NA Mock Mid-Term Mock Mid-Term Solution
Mar 4, 2024 NA Mid-Term Solution
Mar 5, 2024 Mar 20, 2024 Assignment 3 (Template 3)
Mar 20, 2024 Apr 5, 2024 Assignment 4 (Template 4, Code 4)
Apr 5, 2024 Apr 22, 2024 Assignment 5
Apr 22, 2024 May 1, 2024 Assignment 6

Course Evaluation

The course grade will be calculated using homework assignments, a mid-term exam, and a final exam.

Homework (60%)

There will be bi-weekly homework assignments due every other Wednesday at 11:59pm. Homeworks can sometimes be challenging, so it is best to start early to give yourself enough time to think attempt the problems and make best use of office hours. Late homework can only be accepted in extraordinary circumstances and require approval from instructor.

You are encouraged to collaborate with other students on solving the homework problems. But you must write your solutions independently in your own words (or code).

I would strongly encourage students to typeset homework solutions using LaTeX which is the most popular document preparation system used in computer science publications. But students can use different software such as MS Word or handwrite solutions. For your convenience, I will provide the LaTeX source for each assignment with instructions on how to typeset the solutions.

Mid-Term (20%) and Final (20%) Exams

Exams will be held in-person and you may bring handwritten (or printed) notes to the exam. However, using other means such as internet, ChatGPT, phones, laptops, etc. is strictly prohibited.


Course FAQs

Programming Language: Could you clarify which programming language(s) will be used in the course?

There is no fixed programming language for this course. The intent of the course is to study the foundations of a programming language in terms of the abstractions it provides (functions, variables, loops, types, etc.). These are common to most languages. That being said, there will be some programming assignments where students would be free to choose their own programming language to complete them. A small note here is that some programming assignments will be slightly easier in languages like OCaml or Rust (easier to define recursive types) but that doesn't mean that the assignments cannot be implemented in other languages.

Course Content: Is there a detailed syllabus available, e.g., topics covered, assignments, and major projects.

The course is new and the syllabus is a bit flexible and I would collect feedback from students and adjust the topics based on that. However, here are some high-level topics:

  • lambda calculus
  • syntax, semantics, type system
  • progress and preservation
  • primitive and general recursion
  • concurrency theory
  • message-passing concurrency
  • shared-memory concurrency
  • linear types
  • session types
There will be some written assignments and some programming assignments. At this point, I don't plan to introduce major projects, but as I said, that might change if many students are interested in doing a project.

Teaching Style: Could you briefly describe your teaching style and whether the course emphasizes theory, practical implementation, or a combination of both?

The course will certainly be emphasizing theory but implementation will also be a major component. For each topic covered, we will first study the theory behind it and then implement them in your language of choice.

Coursework: What types of programming assignments can students expect? Are they related to concurrency problems or parallel program development?

No, the programming assignments will be more about concurrency than parallelism. This course will be highlighting the challenges that concurrency introduces instead of the benefits that parallel programming provides. The latter is an important point and will be covered in a lecture but not be the central focus.

Readings: Are there any recommended readings or materials that can provide deeper insights into this?

As far as reading material goes, I am working on lecture notes that will be the most relevant. As I introduce various topics, I will post some optional reading material but the lecture notes will be the most relevant.


Course Policies

Academic Conduct

All Boston University students are expected to maintain the highest standards of academic integrity. You can find important resources here:

Disability Services

Students with documented disabilities, including learning disabilities, may be entitled to accommodations intended to ensure that they have integrated and equal access to the academic, social, cultural, and recreational programs the university offers. Accommodations may include, but are not limited to, additional time on tests, staggered homework assignments, note-taking assistance. If you believe you should receive accommodations, please contact the Office of Disability Services to discuss your situation. This office can give you a letter that you can share with instructors of your classes outlining the accommodations you should receive. The letter will not contain any information about the reason for the accommodations.

Disability & Access Services
25 Buick Street, Suite 300
617-353-3658
access@bu.edu
http://www.bu.edu/disability/