CMSC-16100: Honors Introduction to Programming, I
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.
|Ravi Chugh [email]||Section 01: MWF 10:30-11:20 (Ry 276)||Ryerson 167||Tues 1:00-2:00, Thurs 4:00-5:00, and by appointment|
|Stuart Kurtz [email]||Section 02: MWF 01:30-02:20 (Ry 276)||Ryerson 166||MWF 10:30-11:30 and by appointment|
|Teaching Assistant||Office Hours|
|Mark Stoehr (Lab TA) [email]||Wed/Thurs 1:00-2:00 (Young 404)|
|Stephen Fitz (TA) [email]||Mon 1:30-2:30 (Young 404)|
|Sean Laguna (TA) [email]||Tue 2:00-4:00 (Young 404)|
|Lee Ehudin (Grader) [email]||Nothing|
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/fall2015/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 "" in the subject line, as this will get you past spam filters.
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 will be based on homework (1/3), lab (1/6), a midterm exam (1/6), and a final exam (1/3).
Our particular theory and practice of homework is this:
- Each day's lecture notes comes equipped with several homework problems, some of which are marked with asterisks. You are required to turn in only those problems marked with asterisks. However, you should work through all of them, as well as seek out additional opportunities for practice.
- The principal role of homework is to ensure that the work that you do outside of class covers material that we believe is important. One implication of this is that we 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 your instructor know if you're not getting what you need.
- We 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. We 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, on the policies page.
- Managing late homework is a major pain. So here's our late homework policy: We don't accept it. But, since we were once undergraduates ourselves, we know that life exists outside of the classroom, and occasionally an assignment gets missed. Therefore, we're giving each student five "free-passes" on their homework, i.e., you can miss up to five homework exercises, for which there will be no penalty. Mechanically, this is automatic—we'll just drop the five lowest scores. Note that a single day's work can involve multiple exercises.
- Homework exercises are due at the beginning of lecture after they were assigned, unless otherwise noted.