|
The first two classes (106A and 106B) are very techinical, though I'd hesitate to let anyone who hadn't taken classes beyond them to work on a piece of software I had control over. I think a good metric for classes is the final assignment, since it captures "how far" the class goes. For reference, the final assignments are: 106A --- It varies, but has recently been a text-based "Adventure"-style game (in Java) that requires tracking the map, player state, various objects and their capabilities, etc. I think there might also be a small graphical component. 106B/X --- Again, it varies, but the best assignment (in my view) is a BASIC interpreter that implements both a REPL and stored programs. All C++, it's about building a big list of abstract expressions of different types (assignment, etc) that can be executed by walking that list (taking advantage of dynamic dispatch) and tracking global program state. It's a nice intersection of data structures and (very simple) recursive descent parsing. 107 --- A heap allocator to implement malloc(), realloc(), and free(), written on top of mmap(). A fantastic assignment. So yeah, they're not trivial classes. |