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 who 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.
I do not control the calendar prerequisites, and I would choose different ones. If there is currently space in the course, you may request instructor consent to enroll. Please email me from your UW account with your ID number, and provide reasons why you should be admitted.