In CS 240E, I will offer an alternative approach to the standard CS 240 curriculum. It will not be just a regular offering with additional topics.
This offering of CS 240E is a contemporary reimagining of the course. Modern developers make use of standard collections libraries providing core data structures. What are the principles behind these libraries? What performance can we expect from them, and why? We will approach these questions from an expository perspective, starting with simple implementations, and complicating them as appropriate for the purposes of optimization (possibly necessitating tradeoffs). Programming assignments will use a language suitable for this approach, with a safe, expressive type system and a rich set of abstraction mechanisms.
The course will be designed for students who appreciate elegance, but recognize that it must sometimes be tempered for the sake of practicality, and who have the intellectual discipline to treat a diverse toolkit as a source of strength rather than one of distraction or confusion. My intention is to provide suitable challenge, not extreme difficulty. For this offering, I will be providing more not-for-credit exercises and optional extra readings than usual, in the hope that students willing to take an "enriched" course will sometimes do things that do not contribute directly to their final grade.
You will be granted instructor consent if you earned a grade of 85% or higher in CS 145 (or 90% or higher in both CS 135 and CS 136) and there is still space in the course. Since 240E is not in the university calendar yet, it does not officially exist as far as the university is concerned. For administrative purposes (enrollment, exam schedule, etc.) CS 240E will be considered one section of CS 240. Enrollment will be done "by hand", and you need to email me from your UW email address, including your full name and student ID number. You may also request instructor consent to enroll if you do not meet the criteria above; please include an informal transcript, and reasons why you should be allowed into the course.