Course Overview

This is an introductory honors course in computer science, not just computer programming. We will learn through the vehicle of a specific programming language—Haskell—but the topic of our study is not Haskell per se, it is function and data definition, abstraction, type, induction, set theory, and logic. This quarter has a distinct “high-brow” feel to it. Next quarter is your opportunity to get down and dirty with traditional languages and larger self-directed projects.

Course Staff

The lecturer is Stuart Kurtz.

Generally speaking, the best way to communicate with me outside of class is via email, at stuart@cs.uchicago.edu. If you do send me email, please include include the string "[16100]" in the subject line, as this will get you past my spam filters, e.g.,

Subject: [16100] Homework questions...

Office hours are 10:30-11:30 MF, and by appointment. Please feel free to ask to set up an appointment if my regular hours don't work for you, and I will try to accommodate you as quickly as possible. Getting an appointment is easy—just ask. Come with specific questions. I will not use office hours to provide make-up lectures, but I'm very happy to elaborate, develop code examples, etc.. My office is Ryerson 166.

The Lab TA is Tim Armstrong.

The Course TAs are Mark Stoehr (ThF 1:30-3:00, Ryerson 177) and Allan Espinosa (Tu 3:00pm-4:30pm, W 1:00-2:30pm, Jones 209).

Texts

The principal text for the course will be my lecture notes, but I've required Real World Haskell, and recommended Programming in Haskell. The latter is terse and systematic, but a bit expensive. The former is more verbose, and more of a practical tutorial. There's also a lot of material on the web, including the full text to Real World Haskell.

Grading

Grading will be based on homework (1/3), lab (1/6), a midterm exam (1/6), and a final exam (1/3). Late homework is not accepted, however the three assignments with the lowest grades will be dropped in computing the homework score, and they may include missed assignments.

Policies

Academic Honesty

In coming to the University of Chicago, you have become a part of an academic community. You need to both understand and internalize the ethics of our community. A good place to start is with the Cadet's Honor Code of the US Military Academy (West Point): “A Cadet will not lie, cheat, or steal, or tolerate those who do.” It is important to understand that the notion of property that matters the most to our community is ideas, and that to pass someone else's ideas off as your own is to lie, cheat, and steal.

The University has a formal policy on Academic Honesty, which is somewhat more verbose and less comprehensive than West Point's. Even so, you should read and understand it.

I believe that student interactions are an important and useful means to mastery of the material. I recommend that you discuss the material in this class with other students, and that includes the homework assignments. So what is the boundary between acceptable collaboration and academic misconduct? First, while it is acceptable to discuss homework, it is not acceptable to turn in someone else's work as your own. When the time comes to write down your answer, you should write it down yourself, from your own memory. Moreover, you should cite any material discussions, or written sources, e.g.,

    -- I discussed the algorithm used in this exercise with Jim Smith.

But let me add a cautionary note. The University's policy, for its relative length, says less than it should regarding the culpability of those who know of misconduct by others, but do not report it. An all too common case has been where one student has decided to ‘help’ another student by giving them a copy of their assignment, only to have that other student copy it (perhaps with minimal modifications) and turn it in. In such cases, we view both students as culpable, and pursue disciplinary sanctions against both.

For the student collaborations, it can be a slippery slope that leads from sanctioned collaboration to outright misconduct. But for all the slipperiness, there is a clear line: present only your ideas as yours, and attribute all others.

If you have any questions about what is or is not proper academic conduct, please ask me.

Lecture Attendance

I do not explicitly include lecture attendance as a grading criteria. But diligent attendance at lectures is also essential to mastery of the material, and my willingness to extend myself (e.g., to invest time in a student through office hours, email, etc.) is strongly tied to my perception of the effort being put out by the student.

I'll also note that, based on current University of Chicago tuition rates and an expectation of 28 or fewer scheduled lectures per course per quarter, you're paying somewhere between $125 and $175/lecture. You should find this sobering. I do.