Course Information: Principles of Programming Languages, Summer 2008

Meeting Times and Places

Prerequisites

The prerequisites for this course are 198:112 (Data Structures) and 198:205 (Introduction to Discrete Structures) or equivalent courses in the department of ECE. These prerequisites are required as I will assume you know the material in these courses (and their prerequisites).

Course Goals

The course is designed to help you better choose an appropriate programming language, or programming paradigm as well as learn new programming languages and paradigms. Learning about how program code is translated into a running program is essential for a good programmer. In addition, syntactic analysis techniques are generally useful as data processing tools outside of programming language analysis.

Books

Exams

As noted below, there are two exams for the course. Each exam covers material from the lectures, homeworks, and the programming assignments. Thus, you need to do the programming assignments as well as attend lectures and do the homeworks to perform well on the exams. Note, both exams are closed book. The final exam covers all the material in the course.

In an emergency, it is your responsbility to contact your instructor or TA before the exam to notify them. Documentation of the emergency will be required. Contact the Dean's office for assistance. Alternate arrangements will be made for documented cases. In case of a university-recognized conflict, you are expected to notify your instructor at least a week in advance and make alternate arrangements. Otherwise, you are expected to take exams at the scheduled times.

Homeworks and Programming Projects

There will be regular homework assignments posted on the course website. No late submissions are allowed. These will be discussed in recitation and are an important part of learning the course material as well as preparing for exams.

There will be one programming assignment in the course. Programs must be named and written as described in the assignment; we will not edit them as part of the grading process.

Programs that do not compile or have syntax errors will receive no credit. For working programs, grades are assigned based on functionality, design, proper use of programming paradigm, and style (e.g., comments, descriptive variable names). Any test data that is part of the assignment is solely for development purposes. It is your responsibility to test your program more thoroughly so it will perform well on the data we use in grading your program. Some testing will be performed automatically, and it is important that you format your program output as described in the assignment to avoid losing points.

Our goal is to grade as fairly as possible. The instructor is responsible for the grading policies. Disagreements about the policy (rather than grading mistakes) should be directed to the instructor not the TA.

Grades

Your grade will be based on the midterm, final exam, programming assignments, homeworks, and participation in class and recitation. Recitation attendance is mandatory. Below we give a rough weighting of the different parts of your grade, but we reserve the right to adjust the weights as needed during the term:

midterm, 25%
final, 35%
programming project, 10%
homeworks, 20% 
in-class and in-recitation assignments, 10%

A class curve will be applied as necessary but a minimum number of points will be necessary to pass. We will post test grades with medians so you can gauge your progress against an average grade of C.

Late Work

Late assignments cause problems for both the instructor and TAs as well as students. Assignments are meant to be coordinated with the lectures and recitations. Also, the due dates are spread out through the semester (i.e., you would not want to be working on two programming assignments at the same time).

To avoid these problems, we establish the following policy. As noted above, late homeworks are not accepted. A programming assignment is defined as late if you hand it in (electronically) after the date and time indicated on the assignment description. Late programs are penaltized 20% per day or fraction of a day. Thus, after five days, it is worth zero points. However, the programming assignments are a crucial part of the course please contact the instructor if you think you will be able to submit your assignment before the five day cutoff.

In some cases, an emergency may cause you to miss a deadline. As noted for exams, such emergencies must be documented (e.g., via the Dean's office) for alternate arrangements to be made. If we are told in advance about a valid delay, we can make appropriate arrangements for a late hand-in.