Objectives |
Students taking this course can expect to be able to:
-
Program in a functional programming language
-
Understand the evaluation of programs in a
functional programming language
-
Write a type checker / type inferencer given a
formal type system
-
Write a lexer, and a parser using recursive-descent
parsing, or using a parser-generator
-
Write a syntax-directed translator from abstract syntax
to intermediate representations
-
Recognize and use major methods of specification of
dynamic semantics
-
Write a interpreter based on a formal operational
semantics of the language
|
Class and Exam Attendance |
-
Attendance in CS 421 is expected, and the student
accepts that work done in the class period or a
proctored examination may only be made up because of
a reason outlined in the
student code
in Section 1‑501 d - f, or because of illness
immediately affecting the day of absence, with
notification being given to the instructor before
the class or examination, or as soon as possible afterwards if the
illness is serious enough to have reasonably
prevented earlier contact.
-
All work missed as a result of an excused absence
must be made up with three (3) business days of the
missed class for in-class events unless a letter of
absence from the Student Assistance Center is
provided and indicates a reason for absence of a
greater period of time. In the case of a prolonged
absence, as documented in an absence letter, work
must be made up within three (3) business days of
the end of documented need for absence.
-
When a quiz or exam is held in the CBTF, students
are required to register for the event before the
testing period opens. Failure to do so will not
automatically grant the right to a make-up.
-
Reasons that do not count as a conflict, but as the
student's personal choice not requiring
consideration incude
-
Travel, except as part of a University sponsored
event.
-
Family visits, whether the student travels to
their family or their family travels to them.
-
Appointments that could reasonably be
scheduled/rescheduled not to conflict with the
class period.
-
Reasons listed in 1‑501.d.6.(i)-(iii), and for
other reasons which do not satisfy the standard
of significant and compelling, as determined by
the course instructor.
-
Requests for personnal accommodation may be
considered, but they will be handled in as uniform
manner as the circumstances allow. Requests must be
made at least one week in advance of the date of the
desired absence, unless clearly not possible by the
circumstances of the reason for the request.
|
Contacting the Course Staff |
-
For email and
Campuswire
:
please allow about 24 or so hours for a
response, except on weekends (see below).
-
The staff are not asked to work on the weekends. If you send
or post something late Friday or over the weekend then you
should not expect a reply before Monday.
-
Never ever EVER call any
staff at home.
|
Doing and Submitting Coding
Questions on Assignments, Quizzes
and Exams |
-
This semester, there are two kinds of assignments in
this course: machine problems (MPs), and web
assignments (WAs). MPs are submitted as text files,
one for each problem, with the file usually named
after the code being implemented. WAs are
calculational exercises. Both are submitted in
PrairieLearn.
For each problem in an MP or coding problem on an
examination, you will be given in PrairieLearn a
separate VSCode window, containing a directory
(listed to the left), an editor (VSCode) with a
window for opening the file for you to complete
with the answer to the problem. That file
typically will already contain a bit of starter
code sufficient for you to begin testing your
work. VSCode also has the ability for you to
start a terminal window, which will open placing
you in a directory with all the files you need to
complete and test the assignment, (as listed on
the left), and with full access to the compiler
for OCaml, the programming language we will be
using this semester.
-
Before submitting a coding question on a
examination or an MP assignment,
you MUST make sure that your MP
compiles with the student grading script
supplied with the assignment. You can do this by
typing make onthe terminal window and
making sure that your are given a grade report
with a list of tests run and whether they were
passed, with the points earned for the student
test suite.
If your question fails to compile with the
student grading script, your question will
receive NO CREDIT. There will be no partial
credit for coding questions that fail to
compile.
-
You may do multiple commits of either the MPs or
the WAs. Your best score will be your final score.
Work submitted before the late deadline will not
be subject to the late penalty, but work submitted
after will.
|
Extensions |
-
Each MP/AW will normally have an automatic 48-hour
extension with a penalty on that MP/WA is capped
at 80% of the value of the assignment. If we
cannot give such an extension for a particular
MP/WA, for example due to scheduling constraints,
we will announce that when the MP/WA is handed
out.
During the automatic extension, staff is not
obliged to answer questions for that MP/WA. 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, or similar evidence, 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/WA
deadline.
|
Regrade Policy |
All grading is done automatically in PrairieLearn via
algorithms that are fairly generic and in no way
specialized to your code. A regrade for you will
likely mean a regrade for the entire class.
Requesting a regrade requires an explanation of why
you believe your answer was incorrectly graded.
In order to have your regrade considered you must
provide the following:
- your netid;
-
what assignment or exam question was graded
incorrectly; and
-
what evidence you have that your answer was
incorrectly graded.
You must also
submit your regrade request for a particular
assignment within one week of receiving grades for that
assignment
.
It must be submitted directly to the course
instructor, not to the TAs. Late regrade
requests will not be accepted or read.
Good reasons to ask for a regrade:
-
The grading was inconsistent with the description
of how to do the problem given in class. Details
need to be provided.
-
The grading was inconsistent with the problem
statement. You must indicate what you believe the
inconsistency to be.
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 |
You are allowed to collaborate on the machine problems (MPs) and
the web assignments (WAs) of this
course, 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.
Nevertheless, you must each write and test your code
separately and submit your own solution.
Similarly, you must write up your own WA separately from others.
If your collaboration extended beyond understanding for what the
problem was asking, then you should note on your assignment with whom
you collaborated. As always, you are subject to
the rules for plagiarism. Whether you pass
this course or not will depend heavily on whether you pass the exams -- and
those are non-collaborative.
We allow you to collaborate for several reasons:
- substantial 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, you will get
the credit (so long as you do not copy verbatim, and you
properly cite) but you'll fail the exam, or do quite poorly,
because you never learned the methods/techniques/concepts.
-
If you verbatim copy, or copy with name changes, from a friend's
solution or other source, wholly or substantially, if you
cite, this is still violation of course policy and you will
receive a zero on the assignment if it is determined such
copying took place.
-
If you verbatim copy, or copy with only name
changes, from a friend's solution or other source,
wholly or substantially, if you did not cite, or
did not cite truthfully, that will be considered
cheating.
-
If you work as a group, each writing part and sharing it
with the others, that is also considered cheating, unless your
cite all members from whom you copied. Again, it will be a
course violation of course policy if you copy verbatim or with
only name changes, even if you cite and you will risk losing
all credit for the parts so copied.
-
If you copied your answer from a source on the internet,
that is considered cheating, unless you both cite your source,
and clearly indicate what was copied. If you cite, but copy
verbatim or with only name changes, again that is a course
policy violation, and if determined, will result in the loss
of credit for those parts so copied.
The penalties for being discovered cheating are described in the
next section, below. If you offer your solution for others to
copy, you should protect yourself from being accused of
cheating by reporting this as well. Then, if some of those to
whom you have lent your work fail to cite you, you will be
protected from cheating accusations (unless they also claim
they lent the same problem to you).
If you copy your solutions from friends or other sources, you
must cite your source, and the degree and extent of copying.
Also, you must do your writing without direct copying.
Think of MPs and web 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. 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 assignments
and exams. The penalty for being caught cheating a
first time -- either sharing your solution or
copying anyone or anything else's solution on
an exam, or copying anyone else's solution on an
assignment without citation -- is that
you will receive a negative score for the unit
cheated on equal to the value of the unit
.
An assignment (MP or web assignment) is one unit. A
numbered problem on a test, including all its parts,
is one unit. The penalty if you are caught cheating
a second time, after being informed of the first
time, is a grade of F for the class. You should
take all reasonable precautions to prevent others
from cheating and report any suspected cheating.
|
Grading |
All grading is done automatically in PrairieLearn, and you will
receive your results for each problem when you press the
Save & Grade button. You can see the scores of all past
assessments in the PrairieLearn gradebook.
It should be noted, however, that the value for MPs
and WAs, their value is the number of points assigned;
they are not all valued equally. The score tells you
the percentage of the points you received, but you
will need to refer back to the assignment itself to
view how many points it was worth. There seems to be
no way to make PrairieLearn report points rather than
scores in the gradebrook. The contribution of the MPs
and WAs is the number points earned cumulatively for
all MPs and WAs divided by the total points possible,
times the percentage of the course the MPs and WAs
combined are worth (10% for 3 credit students, and
7.5% for 4 credit students).
Each Midterm will have 90 points and the Final will
have 210 points. (All exam points and equal to each
other, as all MP and WA points are equal to each
other, but MP and WA points are distinct from exam
points.)
Below is a table giving the percentage each major
category of work in the class contributes to the final
grade.
Grading Breakdown |
Work |
3 Credit Weight |
4 Credit Weight |
Machine Problems, and Web Assignments (combined)
|
10% |
7.5% |
Quizzes | 10% | 7.5% |
Midterm 1 | 15% | 11.25% |
Midterm 2 | 15% | 11.25% |
Midterm 3 | 15% | 11.25% |
Final Exam | 35% | 26.25% |
Project | NA |
25% |
Grading Scale and Curve
Grade |
If your overall score is at least |
OR |
If you did better than this % of the
class
|
A+ | 100% | | 5% |
A | 93% | | 24% |
A- | 90% | | 35% |
B+ | 87% | | 35% |
B | 83% | | 48% |
B- | 80% | | 66% |
C+ | 77% | | 73% |
C | 73% | | 79% |
C- | 70% | | 89% |
D+ | 67% | | 92% |
D | 63% | | 93% |
D- | 60% | | 96% |
|
Textbooks |
There is no required textbook for this course. However,
the following textbooks are recommended reading: (see
also the resources page)
-
The OCaml System, release 5.0
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.
-
Modern
Compiler Implementation in ML by Andrew Appel.
Published by Cambridge University Press. ISBN 0-521-60764-7
(paperback).
-
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.
-
Essentials of Programming Languages, 2nd
Edition; by Friedman, Wand,
and Haynes. Published by MIT Press 2001. ISBN: 0-262-06217-8.
-
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
|
|
|