CS 3520: Programming Languages
Fall 2001   TTh 10:45-12:05   EMCB 101
Matthew Flatt (mflatt@cs.utah.edu), Instructor
David Goldberg (goldberg@cs.utah.edu), TA
Landon Hall (lhall@cs.utah.edu), TA


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.

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


Essentials of Programming Languages, Second Edition
Friedman, Wand, and Haynes

Note: the second edition differs greatly from the first edition, and it differs significantly from the draft version that we used in Fall 2000.

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 Tuesdays, due the following Tuesday 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


All homework assignments will use DrScheme.


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 and the NT lab). Therefore, a small amount of configuration is necessary to use DrScheme for this course.

CADE and NT Lab 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.
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

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.)
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.)
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

Monday1:00-2:00 David CADE Lab
Tuesday1:00-2:00 Matthew MEB 3466
 12:00-2:00 Landon NT Lab
Wednesday2:00-3:00 David CADE Lab
 2:30-3:30 Matthew MEB 3466
Thursday12:00-2:00 Landon NT Lab
Friday11:00-12:00 Landon NT Lab

Grading, Cooperation, and Cheating

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

Homework 60%
Mid-term 20%
Final 20%

Late policy: 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.

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: Thursday, September 20th, 2001