- The case ( [11 - 2) * {3 + 4} ) - 6 was incorrectly included as an example of a valid expression. It has been replaced by (( [11 - 2] * {3 + 4} ) - 6) which is well-formed. The original expression has been moved to the list of invalid expressions. (Tuesday, 3:45pm)
- For problem 1, students have asked about a few special cases. The input, output, and exact behavior for edge cases are things you have to specify on your own, and are purposefully ambiguous. (Tuesday, 7:30pm)
- Footnote correction, page 6, presto trees: ... values (or precedences), but a worst-case ... -> ... values (or precedences), then a worst-case ... (Tuesday, 7:30pm)
- Max efficiency, pages 4/5: equations 2 and 18 should both have "n > 1" replaced by "n >= 1" (Tuesday, 7:30pm)
- "Contiguous" means "next or together in sequence." Thus in the integers, the sequences 1 2 3 and 4 5 are contiguous, but 2 3 4 and 8 9 are not. (Tuesday, 7:30pm)
- Page 8, parenthesized expressions. (a) The empty expression is valid (this is completely arbitrary, but someone asked for a clarification, and it's what we decided). This refers to the expression with no tokens whatsoever - no delimiters, no numbers, no operators. (b) All other expressions are supposed to be ordinary arithmetic expressions, e.g., when there's an operator, it should have a left and right operand. Among those, some have "valid parenthesization". So "+" and "+ 3" are not valid expressions, and your procedure should return false for these (or for an input that corresponds to these examples). (Tuesday, 7:30pm)
- You are allowed to use any built-ins in either Racket or OCaml that have been covered this semester. Additionally, you are allowed to use anything from the List module in OCaml (as well as any Racket equivalents). That being said, you shouldn't use anything you don't understand. If there is a built-in procedure that you wouldn't be able to write yourself, you shouldn't use it. As a note, our solutions use only built-in procedures that were covered this semester, so don't feel like you have to use any procedures you haven't learned! (Wednesday, 11:30am)
- A sublist of this is a sequence of adjacent items from the list. Two sublists are contiguous if one starts where the other one ends. A collection of contiguous sublists 'constitutes the whole list' reading the items in the sublists in order gives you the elements of the whole list, in order. See email for more detailed explanation. (Wednesday, 9:45pm)
- Momo's code in the analysis problem should call clubsets2, not clubsets. (Thursday, 11:00am)
- You cannot directly test make-combiner because testing procedure equality is not possible. Instead, you can indirectly test your make-combiner by testing some of the procedures it produces (subsets and divisions2) (Thursday, 11:00am)

The Course Missive, Collaboration Policy and Homework 0 have been released.

If you've tried to sign up for CS17 via Banner, you may have noticed the Lab Hour (Thursday 9:30-10:30am). This isn't really a lab; instead, it's the closest thing we could fit into Banner that would let us try something new next semester: students will have the option to choose whether they want to go to the Wednesday 10:00-11:00am class or the Thursday 9:30-10:30am class. We're hoping that about half the students will go to each section, allowing for the possibility of two smaller classes with more interaction between the professor and the students.

Students should only sign up for the CS17 *lecture time* (MWF 10AM). We'll handle splitting the class into these two sections during the first week or so. If you're taking a 9:00-10:30am Tu/Th class, you'll obviously be part of the group that meets during the MWF hour.

**You do not need to sign up for the lab hour on Banner.**