Header Montage

Syllabus

Prerequisites

  • CS 130A
  • Enrollment as Computer Science or Computer Engineering major

Catalog description

Concepts of programming languages: scope, parameter passing, storage management; control flow, exception handling; encapsulation and modularization mechanisms; reusability through genericity and inheritance; type systems; procedural, object-oriented, functional, and logic programming languages.

Textbooks

Required: Ghezzi & Jazayeri: Programming language concepts, 3rd ed., Wiley, 1997, ISBN 0-471-10426-4.

Strongly recommended: Simon Thompson: Haskell: The Craft of Functional Programming, 2nd ed., Addison-Wesley, 1999, ISBN 0-201-34275-8. (The first edition, ISBN 0-201-40357-9, is acceptable as well.)

Other papers and materials handed out in class and/or made available on the course web site.

Homework assignments

Homework will be assigned about once a week and will be due the following week. All homework assignments are optional. (There are, however, mandatory programming assignments; see below.)

Although the homework assignments are optional, they are highly recommended as a way to (1) check that you keep up with the material, (2) detect holes in your understanding, and (3) prepare for the midterm and final.

Programming Projects

You will be expected to complete two programming projects: a major project in Haskell (7 weeks) and a smaller assignment in Prolog (2 weeks).

In the Haskell project, you will write a compiler for a small, Algol-like, imperative language called Epsilon. Your compiler will generate code for a stack machine called Inter. To save time, you will be provided with source code for parsing Epsilon source code; the rest of the compiler, however, is your responsibility. The project will expose you to three different paradigms: an imperative language (the input language, Epsilon), a functional language (the implementation language, Haskell), and a stack-oriented language (the target language, Inter). You will get to apply many of the concepts you learn in the class.

A smaller programming assignment in Prolog will give you some feel for logic programming and declarative languages.

The programs are normally graded by testing with different inputs and reading the source code. All work has to be done independently.

Exams

There will be a mid-term and a final exam. The mid-term exam will be held during the lecture hour on Tuesday, February 13. The final exam will be held on Thursday, Mar 20, 12:00--15:00. The exams will be based on all the material covered up to the day of the exam in the lectures. There will be no makeup exams, and nobody will be allowed to take the exam early or late.

In addition, there will be four or five unannounced quizzes throughout the quarter.

Grading

There will be no incompletes, and only letter grades will be given. The midterm will count as 20 %, projects as 45 %, and the final as 35 % of the grade. Absolute grading will be used (no curves): 85-100 (A), 75-85 (B),65-75 (C), 55-65 (D), 0-55 (F).

Attendance of lectures and discussions is recommended, both because the lectures will cover material not in the textbook and because class participation will be used to resolve borderline grades. For students that do not participate much, performance on the unannounced quizzes will be used to resolve borderline grades.

Cheating

You know the drill. All work must be your own. I have a zero-tolerance policy. If you cheat on anything that counts toward the grade, you will get an F in the class. You may also be referred to the Student--Faculty Committee on Student Conduct and receive more serious sanctions, including suspension or dismissal from the university. If you need me to define "cheat," please see me during office hours.

 
XHTML Validation | CSS Validation
Updated 2007-04-24
Questions should be directed to Vebjorn Ljosa