198:314 Principles of Programing Languages
Spring 2001


Syllabus and Assorted 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 (addressed in lectures), is to get an overview of techniques for specifying the syntax and semantics of programming languages, as well as some implementation techniques. In addition, we will look at representatives of four "paradigms" -- ways of thinking about programming in certain kinds of languages, and ways in which languages can help ensure that programs are correct.

A second purpose, to be dealt with in the programming mini-projects, is to expose you to some real programming languages. The languages we will actually use to program will be C++, Prolog, Scheme,. 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 .

You should check your class web page often. We will post any updates on the programing assignments webpage or on the newsgroup for the class.

Staff

Books

There is only one required book for this course; we suggest three other supplementary books for each of the new programing languages we will study, as well as an excellent book on programming langauge implementations. (All these books are available in the SEC reading room under the name "RYDER".)

Approximate syllabus

Recitations

There are no recitation in the first week of classes.

News Group

Please post questions regarding the projects and homeworks in news group ru.nb.dcs.class.314.borgida or ru.nb.dcs.class.314.lou, as the case may be. You should read the news group at least every other day! Most questions regarding homeworks and programming projects should to be sent to the news group, NOT to the instructor or TA .

Examinations

There will be a midterm probably on March 7 (or earlier), from 4:30 to 5:50 pm. The final exam will be held at the university scheduled time: Friday, May 4th, 4-7 pm. All tests will be cumulative, covering all material in the course since its beginning. The final will cover EVERYTHING.

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.

Homework and Programming

There will be written homework assignments every few weeks, and three programming mini-projects. In order to pass the course, all programming assignments must be completed and handed in. Written homework will be assigned from the book, discussed in section, and will be reflected in your grade. Do this homework! It is intended to aid you learn the material. If you do not do it, you will perform badly on the tests, which will assume familiarity with the homework problems and the programming assignments.

Programs that do not compile/have syntax errors will be given a grade of 0. (With the large class size, we must use shell scripts or other ways of running your programs automatically.)

Grading

Grading 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 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.

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 assignment is one which is handed in (electronically) after the time specified in the assignment. 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 assignment 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 (``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. (A call to the Dean's office at the beginning of that week would have fixed you up.) 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.

Academic Integrity

While it is common to study together, writing programs together is considered a violation of academic honesty. The line is crossed when more than one person writes a line of code on either paper or a computer file. If discovered, academic dishonesty will be dealt with severely. Seriously.

There have been repeated attempts to cheat on the exams. At the very least, you should come with a photo ID.


Midterm info
answer to first midterm practice(version0.9)
answers for the fall 92 midterm