198:314 Principles of Programming Languages
Fall 2002

Course Information


Read this document! It will answer most of your questions about the conduct of the course.

Prerequisites

The prerequisites for this course are 112 and 205 or 330:227. If you have not taken these courses, then you should drop this course--it's not for you. Don't figure that you can make up material that you don't know. This course assumes that you know what's in the prerequisites, as well as what's in their prerequisites.

Course Goals

The primary purpose of the course, and the one which will be addressed in the lectures, is to get an overview of the characteristics of programming languages in general. Thus we will look at such questions as how languages are used, what concepts play an important role in their definitions, how they can help in creating correct programs, and other aspects of languages that are common to all of them.

A second purpose, to be dealt with in part in the recitations, and at some length in programming projects, is to get some exposure to several real programming languages. The languages we will actually use to program will be C, Prolog, Scheme, and Java. We will be using the undergraduate servers remus and romulus as our UNIX computing resource. They can be accessed from the labs as well as by dialing into the Rutgers network from your own personal computer using a modem. If you are unfamiliar with UNIX, you can browse the Introductory Unix Documentation Set available online information.

This course is run in co-ordinated fashion; in all sections, students do the same homeworks, the same programming projects, follow the same syllabus and take the same tests. The final grades for each student will be determined from performance in comparison with others in his or her own lecture section.

You should check the main CS314 class webpage often; we will post class-wide announcements on this page. You also should check your individual lecture webpage. Announcements specific to your lecture will appear there. Sometimes we may post clarifications or updates for the programming projects on the programming projects webpage.

Books

There is only one required book for this course; we offer other supplementary books for each of the new programming languages we will study. There also are online resources for learning these languages available from the main class webpage under Useful Websites for Languages Studied.

Supplementary class material will be placed on reserve at the SEC Reading Room (on the Busch Campus) during the term; you will be informed of these in lecture or on your class webpage. We have also placed on reserve some reference books on each of the programming languages we will study in detail. In all cases the material will be found under the course number (198:314) or the name of your instructor.

Examinations

There will be a midterm from 6:10-7:30pm on Tuesday evening, October 22, 2002, and a final exam from 4:00-7:00pm, on Thursday, December 19, 2002. Each exam will contain questions referring to knowledge gained from the programming projects; if you do not do the projects, you will find it difficult to answer these questions. All tests will be cumulative, covering all material in the course since its beginning. The final will cover EVERYTHING. All tests are closed book exams.

In emergency situations, when you are unable to get to the exam, it is your responsibility to contact your instructor or TA before the exam and notify them of the situation. Documentation of your emergency will be required! A call to the Dean's office can provide this. Alternate arrangements will be made for people with documented difficulties. ALL STUDENTS WILL BE EXPECTED TO TAKE THE FINAL EXAM AT ITS SCHEDULED TIME.

Exam Dates:
Midterm, October 22, 2002, 6:10-7:30pm
Final Exam, December 19, 2002, 4:00-7:00pm

Homework and Programming Projects

There will be weekly written homework assignments and four programming projects. In order to pass the course, all programming assignments must be completed and handed in. Turned in programs that do not compile or have syntax errors will be given a grade of 0.

The weekly non-programming homeworks will be posted on Wednesdays and then collected at the beginning of the 2nd lecture of the following week (i.e., Wednesday for Kremer and Thursday for Ryder). No late submissions will be accepted. These will be spot checked during the semester and discussed in recitation. Do this homework! It is intended to aid you in learning the material. We will use material from your homework on the tests as well as questions based on the programming projects.

The programming projects in this class will be graded on functionality, program design, proper use of programming paradigm, and programming style (e.g., comments, use of descriptive variable names). The test data we distribute with the assignment is not comprehensive; instead it is meant to test minimal functionality of your code. It is your responsibility to test your programs more fully. For grading purposes, an automatic script will run your submitted program on new test data. The output from your program will be compared with the output from our answer on the same data. The UNIX diff command is used to compare this output; therefore, the strings "abc" and "a b c" (with embedded blanks) will NOT COMPARE AS EQUAL. You must take care to format your answer as explained in each assignment. An email that explains your grade, in terms of the tests passed and failed by your code, will be automatically sent to you by the grading procedure.

Each project grading policy is designed to be as fair as possible. The TA's are not responsible for the policy; your instructors are responsible. Disagreements about grading policy (rather than grading mistakes) should be discussed with your instructor, not the TA.

Grading

Course grades will be based on your performance on the midterm, final exam, homeworks and programs. Exams will count for at least 50% of the final grade, with the additional proviso that in order to pass the course, the student needs to pass at least one exam. We consider recitation attendance mandatory for this course; your participation in recitation will count in your grade. Our tentative grade weights are: 250 points midterm, 350 points final exam, and 300 points for the programming projects and 100 for written homeworks plus recitation participation. We reserve the right to adjust these weights as necessary during the term.

Your achievement according to this weighting constitutes a raw score. Once the scores are in, the class curve within each lecture will serve as the basis on which letter grades will be awarded. We will keep you abreast of the median test grades for the class, so that you have some idea of where you stand; remember, an average grade is C.

Newsgroups

Please post questions regarding the programming projects or weekly homeworks on the class newsgroup. If you have specific questions about lecture, then please send them to your instructor in email using 314 in the subject line. Answers to questions of general interest will be posted either on the newsgroup or on the lecture webpage. All lectures of CS314 this term will share the same newsgroup: ru.nb.dcs.class.314 You should read the news group at least every other day!

Late Work

A fairly important consideration in getting through the course in one piece is keeping up. It doesn't pay to put anything off, because there's another thing coming right behind it. If you put off handing in a program by its due date, the chances are that you'll just fall more and more behind. To discourage such behavior, the following rules will be enforced.

By definition a late programming project is one which is handed in (electronically) after the time specified in the project statement. A late program will incur a penalty of 20% per school day or fraction thereof (you get weekends and holidays off). So if it's more than five days late, it's worth zero points; even so, the project must be completed and handed in.

It often happens that a student may miss a deadline because of some unavoidable circumstance, such as illness. Such latenesses are of course excusable, but only with documentation. After-the-fact excuses (e.g., ``My car broke down'') are not acceptable. Even ``I've been in bed with flu all week and couldn't get it done'' won't work. (But a note from the Dean, verifying the mishap is acceptable.) On the other hand, if we are told in advance that you won't be able to get something in on time, we will be glad to make appropriate arrangements for late hand-in.

Last updated at 5:05pm on September 1, 2002 by Barbara Ryder.