Are You Ready to Advance Your Career?

Our program specializes in the areas of software systems and software development using OOP (Java), web applications, and data science. Core areas of study include: advanced software development, web application programming and architecture, big data analytics and technologies, machine learning and several important application areas.

All courses are designed to help you advance your career and each course contains practical assignments. View graduation requirements.

NEW! Award Winning  Data Science Track

Standard Core Courses

  • Modern Programming Practices (Java programming) (CS 401)

    This course presents the fundamental principles of object-oriented programming. Students will learn how to write reusable and better-maintained software, and integrate this knowledge with laboratory assignments and projects. Topics include: fundamental principles and models of object-oriented programming, UML class diagrams and design principles that promote re-usability and maintainability of software. (4 units)

  • Advanced Software Development (CS 525)

    This course considers the current methods and practices for good design of software systems. Topics include: software design patterns, frameworks, architectures, and designing systems to apply these multi-level abstractions. (2-4 credits) Prerequisite: CS 401 or consent of the department faculty.

  • Algorithms (CS 435)

    This course presents methods for analyzing the efficiency of algorithms (including worst-case and average-case analysis) and introduces a variety of known, highly efficient algorithms. Analysis, design, and implementation of algorithms are given equal emphasis. Topics include searching and sorting, efficiency of operations on data structures (including lists, hashtables, balanced binary search trees, priority queues), graph algorithms, combinatorial algorithms, recurrence relations, Dynamic Programming, NP-complete problems, and some special topics as time allows. (Special topics include computational geometry, algorithms for cryptosystems, approximation, Big Data and parallel computing.)

  • Computer Networks (CS 450)

    The goal of this course is to learn the concepts, architecture principles, and terminology of computer networks by exploring how networks work and developing network applications. This course follows the top-down approach to understanding networks by using the Internet’s architecture and protocols as the primary example of an implementation of network principles. We start at the application layer and continue through the transport layer, network layer, link layer, and the physical layer of computer networks. Students develop several network applications and complete several labs designed to trace and understand the predominant network protocols in use in the Internet. (4 units) Prerequisite: CS 401 or consent of the department faculty.

  • Database Management Systems (CS 422)

    Database systems organize and retrieve information, allowing the user to access the desired information easily and efficiently. Topics include: relational data model; SQL; ER modeling; relational algebra; data normalization; transactions; objects in the database; data security and integrity; data warehousing, OLAP, and data mining; distributed databases; and study of a specific commercial database system. (4 units) Prerequisite: CS 401 or consent of the department faculty.

  • Software Engineering (CS 425)

    Software Engineering is a course that introduces the student to best practices in software development through a software development methodology. Students have already had some experience in previous courses with the Object Oriented paradigm and have used some of the basic UML diagrams for purposes of modeling relationships between software objects. In Software Engineering, the student will develop skills in putting these tools together to produce robust, easily maintainable software. A software development methodology describes when and how OO concepts and UML diagrams should be used to accomplish the aim of building quality software. The course centers around a small project in which the principles discussed in the lecture format can be illustrated and applied. By the end of the course, the student will have a running application, built in accord with the high standards of the RUP (Rational Unified Process) development methodology.

  • Web Application Architecture and Frameworks (CS 545)

    This course focuses web applications in an enterprise setting. An enterprise application is a large software system designed to operate in a large organization such as a corporation or a government. Enterprise applications are complex, scalable, component-based, distributed and mission critical. This course, CS545, focuses on the front end or presentation layer of an enterprise web application. CS544 Enterprise Architecture is a companion course that focuses on the back end or business layer, including business logic, transactions, and persistence. CS472, Web Application Programming, is a prerequisite course that covers HTML, CSS, JavaScript, servlets and JSP.

    The course teaches principles and patterns that are general across platforms and frameworks. The course will examine and work with the two predominant Java web frameworks, Java Server Faces (JSF) and SpringMVC. JSF is a component based framework and is the official presentation framework specification for the Java Enterprise Edition technology stack. SpringMVC is part of the Core Spring framework and has become the most widely used Java web framework in recent years. (4 units) Prerequisite: CS 472 or consent of the department faculty.

  • Web Application Programming (CS 472)

    This course provides a systematic introduction to programming interactive and dynamic web applications. The course is intended for individuals with little or no prior web application programming experience. This offering will use Java servlets and JSP for server side processing. The course will introduce HTML and CSS. JavaScript is a focus of the course, and is covered as a functional programming language including jQuery, Ajax, and JavaScript namespaces and modules. It is a prerequisite for the CS545 Web Application Architecture. It does not cover AngularJS or NodeJS, but the JavaScript covered here will prepare you to learn those technologies. (4 units)
    Prerequisite: CS 220 or CS 401 or consent of the department faculty.

  • Science and Technology of Consciousness for Computer Professionals (FOR 506)

    Your first course is specifically designed to establish the basis of how you can become a top performing computer science professional. The course is rooted in the practice of Transcendental Meditation which leads to fulfillment of your true potential. You will learn about the benefits of TM including the ability to solve complex problems by superior mental functioning enhancing creativity and “out of the box” thinking. The course will focus upon the principles which underpin peak performance in activity by developing an optimal mix of rest and activity. You will develop and experience an ideal daily routine which supports success in life. (2 units)

