Before beginning graduate work in Computer Science, students must have completed the following six courses or their equivalents.
Please note that these courses are sequential, and several (as we note below) should be taken in separate semesters.
Despite the large number of prerequisites, it is nonetheless possible for students with no previous Computer Science background to complete the Data Science concentration in just four semesters.
CSCI 111. Introduction to Algorithmic Problem-Solving
2 lec., 2 lab. hr.; 3 cr. Prereq. or coreq.: MATH 120 or 151 or equivalent. Introduction to the principles and practice of programming. Topics include primitive data types; concepts of object, class, and method; control structures; arrays; procedures and functions; parameter passing; scope and lifetime of variables; input and output; documentation.
MAT 120/CSCI 120. Discrete Mathematics for Crossdisciplinary Minors
3 hr.; 3 cr. Prereq.: MATH 122 or equivalent. Induction. Counting in finite sets; Binomial Theorem. Asymptotic order of functions; exponential, polynomial, and logarithmic relationships. Algorithm as a functional input-output map; specification, elementary analysis of running time. Recursion in functions, algorithms, and trees. Recurrences in modeling and algorithm analysis; linear recurrences; Master Theorem. All topics will center around appropriate problem-solving exercises.
CSCI 211. Object-Oriented Programming in C++
2 lec., 2 lab hr.; 3 cr. Prereq.: CSCI 111. Object oriented algorithmic problem solving in C++, with attention to general as well as language-specific issues including pointer and pointer arithmetic; linked lists; memory management; recursion; operator overloading; inheritance and polymorphism; stream and file I/O; exception handling; templates and STL; applications of simple data structures; testing and debugging techniques.
CSCI 212. Object-Oriented Programming in Java
2 lec., 2 lab hr.; 3 cr. Prereq.: CSCI 111. Object oriented algorithmic problem solving in Java, with attention to general as well as language-specific issues including applications; event-driven programming; elements of graphical user interfaces (GUIs); linked lists; recursion; inheritance and polymorphism; file I/O; exception handling; packages; applications of simple data structures; applets; concept of multithreading; testing and debugging.
CSCI 220. Discrete Structures
3 lec. hr.; 3 cr. Prereq.: MATH 120 and 151 or 141; CSCI 111. Algorithms, recursion, recurrences, asymptotics, relations, graphs and trees, applications.
CSCI 313. Data Structures
3 hr.; 3 cr. Prereq.: CSCI 211, 212, and 220. Fundamental data structures and their implementations: stacks, queues, trees (binary and AVL), heaps, graphs, hash tables. Searching and sorting algorithms. Runtime analysis. Examples of problem solving using greedy algorithm, divide-andconquer, and backtracking.