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—a pure, lazy, functional programming language. 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 for Section-01 (MWF 9:30-10:20) is Stuart Kurtz. Office hours are 10:30-11:30 MWF, and by appointment. Ryerson 166. The lecturer for Section-02 (MWF 11:30-12:20) is Ravi Chugh (personal webpage). Office hours are 4:00-5:00 TR and by appointment. Ryerson 167.
The Lab TAs are Mark Stoehr and Severin Thaler.
The grading staff includes:
Stephen Fitz (TA),
Lee Ehudin (Grader),
Mitchell Spradlin (Grader), and
Bernard Xie (Grader).
Course Communication
We will be using several technologies for coursework and management:
- This website, which contains our lecture notes for the course. These are a primary source!
- Piazza is an externally hosted course web site that we're going to use for student Q&As. Content related questions and discussions should be routed through Piazza—if you have a question, then almost certainly other students do too. The Piazza site for this course is https://piazza.com/uchicago/fall2014/cmsc16100/home.
- For individual issues you can contact your instructor and/or TAs via email. If you do send email, please include include the string "[16100]" in the subject line, as this will get you past spam filters.
Texts
The principal text for the course will be our lecture notes, but we recommend:
- Learn You a Haskell for a Great Good is a longstanding student favorite. It's quirky and fun.
- Real World Haskell, which is a bit verbose for our tastes, but verboseness can be a virtue in dealing with new concepts, and we'll see a lot of them. It's fairly inexpensive as textbooks go, but is also freely available on the web.
- Programming in Haskell, which is Professor Kurtz's kind of programming language book: terse and systematic. It's also expensive, and is perhaps most useful in teaching you Haskell if you already know it.
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.
Our particular theory and practice of homework is this
- The principal role of homework is to ensure that the work that you do outside of class covers material that I believe is important. One implication of this is that I do expect you to work outside of class. The comments you get on your homework and exams are much more important than the grade—let me know if you're not getting what you need.
- I view the assessment aspect of homework as secondary, and mostly to avoid putting too much weight (or pressure) on the in-class exams. That said, homework as assessment is particularly subject to manipulation, which these days includes simply getting your answers from the internet. I expect that most of you are driven by a thirst for knowledge, and for you guys, it should be obvious that you gain by doing your homework yourself, and lose by having others do it for you. For those few of you who are motivated more by grades than anything else, we'll note that doing the homework is an efficient way to prepare for the exams. In any event, we'll ask you to note our policy on academic honesty below.
- Managing late homework is a major pain. So here's our policy: I don't accept it. But, since I was once an undergraduate ourselfs, I know that life exists outside of the classroom, and occasionally an assignment gets missed. Therefore, we're giving each student three "free-passes" on their homework, i.e., you can miss up to three homework assignments, for which there will be no penalty. Mechanically, this is automatic—we'll just drop the three lowest scores. Note that a single day's work can involve multiple assignments.
- Homework exercises are due at the beginning of lecture after they were assigned, unless otherwise noted.
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 & Plagarism, which is simultaneously 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 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.
Accommodation
If you have a disability accommodation, please provide me with a copy of your accommodation determination letter from the Student Disability Services as soon as possible.
Lecture Attendance
I do not explicitly include lecture attendance as an explicit grading criteria. But diligent attendance at lectures is essential to mastery of the material, and our willingness to extend ourselves (e.g., to invest time in a student through office hours, etc.) is strongly tied to our perception of the effort being put out by the student. In particular, absent extenuating circumstances, we're not going to use office hours to repeat a lecture.
We'll also note that, based on current University of Chicago tuition, fees, room and board, and other costs, you're probably paying about $60K per year to take 10-ish classes that meet 30-ish times each, in other words, about $200/class. You should find this sobering. We do.