Date: Tue, 26 Nov 1996 18:40:35 GMT Server: NCSA/1.5.1 Last-modified: Wed, 09 Oct 1996 18:30:36 GMT Content-type: text/html Content-length: 27656
Drew Bernat '99 | x74849 | abernat@muddcs |
Matt Dharm '98 | x74853 | mdharm@muddcs |
Kevin Eustice '99 | x72482 | kevin@muddcs |
Elizabeth Gordon '99 | x74910 | egordon@muddcs |
Itai Seggev '99 | x74266 | itai@muddcs |
Hours | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | |
---|---|---|---|---|---|---|---|
10-11 | Matt | Matt | |||||
11-12 | Matt | Matt | |||||
12-1 | |||||||
1-2 | Kevin | ||||||
2-3 | Kevin | ||||||
3-4 | Lecture | Drew (2:30) | Lecture | Drew (2:30) | Beth | Beth | |
4-5 | Office Hrs. | Drew (to 4:30)+ Office Hrs. | Office Hrs. | Drew (to 4:30) | Beth | Beth | |
5-6 | |||||||
6-7 | Itai | Kevin | Itai | Kevin | |||
7-8 | Itai | Kevin | Itai | Kevin | |||
8-9 |
If none of these hours work for you, please let me know.
To get to my office, enter the Olin Building from the southeast. My door is inside 240, the CS Department Office, which is the first door on the right. 240 is always open during business hours. My door is usually closed to filter out noise, but don't hesitate to knock.
Introduction to principles of computer science. Algorithms, complexity analysis, data structuring, data and procedural abstraction, grammars, correctness, logic principles, processor organization, operating system concepts, programming languages, basic automata theory, and theoretical limitations.
Course Goals
To learn and apply basic principles of computer science, including
software construction, hardware organization, and limitations of
computers.
I am planning to lecture 50-60 about minutes of the 75 minutes we have allocated
in each session.
The rest of the time will be for the purpose of answering extended questions
and going into more specifics of some of the programming techniques and
examples. If you don't have things to ask of me in this remaining time, I may
ask some things of you (e.g. a quiz).
By carrying problem solutions through to computer implementation, you
are showing that you understand the issues, principles, and
techniques. I or the tutors will explain to you how to work any problem, to any
level of detail, if you ask. However, you must do so with a
sufficient time margin. Telling us at the eleventh hour that you just
aren't getting it and therefore want to drop the course is not availing
yourself of the substantial help available.
You are also welcome to submit email with any
question you'd like to have answered or any point you would like
addressed after lecture, or leave a note in my mailbox in 240
Olin. Of course you are encouraged to ask such questions in class as
well.
There are many tools available on muddcs itself. Use the
'man' feature of UNIX to find what you need and to explore. The command
Here is the nominal point breakdown we use on assignments. This may vary somewhat,
depending on the emphasis of the assignment.
The program should run according to specification,
taking into account any DWIM (do-what-I-mean) situations
(e.g. The professor says one thing but really meant something
different; Hopefully he or someone will catch this and
say something about it before it goes too far.)
We are a learning community here, so don't just be silent about
things that you think are errors.
Sometimes the algorithm is given. However, sometimes
such clues are ignored, resulting in loss of points
unnecessarily or unnecessary floundering.
Some people find a better way than what was suggested.
They get extra credit, at grader's discretion.
(Note: "better" does not mean more obscure or
cleverly hacked-up, but rather more elegant,
or substantially more efficient.)
Comments should be included in the code which expose the method,
any subtleties, etc.
The code should be readable without extraordinary effort.
Use spacing, braces, etc. to improve readability.
Layout characters are not at a premium, so use them liberally.
The program should not break in unusual ways for minor input
aberrations.
Neither I nor the tutors are your adversaries. We want you to succeed, but it
requires effort, cooperation, and timing on your part.
The following types of activities have occurred in the past. They have, in
most cases, resulted in receiving a failing grade in the course,
one or more appearances before the judicial board (with the attendant
blighted record), and in some cases eventual ITR (Ineligible to Register) status.
If you get significant, but legitimate, help from another, you should acknowledge
it on your submission. You do not lose credit for this. It is only
proper to acknowledge the other person.
Course Assumptions
Students should have had a first course in computing at the college
level (e.g. CS5). Prior experience in C or C++ is preferred although
not essential. We will be using a number of different languages, including
Java,
a simplified derivative of C++.
It is possible to have only a knowledge of Pascal, rather than C++, when you start.
This is fine, as long as you don't freak because of language syntax.
You should know about procedures, arrays, and
types at a minimum; if you are unfamiliar with these, please take CS5, 6
or 50 first.
Is this a "Programming Course"?
In a sense, it is: much of the course entails programming.
However, we consider exposure
to computer science ideas to be the important part. The intent of the
programming assignments is to drive home these key ideas.
Lectures
The word "lecture" below is used very loosely. I expect that the lecture
periods will include some traditional-style lecturing, but hope it will be more like a
multilogue (set of dialogues). You are expected to attend, ask
questions, and provide comments.
Threads
There are essentially three interwoven "threads" in the course: The book,
the problems, and the lectures. I try to keep them "in synch" with one
another, but active participation in all three threads is required.
Volume-wise, the book covers more material than can be discussed in the
lecture. The lecture will cover some things not in the book.
Staying attune to what is going on in lecture will help you focus on
the areas in the book that are important as far as exam emphasis.
The problems exercise some, but not all, of the
things discussed in the book and lecture.
Course Resources
The course is planned to be interactive throughout. We are eager to
prevent programming difficulties from consuming extraordinary time, so
please ask when you get stuck with such difficulties. It is
much more efficient to start early on each assignment so that
you give yourself enough time to cope with the numerous contingencies
which inevitably materialize. You can get help on-line by emailing to
cs60help@muddcs which goes to the graders/tutors and to me. I don't
encourage use of 'talk' because it is too slow, but I check email often. When
you email a message, it will typically be answered to the entire class
with parts of your message embedded. If you do not want it to be
attributed to you, please so indicate in your message. Grading
There will be approximately six graded assignments, most entailing programming.
Programming assignments help drive home key working concepts and
principles. Assignments vary in difficulty and will not necessarily be equally
weighted. There will also be some assignments which you will not submit, but
should do anyway because they will help you with other assignments.
The languages for the graded assignments will probably be one in rex, two in Java,
one in C++, one in Prolog,
and one in assembly language (ISCAL, for a simulated machine).
Sufficient information about the languages will be
provided to enable you to complete the assignments; you do not have to know these
languages when you enter the class.
Remember, you can always ask about things before you submit your actual product.
There is no reason to lose points on most of the above.
You also lose no points or esteem for asking.
Tutoring
The tutors are expected to play a key role in the course. Everyone will need to interact
with a tutor, even if you don't need help:
Your Directory ~/cs60
You should have a directory ~/cs60 which has group access by group cs60.
If not, the system administrator will create one for you. Access to this
directory will thus be by you, the instructor, and the tutors, but preferrably
no one else. When properly setup the directory listing, obtained by ls -l, for
this directory should look like:
Honor Code Standard (Please read this carefully.)
Although discussion of problems with others is encouraged,
programming in CS60 emphasizes individual learning, not group
projects. We observe the following Standard: "You may discuss the
assignment with other students. You may not
share [i.e. give or receive]
written work of any kind, inside or outside the course".
Elaboration: In the case of programming assignments, we consider
"written work" to include email, computer files, fragments of files, and printed output.
In developing code for a programming assignment, you can
discuss ideas with others, but discussion of ideas
must not involve wholesale examination or
transcription of the actual working code of
others, with the exception that you may use any code explicitly
provided by the instructor.
You would be surprised how easy it is for a grader to spot violations.
If you have any doubts about whether a form of
interaction constitutes a violation of this standard, please consult
with me prior to continuing.
Grading Weights
Here is how your overall grade is determined:
Exams are open book and emphasize conceptual understanding, rather
than memorization of fine details.
Late Assignment Policy
Submissions are done by following the instructions below,
which also establishes the time of submission.
The due dates on assignments should be noted carefully.
The work of an assignment should be conducted in the week or weeks
before, not on the last day when there is no space for the necessary
thinking.
Automatic Grace
There is an automatic, fixed, one-day grace period on all assignments.
In other words, if the due date
states day N, then the assignment must be turned in before midnight on
day N+1 to receive any credit. After midnight on day N+1 work you
spend on the problem is for you own edification only (which is not
to say that it isn't worth doing or required; you just don't get
points for it then). It is best to plan to get the assignments in
on the stated due date.
CS 60 Topic Outline
The lectures will roughly follow this outline. The progression is at
the rate of about two of the numbered topics below per week. I should
say that this is what I would like to do. Depending on background,
some of the topics expand to longer than allocated, with the result
that other topics get jettisoned or fall off the end. Please keep up
on the reading without it being explicitly assigned. The notes
generally expand on the lectures and discussions. But the lectures
may also expand on the notes or introduce new material. More often
than not, several threads will be interwoven in the lectures over a
period of time, in part to emphasize the commonality of concepts from
different vantage points. Brackets below indicate where chapters in
the notes start with respect to the concepts that follow. The outline
does not mention every topic. The actual lectures determine points of
emphasis.
How to submit assignments:
To submit an assignment, login to muddcs and run