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 |
Will be updated regularly!
Date | Topics | Lecture Notes | Further Reading |
---|---|---|---|
Jan 21, 2025 | LL1: A Language for Arithmetic Expressions | Lecture 1 |
Release Date | Due Date | Assignment PDF | Template TEX |
---|---|---|---|
Jan 23, 2025 | Feb 6, 2025 |
The course grade will be calculated using homework assignments, a mid-term exam, and a final exam.
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.
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.
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:
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.
All Boston University students are expected to maintain the highest standards of academic integrity. You can find important resources here:
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/