Welcome to the CSE307 (Principles of Programming Languages) home page for Fall 2008. This page will be the main source of course information throughout the semester.
Please check this page regularly for new messages. The newest messages will always appear first.
The final exam was graded on a 120-point scale. The highest score actually achieved was 98. There were 3 scores lower than 25. The statistics are as follows:
Homework 6 was graded on an 11-point scale. The statistics are as follows:
Homework 4 was graded on a 19-point scale. Homework 5 was graded on a 10-point scale. The statistics are as follows:
Homework 2 was graded on a 15-point scale. The statistics are as follows:
Problem 6, part 3 turned out not to make any sense. There is a version of it that would make sense, but that is not what I put on the exam. Nobody seemed to really notice during the exam how nonsensical the question was. Anyway, I decided to collapse the grading scale for this part of the problem from 5 points to 2 points, and I gave people who did some nontrivial writing for this problem two points to compensate them for time spent. Note that a majority of students in the class did not write anything for this part.
I put here some notes on a couple of the problems on the exam.
Refs that
extends Types with references and dynamic storage
allocation and a compiler that fully implements these, as well
as the record and array data structures from Types.
Homework 2 was graded on a ten-point scale. The maximum grade on Homework 1 was 10 points. The statistics are as follows:
C++0x: An Overview
A good programming language is far more than a simple collection of features. My ideal is to provide a set of facilities that smoothly work together to support design and programming styles of a generality beyond my imagination. Here, I briefly outline rules of thumb (guidelines, principles), with examples, that are being applied in the design of C++0x. Then, I present the state of the standards process (we are aiming for C++09) and give two examples: concepts and generalized initialization. Since there are far more proposals than could be presented in an hour, I'll take questions. According to plan the complete specification will have been voted on October 20. Bio Homepage
.sml extension. It should now be possible
to use, e.g., CTRL-C, CTRL-B to send the contents of the buffer
to the SML process.
Homework 1 was graded on a twelve-point scale. The maximum grade on Homework 1 was 12 points. The statistics are as follows:
poly.sml,
which implements arithmetic with sparse polynomials.
It is pretty much written in a pure functional style.
This was part of a much larger piece of software,
which made heavy use of the SML modules facility.
I have included all of the signature and functor
definitions necessary to compile functor Poly.
I verified that it can be compiled by "use"ing the
files in the proper order.
ccheck.sml
is an SML program that plays the game of Chinese Checkers
via a command-line interface. I wrote it (don't ask me why)
quite a long time ago, and it makes pretty substantial
use of imperative features (primarily arrays, which are
mutable).
I hacked the code so that it would compile and run
under a modern SML-NJ. To run it, first "use" the
file ccheck.sml. This will define
a function play and constructors
X and O of type player.
Start the game by typing play X; (white)
or play O; (black).
Moves are entered as sequences of points separated by
hyphens. For example: B2-D2 is a legal
first move for White, and this can be followed
(after the program makes Black's first move)
by A3-C3-E1. The objective is to "jump"
your marbles as quickly as possible down the board and
fill up all the opponent's starting positions before
he does it to you.
I will be using this system to manage assignment handin and distribute grades.