A systematic study of the analysis and design of algorithms, particularly those used for complex data structures and non-numeric processes. Topics include analysis of complexity, complexity classes, dynamic programming, automata-based algorithms, backtracking, and parallel algorithms.
(Normally offered alternate years.)
An introduction to fundamental concepts of discrete mathematics with application to computer science. Topics include sets, relations, functions, sequences, Boolean algebra, difference equations, combinatorics, and graph theory.
Prerequisite(s): Placement into MATH 105 Calculus I or grade of "C" or better in MATH 050 Pre-Calculus.
(Normally offered each year.)
A natural continuation of Computer Science 40 concentrating on the motivation, design, implementation, and utilization of abstract data types. Topics include linked lists, stacks, queues, trees, and recursion. A lab component is incorporated.
Prerequisite(s): Grade of "C" or better in CMPSC 040 Program Design.
(Normally offered each spring semester.)