CS 3520: Programming Languages
Fall 2000   TTh 10:45-12:05   EMCB 101
Matthew Flatt (mflatt@cs.utah.edu), Instructor
Jason Baker (jbaker@cs.utah.edu), TA
Adam Wick (awick@cs.utah.edu), TA

Overview

This course is about the principles of programming languages. We will study programming language concepts by implementing a sequence of interpreters, compilers, and type checkers, each one introducing a new language concept. 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 implementation language for the course is Scheme. We assume no prior Scheme experience, although we do assume that you have significant programming experience. We use Scheme for two reasons. First, Scheme constructs 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.The course, however, is not about Scheme, but about the languages that we implement using Scheme.

For a detailed list of topics covered by the course, see the (tentative) course schedule.

Textbook

The textbook is not available in the bookstore. You must obtain a copy from the University Copy Center.
Essentials of Programming Languages, DRAFT Second Edition
Friedman, Wand, and Haynes

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 Thursdays, due the following Monday at 11:59 PM via handin. The EoPL tool in the programming environment (described below) will provide quick access to homework support files.

Programming Environment and Support Files

DrScheme

All homework assignments will use DrScheme.

Configuration

DrScheme provides multiple language levels, and the default language is not the one for this class. Also, the textbook relies on non-standard constructs that are not built into DrScheme (but already installed on CADE). Therefore, a small amount of configuration is necessary to use DrScheme for this course.

CADE configuration:
  1. Using the Choose Language... menu item, change the language from Beginning Student to Full Scheme. After changing the language and then clicking the Execute button once, the EoPL logo should be no longer X-ed out.
NT lab configuration:
  1. Download ntlab.plt
  2. Double-click ntlab.plt to install it; a DrEoPL program will appear on the desktop.
  3. Start DrScheme using DrEoPL. You should see an Xed-out EoPL logo in the button bar.
  4. Using the Choose Language... menu item, change the language from Beginning Student to Full Scheme. After changing the language and then clicking the Execute button once, the EoPL logo should be no longer X-ed out.
Home configuration:
  1. Download eopl.plt
  2. Install it:
  3. Start DrScheme. You should see an Xed-out EoPL logo in the button bar.
  4. Using the Choose Language... menu item, change the language from Beginning Student to Full Scheme. After changing the language and then clicking the Execute button once, the EoPL logo should be no longer X-ed out.
Important: If DrScheme's button bar does not contain a plain EoPL logo, you will be unable to implement the homework assignments. If the logo is not there, or it is X-ed out, check that you have not skipped one or more of the above steps. If the logo is there, click it and check the pop-up menu that appears to ensure that EoPL is not disabled.

Clicking the EoPL logo in DrScheme pops up a menu for disabling/enabling EoPL, and also lets you open a special web page for homework support files.

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, send mail to majordomo@cs.utah.edu containing
   subscribe cs3520
in the message body. (The subject line is ignored.)
teach-cs3520@cs.utah.edu
Send mail to this address to get help from the instructor TAs. 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.)
chat-cs3520@cs.utah.edu
Students may optionally subscribe to this list, used by students to communicate with other students. To sign up for this list, send mail to majordomo@cs.utah.edu containing
   subscribe chat-cs3520
in the message body. (The subject line is ignored.)

Help Sessions

Monday12:00-1:00 Adam NT Lab (EMCB 210)
Tuesday1:00-2:00 Matthew MEB 4546
Tuesday12:55-1:45 AdamNT Lab (EMCB 210)
Wednesday2:00-3:00 JasonCADE Lab
Wednesday2:30-3:30 Matthew MEB 4546
Thursday2:00-2:50 JasonNT Lab (EMCB 210)

Grading, Cooperation, and Cheating

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

Homework 50%
Mid-term #1 15%
Mid-term #2 15%
Final 20%

Late policy (revised after HW3): Homework submissions more than 8 hours late will be penalized. A submission more than 8 hours late but less than 24 hours late will be penalized 25%. A submission more than 24 hours late but less than 48 hours late will be penalized 50%. A submission more than 48 hours late will not be accepted.

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.


Last update: Monday, October 23rd, 2000
mflatt@cs.utah.edu