There is no required or recommended textbook. The course is a synthesis from various sources. I will include references where appropriate. Sometimes I don’t want you to look at the original source because it includes assignment answers or different notation. I have included a number of references in the lecture summaries and on the Resources page, but those are not supposed to be direct support for course material; they are more about context and background. If you are having difficulty with course material, please contact course personnel. Do not try to find something online or in the library that might help.
We will be using Piazza for online public questions and discussion. If you have not received an invitation by the first lecture, or you have joined the course after that, please contact the instructor. Course personnel will have regular office hours, listed on the home page. You may also email course personnel. Please do so from your UW email address.
These will be in the style of my CS 145/146 offerings (2008-2014), with sparse slides that will not be posted, supplemented with occasional boardwork. After each lecture I will post detailed lecture summaries on the Handouts page, again in the style of CS 145/146 (my summaries were used in those courses in 2015-2016, even though I did not teach those offerings). I suggest taking selective notes by hand in lecture, more as a stimulus for active learning than for reference later. Consider avoiding open laptops and tablets in lecture. They are distracting to you and others, and studies show they reduce performance even when used only to take notes (which is rarely their only use in practice). Please set your cellphones on stun.
Do not make the mistake of thinking that the lecture summaries are a substitute for attending lecture. I will not in any way enforce regular lecture attendance, but I highly recommend it. I will do my best to make it worth your while.
Tutorial hours may be used as additional lecture hours, or for optional material. They may be taught by the instructor, the IA, or one of the TAs. We will inform you on a weekly basis.
Details will be posted on the Assignments page. Assignment questions will not be due weekly or on a regular schedule; rather, each assignment will be released when relevant material has been covered in lecture. I will try to give some advance warning, but it really depends on the timing of lectures, and this is the first time I am teaching this material in this fashion, so I cannot make good predictions. Submission details are on the Marmoset page.
Different questions may have different weights. No solutions will be posted, but course personnel will be happy to help you complete questions for study purposes.
One midterm exam and one final exam, at the same times as the CS 240 (regular section) exams. Midterm timing is available in Quest; room details will be posted here. Final exam details will be posted here, but you can learn about it from the Registrar’s web page at the same time as we do. Our exams will be completely different from those for the regular sections.
There will be no practice exams or exam questions available. It is a bad idea in general to try to study from previous exams, and in this case there aren’t any. Your best approach is to complete all assignment questions, even if the due date has passed, and work on your own variations of these questions as well. Note that the assignments make heavy use of computers but the exams do not; they are entirely handwritten. My exam questions are not tweaks on assignment questions. I try to find new situations that you should be able to handle if you have done the assignments and learned the concepts that need to be applied.
Assignments will be worth 20%; midterm 35%; final exam 45%.
You will be using OCaml 4.04.0 for assignments. I will cover language features briefly in lecture, but won’t attempt to teach the language as was done in first-year courses. The OCaml manual is a good reference, but may have more detail than you need.
There is no perfect learning resource. You may not need one anyway, so please don’t rush about trying to get ahead in this area. The first CS 240E tutorial will discuss installation and use.
The online tutorials on the OCaml.org site are incomplete and in flux. Rich Hickey’s Introduction to Objective Caml was last revised in 2008, so some details may be obsolete. The O’Reilly book Real World OCaml is available entirely online, and is good if you plan to use OCaml outside this course, but it ramps up quickly, and uses a different Core library which we are not using. John Whittington’s book "OCaml From The Very Beginning" is a very gentle introduction, but it glosses over some difficulties you may encounter, and it is not free.