Additional MSCS Courses

  • Advanced Programming Languages (CS 505)

    This course considers advanced topics in programming language design with emphasis on formal methods and abstraction mechanisms. Topics include data and control abstraction, formal specification of syntax and semantics, proofs of program correctness, non deterministic programming, advanced control structures, and study of specific languages. (4 units) Prerequisite: CS 401 or consent of the department faculty.

  • Big Data (Data Science track) (CS 522)

    Modern information processing is defined by vast repositories of data that cannot be handled by traditional database systems. This course covers latest technology developed and used by industry leaders to solve this problem in the most efficient way. Specific topics covered include MapReduce algorithms, MapReduce algorithm design patterns, HDFS, Hadoop cluster architecture, YARN, computing relative frequencies, secondary sorting, web crawling, inverted indexes and index compression, Spark algorithms and Scala . (4 units) Prerequisite: CS 435 Algorithms.

  • Big Data Analytics (Data Science track) (CS 488)

    Big Data is the new natural resource: data is doubling every 12-18 months. This new Big Data Analytics course covers the fundamental concepts and tools for mining large diverse data sets to generate new insights. You will master the use of R language to create Wordcloud, Pagerank, Data Visualization, Decision Trees, Regression, Clustering, Neural Networks, and more. You will work with some large multi-million record datasets, and also mine Twitter feeds. You will learn Hadoop/MapReduce and Streaming Data concepts, and will explore other Apache Big Data Projects such as Spark, Flink, Kafka, Storm, Samza, NoSQL through individual research papers. You will work in groups on open projects from Kaggle.com to compete for prize money by solving best-of-breed data-analytic challenges. You will also learn to use industry-leading IBM SPSS Modeler, and open-source data mining platforms. The #1 bestseller textbook used in this course is written by the instructor himself. The course will also use a wide range of video training materials from MIT, Coursera, Google, and elsewhere. (4 units) Prerequisite: Consent of the department faculty

  • Big Data Technologies (Data Science track) (CS 523)

    In just a few short years, big data technologies have gone from the realm of hype to one of the core components of the new digital age. These technologies are very useful for transforming Information to Knowledge.

    The aim of the course is to add some really important tools in your arsenal to help you solve various big data problems. We’ll start with giving answers to questions like “What is Big Data? Why is it important or useful? How do you store this big data?” We’ll then study different tools and programming models from the big data technology stack which will help us to analyze the data. Topics include some of the projects in the Hadoop ecosystem such as MapReduce, Pig, Hive, Sqoop, Flume, HBase (NoSQL DB), Zookeeper and Apache Spark ecosystem projects. We’ll also cover an introduction to AWS and EMR. You’ll be mainly working with a single node Hadoop distribution of Cloudera. (4 units) (No prerequisites)

  • Computer Security (CS 466)

    This course goes deeply into the three aspects of computer security: confidentiality, integrity and availability. Several models for confidential and integrity security policies are studied. The role of cryptography in assuring confidentiality and integrity is examined. Other topics include authentication, auditing, penetration testing, common vulnerabilities and intrusion detection. The course concludes with the case study of a realistic secure system. Students will be asked to read papers from the security literature and apply them to material given in the lectures. (4 credits) Prerequisite: CS 401 or consent of the department faculty.

  • Enterprise Architecture (CS 544)

    This course focuses on teaching the principles and practices used when developing larger scale enterprise applications. We will examine the different architectural layers that are frequently used and different technologies associated with these layers, including Object Relational Mapping (ORM), Dependency Injection (DI), Aspect Oriented Programming (AOP), and integration with other applications through Web Services (RESTfull and SOAP), Messaging and remote method invocation. Must have a working knowledge of relational databases and SQL. If you do not have a strong course or good working knowledge of SQL you should sign up for CS422 DBMS before signing up for EA. (4 units)

  • Machine Learning (Data Science track) (CS 582)

    Machine Learning, the field of study that gives computers the ability to learn from data, is at the heart of almost every scientific discipline, and the study of generalization (that is, prediction) from data is the central topic of machine learning. This course gives a graduate-level introduction to machine learning and in-depth coverage of new and advanced methods in machine learning, as well as their underlying theory. It emphasizes approaches with practical relevance and discusses a number of recent applications of machine learning, such as Data Mining (in Big Data / Data Science, Data Analytics), Natural Language Processing, Computer Vision, Robotics, Bioinformatics and Text and Web data processing. Machine Learning is used in various industries including Financial Services, Oil & Gas, Health Care, Marketing & Advertising, Government, Internet and Internet of Things.

    This course covers a variety of learning paradigms, algorithms, theoretical results and applications. It uses basic concepts from artificial intelligence, information theory, statistics, and control theory insofar as they are relevant to machine learning. Topics include: supervised learning (generative/discriminative learning, parametric/non-parametric learning, neural networks, support vector machines, decision tree, Bayesian learning & optimization); unsupervised learning (clustering, dimensionality reduction, kernel methods); learning theory (bias/variance tradeoffs; VC theory; large margins); reinforcement learning and adaptive control. Other topics include HMM (Hidden Markov Model), Evolutionary Computing, Deep Learning (With Neural Nets) and designing algorithms whose performance can be rigorously analyzed for fundamental machine learning problems.

    An important part of the course is a group project. Major open source tools used for parallel, distributed and scalable machine learning will be briefly covered to help students doing the projects. (4 units) Prerequisite: None.

  • Mobile Device Programming (CS 473)

    The importance of Mobile device programming has emerged over the recent years as a new domain in software development. This course prepares the students to develop applications that run on mobile devices such as an IPhone, IPad or Android phone. This is a rapidly developing market. Course focuses on installing, developing, testing, and distributing mobile applications. At the end of this course students are able to develop an app for the platforms covered, simulate them, test them on the real device and finally publish on the app store to make availability to the users. (4 units) Prerequisite: CS472 or consent of the department faculty.

  • Modern Web Applications (CS 572)

    In this course you will learn the Reactive Programming Architecture of SPA (Single Page Web Applications) along with all the necessary skills to build a full Modern Web Application. Technologies include: NodeJS, ExpressJS, TypeScript, AngularJS2, Firebase and NoSQL databases (MongoDB). The course will cover:

    • How the C++ V8 engine and asynchronous code work in Node and the Node event loop.
    • How to structure your code for reuse and build Restful API using modules and ExpressJS.
    • How NoSQL databases work: Mongo Shell, Aggregation framework, Replica Sets, Clustering, Shards, Mongoose ORM.
    • Deep understanding of how Angular (backed by Google) works, Change Detection, Reactive RxJs programming with Observables and Subjects, The Shadow DOM, Zones, Modules and Components, Custom Directives and Pipes, Services and Dependency Injection, Angular Compiler, JIT and AOF Compilation, Forms (Template Driven and Data Driven), Data Binding, Routing, Guards and Route Protection, HTTP client, JWT JSON Web Token Authentication.

    (4 units)

  • Operating Systems (CS 465)

    An operating system controls the central resources of the computer system and allocates them to individual users. Course topics include sequential and concurrent processes, mutual exclusion, resource sharing, process cooperation, deadlock, resource allocation, processor scheduling, memory management, segmentation and paging algorithms, timesharing systems, scheduling algorithms, and resource protection. (4 units)  Prerequisite: CS 401 or consent of the department faculty.

  • Parallel Programming (CS 471)

    The standard processor for all new computers is now a multi-core processor, which has the potential to execute programs much more quickly. However, to utilize this potential, a programmer must have some knowledge of parallel programming techniques. During this course, students will spend most of their time writing and debugging parallel programs. The expected outcome will be to develop a new level of practical programming skill. This skill will not only be useful for programming of multi-core processors, but also operating systems programming and distributed database programming. The software tools used during this course include Microsoft Visual C/C++, Java multithreading library, and OpenMP threading standard. (4 units) Prerequisite: Knowledge of computer programming using Java, C, or C++.

  • Software Architecture (CS 590)

    In this course we will look at the techniques, principles and patterns of how to design flexible, scalable, testable and resilient software systems using microservices. We will study how we can split up large applications into smaller microservices that are easier to build and other advantages compared to monolithic enterprise applications. A distributed microservice architecture also gives many challenges. We will study these challenges and how to address them. Topics of this course are architectural styles, integration techniques and patterns, domain driven design, event driven architecture and reactive programming. (4 credits). (No prerequisites)

  • Practicum in Software Development (CS 575)

    In this practicum course, students perform computer-related tasks in a technical professional position. The tasks performed may be in the design and development of new systems or the application of existing systems for specific purposes. Practicum job descriptions are formulated by the employer and the student, and require approval in advance by one of the graduate faculty of the department, in consultation with the practicum supervisor where the student is placed. (This course is primarily for students in the internship or cooperative programs.) (0.5-1 unit per block – may be repeated.)

“The first time I heard about the MSCS program, I doubted it. I could not believe that something like this exists. But one day, a friend of mine joined the program. That was when I confirmed that it is real. Then I resumed my application process. Well! It is true, I am here, I have completed the program and I am so happy.”

Edwin BwambaleUganda