I primarily teach the following courses at BUCS:

Spring, 2021

I am scheduled to teach BU CAS CS520 in Spring, 2021.



This is a course that introduces students to some fundamental principles and techniques in modern programming language design and implementation. It focuses on using types to specify and then verify a variety of program invariants while emphasizing the need for mathematical formalism in both describing and analyzing programming languages and programs. Programming for this course is to be done in a research language (ATS) and the amount of programming is light overall.




Grading Policy

First and foremost, if you are not sure about what is being asked to do, please seek clarification on the Piazza page.

If you feel that your work is not fairly graded, please raise your concern to me ASAP. If you don’t, then I could not tell.

  1. You receive 10% bonus points for submitting each assignment on time.

  2. For a programming task, your implementation must compile and pass a given test in order for you to receive any credit.

  3. You can fix bugs in your code and submit for re-grading. There is an automatic 20% deduction of credit for each re-grading. For instance, if you earned 100 points on a re-grading, you would actually be credited with 80 points. A request needs to be explicitly made if you want something to be re-graded for the 2nd time.


Familiarity with programming in general:

Reference Books

  1. Introduction to Programming in ATS by Hongwei Xi.
  2. A Crash into Functional Programming via ATS by Hongwei Xi.
  3. Practical Foundations for Programming Languages by Robert Harper.

Programming Languages

Class Calendar

Courses Taught Previously

CS525 (Fall, 2020)

CS520 (Spring, 2020)

CS525 (Fall, 2019)

CS520 (Spring, 2019)