- Final grades are posted. Have a great break!
- Office hours prior to the final exam: W 3-4pm, Th 3-4pm, Fr 2-3pm,
or by appointment.
- Presentation evaluation criteria
- Homework 6 is posted; due December
11 in class.
- Homework 5 is posted; due November
13 in class.
- Types slides slightly updated
to better explain parametric polymorphic type inference.
- Homework 4 has been updated
with an additional problem (as of 10/10 at 9am).
- Homework 4 is posted; due October
18 in class.
- Project 3 is posted; due
- Final project suggestions now
available (more to come).
- Homework 3 is posted
(recommended that you finish it by Oct. 11).
- Project 2 is posted; due
- Homework 2 is posted; due
- Project 1 is posted; due
- Correction: First class is August 30. (Bummer!)
- First class is September 6.
||CSIC 2118, MW 2:00-3:15pm
||24 hour take-home: available at 11am, Mon, Dec 18
||Tue, Dec 19, midnight (writeup)
4131 A.V. Williams
Hours: M 3:30-4:30pm, W 10:00-11:00am, or by appointment
4132 A.V. Williams
Hours: T 9:00-11:00am
||None (but see recommendations)
This core course is about techniques for analyzing and understanding
software artifacts. Ultimately, the goal of this area of study is to
improve the quality of software. In this course, we will cover three
related areas of programming languages research:
analysis, the name for any automatic technique for reasoning about
program source code. We will study data flow analysis and type
systems, and more briefly theorem proving. Model checking will be
covered by CMSC 630, offered in Spring 2007.
- Formal systems for describing languages and
programs, including lambda calculus and axiomatic, denotational, and
- Programming language features and
how they affect software, including imperative, functional, and
Prerequisite: CMSC 430 or equivalent. Most of the material
covered in a typical compilers course (CMSC 430) will not be used in
this class, so even if you have not taken such a course you may be
perfectly fine in 631. Contact the instructor if you are interested
in taking 631 but aren't sure if you have the background.
Grading and Expectations
Subject to change, especially until the start of the semester.
The final course grade will be made up of the following components:
- Homework (10%) There will be short written assignments
(roughly 5-6) to give you an opportunity to practice the material we
will go over during lecture.
- Programming Assignments (20%) There will be roughly 3-4
programming assignments in which you will implement some of the ideas
- Project (35%) You will be expected to complete a
substantial research project during the semester. Projects may be
completed individually or in pairs. For more details, see the
- Participation and Presentation (10%) You will present your project to the
class. You will also be graded on contributions to class discussion.
- Final Exam (35%) This course will include a final exam,
which will cover material from the homeworks, programming assginments,
and other lecture material.
Written assignments are due at the beginning of class on the due
date. Programming assignments are due at midnight on the due date.
Neither written nor programming assignments may be turned in late. If
you cannot make a due date because of extenuating circumstances, or
because it conflicts with a religious holiday, please inform the
instructor as soon as possible.
The college policy on academic dishonesty is strictly followed. All
graded materials must be strictly individual efforts. Projects may
include collaboration as permitted by the instructor.