Computer Science (CSC)
In this course students learn computer programming in a high-level object-oriented programming language. Topics include input/output, assignment, computation, data types, branching and selection, repetition, functions, recursion, exception handling, array-like structures, object-oriented design, algorithmic complexity, algorithms and data structures, and plotting.
Topics are selected from graph optimization problems, dynamical programming, random walks and data visualization, programs involving probability distributions, Monte Carlo simulation, sampling and confidence intervals, experimental data, randomized trials and other statistical programming, machine learning, clustering, and classification methods.
In this course, students study design and analysis of algorithms. Topics include asymptotic analysis; searching, sorting, heaps, hashing; divide-and-conquer; dynamic programming; greedy algorithms; graph algorithms; shortest path; network flow; dynamic data structures; parallel algorithms; and functional paradigm. This course can be used as an elective in the Data Analytics minor.