![]() |
CS251 Course Information |
Professor: | Mark Sheldon |
Office: | SCI E126 |
Phone: | x3062 |
E-mail: | msheldon@wellesley.edu (“Mark Sheldon” in FirstClass) |
Lectures: | SCI E111, Mon./Wed./Thu. 9:50-11am |
Office Hours: | M/Th 1–2:30 and by appointment |
Web Site: | http://cs.wellesley.edu/~cs251 |
First Class: | CS251-S06 Announcements , CS251-S06 Q&A |
Tutor: | Karyn Benson, drop-in hours TBA |
Knowledge of some material from CS240, particularly assembly-level programming, will be helpful for some parts of the course. However, CS240 is not an official prerequisite, and we will review the CS240 material that you need to know for CS251.
An unofficial prerequisite for CS251 is the willingness to work hard.
The concepts covered in the course are very deep, and the programming
(especially when it comes to writing interpreters and translators) is
intrinsically more challenging than the programming you've done in
CS111 and CS230. Moreover, you will be doing a lot of
programming in this course. You should expect to work about ten hours
every week on your assignments for this course.
There are three other textbooks that are recommended (but not required) for the course:
Because the three optional books are expensive, and they are not the chief source of information in the course, you are not required to purchase them. You can instead rely on copies in the Computer Science resource room (SCI 173) or copies on reserve in the Science Center Library.
telnet library
from a Linux shell and log in as user library.
The MIT Computer Science and Artificial Intelligence Laboratory
(CSAIL) has an excellent computer science library (a.k.a. the “Reading Room”)
on the 8th floor of the Stata Center (the new MIT building designed by Frank Gehry
that looks as if it belongs in a Dr. Seuss story). This is an especially good place to
find journals and technical reports. You can visit their on-line catalog at
http://rr.csail.mit.edu/catalog/
.
The Barker Engineering Library at MIT (on the 5th floor of building
10, under the big dome) houses an extensive collection of computer
science books. You can visit their on-line catalog at
http://library.mit.edu
.
The ACM and IEEE digital libraries contain a wealth of computer science information,
especially from journals and conference proceedings published by these organizations.
http://cs.wellesley.edu/~cs251
The CS251 course directory is located on cs.wellesley.edu
in the directory /home/cs251
. This directory contains
material relevant to the class, and is where the problem set drop
folders are located.
We will be using CVS to download problem set materials from
cs.wellesley.edu
(see the CVS Handout), so there is no reason
to directly connect to cs.wellesley.edu
for this purpose.
However, in order to submit softcopies of your problem sets, you will
need to use the Linux scp
program to copy directories into
the drop folders in /home/cs251/drop
. Note that you can also
copy files to/from cs.wellesley.edu
using WinSCP on a PC or
Fetch on a Mac.
There is also a CS251-SO5
conference in FirstClass
with two subconferences:
CS251-S05 Announcements
will be used to make class
announcements, such as corrections to assignments and clarifications
of material discussed in class.
CS251-S05 Q&A
is a forum for you to post
questions or comments. They will be answered by me, a TA, or a
classmate. This is also a good place to find people to form a study
group.
You should plan on reading the CS251 conferences on a regular basis.
It is strongly recommended that you add both subconferences to your
FirstClass desktop
Many of the assignments will be challenging. Keep in mind that programming often consumes more time than you think it will. Start your assignments early! This will give you time to think about the problems and ask questions if you hit an impasse. Waiting until the last minute to begin an assignment is a recipe for disaster.
Problem sets will typically be due on Friday at 12:00 noon. You need to submit both a hard copy of your assignment (on paper) as well as a soft copy (on the CS server) of any programs (so that I may test them if necessary). Hardcopies should be slipped under my office door.
Most problem sets will be graded on a 100 point scale. I will strive to have problem sets graded as soon as possible. Solutions will be made available with the graded homework.
Because the programming assignments in this course are particularly challenging, you will be allowed on any assignment to form a two-person team with a partner. The two team members can (in fact, must; see below) work closely together on the assignment and turn in a single hard- and soft-copy of the assignment for the team. The grade received on such a submission will be given to both team members.
This is a rather unusual collaboration policy, and it is only allowed subject to the following ground rules:
The fact that team members have to program together means that you need to carefully consider a potential partner's schedule before forming a team. You cannot be a team if you cannot find large chunks of time to spend at a computer together!
Unless otherwise instructed, teams are allowed to discuss the group problems (but never the indivdual problems) on problem sets with other teams and exchange ideas about how to solve them. However, there is a thin line between collaboration and plagiarizing the work of others. Therefore, I require that each (one-person or two-person) team must compose its own solution to each assignment. In particular, while you may discuss strategies for approaching the programming assignments with other teams and may receive debugging help from them, each team is required to write all of its own code. It is unacceptable (1) to write a program with another team and turn in two copies of the same program or (2) to copy code written by other teams.
In keeping with the standards of the scientific community, you must give credit where credit is due. If you make use of an idea that was developed by (or jointly with) others, please reference them appropriately in your work. E.g., if person X gets a key idea for solving a problem from person Y, person X's solution should begin with a note that says “I worked with Y on this problem” and should say “The main idea (due to Y) is ...” in the appropriate places. It is unacceptable for students to work together but not to acknowledge each other in their write-ups.
When working on homework problems, it is perfectly reasonable to use code from the textbooks and other materials handed out in class. It is also reasonable to consult public literature (books, articles, etc.) for hints, techniques, and even solutions. However, you must cite any sources that contribute to your solution. There is one extremely important exception to this policy: assignments and solutions from previous terms of CS251 are not considered to be part of the public literature. You must refrain from looking at any solutions to problem sets or exams from previous semesters of CS251. Consulting solutions from previous semesters of CS251 constitutes a violation of the Honor Code.
All problem sets will be due at the later of the following two times: (1) the advertised due date and (2) the day on which the graded previous assignment is returned (if applicable).
This policy gives me a strong motivation to return graded assignments in a prompt fashion. A problem set can be turned in 24×n hours late if it is accompanied by n lateness coupons. If you work with a partner, each of you needs to attach one Lateness Coupon per person per day late.
Use these coupons wisely: you only get ten, and they are not transferable between students.
You may turn in late problem sets by slipping them under my office door. Of course, if I post solutions before you turn in a late problem set, you are bound by the Honor Code not to examine these solutions.
In extenuating circumstances (e.g., sickness, personal crisis, family problems), you may request an extension without penalty. Such extensions are more likely to be granted if they are made before the due date.
Please keep track of the time you spend on each problem of your problem sets, and include this information on the problem set header sheets that I will provide at the end of each problem set. (Two time columns will be provided for the case of students working together on an assignment.) Turn in this header sheet as the first page of your hardcopy submission. Assignments will typically have both group problems and individual problems; separate header sheets will be provided for group and individual problems.
Extra credit problems are entirely optional. Extra credit points will only be factored into course grades after I have partitioned the grade scale into letter grades. Thus, doing he extra credit problems may raise your course grade, but not doing extra credit problems will not lower your course grade.
For maximum flexibility, you may turn in extra credit problems at any time during the term (through the end of finals week). However, experience has shown that students who leave extra credit problems until the end of the term rarely turn them in. It is in your best interest to complete extra credit problems in a timely fashion. I will not hand out solutions to extra credit problems, but you are encouraged to discuss them with me in person.
In order to use the Linux workstations, you will need a Linux account. If you do not already have one, please let me know immediately.
There are many free implementations of the above languages that you can install on your personal computer, if you own one; see the documentation accessible from the CS251 home page for details. However, there are several reasons to prefer working on the Linux workstations:
cs.wellesley.edu
(also known as puma
).
You will have a limited amount of space on this
server to store your course-related files.
Although regular backups are made on cs
, sometimes files
are irretrievably lost. (In March 2004, a significant number of files
were deleted from the CS department server by a hacker before they had
been backed up.) For this reason, you should
not depend on the department server as the only repository for
your course files. You are also expected to keep backup copies of all
your course work on (1) your FirstClass accounts and/or (2) removable
disks (i.e., floppy disks and Zip disks).
Keep in mind that removable disks are a frail medium that you should handle carefully. Store and transport them in suitable protected containers. Do not subject them to temperature extremes, put them near magnetic fields, store them unprotected in your pockets, etc. Even if you handle floppy and zip disks carefully, they are still prone to failure. For this reason, you should also regularly back up your floppy or Zip disks!
Every time you insert a disk into a computer, you may be transmitting
a computer virus! Viruses are nasty software fragments that can erase
information on your computer or cause other malfunctioning. In order
to reduce the spread of computer viruses, make sure that any personal
computers you use have appropriate virus protection software
installed.
Although there will no dedicated take-home exams, the individual problems (as opposed to group problems) on problem sets effectively count as take-home quizzes. Most problem sets will have an individual problem. Keep in mind that you may not collaborate with anyone on an individual problem.
Group problems on problem sets (total) | 45% |
Individual problems on problem sets (total) | 40% |
Final exam | 10% |
Class participation | 5% |
The default ranges for grades are expressed as a percentage of total points (excluding extra credit points):
A | 93.33 – 100 |
A- | 90 – 93.32 |
B+ | 86.66 – 89.99 |
B | 83.33 – 86.65 |
B- | 80 – 83.32 |
C+ | 76.66 – 79.99 |
C | 73.33 – 76.65 |
C- | 70 – 73.32 |
D | 60 – 69.99 |
F | below 60 |
I reserve the right to lower boundaries between grades, but I will not raise them. This means that I can grade on a curve, but only in your favor.
Keep in mind that this is a very challenging course in which a B is considered a good grade (not a slap in the face) and an A is an outstanding grade. In the past, the average grade in this course has tended to be in the B range.
The above information is intended to tell you how I grade. It is not intended to encourage a preoccupation with point accumulation. You should focus on learning the material; the grade will take care of itself.
The best time to see me is during my scheduled office hours (which are listed above). If these times are not convenient, we can set up an appointment at some other time. You can set up an appointment by talking with me in person, calling me on the phone, or sending me email. You can also ask questions by sending me email.
See a teaching assistant during drop-in hours (see above for their schedule). If you are having trouble with the course, you can request a one-on-one tutor from the Learning and Teaching Center (LTC). This service is confidential and free of charge; please take advantage of it if you would like some extra help! Contact me or LTC for more information about this service.
Finally, when looking for help, don't overlook your fellow students
— not only those who have taken the course in the past, but your
classmates as well. Your classmates are a valuable resource; make
good use of them!