This page lists the courses that are being regularly offered. The full list of courses is in the bulletin.
100 Level Courses | 200 Level Courses | 300 Level Courses | 400 Level Courses
500 Level Courses | Graduate Level Courses
DSC110 - Introduction to Vectors and Matrices for Data Science (1 credit)
Basic concepts and operations of vectors and matrices useful for data science. Use of Python packages for manipulating vectors and matrices.
Prerequisites: MTH108, (CSC115 or CSC315)
CSC113 - Data Science for the World (4 credits)
Introduction to the concepts of data science. Basic data analysis skills. The programming language R. Lecture 3 hours, laboratory 2 hours.
Prerequisites: MTH108 or higher
CSC115 - Python Programming for Everyone (3 credits)
Introduction to computing, programming, and Python. Data and variables. Control flow. Methods. Arrays and lists. Object oriented programming. Lecture 2 hours, laboratory 2 hours.
Prerequisites: MTH107 or higher
CSC116 - Cybersecurity: An Introduction to Security in Cyber Space (3 credits)
An introduction to cybersecurity. Recent incidents. The Internet. Types of attacks. Tools for defending against attacks on users and networks. Legal, moral, and social aspects.
Prerequisites: None
CSC120 - Computer Programming I (4 credits)
History of computing. Fundamental programming constructs. Algorithms and problem solving. Object-oriented programming. Recursion. Lecture 3 hours, laboratory 2 hours.
Prerequisites: CSC115 or MTH141 or MTH151 or MTH161 or MTH171 or MAS110
CSC210 - Computing for Scientists (3 credits)
Introduction to computing. Computing applications in science. Tools for applications. Algorithms for applications. Implementation of algorithms. Data in science. Storage and retrieval of data. Analysis and visualization of data. Lecture 3 hours, laboratory 2 hours.
Prerequisites: MTH161
CSC220 - Computer Programming II (4 credits)
Common APIs including list, priority queue, set, and map, and their efficient implementations in an object-oriented language using fundamental data structures. Sorting and other applications of recursion. Combining asymptotic analysis and experiments to extrapolate running times. Using APIs in a software project. Lecture 3 hours, laboratory 2 hours.
Prerequisites: CSC120 or BTE324 or ECE218, MTH108 or MTH140 or MAS110
CSC314 - Computer Organization and Architecture (3 credits)
Digital logic and digital systems. Machine level representation of data. Assembly level machine organization. Memory system organization and architecture. Interfacing and communication. Functional organization. Multiprocessing and alternative architectures.
Prerequisites: CSC120 or BTE324 or ECE218. Corequisites: MTH309 or MTH230
CSC315 - Introduction to Python for Scientists (3 credits)
Python programming. Python packages for scientific applications. Data science and machine learning applications. Designed for students from the sciences.
Prerequisites: MTH161, (CSC113 or MTH224 or other approved statistics course)
CSC317 - Data Structures and Algorithm Analysis (3 credits)
Basic algorithmic analysis. Algorithmic strategies. Fundamental computing algorithms. Distributed algorithms. Cryptographic algorithms. Geometric algorithms.
Prerequisites: CSC220 or ECE318, MTH309 or MTH230
CSC322 - System Programming (3 credits)
Using UNIX: User environment, Shells, File system, Tools, Scripting. C programming: Core language elements, Pointers, Libraries, Tools, Programming for UNIX: System calls, System information, Processes and threads, File system, Signals, Interfaces to the internet.
Prerequisites: (CSC220 or ECE318), CSC314
CSC329 - Introduction to Game Programming (3 credits)
Fundamental issues behind developing a game application. Fundamental programming issues in game design: Software design; Version control; Basic graphics; GUI programming; Networking; Artificial intelligence; Scripting languages; Sound. Large-scale game project: Team development of a functional game; Graphics and GUI component; Networking component; Core game engine.
Prerequisites: CSC220 or ECE318
CSC330 - Android Programming (3 credits)
The Android Studio programming environment. The Android execution model. User interfaces. Media. Data storage areas. Sensors and actuators.
Prerequisites: "A" grade in CSC220
DSC344 - Principles and Practices of Data Science (3 credits)
Concepts and mathematical foundations: probability, statistical learning. Structured data: data visualization, supervised learning, unsupervised learning. Unstructured data: neural networks, deep learning, time series. Applications: natural language processing, image processing.
Prerequisites: DSC110, (CSC115 or CSC315 or CSC120), (CSC113 or MTH224 or other approved statistics course), MTH161
DSC345 - Principles and Practice of Artificial Intelligence (3 credits)
Concepts: AI landscape, research, application. Understanding natural language: neural networks, encoder-decoder networks, machine translation, attention mechanism. Computer vision: image representation and processing, convolutional neural networks multimedia, detecting and classifying objects, deep neural networks. Robotics, games, and creativity: perception and planning, deep reinforcement learning, AI as artists, generative adversarial networks. Tabular data analytics: complex dependencies, computation statistics, data mining.
Prerequisites: DSC110, CSC220, (CSC113 or MTH224 or other approved statistics course)
CSC40[123] - Computer Science Practicum (1-3 credits)
Implementation of techniques, algorithms, and data structures being taught in a co-requisite CSC course.
Prerequisites: Permission of instructor
CSC405 - Computer Science Seminars (1 credits)
A range of topics in Computer Science, as embodied in the seminars hosted by the Department.
Prerequisites: 12 credits in CSC courses
CSC410 - Computer Science Project Planning (1-3 credits)
Planning for the implementation of a Computer Science project, including: Problem analysis. System architecture design. Algorithm and data structure selection. User interface design. Verification and validation plan. Prototyping.
Prerequisites: 12 credits in CSC courses, Permission of instructor
CSC411 - Computer Science Project Implementation (1-3 credits)
Implementation of a Computer Science project, including: Hardware preparation. Component implementation. System integration. Verification and validation. Documentation.
Prerequisites: 12 credits in CSC courses, Permission of instructor
CSC412 - Computer Science Internship (1-3 credits)
An internship in a commercial computing environment, including interaction with clients, problem analysis, software and hardware design, software implementation, hardware installation, software management, documentation, and user support. Normally 50 internship hours are required per credit earned (the host company must supply documentary evidence of hours worked).
Prerequisites: 12 credits in CSC courses, Permission of instructor
CSC419 - Programming Languages (3 credits)
Overview of programming languages. Fundamental issues in language design. Virtual machines. Introduction to language translation. Models of execution control. Declaration, modularity, and storage management. Programming language semantics. Programming paradigms.
Prerequisites: CSC317
CSC421 - Principles of Computer Operating Systems (3 credits)
Process management. Scheduling and dispatch. Interprocess communication. Memory management. File systems. Device management. Security and protection. System programming for UNIX.
Prerequisites: CSC314, CSC322
CSC423 - Database Systems (3 credits)
Information models and systems. Database systems. Data modeling. Relational databases. Relational database design. Database query languages, Data mining concepts, Web database programming.
Prerequisites: CSC322
CSC424 - Computer Networks (3 credits)
Introduction to computer networks and network applications. The protocol stack. Routing, switching and bridging technologies. Models of network computing. Internet standards and protocols.
Prerequisites: CSC314, CSC322
CSC427 - Theory of Computing (3 credits)
Sets, relations, and languages. Automata theory. Basic computability theory. Turing machines. The complexity classes P and NP.
Prerequisites: CSC220 or ECE318, MTH309 or MTH230
CSC431 - Introduction to Software Engineering (3 credits)
Software processes, requirements and specifications, design, validation, evolution. Project management, tools and environments. Foundations of human-computer interaction. Risks and liabilities of computer-based systems. Intellectual property.
Prerequisites: CSC322 or CSC317
CSC481 - Teaching Assistant Training in Computer Science (1-3 credits)
Teaching assistance training for a specific course, in computer laboratories. May be taken multiple times, assisting maximally twice for a given course.
Prerequisites: Permission of instructor
CSC506 - Logic and Automated Reasoning (3 credits)
Propositional and first order logic. Reasoning and resolution. More complex inference rules. Proof search refinements. Gödel's incompleteness theorem. Using contemporary Automated Theorem Proving (ATP) systems. Applications of ATP in research and industry.
Prerequisites: CSC317 or CSC545, MTH309 or MTH230
CSC507 - Data Security and Cryptography (3 credits)
Access, information flow and inference controls. Network security and management. Encryption algorithms. Cryptographic techniques.
Prerequisites: CSC317 or CSC427
CSC516 - Cybersecurity (3 credits)
Introduction to Cyberspace. Foundations of Cybersecurity. Blockchain and its applications. Malware and counter measures against malware. Firewalls. Intrusion detection and prevention systems. Security for cloud computing and the Internet of Things. Design and implementation of secure software systems.
Prerequisites: CSC317, MTH224, MTH309 or MTH230
CSC528 - Introduction to Parallel Computing (3 credits)
Parallel computing systems. Shared-memory parallel programming, with Open-MP. Distributed-memory parallel programming, with Open-MPI. Applications: Vector and matrix operations, sorting, image processing.
Prerequisites: CSC317
CSC529 - Introduction to Computer Graphics (3 credits)
Geometric objects and transformations. Lighting and shading. Texture mapping. Modeling and hierarchy. Advanced rendering techniques. Graphics card architecture, OpenGL, fragment shader and vertex shader language.
Prerequisites: CSC220 or ECE318, MTH210
CSC540 - Algorithm Design and Analysis (3 credits)
Design techniques, including divide-and-conquer, greedy method, dynamic programming, backtracking. Time and space complexity. Sorting and searching. Combinatorial and graph algorithms.
Prerequisites: CSC317
CSC542 - Statistical Learning with Applications (3 credits)
Supervised and unsupervised learning. Regression and classification. Statistical learning methods: K-Nearest Neighbors, linear models, tree-based methods, support vector machines. Dimensionality reduction and clustering. Applications of statistical learning methods using R.
Prerequisites: MTH224
CSC545 - Introduction to Artificial Intelligence (3 credits)
Fundamental issues in intelligent systems. Search and constraint satisfaction. Knowledge representation and reasoning. Natural language processing. Machine learning and neural networks. Game theory. AI programming.
Prerequisites: CSC317 or ECE318, MTH224 or ECE310 or IEN310
CSC546 - Introduction to Machine Learning with Applications (3 credits)
Python and probability, the Numpy package. K-means clustering. The Gaussian mixture model. Kernel density estimation. Dimensionality reduction. Classification. Regression, SVM, and SVR. Ensemble learning. Cross validation for model selection. Signal encoding-decoding. Dictionary learning. Metrics for performance evaluation. Deep neural networks. Neural networks, the Pytorch and Keras packages. Computational graph and automatic differentiation. Convolutional neural networks. Autoencoders. Generative adversarial networks. Transfer learning.
Prerequisites: MTH210, MTH224
CSC547 - Computational Geometry (3 credits)
Algorithms for solving geometric problems arising from application domains including graphics, robotics, and GIS.
Prerequisites: CSC317
CSC548 - Problem Solving for Bioinformatics (3 credits)
Grand challenges, solutions, and emerging opportunities in bioinformatics. PERL programming from the most basic to advanced contents such as multidimensional array, regular expression, hash, and sorting. Theories and hands-on projects in 3D genome structure inference, protein secondary structure prediction, protein tertiary structure prediction, protein model quality assessment, protein function prediction, and biological network analysis. Analysis of real-world biomedical data. Applications of machine learning algorithms.
Prerequisites: None
CSC549 - Biomedical Data Science (3 credits)
The computational skills needed for analysis of genomic and biomedical data sets, including: The basics of a command line interface. Programming in (bio-)python. Running programs on Pegasus. Writing scripts for downloading, manipulating, and analyzing data. File sharing and version control using github. Analyzing a Next Generation Sequencing data set, and Interpreting the results. Responsible Conduct of Research.
Prerequisites: CSC120, BIL150
CSC550 - Computational Neuroscience (3 credits)
Introduction to computational neuroscience. Analysis and modeling of neural systems. Neurons, populations of neurons, perception, behavior. Connections to machine learning. Tutorials in Matlab.
Prerequisites: MTH162 and MTH224
CSC59[5-9] - Topics in Computer Science (1-3 credits)
Topics in Computer Science
Prerequisites:
CSC609 - Data Security and Cryptography (3 credits)
Access, information flow and inference controls. Network security and management. Encryption algorithms. Cryptographic techniques.
Prerequisites: CSC317 or CSC427
DSC615 - Introduction to Python Programming for Graduate Students (3 credits)
Python programming and data structures. Program design and implementation. Python packages for scientific applications, data analysis, and machine learning. Designed for graduate students from the sciences. Not available to Computer Science students.
Prerequisites: MTH161, MTH224
CSC616 - Cybersecurity (3 credits)
Introduction to Cyberspace. Foundations of Cybersecurity. Blockchain and its applications. Malware and counter measures against malware. Firewalls. Intrusion detection and prevention systems. Security for cloud computing and the Internet of Things. Design and implementation of secure software systems.
Prerequisites: CSC317, MTH224, MTH309 or MTH230
CSC629 - Introduction to Computer Graphics (3 credits)
Geometric objects and transformations. Lighting and shading. Texture mapping. Modeling and hierarchy. Advanced rendering techniques. Graphics card architecture, OpenGL, fragment shader and vertex shader language.
Prerequisites: CSC220, MTH210
CSC632 - Introduction to Parallel Computing (3 credits)
Parallel computing systems. Shared-memory parallel programming, with Open-MP. Distributed-memory parallel programming, with Open-MPI. Applications: Vector and matrix operations, sorting, image processing.
Prerequisites: CSC317
CSC640 - Algorithm Design and Analysis (3 credits)
Design techniques, including divide-and-conquer, greedy method, dynamic programming, backtracking. Time and space complexity. Sorting and searching. Combinatorial and graph algorithms.
Prerequisites: CSC317
CSC642 - Statistical Learning with Applications (3 credits)
Supervised and unsupervised learning. Regression and classification. Model assessment and selection. Resampling methods. Statistical learning methods: K-Nearest Neighbors, linear models and regularization, non-linear regression models, tree-based and ensemble methods, kernels and support vector machines. Dimensionality reduction and clustering. Applications using R.
Prerequisites: MTH224
CSC645 - Introduction to Artificial Intelligence (3 credits)
Fundamental issues in intelligent systems. Search and constraint satisfaction. Knowledge representation and reasoning. Natural language processing. Machine learning and neural networks. Game theory. AI programming.
Prerequisites: CSC317 or ECE318, MTH224 or ECE310 or IEN310
CSC646 - Introduction to Machine Learning with Applications (3 credits)
Python and probability, the Numpy package. K-means clustering. The Gaussian mixture model. Kernel density estimation. Dimensionality reduction. Classification. Regression, SVM, and SVR. Ensemble learning. Cross validation for model selection. Signal encoding-decoding. Dictionary learning. Metrics for performance evaluation. Deep neural networks. Neural networks, the Pytorch and Keras packages. Computational graph and automatic differentiation. Convolutional neural networks. Autoencoders. Generative adversarial networks. Transfer learning.
Prerequisites: MTH210, MTH224
CSC647 - Computational Geometry (3 credits)
Algorithms for solving geometric problems arising from application domains including graphics, robotics, and GIS.
Prerequisites: CSC317
CSC648 - Problem Solving for Bioinformatics (3 credits)
Grand challenges, solutions, and emerging opportunities in bioinformatics. PERL programming from the most basic to advanced contents such as multidimensional array, regular expression, hash, and sorting. Theories and hands-on projects in 3D genome structure inference, protein secondary structure prediction, protein tertiary structure prediction, protein model quality assessment, protein function prediction, and biological network analysis. Analysis of real-world biomedical data. Applications of machine learning algorithms.
Prerequisites: None
CSC649 - Biomedical Data Science (3 credits)
The computational skills needed for analysis of genomic and biomedical data sets, including: The basics of a command line interface. Programming in (bio-)python. Running programs on Pegasus. Writing scripts for downloading, manipulating, and analyzing data. File sharing and version control using github. Analyzing a Next Generation Sequencing data set, and Interpreting the results. Responsible Conduct of Research.
Prerequisites: None
CSC650 - Computational Neuroscience (3 credits)
Introduction to computational neuroscience. Analysis and modeling of neural systems. Neurons, populations of neurons, perception, behavior. Connections to machine learning. Tutorials in Matlab.
Prerequisites: MTH161, MTH224
CSC670 - Directed Reading of Research (2-4 credits)
Directed Reading of Research in Computer Science.
Prerequisites:
CSC68[5-9] - Topics in Computer Science (1-3 credits)
Topics in Computer Science.
Prerequisites:
CSC712 - Computer Science Graduate Internship (1-6 credits)
This course monitors students doing an internship in a professional computer science environment. The exact nature of the course will be dependent on the nature of the internship and the requirements of the host organizations. Normally 50 internship hours are required per credit earned (the host organization must supply documentary evidence of hours worked).
Prerequisites: 18 credits of CSC courses
CSC732 - Parallel Algorithms (3 credits)
Parallel computation models. Sorting networks. Parallel algorithms for sorting, searching, graph problems, prefix computation, pattern matching, and fast Fourier transforms. Theory of P-completeness. The class NC.
Prerequisites: CSC317
CSC746 - Neural Networks and Deep Learning (3 credits)
Fundamentals of artificial neural networks: Perceptrons, Single-layer perceptron classifiers, Multi-Layer feedforward networks, Error back-propagation training. Deep Feedforward Networks: Regularization for deep learning, Optimization for training deep models, Convolution networks. Applications: Computer vision, speech recognition, Natural language processing.
Prerequisites: CSC317
CSC749 - Automated Reasoning (3 credits)
Propositional and 1st order logic. Reasoning and resolution. More complex inference rules. Using contemporary ATP systems. Prolog as an ATP system and as a programming language. Applications of ATP in research and industry.
Prerequisites: CSC317 or CSC645
CSC751 - Semantic Web (3 credits)
An overview of the underlying semantic web technologies. Ontology construction and implementation using tools and APIs (logic, XML, RDF, RDFS). Theoretical and practical aspects of knowledge representation (description logic, RDF, RDFS, SPARQL, SROIQ(D)). Designing and debugging ontologies (ontology engineering, entailment tools, project).
Prerequisites: CSC317, MTH309 or MTH230
CSC752 - Autonomous Robotic Systems (3 credits)
Introduction: autonomous systems, autonomous robots, RoboCup, typical components of an autonomous robot. Modeling: perception, noise, modeling, recursive state estimation, Bayes' filter, particle filter, self-localization. Control and motion: PID-control, calibration of parameters, controlling a wheeled robot, controlling joints, walking motion. Learning (optional, if time permits): overview, different types of learning, reinforcement learning.
Prerequisites: CSC317, MTH210
CSC78[5-9] - Advanced Topics in Computer Science (3 credits)
Topics in Computer Science
Prerequisites:
CSC793 - Research Project (1-6 credits)
Supervised research project preceding dissertation research for the Ph.D.
Prerequisites:
CSC794 - Research Project (1-6 credits)
Supervised research project preceding dissertation research for the Ph.D.
Prerequisites:
CSC810 - Master's Thesis (1-6 credits)
Student working on a master's thesis enroll for the number of credits as determined by their advisor. Credit is not awarded until the thesis has been accepted.
Prerequisites:
CSC825 - Master's Study (0 credits)
To establish residence for non-thesis master's students who are preparing for major examinations. Credit not granted. Regarded as full time residence.
Prerequisites:
CSC830 - Pre-Candidacy Doctoral Dissertation (1-12 credits)
Students working on a Ph.D. thesis enroll for the number of credits as determined by their advisor, but for not less than a total of 12 hours. Up to 12 hours may be taken in a regular semester, but not more than 6 hours in a summer session.
Prerequisites:
CSC840 - Post-Candidacy Doctoral Dissertation (1-12 credits)
Students working on a Ph.D. thesis who have advanced to candidacy enroll for the number of credits as determined by their advisor, but for not less than a total of 12 hours. Up to 12 hours may be taken in a regular semester, but not more than 6 hours in a summer session.
Prerequisites:
CSC850 - Research in Residence (0 credits)
Research in residence for the Ph.D. after the student has been enrolled for the permissible cumulative total in appropriate doctoral research.
Prerequisites: