CS 599 A1: Programming Language Foundations for Concurrency, Spring 2025

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
Course Assistant: Toby Ueno, tobyueno [AT] bu [DOT] edu
Class Schedule: Tue & Thu, 2:00pm - 3:15pm
Class Location: MCS B33
Office Hours: Thu, 12pm - 1pm, CDS 1024 (or with appointment with instructor)
Piazza: Please join the class using the following link: https://piazza.com/bu/spring2025/cs599a1. 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 R7J33W. Homework assignments are to be submitted to Gradescope in PDF format.
Course Website: https://ankushdas.github.io/courses/CS599-S25.html

Course Schedule

Will be updated regularly!

Date Topics Lecture Notes Further Reading
Jan 21, 2025 LL1: A Language for Arithmetic Expressions Lecture 1

Assignment Schedule

Release Date Due Date Assignment PDF Template TEX
Jan 23, 2025 Feb 6, 2025

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 Thursday 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/