CS 3520: Programming Languages
Fall 2005   MWF 10:45-11:35   EMCB 122
Matthew Flatt (mflatt@cs.utah.edu), Instructor
Kumar Chheda (kachheda@cs.utah.edu), TA
 
Schedule/Homework Page

Overview

This course is about the principles of programming languages. We will study programming language concepts by using them in programs, and by implementing interpreters. By the end of the course, you will have learned about many possible choices in the design of a programming language; this knowledge will be helpful in understanding new languages as you encounter them in your programming future.

The course requires lots of programming, and we assume that you have considerable programming experience already. On occassion, you will be asked to show and explain your code during lecture time.

Programming assignments will typically use Scheme. We use Scheme for three reasons. First, Scheme can express the language concepts that we will study in an especially succinct manner. Second, Scheme is simple enough that you can learn it in a relatively short time. Third, Scheme is flexible enough that we can change the language to to gain experience with different language constructs (including constructs that are not normally part of Scheme).

Textbook

The course will used the following textbook much of the time:

 Programming Languages: Application and Interpretation (December 8, 2004 draft)
Shriram Krishnamurthi

You can obtain a printed and bound copy of the textbook at University Print & Copy Services.

Course Schedule and Homework

Schedule/Homework Page

The course schedule page contains a tentative schedule, which will be revised throughout the semester. Reading assignments, handouts, and notes for each lecture will be posted on the schedule page.

Homework assignments and solutions are also attached to the schedule page. Homework is typically assigned on Wednesdays, and it is usually due the following Wednesday at 8:00 AM, but there will be exceptions.

Programming Environment

We'll use the DrScheme programming environment, version 299.200.

Configuration: To submit homework and to run code from the textbook, you must install an extra package for DrScheme:

http://www.cs.utah.edu/~mflatt/past-courses/cs3520/public_html/plai+handin-v4.plt

To install, select Install .plt File... within DrScheme and either provide the above URL or select a downloaded copy from your filesystem. Then restart DrScheme.

After restarting DrScheme, a Handin button will be available for submitting homework assignments. You must create a special handin account, as described for HW 1.

To run code from the book, use DrScheme's Choose Language menu item to change the language to PLAI - Advanced Student. If DrScheme's bottom pane does not say PLAI - Advanced Student after clicking Run, then you will be unable to run code from class. In that case, check you language selection and click Run again.

Mailing Lists

cs3520@cs.utah.edu
Students must subscribe to this list. It is used by the teaching staff for class announcements, such as homework clarifications. (Students cannot post to the list.) To sign up for this list, visit http://mailman.cs.utah.edu/mailman/listinfo/cs3520
teach-cs3520@cs.utah.edu
Send mail to this address to get help from the instructor or TA. If the answering instructor/TA considers the question to be of general interest, he will post the question and reply to cs3520@cs.utah.edu. (Students cannot subscribe to this list.)
cs3520-chat@cs.utah.edu
Students may optionally subscribe to this list, which is used by students to communicate with other students. To sign up for this list, visit http://mailman.cs.utah.edu/mailman/listinfo/cs3520-chat

Help Sessions

Monday3:00-4:00 Matthew MEB 3105
Tuesday1:00-2:00 Kumar EMCB 130
Friday9:30-10:30 Kumar EMCB 130

Grading, Cooperation, and Cheating

Final grades will be calculated by combining homework and exam grades as follows:

Homework 40%
Class participation 10%
Mid-term 1 15%
Mid-term 2 15%
Final 20%

Late policy: Homework submissions will be accepted up to 48 hours after the deadline. For each student, up to two late homework submissons will be accepted without penalty. After a student's first two late submissions, a late submission within 24 hours of the deadline will be penalized 25%. A submission more than 24 hours late but less than 48 hours late will be penalized 50%.

Collaboration policy:

Working with others on assignments is a good way to learn the material and we encourage it. However, there are limits to the degree of cooperation that we will permit.

When working on programming assignments, you must work only with others whose understanding of the material is approximately equal to yours. In this situation, working together to find a good approach for solving a programming problem is cooperation; listening while someone dictates a solution is cheating. You must limit collaboration to a high-level discussion of solution strategies, and stop short of actually writing down a group answer. Anything that you hand in, whether it is a written problem or a computer program, must be written in your own words. If you base your solution on any other written solution, you are cheating.

When taking a quiz or exam, you must work completely independently of everyone else. Any collaboration here, of course, is cheating.

We do not distinguish between cheaters who copy other's work and cheaters who allow their work to be copied.

If you cheat, you will be given an E in the course and referred to the University Student Behavior Committee. If you have any questions about what constitutes cheating, please ask.


The University of Utah conforms to all standards of the Americans with Disabilities Act (ADA). If you wish to qualify for exemptions under this act, notify the Center for Disabled Students Services, 160 Union.
Last update: Friday, September 9th, 2005
mflatt@cs.utah.edu