The online M.S. in Computer Science is a flexible, fully online master’s program for busy professionals who want to solve big problems through computing. The program combines the academic rigor and high quality of our top-ranked in-person degree with the flexibility of an online program, allowing students to fit classes into their busy schedules.
Online Options
100% online
All courses are fully online, and many can be completed asynchronously. Most courses include opportunities for synchronous interaction with faculty.
Begin online, finish in-person
Jumpstart your degree by taking four courses online, then come to campus for face-to-face courses and an in-person campus experience. This hybrid option may be of interest to international students seeking internships and other experiential learning opportunities in the United States.
Try a class
Take up to two online courses before applying to our program. If you later join the program, you can transfer the credits earned towards your degree. Learn how »
Academic Program
The online M.S. in Computer Science has the same degree requirements as the in-person program:
Four core requirements (at least one from each of these three areas: theory, systems, artificial intelligence)
A total of 30 credits in graduate-level computer science or related fields
Must include 12 credits in 600-level classes
See the Course Requirements page for details.
Courses
The online M.S. in Computer Science is designed to take two and a half to four years to complete, depending on how many courses you take per semester. New online courses will be added every year to ensure that students have access to our most popular master's level courses and can complete their degree requirements. The course schedule is subject to change.
Asynchronous course lectures will be recorded and available on-demand. Synchronous course lectures will be held at designated times.
Fall 2023
COMPSCI 514 Algorithms for Data Science
Mathematical and algorithmic foundations of big data processing. Study of methods for sampling, sketching, and distributed processing of large scale databases, graphs, and data streams for purposes of scalable statistical description, querying, pattern mining, and learning.
COMPSCI 532 Systems for Data Science
In this course, students will learn the fundamentals behind large-scale systems in the context of data science. We will cover the issues involved in scaling up (to many processors) and out (to many nodes) parallelism in order to perform fast analyses on large datasets. These include locality and data representation, concurrency, distributed databases and systems, performance analysis and understanding. We will explore the details of existing and emerging data science platforms, including MapReduce-Hadoop, Spark, and more. This course counts as an Elective toward the CS Major.
COMPSCI 560 Introduction to Computer & Network Security
This course provides an introduction to the principles and practice of computer and network security with a focus on both fundamental principles and practical applications through hands-on approach. Many of the principles are taught through examples. The key topics of this course are a brief introduction to computer networking; applied cryptography; protecting users, data, and services; network security, and common threats and defense strategies. Students will complete a number of practical lab assignments as well as auto-graded quizzes/assignments.
COMPSCI 563 Internet Law & Society
This course is meant for those looking for practical legal knowledge for use in Internet related endeavors. This course provides basic legal knowledge for Internet related legal issues with a focus on practical information for use by computer professionals. Topics covered are basics of the internet, basics of law and contract law, substantive laws, intellectual property law, basic ethical dealings, dealing with third parties, and policy issues.
COMPSCI 578 Distributed Computing & Systems
This course will teach the principles and practice of distributed systems as applied in today's cloud computing environments. The course will cover fundamental concepts in distributed computing including distributed clocks, consistency, fault tolerance, and consensus. The course will also cover popular cloud computing service models, related programming models, datacenter architectures, software-defined networking, and security and privacy issues in public clouds. The course will expose students to public cloud platforms such as Amazon EC2, Google Cloud Engine, Microsoft Azure etc. The assignments in the course will include a nontrivial programming component that assumes familiarity with multithreaded programming and network programming.
COMPSCI 589 Machine Learning
Introduction to core machine learning models and algorithms for classification, regression, dimensionality reduction and clustering. The course will cover the mathematical foundations behind the most common machine learning algorithms, and the effective use in solving real-world applications. Requires a strong mathematical background and knowledge of one high-level programming language such as Python.
COMPSCI 611 Advanced Algorithms
The design and analysis of efficient algorithms for important computational problems. Paradigms for algorithm design including Divide and Conquer, Greedy Algorithms, Dynamic Programming; and, the use of Randomness in Algorithms. Algorithms for Sorting and Searching, Graph Algorithms, Matroid, Linear Programming, Proving NP completeness, Approximation Algorithms for NP Complete Problems, and others. Prerequisites: The mathematical maturity expected of incoming Computer Science graduate students, knowledge of algorithms at the level of COMPSCI 311.
COMPSCI 661 Secure Distributed Systems
This is a class devoted to the study of securing distributed systems, with blockchain-based cryptocurrencies serving as our real platform of interest. We'll start with the fundamentals of Lamport's, Fischer's, and Douceur's results that fence-in all consensus system, and discuss Byzantine fault tolerance. We'll also look at the efficiency of the network architectures for peer-to-peer;distributed system communication and attacks on their security, such as denial of service attacks. And we'll review relevant applied cryptography such as elliptic curves. We'll discuss in detail the mechanisms of Bitcoin and Ethereum and we'll program distributed applications for Ethereum. Other topics include economics and finance. The course is based on a 'flipped classroom.'
COMPSCI 682 Neural Networks: Modern Introduction
This course will focus on modern, practical methods for deep learning with neural networks. The course will begin with a description of simple classifiers such as perceptrons and logistic regression classifiers, and move on to standard neural networks, convolutional neural networks, some elements of recurrent neural networks, and transformers. The emphasis will be on understanding the basics and on practical application more than on theory. Many applications will be in computer vision, but we will make an effort to cover some natural language processing (NLP) applications as well. The current plan is to use Python and associated packages such as Numpy and TensorFlow. Required background includes Linear Algebra, Probability and Statistics, and Multivariate Calculus. All assignments will be in the Python programming language.