|
Overview |
While CS 5510 is normally a prerequisite for CS 6510, this semester's offering will cover all CS 5510 material, so the prerequsite will be waived. For a course more like previous offerings of CS 6510, see CS 6965.
This course is about the principles of functional programming languages. We will study functional programming concepts by using them in programs, by implementing interpreters, and by studying techniques for formal programming-language semantics.
The course requires lots of programming, and we assume that you have considerable programming experience already, although not with a functional programming language. On occassion, you will be asked to show and explain your code during lecture time.
Programming assignments will typically use Racket. We use Racket for three reasons. First, Racket can express the language concepts that we will study in an especially succinct manner. Second, Racket is simple enough that you can learn it in a relatively short time. Third, Racket is flexible enough that we can change the language to to gain experience with different language constructs (including constructs that are not normally part of Racket).
The course will be similar in many ways to the undergraduate course CS 5510, but somewhat condensed and with additional material on semantics in the style of CS 7520.
Textbook |
The course will roughly follow the following textbook:
Programming Languages: Application and Interpretation, Second Edition Shriram Krishnamurthi | |
Also available as PDF |
As an extra resource, you may want to consult the first edition.
Course Schedule and Homework |
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 weekly, and it is usually due the following week, but there will be exceptions.
Programming Environment |
We'll use the DrRacket programming environment, version 6.3 or later.
Install the uu-cs5510 package by using the Install Package... menu item in DrRacket's File menu, and type
uu-cs5510
in the box.
After restarting DrRacket, a Handin button will be available for submitting homework assignments. You must create a special handin account, as described for HW 0.
Installing cs5510 will automatically install the packages plai-typed, plai-typed-s-exp-match, and plai-lazy.
#lang plai-typed
Course Communication |
Announcement from the teaching staff will be posted on Canvas.
To ask questions, either contact the teaching staff through Canvas (preferred) or send e-mail.
Grading, Cooperation, and Cheating |
Homeworks is graded on the following scale: check++ = 110% for perfect work plus extra credit, check+ = 100% for nearly perfect work, check = 80% for somewhat flawed but acceptable work, check- = 50% for seriously flawed work, and 0 = 0% for missing or completely unacceptable work. All homework assignments are weighted equally.
Exams are graded on a scale of 0 to 100 points.
Final grades will be calculated by combining homework and exam grades as follows:
Homework | 60% | |
Class participation | 10% | |
Mid-term 1 | 15% | |
Mid-term 2 | 15% |
Late policy: Homework submissions will be accepted up to 48 hours after the deadline. For each student, up to two late homework submissons will be accepted without penalty. After a student's first two late submissions, a late submission within 24 hours of the deadline will be penalized 25%. A submission more than 24 hours late but less than 48 hours late will be penalized 50%.
Collaboration policy:
Last update: Wednesday, January 6th, 2016mflatt@cs.utah.edu |