csc501 · fall 2005

programming language semantics

announcements · instructor · about · schedule · presentations · evaluation · textbook · software · policies

announcements

Tue Dec 6, 7:10p I've posted the extra credit assignment!
Fri Dec 2, 6:25p Assignment #10 is out!
Wed Nov 30, 3:30p Assignment #9 is out!
Fri Nov 11, 4:30p Assignment #8 is out!
Mon Sep 19, 3:50p I've put up a Scheme reference for csc501.
Fri Sep 16, 11:25a See everyone's pictures!

instructor

David Tucker · dbtucker@cs.uri.edu

I won't hold regular office hours, so to arrange a meeting time you can email me or come to my office (Tyler 138).

about

In this course, we will explore various features of programming languages by writing interpreters for small languages. The first part of the course will focus on features that add expressive power to a programming language, such as functions, recursion, and state. The second part will study type systems, which languages employ to catch certain program errors before execution. We will round out the course by examining Scheme macros as well as memory management.

Our weekly meetings will comprise several modes of learning, including lectures by the instructor, group exercises, programming work in a computer lab, and student presentations.

schedule

We meet Thursdays from 3:30pm to 6:15pm in Tyler 126.

# date topics & presentations plai chapters assignment
1 Sep 8 Scheme HW #1
2 Sep 15 Scheme HW #2
3 Sep 22 Substitution 1, 2, 3 HW #3
4 Sep 29 First-order functions
Adam: quasiquote
4 HW #4
Essay 1
5 Oct 6 Environments & first-class functions
David: output
Mayur: list functions
5, 6
6 Oct 13 Closures
San: let forms
6 HW #5
7 Oct 20 Recursion & State
Peter: conditionals
Kristopher: match
9, 10, 13 HW #6
HW #7
8 Oct 27 Types & type soundness 25, 28
9 Nov 3 Typing control & data
Sherida: assignment & mutation
Andrew: named let
26, 27 HW #8
10 Nov 10 Explicit polymorphism 29
11 Nov 17 Type inference
Lewis: exceptions
30, more 30 HW #9
Nov 24 no class · Thanksgiving
12 Dec 1 Implicit polymorphism; Macros
Angel: vectors
31, 34, AaM HW #10
13 Dec 8 Memory management
Rajesh: fold
Wilson

See also uri's detailed academic calendar.

presentations

Each student will deliver a 5-10 minute presentation on some feature of Scheme beyond the basics we covered in the first few weeks. The speaker will get practice teaching to a small class, and the audience will learn another feature of Scheme to add to their programming arsenals.

Each week we will have either one or two presentations, one at the beginning of class, and possibly one right after lab. The week before your presentation, consult with me for information on your topic and suggestions on how to teach it. After your presentation, provide a short write-up to add to the Scheme reference for csc501.

evaluation

I will evaluate students based on performance in a variety of exercises:

Programming assignments
I will assign weekly programming exercises based on the material covered in our meeting.
Codewalks
For two or three programming assignments, I will ask each student to present his/her solution to me and answer questions about it. You should organize your presentation so that your audience will understand both the overall structure of your program and the details of interesting cases. The codewalk will provide an opportunity to evaluate and discuss your understanding of the material and your ability to design robust and clear programs. Each codewalk will last about 20 minutes, so plan on ten minutes of presentation and the remainder for questions and discussion.
Essays
I am planning a couple of 1-2 page essays on relating our study of Scheme-based interpreters to the broader context of programming languages in the wild.
Quizzes
I will give a 5-minute quiz each week on material covered in class as well as homework. The quizzes will count a little towards your final grade, but they are mostly designed to assess how students are faring and identify any trouble spots for the class as a whole.
Student presentations
Each student will deliver a 10-minute in-class presentation some time during the course of the semester. These are for you to get practice preparing a talk and speaking in front of a group of people. I will post more details about the presentations around week two of the course.
Final Exam
UPDATED! Our final exam period is Thursday, December 15, from 3pm to 6pm in Davis 109. The exam will be closed-book, and I expect it to take less than three hours.

In the past, some students have asked for the relative value of each component in determining the final grade. The following table is a very approximate breakdown, and is subject to change at my discretion:

50% programming assignments
20% codewalks
10% essays
10% quizzes & student presentations
10% final exam

textbook

The textbook is Programming Languages: Application and Interpretation, by Shriram Krishnamurthi. It's available for free online.

NOTICE: Don't download and print the book through the link above. The author is revising the book this semester, and I will post links to the updated sections as we cover them.

software

We will use DrScheme for all of the programming in this course. DrScheme is free; you can download versions for all major platforms, including Unix, Windows, and Mac.

Please upgrade to version 299.400 if you installed 299.200! The old version contains a bug that may corrupt your Scheme files.

To install DrScheme and our course package:

  1. Download DrScheme and follow the installation instructions
  2. Run DrScheme, and go to File > Install .plt File...
  3. Select the Web tab, and enter http://homepage.cs.uri.edu/courses/fall2005/csc501/plai299.plt
  4. Exit DrScheme, restart it, go to Language > Choose Language..., expand Programming Languages: Application and Interpretation, and select PLAI - Advanced Student.

policies

The following policies are in force for this class. Please see me if you are unclear on any of the policies.

Lateness
I will handle late submissions on a case-by-case basis. If you think you won't be able to complete an assignment on time, please contact me as early as possible.
Attendance
Again, please contact me in advance if you will miss a class so that I can make sure you don't fall behind.
Collaboration
Unless otherwise specified, you should do all assignments by yourself. I do encourage you to discuss the material with other students because you will probably get a better understanding through hearing different perspectives. However, there's a fine line between discussion and giving away answers, and it's in your best interest to figure out the hard parts yourself. Hopefully the assignments will be so exhilarating that you won't want others spoiling it for you anyway.
Plagiarism
The University requires that I detect and report any cases of plagiarism. Please don't copy other people's work without appropriate citation. Plagiarism is a complete waste of both my time and yours.
Incompletes
If, at the end of the course, you think you need extra time to complete some of the work, you must tell me to assign your grade as 'Incomplete'. The University does not allow letter grade changes on the basis of extra work.