Textbooks
I'll be assigning readings from academic papers as well as from the following core textbooks:
TAPL: Types and Programming Languages, by Benjamin Pierce
ATTAPL: Advanced Topics in Types and Programming Languages, ed., Pierce
PLF: Programming Language Foundations, by Pierce et al.
Prerequisites
CS3200 Organization of Programming Languages
CS 4201/5201 Software Verification
Course Structure
We'll meet T/Th from 10:30-11:50am. Attendance in class is required.
Homework consists of programming and written assignments.
There will be no midterm nor final but instead an extensive
(research-oriented) final project.
The grading breakdown is roughly as follows:
Component | Weight |
Homework | 40% |
Attendance | 10% |
Final Project | 50% |
Blackboard will be used only to report grades.
Up-to-date information on other aspects of the course
(assignment due dates, etc.) will be posted on this website,
so check back frequently!
Assignments Key:
Written Assignment DUE
Programming Assignment DUE
Unless otherwise noted, assignments are due at 11:59pm.
Schedule (Tentative)
Functional Programming and Type Systems
W1: 1/15-19
W2: 1/22-26
Review: Syntactic type safety proofs (preservation+progress)
STLC extensions: products, sums, references
Recursive and existential types, abstraction
Reading:
TAPL 11, 13
W3: 1/29-2/2
The polymorphic lambda calculus (System F)
Church encodings (bools, numbers, existentials, etc.)
Higher-order types, kinds; F_\omega
Reading: TAPL 23, 29-30
Th 2/1: Written Assignment #1
Th 2/1: Final Project Checkpoint #1
Code:
F.hs
W4: 2/5-9
Proof Techniques and Program Logics
W5: 2/12-2/16
W6: 2/19-2/23
W7: 2/26-3/2
Reasoning about imperative programs:
Hoare logic, separation logic, separation algebras
Reading:
Separation Logic, Reynolds (2002)
Th 3/1: Final Project Checkpoint #2
W8: 3/5-9
W9: 3/12-16 - SPRING BREAK
Applications/Grab Bag
W10: 3/19-23
W11: 3/26-30
W12: 4/2-6
W13: 4/9-13
W14: 4/16-20
NO CLASS (Most people will be away at ESOP)
W15: 4/23-27
4/30-5/4: Final Exam Period
5/4: Final Project Written Reports
Homework and Lateness Policy
Homework will usually be due Thursdays by 11:59pm (unless otherwise
indicated in the syllabus).
Late homework assignments will be penalized according to the following
formula:
- Up to 24 hours late: no deduction, for a max 2 late homeworks per
student across the entire semester
- Homeworks later than 24 hours, or from students who have already
turned in 2 late homeworks, will receive 0 points.
Academic Honesty Policy
Acceptable Collaboration Matrix
| Instructor/GA | Noninstructor (e.g., Another Student) |
You | all collaboration allowed | high-level discussion
(of the problems, not your code!)
allowed but only after you've started the assignment;
must be documented in README as described below |
You
may discuss the homework with other students in
the class, but only after you've attempted the problems on your own
first. If you do discuss the homework problems with others, write the
names of the students you spoke with, along with a brief summary of
what you discussed, in a README comment at the top of each
submission. Example:
(*
README
Name: Gordon Stewart
Assignment: A0
Collaboration: I spoke with X and Y about Z.
*)
However, under no circumstances are you permitted
to share or directly copy code or other written homework material,
except with course instructors.
If I discover that you've cheated on an
assignment, you'll get an automatic 0 along with an immediate
referral to the
Office of Community Standards, which will likely
take disciplinary action against you.
Remember: homework is there to give *you* practice in
the new ideas and techniques covered by the course; it does you no
good if you don't engage!
In general, students in EECS courses such as this one must
adhere to the Russ College of Engineering and Technology Honor
Code, and to the OU
Student Code of Conduct. If you haven't ever read these documents,
please do so.
Students with Disabilities
If you suspect you may need an accommodation based on the impact of a
disability, please contact me privately to discuss your specific
needs. If you're not yet registered as a student with a disability,
contact the
Office of Student
Accessibility Services first.