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.
All homework assignments will use DrScheme, version 200 or higher.
- CADE lab: ~cs3520/bin/drscheme
- NT lab (EMCB 210): Start -> PLT Scheme -> DrScheme
- Your machine: download from http://www.drscheme.org/
Runs on Windows, Macintosh, Linux, and other variants of Unix
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.
- 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.)
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.Last update: Thursday, November 14th, 2002mflatt@cs.utah.edu |