CMSC-16100: Honors Introduction to Programming, I

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, because Haskell obtains power through generality, and generality through abstraction.

This course will be taught remotely during Autumn 2020, but our intent is to be available through Zoom at flexible hours. We want to get to know you! Please stop by for office hours, if only to introduce yourself.

Course Staff

SectionLecturerTimeOffice Hours
1 Stuart Kurtz [email] MWF 10:20-11:10 TBA
2 Ravi Chugh [email] MWF 11:30-12:20 Su 2:30-3:30, W 10:45-11:15

Teaching AssistantOffice Hours
Benjamin Caldwell [email] Su 3:30-5:00, Tu 4:00-5:30
Brian Hempel (Lab TA) [email] Wed 2:00–5:00
Nathan Mull (Lab TA) [email] Th 1:00-4:00

Grader
Lilly Hackworth [email]
Maxine King [email]
Yifan Liu [email]
Spencer Ng [email]

Course Communication

We will be using several technologies for coursework and management:

Texts

The principal text for the course will be our lecture notes, but we recommend:

Grading

Grading will be based on homework (1/5), lab (1/5), a midterm exam (1/5), and a final exam (2/5).

Our particular theory and practice of homework is this:

How to succeed in CMSC-16100 (and College)

This course has an earned reputation for being rigorous and demanding. You came to the University of Chicago to have the opportunity to take such classes, so... you're welcome. But you don't just want the opportunity, you want to succeed. To that end, we have some concrete recommendations based on our experiences as students, teachers, and in particular, teachers of this course.

You should work hard. But hard work is not enough to guarantee success. You need to work smart.

  1. Ask questions. Ask questions during lectures, at lab sessions, in study group meetings, at office hours. Don't assume that if you don't understand something now, you'll figure it out later by yourself and all will be well. Ideas build on ideas, and not understanding now can undermine your foundation, leaving you behind and struggling.
  2. Do all of the homework assignments, and all of the labs. The difference between A students and everyone else has less to do with the A students jumping better, and more to do with their reliability in jumping when and how they're expected to.
  3. Form study groups. Meet 2-3 times a week for an hour or so. Review the lectures, the homeworks (both pending and graded). Make sure you understand what you've been taught, what you have to do, and the feedback you're getting.
  4. Take advantage of the office hours for the course instructors and TAs. If you can't make your instructor's posted hours, ask to meet at a time that works for you. Consider meeting with the other instructor, who might have a different “take” on something that has you stumped. Please understand that we like to have students come to our office hours. It is perfectly reasonable, if your group can't figure something out, for the whole group to come to office hours.