CMPU-235 Programming Languages

Vassar College, Fall 2011
Syllabus / Course Wiki



Welcome to the course Wiki. It will be updated throughout the semester with important course information, so check here regularly.

Contact Information

Professor: Marc Smith
Office: OLB 122
Office Hours: tbd (and by appointment)
Phone: 437 7497
Email: mlsmith at cs.vassar.edu

Course Coordinates

Time (when) Tue/Thu 1:30-2:45pm
Space (where) OLB 205 (new CS classroom!)
Cyberspace http://www.cs.vassar.edu/courses/cs235-201103/top

Text

Daniel P. Friedman and Mitchell Wand. Essentials of Programming Languages, 3rd Edition. MIT Press. Copyright © 2008.

Prerequisites

  • CMPU-102: lists and trees; functional, imperative and object-oriented programming languages
  • CMPU-145: set theory, recursive data and functions, inductive data definitions, and proofs

Course Summary

What is the meaning of a program? One way to find out is to run it, and see what it does. But to run a program, one needs an interpreter. An interpreter is a program that translates a program written in some programming language into a form that is executable on a computer, and then executes it. But this translation process comes with a promise to preserve the meaning of the original program. Interpreters that don’t keep this promise are of limited use.

For example, we could implement a Universal interpreter that reads in any program (or any text, for that matter), completely ignores its input, and outputs the value “42” 1). While this interpreter would be technically correct, it is too general to be useful in everyday computation.

In Language Theory and Algorithmics, we sometimes use reduction to solve problems: given a question we’d like to know the answer to, we reduce the problem of answering the original question to finding an answer to a related question. We will use a similar strategy this semester to study Programming Languages.

We will reduce the problem of finding the meaning of computer programs to implementing interpreters for the languages the programs are written in. More formally, we are studying the semantics of programming languages; but more practically, we will do this by implementing interpreters.

So what exactly is an interpreter? From Hal Abelson’s Foreword to our text:

The interpreter for a computer language is just another program.

In this course we will use DrRacket and the SLLGEN parser generator to implement interpreters in Scheme—technically, we will be using the EOPL language level within DrRacket, not the full Scheme or Racket programming languages. But while the interpreters will be written in a Scheme-like language, the languages we will write interpreters for are syntactically very different from Scheme.

Coursework and Grades

To assess your understanding, there will be regular programming assignments and two exams. The due dates of these assignments and projects will be determined as we progress. Your final grade for the course will be calculated according to the following:

10%Participation
40%Programming Assignments
25%Midterm Exam
25%Final Exam

Based on the weighted average of your graded coursework, your letter grade will be determined according to the standard 90, 80, 70, 60 cutoffs. For example, 90% or above is an A; 80% or above, but below 90%, is a B; etc. Numbers often don’t tell the whole story, however, and pluses or minuses may be added at the instructor’s discretion.

Attendance

We are a community of learners, but you must be present to help one another. You provide a unique and valuable contribution to every class. The questions you ask help us all understand better the course material. Missing class deprives this community of your insights and understanding. So, please notify your professor before any classes or labs you know you will miss. We worry about you when you’re not present. More practically, part of your grade (10%) is based on participation, and you must be present to participate. Excessive absences tend to hurt one’s overall performance in this class.

Academic Integrity

Don’t cheat. Read Originality and Attribution: A guide for student writers at Vassar College. Moreover, the guidelines that apply to writing in general, apply equally to the writing of computer programs. Copying someone else’s code without attribution amounts to plagiarism. Likewise, give proper attribution for the help you receive. School policy dictates instructors must report all suspected incidents of cheating to their department chair. Did you read the previous sentence? Please don’t put yourself or me in that position. When in doubt, ask me before seeking any help from another source.

Students with disabilities

Academic accommodations are available for students with disabilities who are registered with the Office for Accessibility and Educational Opportunity. Students in need of disability accommodations should schedule an appointment with me early in the semester to discuss any accommodations for this course that have been approved by the Office for Accessibility and Educational Opportunity, as indicated in your AEO accommodation letter.

courses/cs235-201103/top.txt · Last modified: 2011/08/30 16:37 by mlsmith
VCCS Top Events Extended Site Search Login Vassar Science Web Vassar Home Driven by DokuWiki Valid XHTML 1.0