Michael D Stiber
Abstract representation as tools for software design. Fundamentals of mathematical thinking (predicate calculus, functions, relations, proofs, computational complexity) applied to abstract data types (lists, stacks) queues) and algorithmic strategies (divide-and-conquer, grey). Pointers and memory management in programming languages. Prerequisite: minimum grade of 2.5 in both CSS 162 and B CUSP 124.
This course introduces you to the idea of levels of abstraction in problem solving and software development. It does this in three ways: by introducing mathematical formalisms to model problems and manipulate possible solutions, by developing design strategies and patterns (algorithms and data structures) that are language independent, and by introducing you to a new object-oriented programming language (C++).
Student learning goals
General method of instruction
Class assignments and grading