Objectives |
Students taking this course can expect to acquire the following:
- an understanding of the major classes of high-level programming
languages, language features, and programming styles, with an emphasis
on applying concepts from programming language theory;
- formal methods of specifying the syntax and semantics of
programming languages;
- and the knowledge needed to write parsers, interpreters, and
simple compilers for the major classes of programming languages.
|
Contacting the Course Staff |
- For email and the newsgroup: please allow about 24 or so hours
for a response, except on weekends (see below).
- The staff do not work on the weekends. If you send something late
Friday or over the weekend then you should not expect a reply before
Monday.
- Never ever EVER call any staff at
home.
|
Submitting Assignments |
- There will be two kinds of assignments in this course:
machine problems (MPs) and hand-written assignments (HWs). As
their names may suggest, the two different kinds of assignments
need to be submitted in two different ways. An HW should be
submitted by being turned in at the beginning of class on the
day the assignment is due.
To submit an MP, you must have an account on the EWS systems. Using an EWS Linux
machine, you will need to run the
handin
program. Before submitting an assignment, you MUST make
sure that your MP compiles with the student grading
script supplied with the assignment. If your MP fails
to compile with the student grading script, your assignment will
get NO CREDIT. There will be no partial credit for assignments
that fail to compile.
|
Extensions |
- Each MP will normally have an automatic 48-hour extension with
a point penalty of 20% of the total value of the MP on that MP.
If we cannot give such an extension
for a particular MP, for example due to scheduling constraints,
we will announce that before the MP is handed out.
During the automatic extension, staff is not obliged to
answer questions for that MP. You are on your own.
Extensions without a point penalty for the first 48 hours and any
extension beyond the 48 hours will only be granted under very
unusual circumstances such as a medical or family emergency.
A signed note from a responsible party will be required.
If you do need such an extension for some legitimate reason,
do your best to let us know as soon as possible, preferably before
the normal MP deadline.
|
Regrade Policy |
Our goal as the course staff is to grade your work carefully and
accurately. Unfortunately, occaisonally staff may overlook something,
misunderstand an otherwise correct answer, or record a score incorrectly.
This is where the regrade procedure steps in.
In order to have your regrade considered you must provide the following:
- your netid;
- what assignment or exam question was graded incorrectly; and
- why you think your answer deserves more points than what the
grader gave.
You must also submit your regrade request for a particular assignment
within one week of receiving grades for that assignment.
Late regrade requests will not be accepted or read.
Good reasons to ask for a regrade:
- You used a notation that was unfamiliar to the grader but is
standard (e.g., in a textbook for one of your other courses).
- The grader recorded a score incorrectly.
- The problem was ambiguous (or just plain wrong), causing you to
interpret it differently than the grader.
- The grader marked the problem wrong incorrectly.
Bad reasons to ask for a regrade:
- Part of your answer "matched" the answer given in the solution.
A partially correct answer is still wrong.
"The difference between an
almost right word and a right word is the difference between a
lightning bug and lightning." -- Mark Twain
- You wrote down two or more answers, only one of which was correct.
Never put more than one answer for a question unless we tell you that
such a thing is legitimate.
- You expended a lot of effort answering the problem. We are
measuring mastery, not effort.
- You wrote something down.
|
Collaboration |
Each assignment has different collaboration policy.
Please look at the collaboration policy section in each assignment.
It will tell you whether you are allowed to collaborate or not.
Here are general policies for each case.
When you are allowed to collaborate,
- You can collaborate
with anyone in order to figure
out how to solve the problem, resolve things you don't
understand, and help each other track down errors or bugs. However, you
must write up and
handin your own MPs
and HWs separately.
- If you arrived at a solution to a problem through close
colaboration with others, you must LIST ALL STUDENTS with whom you
colaborated. If you take a solution that is largely from
another source, you must CITE YOUR SOURCE as a refernece. If you
choose to colaborate extensively, or use solutions found
elsewhere, you should remember that whether you pass
this course or not will depend on whether you pass the exams -- and
those are non-collaborative.
-
We allow you to collaborate for several reasons:
- all research done indicates that students learn more when they are
allowed to work together;
- our own ability to respond to student questions is increased
because your peers are able to give help.
-
However, you have to collaborate intelligently in order to get the most
out of it. If you ask a friend to describe the solution completely to
you and then write it down (in substantially different form), you will
get the credit but you'll fail the exam because you never learned the
methods/techniques/concepts.
-
If you copy or paraphrase (eg by changing variable names and
indentation) a friend's solution directly or substantially, you
must acknowledge in your homework that you have done so, or it
will be considered PLAGIARISM.
-
If you work as a group, each writing part and sharing it with
the others, then you must give credit to all members of the
group. The penalties for being discovered plagiarizing, or
engaging in other forms of cheating are described
below.
When you are NOT allowed to colaborate,
- You still can discuss about the assignment with other students.
- However, you should come up with your own solution, and handin your own MPs and HWs.
- If you copy or paraphrase (eg by changing variable names and indentation) a friend's solution
directly or substantially, you will be caught cheating.
University of Illinois rules apply to this course, as to
all others. In particular, the section of the
Student Code on
Academic Integrity is relevant here.
Think of MPs and written assignments as being part of the
practice for the exam. Many of the problems will be used as a
basis for the exam problems themselves, and some may occur
verbatim. In fact, when it comes time to study, we will likely
advise you to redo your MPs and written assignments.
|
Policy on Cheating |
We will be looking for cheating on both homeworks and exams. The
penalty for being caught cheating a first time --
for homeworks, failure to give proper credit for work that is not your
own, and for tests either sharing your solution or copying someone
else's solution --
is that you will receive a negative score for the unit cheated on
equal to the value of the unit. A homework (MP or written assignment)
is one unit. A numbered problem on test, including all its parts, is
a unit. The penalty if you are caught cheating a second time is a
grade of F for the class. Moreover, both cheating episodes will be
reported to the department. You should take all reasonable
precautions to prevent others from cheating and report any suspected
cheating. |
Grading |
Our goal is to have grades back to you as soon as possible. In
practice, this will probably take about a week for each
assignment or exam. Whenever your homework is graded, it will
either be returned in class if it is a written assignment, or
you will receive an email with information about your grades if
it is an MP. Do not ask when grades are available. They will
be in your inbox or handed back in class when they are available.
Grading Breakdown |
Work |
Weight |
Notes |
Machine Problems and Written Assignments (combined) | 25 |
Midterm 1 | 20 |
Midterm 2 | 20 |
Final Exam | 35 |
Project | NA |
Only for 4-unit graduate students |
Concerning MPs and written homeworks, here's how they work: Each assignment
is worth a certain number of points.
At the end of the semester, we will just add all the points you got,
divide by the total number of available points, and multiply by 25%.
Here's how extra credit problems on assignments work. We add up all
the extra credit you've gotten on the assignments, and again divide by the
total number of available points and multiply by 25%. For example, if all
the assignments turn out to be worth 500 points (not counting extra credit),
and you get 50 points of extra credit, then 2.5 points will be added to your
total. We may also have extra credit problems on exams, and they will work
analogously.
Note that extra credit is not added to your score until after the grade
cut-offs have been determined. The idea is that extra credit should really
be extra, and not simply change the point totals. So if you do no extra
credit, but do well on everything, then no matter how much extra credit
other people get, it will not affect your grade.
|
Textbooks |
There is no required textbook for this course. However, the following textbooks are recommended reading: (see also the resources page)
-
The Objective Caml system, release 3.12
Documentation and user's manual by Xavier Leroy
(with Damien Doligez, Jacques Garrigue, Didier Rémy and Jérôme Vouillon), from the official INRIA website for OCAML.
- an
online book
about OCaml from CalTech.
- Programming Languages: An Interpreter-based
Approach by Samuel N. Kamin. Addison-Wesley, 1990.
- Essentials of
Programming Languages, 2nd Edition; by Friedman, Wand,
and Haynes. Published by MIT Press 2001. ISBN: 0-262-06217-8.
- Compilers: Principles, Techniques, and Tools,
also known as "The Dragon Book"; by Aho, Sethi, and Ullman.
Published by Addison-Wesley. ISBN: 0-201-10088-6.
- Modern Compiler Implementation in ML by Andrew
W. Appel, Cambridge University Press 1998
- Advanced Programming Language Design, by Raphael A.
Finkel. Addison Wesley Publishing Company, 1996.
- Programming Language Pragmatics, by Michael L. Scott.
Morgan Kaufman Publishers, 2000.
- Concepts, Techniques, and Models of Computer
Programming Peter Van Roy and Seif Haridi, MIT Press,
2004 ISBN 0-262-22069-5
|
|
|