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.

Textbook

Essentials of Programming Languages, Second EditionFriedman, Wand, and Haynes

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

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

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

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

Monday

12:50-1:50

Scott

NT Lab

Tuesday

1:00-2:00

Matthew

MEB 3122

Wednesday

2:30-3:30

Matthew

MEB 3122

Thursday

12: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.