Learn ‘Hands-On’ Skills with the Latest Technologies in Software Development
Are You Ready to Advance Your Career?
Our program specializes in the areas of software systems and software development using OOP (Java), and web applications, along with some data science courses. Core areas of study include: advanced software development, web application programming and architecture, some data science courses and several important application areas.
All courses are designed to help you advance your career and each course contains practical assignments. View graduation requirements.
This course provides a focused program for enhancing programming and analytical skills in five areas: problem solving, data structures, object-oriented programming, the Java programming language, and the use of recursion in Java programs.
These topics are of particular importance as a prerequisite for the courses in the graduate program in Computer Science.
Topics include: elements of Java programming, object-oriented design and implementation, data structures (including lists, stacks, queues, binary search trees, hash tables, and sets), the exception hierarchy, file i/o and streams, and JDBC. (4 credits) Prerequisite: For undergraduate students: CS 221; for graduate students: consent of the department faculty (4 units)
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.)
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)
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)
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)
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)
Leadership for Technical Managers (FOR 506B)
The goal of this course is to provide students with knowledge and skills in leadership, including communication skills as preparation for future leadership roles.
By the end of this course, students will understand the answers to key questions regarding effective leadership, including the following:
Are there ‘natural-born’ leaders?
Do you have to have charisma to lead effectively?
What one asset is required to be a leader?
What is the difference between managing and leading?
What are the many ‘intelligences’ required to lead in this era?
What is ‘management malpractice’ and how does it lead to self-sabotage?
Knowing that feedback is essential to the leading process, how do we get over the fear of giving and receiving it?
What is the source of 80% of the problems found in the workplace?
Is there scientific research available to assist the organization in improving it’s individual and team leadership skills?
Guest speakers will include eminent entrepreneurs, computer scientists, philanthropists, Academics and other prominent leaders in society.
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) (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) (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) (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)
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 Architecture (CS 590)
The goal of this course is to provide students with knowledge and skills in leadership, including communication skills as preparation for future leadership roles. By the end of this course, students will understand the answers to key questions regarding effective leadership, including the following: •Are there ‘natural-born’ leaders? •Do you have to have charisma to lead effectively? •What one asset is required to be a leader? •What is the difference between managing and leading? •What are the many ‘intelligences’ required to lead in this era? •What is ‘management malpractice’ and how does it lead to self-sabotage? •Knowing that feedback is essential to the leading process, how do we get over the fear of giving and receiving it? •What is the source of 80% of the problems found in the workplace? •Is there scientific research available to assist the organization in improving its individual and team leadership skills? •Guest speakers will include eminent entrepreneurs, computer scientists, philanthropists, academics, and other prominent leaders in society. (2 credits) (No prerequisites)
Machine Learning (Data Science) (CS 582)
Machine Learning (not being taught Spring 2021. Check for availability), 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.
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.
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++.
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.)
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)
“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.”