This fast-paced course is intended to enable students to design solutions
to programming problems using object-oriented techniques. The course
integrates the fundamental discrete mathematics 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 C++ language and the basics of
object-oriented programming. You will understand how to analyze a problem
and design a solution. You will understand the key basic data structures,
algorithms and 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 and searching. Also covered are object oriented fundamentals such as
abstraction, encapsulation, hierarchy, and polymorphism.