Programming Languages (F28PL)

Course overview

Welcome to the Programming Languages webpage. In a nutshell, this course says:

“How should we program? Well, it matters what programs we have in mind. Let’s think this through …”

For historical reference.
See this year’s course.

I’m co-lecturing this course with my colleage Greg Michaelson.

Class times

For weeks 7-12 (i.e. from now until the end of term) these are as follows:
- Wednesday at 11:15 in EM2.44.
- Wednesday at 12:15 in EM1.82.
- Thursday at 10:15 in EM1.83.
- Thursday at 13:15 in EM2.50 (lab/tutorial).
- Thursday at 15:15 in JN302.

Attend lectures! Make sure you understand the lecture materials while the course is going on! A student who thinks “I’ll sort it out during the holidays” is a student in denial (look at 1m03s).

Course resources

- Lecture videos.
- Lecture slides.
- Tutorials.
- Labs.
- Study class 1.
- Example SML programs (from last year, but still useful), and also
- example Prolog programs.
- The standard SML basis library. A useful read to explore built-in functions.
- Greg’s pages.
- These ML lecture notes from the University of Washington are succinct and very clear.
- Paul Graham has some excellent essays online. I note Beating the averages, The hundred-year language and Revenge of the nerds.
- Bill Wilson’s Prolog dictionary.
- The Prolog tutorial by Paul Brna and Tamsin Treasure-Jones dates back to 1996 and is still great.
- Lydia Sinapova’s Prolog Class Notes.
- Rosetta code is brilliant and well worth a visit. Look for Standard ML and Prolog.

rlwrap

rlwrap gives BASH-style history and completion at the command line. If you don’t know what that means then trust me—-you want this.

Run SML, PolyML, and SWI Prolog by respectively typing

rlwrap sml
rlwrap poly
rlwrap swipl

The exam

At some point we’ll examine you. For my half of the course I will set one question on SML and one question on Prolog.

In addition:
- These 50 Chuck Norris facts will be examinable.
- So will all 93 of these rules of cycling (my personal favourites: rules 9, 12, and 14).

Lectures

Videos of lectures are here; see also the lecture slides.
- Lecture of Wednesday 29 October at 12:15 := Video and/or read the slides (lecture 11).
- Lecture of Thursday 30 October at 10:15 := Video.
- Lecture of Thursday 30 October at 12:15 := Video.
- Lecture of Thursday 30 October at 15:15 := Video.
- Lectures of Thursday 6 November at 13:15 and 15:15 := See the study class.
- Lecture of Wednesday 12 November at 11:15 := Video.
- Lecture of Wednesday 12 November at 12:15 := Video.
- Lecture of Thursday 13 November at 10:15 := Video.
- Lecture of Thursday 13 November at 15:15 := Video.
- Lecture of Wednesday 19 November at 11:15 := Video.
- Lecture of Wednesday 19 November at 12:15 := Video.
- Lecture of Thursday 20 November at 10:15 := Video.
- Lecture of Thursday 20 November at 15:15 := Video.
- Lecture of Wednesday 26 November at 11:15 := Video.
- Lecture of Wednesday 26 November at 12:15 := Video.
- Lecture of Thursday 27 November at 10:15 := Video.
- Lecture of Thursday 27 November at 15:15 := Video.

See also
- the full list of lecture slides below,
- lectures from last year,
- the list of tutorials below.

Required reading

You are required to read the following short essays, which discuss imperative programming (represented by C, Pascal, and Java), functional programming (represented in the essays by Lisp and in this course by ML), and logic programming (represented by Prolog):

  1. Beating the averages,
  2. The hundred-year language, and
  3. Revenge of the nerds.
    I may base a discussion question in the exam on material from these essays.

Not-required reading

You may find the following interesting (but it is not required for the exam):

  1. The mythical man month. A famous book; if you hear somebody mention a “mythical man-month”, the quote comes from here.

Lecture slides

… for my half of the course. See Greg’s pages for the rest.

l11.pdf l12.pdf l13.pdf l14.pdf l15.pdf l16.pdf l17.pdf l18.pdf l19.pdf l20.pdf

Labs

… again, for my half of the course. Again, see Greg’s pages for the rest.

lab07.pdf lab08.pdf lab09.pdf lab10.pdf lab11.pdf

Tutorials

… again, for my half of the course. Again, see Greg’s pages for the rest. Use these for self-study.

tut06.pdf tut07.pdf tut08.pdf tut09.pdf tut10.pdf

The Rules

1. Turn up!
2. Understand lecture materials as you get them.
3. A student who thinks “I don’t understand this now; I’ll sort it out during the holidays” is in denial (look at 1m03s).
4. Rules 1-3 above apply especially to those who believe rules 1-3 above don’t apply to them.

A bit about me

I am a researcher in theoretical computer science. My research is mostly in formal logic.
Everybody calls me Jamie but my name is actually Murdoch. You can contact me by e-mail on “gabbay at macs hw ac don’ttypethis uk”. My office is G.50 Earl Mountbatten Building.

The students

Ah, well. I’m glad you asked. You should be second year undergraduate students. Let me know if this is not the case; I’d be interested to know!

A propos nothing in particular

- Revised log levels proposal: “FYI” “WTF” and “OMG” (John Barnette)