Course Offering Descriptions

 

Course Description Faculty
CS415:
Relational Document-Based Database
This course covers the essentials of DB design principles and an introduction to SQL and NoSQL databases.
Topics include: Relational DB design principles, Normal Forms, Primary and Foreign and Unique keys; Queries (Aggregation, Joins, Sorting); Transactions; Document-based DB design principles, Indexes, Scaling Databases; Availability and recovery (dump, restore, export, import); Database as a Service.

Unubold Tumenbayar
CS422:
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) Mrudula  Mukadam
Thao Huy Vu
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.
Emdad Khan
Obinna Kalu
Thao Huy Vu
CS435:
Algorithms
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).
Prem Nair
Emdad Khan
CS472:
Web Application Programming
This course provides a systematic introduction to programming dynamic web applications. Starting with foundational web technologies, students will learn to build interactive and responsive web applications using modern JavaScript frameworks and tools. The course covers the essential building blocks of front-end and back-end web development, including: Show More

  • Front-End Development: HTML for structuring content, CSS for styling and presentation, and TypeScript for enhancing JavaScript with static typing. Students will gain proficiency in building user interfaces with React, exploring core concepts like components, props, state, and event handling.
  • Back-End Development: Introduction to asynchronous programming and the Node.js environment, including the Node event loop, core modules, and utilizing third-party modules. Students will learn to build server-side applications and APIs using Express in TypeScript

By the end of this course, students will be able to design, develop, and deploy full-stack web applications using industry-standard technologies. 

Asaad Saad
Thao Huy Vu
Obinna Kalu
CS473:
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.
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
CS516:
Cloud Computing
This course will cover cloud programming patterns and will allow students to practice working with various web cloud services, including AWS Serverless functions.
Topics include: dentity & Access Management (IAM); Virtual Private Cloud (VPC), Network Access Control Lists – NACL, Subnets, Availability Zones, Simple Storage Service (S3), Elastic Cloud Compute (EC2), Simple Notification Service (SNS), Elastic Load Balancer (ELB), Auto Scaling, Route 53, API in the cloud; AWS Lambda, Serverless; Web Services; Application Deployment, Final Project.
Thao Huy Vu
Unubold Tumenbayar
CS522:
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
CS523
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 into Knowledge. The aim of the course is to add some important tools to your arsenal to help you solve various big data problems.Show More
The course starts with giving answers to questions like “What is Big Data and it’s importance? How do you store big data reliably and cheaply? Which tools to use to find helpful information from this big data? etc.”  In this course, students will study different tools and programming models for analyzing big data. Topics include Hadoop ecosystem projects such as MapReduce, Pig, Hive, Sqoop, Flume, HBase (NoSQL DB), Zookeeper as well as Apache Spark ecosystem projects such as Spark SQL and Spark Streaming. Students are also given a chance to build a complete big data pipeline starting from data collection in real-time, processing, analyzing and finally viewing the results in graphical format on dashboards. Students will be mainly working with a single node Hadoop cluster of Cloudera distribution. (4 units) (MPP is the only prerequisite)
Mrudula Mukadam
CS544: Enterprise Applications 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.
Michael Zijlstra
Rene De Jong
CS545:
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
Prerequisite:
 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.

BOOKS :

Servlets & JSP – To Be Announced

Spring MVC: Beginner’s Guide

by Amuthan G
ISBN: 1783284870

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

Rene De Jong
CS572:
Modern Web Applications
This course provides a comprehensive exploration of modern web application development, covering both front-end and back-end technologies, database integration, and the latest advancements in AI and large language models. Students will gain practical experience building scalable and robust web applications using industry-standard tools and techniques.

Show More

Course Highlights:

  • Scaling Node.js Applications: Learn how to build highly performant and scalable back-end applications using Node.js and the child_process module. Explore techniques for managing background jobs, executing external commands, and improving application modularity.
  • NoSQL Databases as a Cloud Service: Master advanced querying techniques for NoSQL databases like MongoDB, including indexing, aggregation pipelines, and geospatial queries. Understand the importance of geospatial indexing for location-based applications and learn how to efficiently query and store location data.
  • Angular Framework: Dive into the latest features of Angular, focusing on Signals, a modern approach to building reactive user interfaces. Learn how to effectively manage data flow and handle updates efficiently for enhanced user experiences.
  • AI and Large Language Models (LLMs): Gain a deep understanding of how large language models work, including key parameters like temperature, top-p, top-k, frequency, and presence penalty. Explore word embeddings, self-attention mechanisms in Transformer models, multilayer perceptrons, and the calculation of logits and probabilities. Learn to interact with the OpenAI API (Chat and Completion APIs), use tokenizers, and leverage advanced features like OpenAI Tools and Function Calling. Develop skills in crafting effective prompts to guide LLM behavior and elicit desired outputs.

This course is ideal for students who want to gain a strong foundation in modern web development and explore the exciting possibilities of integrating AI into web applications. 

Asaad Saad
CS582:
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
CS590 Software Architecture 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.
Show More
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