Systems Programming

Policies and Procedures

  1. Course staff
  2. Textbook and Course Materials
  3. Collaboration Policy
  4. Grading
  5. Homework

Course Staff

Instructor:
Mark A. Sheldon
Office:
SCI E120
Phone:
x3062
Email:
msheldon@wellesley.edu
Office hours:
Tuesday 12:30–2, Wednesday 2–3:30

There is a course conference, CS249-S07, for general announcements and for Q&A.

Textbook and Course Materials

While we will not be following any particular text, we will make extensive use of Marc Rochkind's Advanced Unix Programming, Second Edition. In addition, I will make lecture notes and some supplementary readings available either in handouts or on the web site, and I have reserved some C and Unix references in the Science Center Library. We will also establish a convenient course bookshelf. You will be expected to make extensive use of the web, online documentation, and software source code. The reference section of the course web site has quite a few useful links, and I welcome any suggestions.

Collaboration Policy

The Wellesley honor code applies to this course. This means that, unless specifically stated otherwise, each assignment must be your work alone. However, I encourage open discussion of ideas among students: You may discuss problems, difficulties, and solutions in general terms with each other (and on the course conference). But unless you are working in a team, each solution must be coded/written up separately. For example, having someone sitting next to you at the computer type or dictate a solution is not allowed. Posting detailed code on the course conference is also discouraged (the names of system calls are ok). If you receive substantial help from someone, then academic honesty and the honor code dictate that you give credit in your write up or the comments of your code. Similarly, if you find out about an algorithm or technique from a text or the web, you should cite the source.

In cases where teams are working together, the work must represent a thorough collaboration: Each team member must contribute to the solution of every problem. It is not acceptable for team members to divide up the tasks of a problem set. Coding should be done together.

Grading

The course will have two midterm exams (at least one of which will be a take-home exam), regular homework assignments, and a final thing. The final thing will be either a project done over the last 5 weeks, or a self-scheduled final exam. It will depend on what we cover and on class interests. The various elements will determine your final grade according to the following proportions:

Homework 40%
Exam 1 15%
Exam 2 15%
Final 25%
Participation 5%

Homework

There will be approximately 8 assignments in this class. Due dates will be posted on the course syllabus. The assignments will include lots of programming, so get started early! This will be easy because the assignment will be so much fun!

While we want a free, mutually supportive, and collegial atmosphere in the class, you must abide by the course collaboration policy.

Late Homework

Unless specifically noted, assignments are due by midnight of the due date. If an assignment is due on Friday the 13th, then you have all day Friday to work on it. Each of you gets 5 late days to use during the term: you can turn in 5 assignments 1 day late, or you can turn in one assignment 5 days late. This will allow for inevitable conflicts while ensuring that no one falls too far behind.

How to submit homework

Most assignments will require only online submission. When hardcopy is required, it is to be given to me or slipped under my office door. To submit materials on line, you will copy files into a course drop directory using the drop program:

% drop systems files.tar
copies files.tar from your current directory to your course drop directory. Each assignment will state what files you need to submit.

In general, you will submit source code and a script file that shows you testing your program (some test cases may be provided, but you should also be able to make your own). There are a couple ways to create a script file. I recommend that you run a shell inside emacs (via M-x shell) and then save the result. There is also a script program, but it produces output designed for the lp command, so it's not as easy to peruse online..

In general, everything you submit should have your name, the course, the assignment, and the date at the beginning, even script files. (The # character introduces comments in the Unix shell.)

Homework grading

Assignments will be graded on both functionality and quality. Producing a function that works as specified is worth 80%. The remaining 20% will be based on: Just as with a paper, the first version of a program that runs is probably not a great program. It is a first draft. You should get in the habit of rewriting code to improve its readability, robustness, and efficiency.

You all have written quite a bit of code by now, and you each have your own style. In this course, we will adopt a standard style: pointless idiosyncrasy is obfuscatory! Your code must follow this standard.


Author: Mark Sheldon
Last Modified: 23 Jan 2008