University of Washington Bothell Catalog Description
This course extends the principles of programming and discrete math concepts that were introduced in
the CSS 161 and CSS 162 programming classes. The course will enable students to design solutions to
programming problems using object-oriented techniques. The course integrates the fundamental discrete
mathematical aspects of computing with detailed instruction in end-to-end software design. By the end
of this quarter, you will be familiar with much of the Python language and the basics of object-oriented
programming. You will understand how to analyze a problem and design a solution. You will understand
the basic data structures and algorithms which are the basis for much of computer science.
You will also be able to analyze the trade-offs among memory, execution time, and implementation
complexity associated with them. Topics include: recursion, computational complexity and algorithm
analysis, logic, induction, lists, stacks, queues, sorting, searching, trees, graphs, and hash tables.
Also covered are object oriented fundamentals such as abstraction, encapsulation, hierarchy, and polymorphism.