The master of science in computer science online program consists of 30 credits that can be completed over the course of three to five terms. The program can be completed in approximately 12 months depending on students’ course schedules. Learn more about the courses you will take as a student in the program in the descriptions below.
Sample Course Sequences
The Accelerated Track can be completed in as little as 12 months over three terms. The Standard Track can be completed in as few as 20 months over five terms.
When choosing the Standard or Accelerated Track, you should also assess whether your course load will be considered full-time or part-time for financial aid purposes. More information can be found on the Financial Aid FAQs.
Teaches students how reusable parallel programs can be designed, implemented, optimized, validated, maintained, and enhanced by applying effective functional and object-oriented development practices, patterns, and frameworks.
Provides students with a deep understanding of conceptual and practical aspects of designing, implementing, and debugging concurrent software apps using patterns and frameworks related to Java and Android.
CS 5260: Artificial Intelligence (3 Units)
Principles and programming techniques of artificial intelligence. Strategies for searching, representation of knowledge and automatic deduction, learning, and adaptive systems. Survey of applications.
CS 5262: Foundations of Machine Learning (3 Units)
Theoretical and algorithmic foundations of supervised learning, unsupervised learning, and reinforcement learning. Linear and nonlinear regression, kernel methods, support vector machines, neural networks and deep learning methods, instance-based methods, ensemble classifiers, clustering and dimensionality reduction, value and policy iteration. Explainable AI, ethics, and data privacy.
CS 5278: Principles of Software Engineering (3 Units)
The nature of software. The object-oriented paradigm. Software life-cycle models. Requirements, specification, design, implementation, documentation, and testing of software. Object-oriented analysis and design. Software maintenance.
CS 5279: Software Engineering Projects (3 Units)
Students work in teams to specify, design, implement, document, and test a nontrivial software project. The use of CASE (Computer Assisted Software Engineering) tools is stressed.
CS 5283: Computer Networks (3 Units)
Computer communications. Network (Internet) architecture. Algorithms and protocol design at each layer of the network stack. Cross-layer interactions and performance analysis. Network simulation tools. Lab and programming assignments.
CS 5287: Principles of Cloud Computing (3 Units)
Principles of Cloud Computing. Fundamental concepts of cloud computing, different service models, techniques for resource virtualization, programming models, management, mobile cloud computing, recent advances, and hands-on experimentation.
CS 5288: Web-Based System Architecture (3 Units)
Web-based System Architecture. Core concepts necessary to architect, build, test, and deploy complex web-based systems; analysis of key domain requirements in security, robustness, performance, and scalability.
CS 6315: Automated Verification (3 Units)
Systems verification and validation, industrial case studies, propositional and predicate logic, syntax and semantics of computational tree and linear time logics, binary decision diagrams, timed automata model and real-time verification, hands on experience with model checking using the SMV, SPIN and UPPAAL tools, and state reduction techniques.
CS 6381: Distributed Systems Principles (3 Units)
Techniques and mechanisms in distributed system design, such as logical clocks, distributed consensus, distributed mutual exclusion, consistency models, fault tolerance and paradigms of communication. Contemporary distributed system case studies and open challenges.
CS 6385: Advanced Software Engineering (3 Units)
An intensive study of selected areas of software engineering. Topics may include CASE tools, formal methods, generative techniques, aspect-oriented programming, metrics, modeling, reuse, and software architecture.
CS 6387: Topics in Software Engineering: Security (3 Units)
Topics may include empirical software engineering and open-source software engineering.
CS 6388: Model-Integrated Computing (3 Units)
Model-Integrated Computing. Problems of designing, creating, and evolving information systems by providing rich, domain-specific modeling environments including model analysis and model-based program synthesis tools. Students are required to give a class presentation and prepare a project.
CS 8395: Special Topics: Digital Forensics (3 Units)
This course is a thorough exploration of the science of digital forensics. This course will include topics in OS forensics, mobile forensics, network forensics, forensic science theory, legal issues, etc. Standards and best practices in forensic science, such as NIST standards, will be covered. Numerous hands-on labs will be included that require application of theory, development of forensic arguments, and production of forensic papers.
CS 8395: Special Topics: Microservices (3 Units)
Coverage of software techniques, methods, and tools used to develop large-scale mobile cloud computing systems and applications, including topics on API design, scalability, concurrency, parallelism, persistence, microservices, resilience, quality assurance, and deployment.
CS 8395: Special Topics: Quantum Computing (3 Units)
This course is an introduction to quantum computing. Fundamental concepts including quantum hardware, logical qubits, quantum algorithms, and quantum programming will be covered. While prior course work in linear algebra and physics would help a student, they are not required.