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
-
Professor Alex Borgida (borgida@cs.rutgers.edu)
Office: Core 315
Telephone: 732-445-4744
Office hours: Tuesday 8:50 - 10:20 a.m. or by appintment via e-mail
-
Professor Lou Steinberg(lou@cs.rutgers.edu)
Office: Hill 401
Telephone: 732-445-3581
Office hours: Thursdays 12:30 - 2:30 PM
-
TA - Niki Shah (for Professor Borgida's lecture schedule)
Office: Hill 406
Telephone: 732-445-3766
Office Hours: Tues 4:10-6:10
e-mail: nikishah @ cs.rutgers.edu Niki Shah's
314 page
-
TA - Bing Bai (Grader)
Office: Hill 488
Telephone: 732-445-6992
Office Hours: Wed 2:30-4:30pm
e-mail: bbai @ remus.rutgers.edu
Bing Bai's 314 Homepage
-
TA - Nan Tu
Office: Hill 409
Telephone: 732-445-5587
Office Hours: Tue 2:30-4:30pm
e-mail: tunan@ remus.rutgers.edu Recitation
Page
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".)
Required: R. Sethi, Programming Languages: Concepts
and Constructs, 2nd Edition, Addison-Wesley, 1996.
Strongly recommended:: Alfred V. Aho, Ravi Sethi and Jeffrey
D. Ullman, Compilers: Principles, Techniques and Tools, Addison
Wesley, 1986
Recommended: R. K. Dybvig, The SCHEME Programing Language:
ANSI Scheme, Prentice Hall, 2nd Edition, 1996.
Recommended: W.F. Clocksin and C.S. Melish, Programming in
Prolog, Springer Verlag, 4th Edition, 1994.
Recommended: K. Reek,
Pointers
on C, Addison-Wesley, 1998. (For a careful dissection of the baroque
intricacies of C pointers).
Recommended: any book on C++, like C++ for Java Programmers
T.Budd, Addison Wesley, 1999; or books by Ira Pohl (also Addison Wesley).
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