Programming Languages

Friday, May 6: Office hour Wednesday, May 4: Servers Monday, May 2: Clients Wednesday, April 27: Downloading Monday, April 25: Race conditions Friday, April 22: Threading Wednesday, April 20: Lifecycle Monday, April 18: Lifecycle Friday, April 15: Intents Wednesday, April 13: Activities Monday, April 11: Views Friday, April 8: Android setup Wednesday, April 6: Android setup Monday, April 4: Exam Friday, April 1: Review Wednesday, March 30: Scopes Monday, March 28: Interpreter Friday, March 18: Interpreter Wednesday, March 16: Program memory Monday, March 14: Functions & arrays Friday, March 11: Parser Wednesday, March 9: Parser Monday, March 7: Grammars Friday, March 4: Types & names Wednesday, March 2: Lexer Monday, February 29: Lexer Friday, February 26: Regular expressions Wednesday, February 24: Exam Monday, February 22: Review Wednesday, February 17: Functions Monday, February 15: No class Friday, February 12: Search Wednesday, February 10: Search Monday, February 8: Enumeration Friday, February 5: Enumeration Wednesday, February 3: Trees Monday, February 1: Lists Friday, January 29: Lists Wednesday, January 27: Recursion Monday, January 25: Recursion Friday, January 22: Racket Wednesday, January 20: Introduction
Course overview

This course looks at several advanced topics in modern programming. We will be:


CS 256. This course assumes that you can program in Java.


There is no required textbook for the course. Instead, I will regularly direct you to reading materials online.

Office hours

These are some times when I'm likely to be in my office. Come by at any of these times and you will probably find me, though I may occasionally be pulled away unexpectedly. You can also use email to make an appointment.


If your learning or participation in this course may be affected by a disability or any other factor, please talk to me early in the semester so that we can arrange appropriate accommodations. I will do my best to ensure that everyone can learn effectively.


Being in class is crucial for your learning in this course. Absences will leave holes in your understanding of course concepts. If you must miss a class, you are expected to work to get caught up before the next class.

Grading policy

Your final grade will be a weighted average of exams (50%), homework (40%), and reading (10%). This table shows how averages translate to the 4-point scale. Please note that I set a high bar for a 4.0 and there is no such thing as extra credit.

Academic integrity

It is important to me that you conduct your work in this course with academic integrity. That means abiding by the specific policies outlined below, as well as the general guidelines in the Student Handbook. It is my responsibility to report violations of these policies to the Dean.


Programming assignments will be due approximately once per week. They will ask you to practice using new syntax and applying new concepts that have been introduced in class.


There will be three exams, one for each course unit, with written questions on both code and concepts. The first two will take place in class at approximately weeks 6 and 11 of the semester, and the third will take place during finals week.


For each assigned reading, you may be asked to submit responses to some questions. The deadline for each response will be the start of the first exam after it was assigned.


Things you might find useful:

We will use Sakai for homework submission and grade tracking.