- Future Students
- Academic Progams
- Undergraduate Program
- Current Semester CS Courses
- New Course Offerings
- Upcoming Semesters
- Previous Semesters
- Canonical Syllabi
- Course Access & Request Policy
- Academic Integrity Policy
- Grad Student Registration
- Variable Title Courses
- Study Abroad
- Professional Practice
- Co-Op Professional Practice
- Non-Co-Op Professional Practice
- ISS Application Process for International Students (CPT, OPT, RCL, Program Extension, COEL)
- Pass/Not Pass Spring 2020
New Course Offerings in Computer Science
CS 21100-CP1: Competitive Programming I
Pre-requisite: Undergraduate level CS 25100 Minimum Grade of C OR Instructor Permission
CP1 teaches applied algorithmic ideas and problem solving techniques to solve programming interview and competitive programming questions including usage of basic data structures such as [array, set, map, stack, queue, deque, priority queue], the four main algorithm paradigms: [complete search, greedy, divide and conquer, dynamic programming], other algorithmic ideas including [binary search the answer/bisection, meet-in-the-middle, prefix sum and difference arrays, two pointers, sliding window], and basic graph algorithms covering [strongly/connected components, floodfill, topological sort, shortest paths].
CS 31100-CP2: Competitive Programming II
Pre-requisite: Undergraduate level CS 21100 Minimum Grade of C and Undergraduate level CS 25100 Minimum Grade of C OR Instructor Permission
CP2 teaches experienced programmers additional techniques to solve interview and competitive programming problems and builds on material learned in CP1. This includes specific algorithmic techniques such as [shortest paths, topological sort, MST, union find, range queries], advanced algorithms surrounding trees and DAGs, advanced problem types in [dynamic programming, backtracking/simulation, mathematics, string processing], and more. It can be viewed as a programming complement to CS 38100, with some overlap in content.
CS 39000ATA: Advanced Topics In Algorithms
Pre-requisite: Same as CS 38100
CS 39000ATA is a faster-paced, proof-oriented version of CS 38100 offered to CS and DS majors with a strong theoretical computer science interest. The course covers the topics of CS 38100 as well as
advanced algorithm topics not covered in CS 38100. The course has a stronger focus on problem-solving, proofs, and algorithmic creativity.
The 3-credit course counts as fulfilling the CS 38100 course requirement. Students who already have taken CS 38100 can take the course for credit, but cannot count the course as an elective for one of their concentrations.
CS 55100 - Cloud Computing Fundamentals
A comprehensive course that investigates all aspects of cloud computing, including: cloud data centers and infrastructure (equipment for processing, storage, communication, and special-purpose facilities); the use of virtualized servers (virtual machines and containers), virtualized storage (Storage Area Networks, Network Attached Storage, object storage), and virtual networks; automation; orchestration systems, such as Kubernetes; programming paradigms used to construct cloud-native software, such as MapReduce, microservices, controllerbased computing, and serverless computing; edge computing; security and privacy in cloud systems; software models. The course emphasizes researching new ways to use cloud computing and research into new ways to design and build cloud systems. The course includes a project. Students should have completed coursework in or have equivalent familiarity with operating systems and computer networks.
Graduate Level Seminars
CS 21100-CP1: Competitive Programming I (see Fall 2023 for description)
CS 25300: Data Structures and Algorithms for Data Science (Additional Information to Come)
Pre-requisite: Undergraduate level CS 18200 Grade of C AND Undergraduate level CS 38003 Grade of C AND (Undergraduate level CS 24200 Grade of C or Undergraduate level STAT 24200 Grade of C)
For Data Science and Artificial Intelligence students only (This course will not fulfill the CS major or minor CS 25100 requirement)
- Answers for some questions may be found here.
CS 31100-CP2: Competitive Programming II (see Fall 2023 for description)
CS 35100 - Cloud Computing
Pre-requisite: Undergraduate level CS 25200 Grade of C
Introduction to cloud computing. Cloud data center infrastructure, public and private clouds, servers and virtualized servers, data center networks and virtualized networks, virtualized disk, file, and object storage, the concept of scale-out, algorithms and programming systems used in the design and implementation of cloud-native software, especially using containers and orchestration systems, microservices, serverless designs, controller-based designs, edge and fog computing, security in a cloud environment, programming models.
CS 41100-CP3: Competitive Programming III
Pre-requisite: Undergraduate level CS 25100 Minimum Grade of C and Undergraduate level CS 31100 Minimum Grade of C OR Instructor Permission
CP3 teaches experienced programmers additional techniques to solve competitive programming problems and builds on material learned in CP1 and CP2. This includes algorithmic techniques in topics such as [network flow, computational geometry, graph matching, NP-hard problems]. Primarily, CP3 prepares students to compete in programming contests, which means most class time is focused on simulating contest environments and teaching teamwork and communication alongside problem practice.
CS 49000/59000 AR/VR: Augmented Reality/Virtual RealityPre-requisites: Programming in C, e.g. CS 24000
- Brief tutorials on linear algebra, geometry, coordinate systems, transformations, cameras, rendering, shaders, C# programming.
- VR: head mounted displays, tracking, redirected walking, 360 videos, haptics, collaboration, gaze tracking, foveated rendering, applications.
- AR: optical & video see-through displays, annotation anchoring, diminished reality, apps.
- VR and AR user studies: design, implementation, analysis, task load and cybersickness.
- Project HW & SW: Oculus Quest, MS HoloLens, Android tablets, Unity, ARCore.
- Grading: 4 projects x 12% + 1 midterm x 25% + 1 final project x 22% + attendance 5%.
- Seats available: 15 undergraduates + 10 graduates.
CS 55600 - Data Security And Privacy
Data security and privacy is an important part of information security. This course provides an introduction to the fundamental principles and techniques for data security and privacy. The course covers fundamental theories of access control, discretionary access control, mandatory access control, and role-based access control, database access control approaches including grant revoke, virtual private databases and labelled databases, database encryption. On privacy, it covers data anonymization, re-identification attacks, definition, primitives, and applications of differential privacy.
CS 58500 - Theoretical Computer Science Toolkit
This course covers fundamental techniques and a range of mathematical tools that underlie today's research in theoretical computer science. The course material is essential for research in theoretical computer science as well as machine learning theory. The course is targeted at students who plan to pursue research in these areas. Topics will be chosen from four core areas: Convex Analysis and Optimization, Spectral Methods, Concentration Inequalities, and Discrete Fourier Analysis. Depending on student and instructor interest, additional topics will be chosen and may include applied analysis, coding theory, probabilistic proofs, and more advanced topics in discrete Fourier analysis. Students will read papers in theoretical computer science and machine learning theory using, exploring and extending the covered techniques and tools. Students are expected to be proficient in probability theory, have the maturity to follow and carry out basic analysis proofs, and have completed courses in calculus, linear algebra, discrete mathematics, and analysis of algorithms. More specifically, the course expects mastery of the material covered in Calculus III, Linear Algebra, Probability, Foundations of CS, and Analysis of Algorithms.
Graduate Level Seminars
FUTURE NEW COURSE OFFERINGS
CS 55800* - Introduction To Robot Learning
CS 58700* - Foundations Of Deep Learning