Instructor |
Greg Plaxton
(office hours T 4-5 and F 12-1, TAY 3.132; email: plaxton at cs) |
|
|
Teaching Assistants |
Ned Dimitrov
(office hour W 2:30-3:30, ESB 229, Desk 2; email: ned at cs),
Indrajit Roy (office
hour M 4-5, ESB 229, Desk 1; email: indrajit at cs)
|
|
|
Extended Office
Hours | Each of the four office hours listed above
will be extended half an hour (e.g., T 4-5:30 instead of T 4-5) if
there is a test or project due during the week following the office
hour. Example: Suppose that a project is due on Wednesday, September
27 at 8pm. Then every office hour between 8pm on Wednesday, September
20 and 8pm on Wednesday, September 27 will be extended by half an
hour. |
|
|
Class Time |
MWF 10-11 |
|
|
Class Location |
TAY 2.006 |
|
|
Discussion Sections |
The TAs will hold a total of four one-hour discussion sections
each Tuesday. The sections are at 10 in WAG 308 (Ned), 11 in BEN
1.126 (Indrajit), 1 in MEZ 1.208 (Indrajit), 2 in RAS 310 (Ned). You
may attend any discussion section that you wish, regardless of the
unique number for which you are registered. While attendance at the
discussion sections is not mandatory, it is strongly encouraged. The
TAs will be reviewing the lecture material, discussing approaches to
the programming assignments, and discussing the solutions to sample
test problems. |
|
|
Textbook |
The primary text for the course is the Fall 2006 CS 337 course packet authored by Professor Jayadev
Misra.
The textbook "Haskell: The Craft of Functional Programming" by Simon
Thompson is a useful reference for the section of the course related
to recursion and induction. In addition, at least one of the four
programming assignments will be done in Haskell.
|
|
|
Catalog Description |
Application of program analysis theory to program
design. Methodologies for large-scale program design. Designed to help
students bring together theoretical and programming skills.
|
|
|
Prerequisites |
The following courses, with a grade of at least C in each: CS 315 or
315H, CS 336 or 336H, and M 408C. |
|
|
Course Outline |
The course may be viewed as presenting case studies in which the
establishment of a firm theoretical foundation has led to the
development of correct and efficient programs for practical
applications. The course covers specific topics related to
compression, error detection and correction, cryptography, finite
state machines, recursion and induction, relational database, string
matching, and parallel recursion.
|
|
|
Programming Assignments |
There will be four programming assignments. Each assignment is
due by 8pm on the date indicated on the class schedule. Programming
assignments may be done individually or in groups of two. If you
choose to work with a partner, it is recommended that you employ the
"pair programming" approach in which team members work together on all
portions of the assignment, as opposed to simply dividing the
assignment into pieces and working on them separately. If you have
questions regarding a given assignment, feel free to bring them up at
the discussion sections or at office hours.
|
|
|
Quizzes |
Most of the lectures will include a brief quiz based on material from
the previous lecture. The quizzes are open book/notes. In each
lecture I will indicate the nature of the question to be posed in the
following lecture, so you will only need to review a small amount of
material in order to prepare for the next quiz. As explained in the
section below entitled "Overall Raw Score", all of your low quiz
scores will be dropped in the computation of your course grade. If
you miss a quiz for any reason (legitimate or otherwise), your score
for that quiz will be a zero, so it will be dropped. |
|
|
Tests |
There will be three in-class tests. The tests will be closed book and
closed notes; you are only allowed to bring one page of notes (both
sides may be used). The first test will be held on Monday,
October 2 and will cover the lecture material (including lectures
devoted to project discussion) up to and including September 27. The
second test will be held on Wednesday, November 8 and will
cover the lecture material from September 29 to November 1. The third
test will be held on Friday, December 8 and will cover the
lecture material from November 3 onward. Please try to arrive in
class a few minutes early on the test dates; this will allow us to
start the test right at the beginning of the class period.
|
|
|
Make-Up Tests |
Please note that no make-up tests will be given in this course. If a
student has a legitimate and properly documented excuse for missing a
one of the tests, the missing test score will be estimated as the
average of the other two test scores. More complicated scenarios,
e.g., where a student misses two tests for legitimate reasons, will be
treated on a case-by-case basis. In the event of a non-excused
absence, a score of zero will be assigned.
|
|
|
Overall Raw Score |
Each student's overall raw score, out of 100 points, will be
determined from performance on the four programming projects, the
quizzes, and the three tests. Each programming project is worth 10
points, for a total of 40. The remainder of the raw score is
determined as follows. Let x denote your average score on the tests
(expressed as a fraction, e.g., if you have a 70% test average, then x
is 0.7), let n denote the total number of quizzes, let A denote the
set of quizzes on which you scored higher than your test average, let
y denote your average score (again expressed as a fraction) over the
quizzes in set A, and let w denote 30 * |A| / n. Then your raw score
out of 60 for the quizzes and tests is (60 - w) * x + w * y. Example
1: Mary doesn't take any of the quizzes, but she scores 100% on all
three tests. Mary's raw score for the quizzes and tests is 60 out of
60. Example 2: Joe enjoys a brief quiz -- and aces all of them --
but, for unknown reasons, he refuses to participate in any sort of
"test". Joe's raw score for the quizzes and tests is 30 out of 60.
Example 3: Pat has a test average of 75%, and gets better than 75% on
20 out of a total of 30 quizzes. The average of Pat's top 20 quiz
scores is 90%. Pat's raw score for the quizzes and tests is 40 * 0.75
+ 20 * 0.9 = 48 out of 60, or 80%. |
|
|
Letter Grades |
The nominal cutoff for getting an A in the course is 90. For a B, it
is 80, and for a C, it is 60. These nominal cutoffs will not be
increased; for example, a student achieving a raw score of 91 is
guaranteed to get an A in the course. These cutoffs might be lowered
if necessary in order to improve the grade distribution. A typical
grade distribution might consist of 25-30% A's, 30-35% B's, 35-40%
C's, and a few D's or F's. |
|
|
Feedback |
Throughout the semester, please feel free to provide feedback to the
instructor regarding any aspect of the course. If you wish to provide
feedback anonymously, feel free to turn in an extra sheet of comments
whenever a quiz is being collected. |
|
|
Academic Dishonesty |
Cheating on the programming assignments, quizzes, or tests will not be
tolerated. If you find yourself overwhelmed by coursework or other
special circumstances, do not resort to cheating. Instead, make an
appointment to see the instructor to discuss your situation. |