CS 3520: Programming Languages
Fall 2002   TTh 10:45-12:05   EMCB 101
Matthew Flatt (mflatt@cs.utah.edu), Instructor
Scott Owens (sowens@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.

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

Programming Environment


All homework assignments will use DrScheme, version 200 or higher.


DrScheme provides multiple language levels, and the default language is not the one for this class.

  1. Using the Choose Language... menu item, change the language from Beginning Student to Essentials of Programming Languages. After changing the language and then clicking the Execute button once, the bottom pane in DrScheme should list the language as Essentials of Programming Languages.

Important: If DrScheme's bottom pane does not say Essentials of Programming Languages after clicking Execute, then you will be unable to implement the homework assignments. In that case, check you language selection and click Execute again.

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

Monday12:50-1:50 Scott NT Lab
Tuesday1:00-2:00 Matthew MEB 3122
Wednesday2:30-3:30 Matthew MEB 3122
Thursday12:50-1:50 Scott NT Lab

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: 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, November 14th, 2002