I primarily teach the following courses at BUCS:

Spring, 2023

I am scheduled to teach BU CAS CS320 in Spring, 2023.



Concepts of Programming Languages (CPL) is a course that introduces students to some fundamental concepts in programming language design and implementation. The primary goal is to allow students who complete this subject to have a good feel for the elements of style and aesthetics of programming and a good command of the major techniques for controlling complexity in programming.

SML is a functional programming language that makes pervasive use of types in capturing programming invariants. We will be starting with SML and then making a gradual transition from SML to Python so as to demonstrate concretely that the concepts learned in the context of SML can be readily applied in the context of Python, one of the most popular language in the world.

Ultimately, we would like to make a convincing argument that programming can be a great deal of fun if you do it the right way!



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 24 hours earlier than the due time.

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


Familiarity with programming in general:


  1. Programming in SML by Robert Harper, which is available on-line.

  2. Introduction to Computation and Programming Using Python (3rd edition) by John V. Guttag

Programming Languages

Class Calendar

Courses Taught Previously

Year 2023: CS320(Sprn)

Year 2022: CS525(Fall)

Year 2021: CS520(Sprn) and CS525(Fall)

Year 2020: CS520(Sprn) and CS525(Fall)

Year 2019: CS520(Sprn) and CS525(Fall)