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. Our course offerings for the 2021-2022 academic year are listed below. 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 2021
COMPSCI 589 Machine Learning - ASYNCHRONOUS
This course will introduce core machine learning models and algorithms for classification, regression, clustering, and dimensionality reduction. On the theory side, the course will focus on understanding models and the relationships between them. On the applied side, the course will focus on effectively using machine learning methods to solve real-world problems with an emphasis on model selection, regularization, design of experiments, and presentation and interpretation of results. The course will also explore the use of machine learning methods across different computing contexts including desktop, cluster, and cloud computing. The course will include programming assignments, a midterm exam, and a final project. Python is the required programming language for the course. Prerequisites: COMPSCI 383 and MATH 235.
COMPSCI 514 Algorithms for Data Science - ASYNCHRONOUS
With the advent of social networks, ubiquitous sensors, and large-scale computational science, data scientists must deal with data that is massive in size, arrives at blinding speeds, and often must be processed within interactive or quasi-interactive time frames. This course studies the mathematical foundations of big data processing, developing algorithms and learning how to analyze them. We explore 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. Undergraduate Prerequisites: COMPSCI 240 and COMPSCI 311
COMPSCI 563 Internet Law and Policy - SYNCHRONOUS
This course examines the social norms, market factors, technology and law that influence the Internet. Five content areas within this framework make up the scope of the course: Internet governance, communications, privacy, security, and intellectual property. Students will be expected to do graduate level reading and analysis, including primary case law (although there is no prerequisite to have taken a law course), contribute to a robust classroom discourse and write a substantial research paper focused on a topic within the scope.
COMPSCI 597N Introduction to Computer and Network Security - SYNCHRONOUS
This course provides an introduction to the principles and practice of computer and network security with a focus on both fundamentals and practical information. The three key topics of this course are cryptography, privacy, and network security. Subtopics include ciphers, key exchange, security services (integrity, availability, confidentiality, etc.), network and web based security attacks, anonymous communications, vulnerabilities, and countermeasures. Students will complete several lab assignments. Grades will be determined by class participation, lab work, homework, quizzes, and exams. Prerequisites: Knowledge equivalent to COMPSCI 377, Operating Systems, or equivalent experience. Any education in security requires a good knowledge of networking. Knowledge of COMPSCI 453, Computer Networking is essential to completely benefit from this course. Non-degree students need the permission of the instructor.
COMPSCI 661 Secure Distributed Systems - SYNCHRONOUS
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 systems, 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 elliptical 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. Assignments will include programming projects and reading research papers. The grade is also based on exams and participation in discussions. The course is based on a flipped classroom. Python will be used for take-home assignments.
Spring 2022
COMPSCI 682 Neural Networks - A Modern Introduction - ASYNCHRONOUS
This course will focus on modern, practical methods for deep learning. 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, and some elements of recurrent neural networks, such as long short-term memory networks (LSTMs). The emphasis will be on understanding the basics and on practical application more than on theory. Most applications will be in computer vision, but we will make an effort to cover some natural language processing (NLP) applications as well, contingent upon TA support. The current plan is to use Python and associated packages such as Numpy and TensorFlow. Prerequisites include Linear Algebra, Probability and Statistics, and Multivariate Calculus. All assignments will be in the Python programming language.
COMPSCI 532 Systems for Data Science - ASYNCHRONOUS
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. Prerequisites: COMPSCI 311, COMPSCI 345, and COMPSCI 377.
COMPSCI 590A System Defense and Test - SYNCHRONOUS
This class trains students to detect and analyze weaknesses and vulnerabilities in target systems as a method of assessing the security of a system. We focus on tools and techniques that an attacker would employ but from the perspective of an ethical system administrator. Topics include tools and techniques for penetration testing and attacks, information gathering, social engineering, and defenses. Specific topics include malware, denial of service attacks, SQL injection, buffer overflow, session hijacking, and system hacking, network sniffing and scans, wireless encryption weaknesses and other WiFi issues, IDS/firewall evasion, metasploit tools, physical security, and setting up honeypots.
COMPSCI 590J Cyber Effects - SYNCHRONOUS
This course covers a broad range of topics related to cyber security and operations. Our focus is on real world studies of reverse engineering, exploit analysis, and capability development within the context of computer network operations and attack. The course has an emphasis on hands-on exercises and projects. Topics covered include computer architecture and assembly language, principles of embedded security, the essentials of exploit development and analysis (including using industry standard tools such as Ghidra, and utilizing computer security databases such as CVE), and discussion of real-world events and techniques.
COMPSCI 590K Advanced Digital Forensics Systems - ASYNCHRONOUS & SYNCHRONOUS OPTIONS
This course introduces students to the principal activities and state-of-the-art techniques involved in developing digital forensics systems. Topics covered may include: advanced file carving and reconstruction, forensic analysis of modern filesystems, network forensics, mobile device forensics, memory forensics, and anti-forensics.