Class: Class consists of lectures (CSG 107), one lab meeting (CSG 108), and weekly student presentations (CSG 108).

Lectures: Lectures will be three hours long. They will typically include a one-hour question-and-answer session; some livecoding examples; and some lecture on other matters. Be prepared to be called on during lecture.

Labs: The TAs will conduct one lab meeting to introduce you to some of the course software and to familiarize you with some basic conventions. The lab session will be held on Thursday (1/8).

Codewalks: Every week, you will present some your homework solutions to the TA. These presentations are critical for the learning process and they are key to our evaluation of your progress. These sessions will take place on Thursday evenings in a location to be announced later.

Computing Environment We will use PLT Scheme 4.1, a programming environment for the Scheme programming language, and some dialects of Java. For the first half of the course, we will stick to the HtDP teaching languages plus the World teachpack. PLT Scheme is installed on the CCS computers. It is also freely available on the Web in case you wish install it on your own computer and use it for work.

Problem Sets The problem sets have three different purposes: to help you understand what you read; to learn to design programs systematically; and to help you maintain programs over a few weeks. See the Assignments page for details.

Pair Programming You must work on all required problems in pairs. Your partner will be chosen from your lab section, and your lab TA will assign you a partner. Every few weeks, you will get a new partner.

Pair programming means that you and your partner work on the problem sets jointly. You read them together and you work on the solutions together. One of the lab's purposes is to teach you how to work in pairs effectively; indeed, pairs are provably more effective than individuals in programming. The rough idea is this: One of you plays pilot, the other co-pilot. The pilot works on the keyboard and explains aloud what is going on; it is the co-pilot's responsibility to question everything. After a problem is solved to the satisfaction of both, you must switch roles.

Security: Guard your work! If you keep your work on our Unix machines, make sure that your solutions are protected 600. Leaving them group- or world- readable means that anyone can steal them. Your home directory includes, by default, a directory called classes that is readable only by you. Put all your class work here!!. If you put class material in some unprotected directory, and somebody else copies it, you will be held responsible!! (And we will be checking this!)

If you keep your work on your home machine, be sure your machine is secure, both from Internet hostiles and from your roommates, etc. (Don't discount this; we have encountered theft by roommates on a regular basis in the past.) Remember that physical security is a prerequisite for information security.

Theft We will consider all collaborations outside of your assigned partnership as theft. We will report all occurrences to the administration.

Students who are guilty of plagiarism have in the past been suspended and in exceptional cases dismissed from the program. (I know of one student who was dismissed from the program a week before graduation!).

A half-baked or zero-baked solution will result in a failing grade at worst. Cheating results in failing *and* bigger penalties beyond this course. Everyone is better off if you submit an incomplete solution of your own construction rather than a "complete" solution born of plagiarism.

If at any time you feel that you may have violated this policy, it is imperative that you contact the course staff immediately. It will be much the worse for you if third parties divulge your indiscretion. If you have cheated; if you have any doubt about whether you have done things honestly; if, even by accident, your team might have represented any other person's work as your own: COME TALK TO THE STAFF AS SOON AS POSSIBLE. You are better off if you work with us than if we have to come find you.

A final thought: This course requires a lot of work, so budget your time accordingly. And students who are under time pressure are far more likely to resort to theft. Time pressure or stress is not an acceptable excuse. The measure of character is not what you do when things are easy; it is what you do when things get tough.

Earning a Grade A lot of you have one burning question on your mind as you start your MS program:

How am I going to get an A in this course?

We have some news for you: you are beyond college now. In the world of technical professional programs, it really is about what you learn. But since you asked:

You will get one grade for each homework, including both your submission and your presentation. We will drop the lowest score from this set. Thus, if you choose to skip an assignment set or if you just don't get it one week, nothing is lost. The story is different for the second or third or ... time. Your final score will be computed as a weighted average of the non-dropped scores.

I generally do not give plus or minus grades, but I reserve the right to do so.

I reserve the right to amend this grading policy during the semester in order to award each student a grade that best reflects his or her performance and achievements in this course.

Last modified: Fri Jan 30 12:21:39 2009