Eighth Homework

This assignment is due at the start of lab on Monday, November 14.

(1) Continue your exercise from this past week's lab of going back and doing problems that you've found to be a struggle. Be sure that you can do these problems on your own without your notes; this will be good practice for the final exam, and will shore up your skills for what is to follow. Of course, you should always feel free to ask us, in person or by email, if there are problems that continue to be vexing; don't wait until the end of the quarter to get these kinds of questions answered.

(2) Consider in particular these two activities:

(2.1) Read some Scheme code—like the InfxTunes program and the various versions of the restaurants program—to become more familiar with how they're organized and how the code works. Concentrate more on the model part (how the programs represent and manipulate the data internally) than on the view or user interface (printing menus, reading user input, reading and writing with files). You should understand what the interface parts are doing, but we're not going to ask you to reproduce them on exams. On the other hand, exams will cover the model part, the data structures and algorithms, topics like lists, lists containing structures (containing other lists or structures), binary search trees, high-order functions like map, filter, and foldr, and the performance characteristics (O-notations) of the associated algorithms.

(2.2) For any topics you'd like a stronger background in, go through some of the Worked Exercises on those topics in the textbook. It requires a certain discipline to use the Worked Exercises effectively. The ineffective way is simply to read through the description, not looking too closely at the code, and telling yourself, "Yeah, that makes sense." The effective way is to pause at each step, ask yourself what the next step should be, even write it down or sketch it out, before looking at how the book solves it, and then, seeing the solution, look carefully at the code, tracing through its evaluation, to convince yourself that it behaves as described. This kind of internal questioning and testing is the proper, effective way to read any academic material critically.

Based in part on ICS H21assignments by David G. Kay; modified by David G. Kay for the Informatics Core Course, Fall 2004, Fall 2005, Fall 2009, Fall 2010, and Fall 2011.

David G. Kay,
Thursday, November 10, 2011 10:17 AM