Course Offering Descriptions


Course Description Faculty
Database Management Systems
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)

(Mukadam) ​​DBMS Course Details

Joseph Lerman
Mrudula  Mukadam
CS425: Software Engineering 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.
Show More
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.
(Nolle) Previous Course Syllabus
Paul Corazza
Emdad Khan
Obinna Kalu
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.
Show More
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).
(Corazza) Previous Course Syllabus
(Khan) Previous Course Syllabus
Clyde Ruby
Paul Corazza
Emdad Khan
Mei Li
Web Application Programming
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.
Show More
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.
(Levi) WAP Syllabus 2017
Bruce Lester
Keith Levi
Rakesh Shrestha
Asaad Saad
Rujuan Xing
Obinna Kalu
Mobile Device Programming
Developing Android programs is an exciting and potentially lucrative experience. Android development opens up the world of creativity to you the programmer and allows you to express yourself in ways you never dreamed of in a digital world where you can create a product and make it available to billions of users in just one click of a button. This course will concentrate on creating Android applications by using the Kotlin programming language.

Syllabus: CS473 Mobile Device Programming Syllabus
Schedule: CS473 Mobile Device Programming Schedule
Show More
Topics you will learn includes: Setting up your computer for Android programming; Manifest basics; Layouts, Activities, Views and UI components; Working with Intents, Fragments and Shared Preferences; Web View and HTML; Working with Multimedia; SQLite Database and JSON; Understating Sensors; Localization; Publishing app into Google play store.

Renuka Mohanraj
Big Data Analytics
The intelligence of any area or organization is reflected in its processes and structures. One important and growing aspect of that is embedded in its information systems and associated data. Data Analytics is the overall field that includes gathering and analysis of this data to discover the underlying structure and patterns and producing actionable intelligence, to help managers drive superior performance. This course covers the fundamental concepts and tools for mining large diverse data sets to generate new insights – you will learn techniques like Regression, Bayes’ Rule, Decision Tree, KNN, SVM, Association Rule mining, Clustering, Text Mining and many more. You will master the use of R language to create Wordcloud, Data Visualization and implement the techniques mentioned above. You will work in groups on a project to research on a popular data mining algorithm and present your work. (4 units) Prerequisite: Consent of the department faculty. Mei Li
Big Data
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)
Prem Nair
Big Data Technology
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.
Show More
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)
Mrudula Mukadam
Advance Software Development
The Structures and Patterns of Software that Embody Knowledge of Good Design

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)

Gregory Guthrie
Hanhong Lu
Advance Software Development
This course is an introduction to 23 GoF (Gang of Four) design patterns and software frameworks. Design Patterns are proven solutions to recurring problems in object-oriented software design. The course will cover the rationale and benefits of using them in developing software frameworks and applications.
Show More
During the first two weeks,  we have an emphasis on intellectual understanding of the design patterns. For the third week, with the knowledge gained from class, students develop a framework by harvesting, such as board game framework, GUI evaluation framework, check-in/out framework, annotation framework, etc. Textbook: Design Patterns: Elements of Reusable Object-Oriented Software (Erich Gamma)
Previous Course Syllabus
Hanhong Lu
CS544: Enterprise Architecture This course focuses on the protocols, principles, design patterns, and architecture of the Corporate Enterprise. The course emphasizes principles and patterns that are general across all platforms and frameworks.

We will examine the architectural layers of an N-Tier architecture and the different technologies associated with these layers. The main emphasis will be what is commonly referred to as Service and Persistence tiers. Data Persistence, Security, Application Integration and Distributed Applications are areas of focus in this course.

Show More

Examples of specific technologies covered are Object Relational Mapping (ORM), Dependency Injection (DI), Aspect Oriented Programming (AOP), and integration with other applications through RESTful Web Services, Message Brokers (JMS, RabbitMQ) and Enterprise Integration Patterns.

To investigate these principles in depth the course will examine and work with the Spring Framework. The Spring Framework provides a comprehensive programming and configuration model for modern Java-based Enterprise Applications.

Also, in an Enterprise-level work environment, professional success is highly correlated with the ability to work in a team environment. In this course, we will develop team skills by organizing into groups of 3 or 4 at the start of the course. Teams will work as a unit, discussing course material, collaborating on labs and developing the course project.

Joe Bruen
Payman Salek
Najeeb Najeeb
Michael Zijlstra
Anthony Sander
Web Application Architecture
This course focuses on the protocols, principles, design patterns, and architecture of web applications, and web development frameworks that embody such principles and architecture.  There are a variety of system principles and design patterns that are involved in modern web applications.  The most important architectural pattern in modern web applications is the Model-View-Controller (MVC) architecture for web applications.
Show More
To investigate these principles in depth this course will examine and work with a representative web framework.  In this course the representative framework will be Spring MVC. Spring MVC is part of the Core Spring framework and is considered the leading Java-based technology for building web applications.Prerequisite knowledge
 CS472 Web Application Programming or consent of the Department FacultyIn addition, the course assumes knowledge/experience in the following computer science areas:

  • Basic knowledge of JSP technology.
  • Knowledge of network protocols such as TCP/IP and HTTP, which are covered in depth in the CS450 Networks course.
  • Strong background in object-oriented programming. The course requires writing OO programs in an advanced programming environment.
  • Knowledge of design patterns.  Design patterns are covered in depth in the CS525 ASD course.

None of these are explicitly required as prerequisites for this course, but if a student is missing these concepts, it will be a challenge for them to understand the course concepts.


Servlets & JSP – To Be Announced

Spring MVC: Beginner’s Guide

by Amuthan G
ISBN: 1783284870

Packt Publishing; 1st edition (June 24, 2014)

Previous Course Syllabus

Joe Bruen
Rujuan Xing
Modern Web Applications
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, Angular, Firebase and NoSQL databases (MongoDB). The course will cover:
Show More

  • 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.
Asaad Saad
Rakesh Shrestha
Najeeb Najeeb
Machine Learning
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.
Show More
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 variety of learning paradigms, algorithms, theoretical results and applications. It uses basic concepts from artificial intelligence, information theory, statistics, and control theory insofar 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.
Emdad Khan
Anthony Sander
CS590 Software Architecture (July 2018) Traditionally every software project has a dedicated software architect who designs the architecture for a certain system. In agile software development software architecture is not a role, but a task that is performed by the team members (developers). In this course we study the important software architecture techniques, styles and patterns that are used in modern software systems.

First we will look at techniques and best practices to discover the architectural relevant requirements. Then we study how to design, evaluate and communicate architecture.

We will study many architectural styles like domain driven design, component based architecture, service oriented architecture, microservice architecture, event driven architecture and stream based architecture. We also study architecture patterns like event sourcing, CQRS, publish-subscribe, reactive, eventual consistency, integration patterns, API gateway, load balancing, token based security, etc.

We use Spring Boot, Spring Cloud and Kafka to practice the different architectural styles and patterns.

Rene De Jong