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.
Prerequisite(s): Grades of "C" or better in CMPSC 100 Discrete Mathematics and CMPSC 140 Data Structures.
(Normally offered alternate years.)
CMPSC 100 Discrete Mathematics (3 hours)
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.)
CMPSC 140 Data Structures (4 hours)
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.)