CIS 500: Homework

Homeworks will generally be due every Monday by noon. Late homeworks will not be accepted. Be sure to include the names and emails of all your group members.

Code assignments must be submitted electronically. See below for details. Written assignments must also be submitted electronically (in ascii, ps or pdf form). We strongly encourage you to typeset your assignments using LaTeX.

To electronically submit homework, copy the Postscript or PDF file containing your solution to your SEAS Eniac account using, for example, scp:

% scp main.pdf
Password: ******
Then connect via ssh to and use the cis500submit command to submit your file for grading:
% ~cis500/bin/cis500submit hw1 main.pdf

Submission successful.
Note that you must give the full path to cis500submit unless you add ~cis500/bin to your $PATH. Your files must be readable by everyone in order for them to be submitted. If you do not see "Submission successful" printed out, then we do not have a submission from you, and any previous submissions for that assignment were likely lost. (If you do not have an account on Eniac, you may submit your homework by email to For example, both "Submission FAILED" and "Cannot submit ..." both indicate an unsuccessful attempt at submission.

cis500submit will accept multiple files as input, and can be run multiple times before the deadline. IMPORTANT: each time you run cis500submit, it overwrites your previous submission for that assignment. So if you need to submit multiple files, submit them all at once.


NOTE: Solutions can only be downloaded from computers on the UPenn network.

Homework 1 [Induction; Operational Semantics] (PDF, PS): assigned Wednesday, Sept 7th; due Monday, Sept 19th by noon; submit as "hw1" (LaTeX: hw01.tex, code.sty, prooftree.sty) (Solutions: PDF, PS)

Homework 2 [Lambda Calculus] (PDF, PS): assigned Monday, Sept 19th; due Monday, Sept 26th by noon; submit as "hw2" (LaTeX: hw02.tex, local.sty, prooftree.sty) (Solutions: PDF, PS)

Homework 3 [OCaml programming; Arith interpreter] (PDF, PS): assigned Monday, Sept 26th; due Monday, Oct 3rd by noon; submit as "hw3" (Arith implementation) (Clarifications) (Solutions:,

Homework 4 [de Bruijn] (PDF, PS): assigned Monday, Oct 3rd; due Monday, Oct 10th by noon; submit as "hw4" (LaTeX: hw04.tex, prooftree.sty) (Solutions: PDF, PS)

Homework 5 [Type systems, simply-typed lambda-calculus] (PDF, PS): assigned Wednesday, Oct 19th; due Monday, Oct 31st by noon; submit as "hw5" (LaTeX: hw05.tex, prooftree.sty) (Solutions: PDF, PS)

Homework 6 [Extensions of simply-typed lambda calculus, Derived forms] (PDF, PS): assigned Monday, Oct 30th; due Monday, Nov 7th by noon; submit as "hw6" (List implementation: lists.tar.gz) (Corrected version of (Solutions: PDF, PS,

Homework 7 [References, Exceptions] (PDF, PS): assigned Monday, Nov 7th; due Monday, Nov 14th by noon; submit as "hw7" (Solutions: PDF, PS)

Homework 8 [Subtyping] (PDF, PS): assigned Monday, Nov 21th; due Wednesday, Nov 30th by noon; submit as "hw8" (Solutions: PDF, PS)

Homework 9 [Object encodings, Featherweight Java] (PDF, PS): assigned Wednesday, Nov 30th; due Wednesday, Dec 7th by noon; submit as "hw9" (LaTeX: hw09.tex, code.sty, prooftree.sty) (Solutions: PDF, PS)