Computer Science (CSC)

CSC-103:  Computer Programming I  (3 Credits)  

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.

CSC-104:  Computer Programming II  (3 Credits)  
Pre-requisite(s): CSC-103 or equivalent is required.  

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.

CSC-210:  Introduction to Programming in Python  (3 Credits)  
Pre-requisite(s): MTH-173 or equivalent is required.  

In this course, students learn fundamental concepts of computer programming using Python, a widely available, free, high-level interpreted programming language. Topics include input/output, assignment, computation, branching and selection, exceptions and assertions, lists, tuples, dictionaries, strings, repetition, functions, recursion, program efficiency, and object-oriented design.

CSC-220:  Intermediate Programming  (3 Credits)  
Pre-requisite(s): CSC-210 or equivalent is required.  

Intermediate objected-oriented programming; analysis of algorithms including asymptotic complexity and big-O notation; searching, sorting, geometric, and graph algorithms; data structures including lists, stacks, queues, heaps, search trees, and hash tables.

CSC-300:  Algorithms and Data Structures  (3 Credits)  
Pre-requisite(s): CSC-104 or equivalent is required.  

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.