• Introduction
  • Expression Interpreters
  • Programs as Data Structures
  • Identifiers and Substitution
  • Functions and Scoping
  • Recursion
  • State
  • Types and Type checking
  • Objects
  • Laziness


Grades are assigned on a standard 10 point scale:

  • A = 90-100%
  • B = 80-90%
  • C = 70-80%
  • D = 60-70%
  • F = 0-60%

I do not use a +/- grading scale.

Classroom tasks are weighted using the following scale:

  • Midterm Exam 20%
  • Final Exam 20%
  • Assignments 60%


You will perform several projects that involve developing code using the Racket programming language. These projects are an exceptionally important part of the course and provide insight into building interpreters that cannot be gained from lectures or exams. Programming projects will be assigned every 1-2 weeks. Please use KU’s Canvas system for submissions.

The Assignments page will list all assignments for the class.


All exams are closed book, closed notes exams. Our final exam will be held as scheduled by KU.

  • Midterm Exam - March 7 in class
  • Final Exam - TBD

Classroom Policies

Class Participation

I do not take attendance in class. However, participation in class is important to your success and its success. My classes are highly interactive, please ask questions and participate in class discussions. I do not record my lectures. Always remember to be kind and respectful of others.


All official communications will through the class Canvas. I will post late-breaking news about projects, homework and class administration as Canvas announcements. Make sure to check your Canvas notification settings, so that you are notified on your preferred medium. Please use Canvas Discussions board to ask questions that you think can be answered by your classmates, TA, or me. You are encouraged to use it as a medium to inititate open-ended discussions. Please do not share solutions to the assignments on the forum.


I encourage you to use email to contact me for any questions/comments/feedback.

Office Hours

I will make every effort to be in my office during scheduled office hours. If there are exceptions, I will let you know as early as is possible. If you have a conflict with my office hours, please make an appointment. I have an open door policy, you are free to come by whenever you choose during my office hours time.


Academic misconduct of any kind will automatically result in a 0 score on the homework, lab, project, or exam in question and your actions will be reported to the department chair. Your homework, exams and projects must be individually prepared unless otherwise noted. Posting your assignments to internet discussion lists is considered academic misconduct. Sharing your solutions with others is considered academic misconduct. Turning in solutions from previous semesters is considered academic misconduct. Paying people to prepare solutions is academic misconduct. Automated mechanisms are available for checking the originality of source code.


Excusing a missed exam or assignment is left to the discretion of the instructor. Illness, family emergencies, and religious observances are examples of acceptable excuses. Computer down time, over sleeping, and social events are examples of unacceptable excuses. Please try to let me know of problems in advance when possible and be prepared to provide verification of your excuse.