CSC Graduate Special Topic Courses - Fall 2019

CSC 591 - 001   Quantum Computing - Dr. Mueller


This class is cross-listed with ECE 592 - 081.

This course aims to provide an introduction to quantum computing. It will feature the three pillars, architectures, programming, and algorithms/applications of quantum computing. Its focus is across all three two pillars as well as the assessment of the applicability of problems to quantum computing from a practical point, with only the
necessary foundational coverage of the physics and theoretical aspects to understand quantum computing. Simulation software will be utilized complemented by access to actual quantum computers to prototype problem solutions. This should aid in developing a better understanding of how problems are transformed into quantum algorithms and what programming language support is best suited for a given application area.

Class Time: TH 1:30 - 2:45 pm

CSC 591 - 002   Privacy - Dr. Das

Description: Privacy is a growing concern in our modern society. We interact and share our personal information with a wide variety of organizations, including financial and healthcare institutions, web service providers and social networks. Many times such personal information is inappropriately collected, used or shared, often without our awareness. This course introduces privacy in a broad sense, with the aim of providing students an overview of the challenging and emerging research topics in privacy.

This course will expose students to many of the issues that privacy engineers, program managers, researchers and designers deal with in industry. By the end of the course, students will learn about the following areas in privacy:
•      Privacy fundamentals: an overview of privacy definitions and history.
•      Data privacy: the motivations for data privacy and common implementations (e.g., k-anonymity, differential privacy, information flow).
•      Web/online privacy: online tracking, usable privacy, anonymous communication and privacy policies.
•      Emerging topics: privacy in IoT, AI for privacy, privacy enhancing technologies.

Class Time: TH 11:45 am - 1:00 pm

CSC 591 - 003   Data Man for Real Time Processing - Dr. Anyanwu Ogan


Class Time: TH 11:45 am - 1:00 pm

CSC 591 - 004   Internet of Things Analytics - Dr. Perros

Prerequisites: Basic knowledge of statistics and probability theory, programming skills. Graduate-level standing

Description: This class is cross listed with ECE 592 - 005.

The course covers the most popular modeling and machine-learning techniques that are used in relation to the Internet of Things (IoT), such as: simulation techniques, basic queueing theory concepts, multivariate regression, time-series forecasting, clustering, neural nets, support vector machines (SVC), and hidden Markov models (HMM).

Emphasis will be placed on hands-on projects.

Learning objectives: At the end of the course, students will be able to a) develop simulation models of IoT systems, b) apply statistical and machine-learning techniques to analyze data from IoT sensors, and c) gain experience with one more of the packages: MatLab, R, Scikit-learn (machine learning in Python), KNIME.

Class Time: MW 8:30 - 9:45 am

CSC 591 - 005   Foundations of Data Science - Dr. Vatsavai

Description: Students will learn core statistical data analysis principles. This course introduces principle ideas in statistical learning and help students prepare for advanced courses in data mining and machine learning. Focus will also be given on applying these principles for variety of data analytical tasks using R.

Topics: Random variables and probability distributions, exploratory data analysis, variable selection, sampling methods, histograms and probability distributions, density estimation, missing data and imputation, mixture models, latent variables, and expectation maximization, regression analysis, discriminant analysis, bagging and boosting, principle component analysis, information theory -- entropy, mutual information, Bayesian information criteria, conditional independence, rescaling and low-dimensional summaries, factor analysis, graphical causal models and causal inference, and evaluating predictive models.

Class Time: F 9:35 am - 12:20 pm

CSC 591 - 011   Cryptography - Dr. Scafuro

Description: This class is cross listed with CSC 495 - 011.

Cryptography is everywhere in our everyday life. Whenever we connect to Facebook, shop on Amazon, call Lyft, our device runs a sequence of cryptographic protocols that enable for secure communication over a public network such as the Internet. In this class you will learn the concepts and the algorithms behind such cryptographic protocols. You will learn how to formally define security properties such as confidentiality and integrity of data; you will be able to formally prove that a cryptographic protocol achieves a certain security property; and you will be able to identify the cryptographic tools needed in real world protocols [such as SSL, Bitcoin].

You will also discover that cryptography has a much broader range of applications. It solves absolutely paradoxical problems such as proving knowledge of a secret without ever revealing the secret [zero knowledge proofs], or computing the output of a function without ever knowing the input of the function [secure computation].

Note that in this course we do not focus on implementation, neither programming of cryptographic schemes.

Class Time: MW 4:30 - 5:45 pm

CSC 591 - 013   Game Engine Foundations - Dr. Roberts

Description: This is the graduate version of CSC 481 and is cross listed with CSC 481 - 001.

The purpose of this course is to familiarize students with issues and techniques of computer games design in general, and more specifically game engine design. With the proliferation of computer games, a number of distinct genres have emerged. Each genre of computer game provides a unique set of design challenges for designers. While there are no "one size fits all" solutions to game design problems, there are a number of techniques common to many different games. These commonalities have given rise to game engines which are software tools to aid designers. Behind almost all successful commercial games is a game engine.
In this course we will examine some of the components of a commercial-strength game engine. We will survey different genres of games, using some of the unique design challenges each genre provides as a motivation for an in-depth examination of the affordances games engines provide for designing games of that genre. We will cover topics ranging from data structures, resource management, game loops and logical timing systems, scripting, error logging, and networking.

Class Time: TH 4:30 - 5:45 pm

CSC 591 - 020   Machine Learning - Dr. Chi

Prerequisites: CSC 522 or Educational Data Mining

Description: This section is cross-listed with CSC 791 - 020.

Classes in AI and Database Management are recommended, but not required.

Machine Learning is concerned with computer programs that enable the behavior of a computer  to be learned from examples or experience rather than dictated through rules written by hand. An important scientific phenomenon in the 21st century has been the advances made possible by mining the wealth of user data available from various interactive systems. Machine learning and data mining methods can greatly improve the effectiveness and adaptiveness of interactive systems, and user-system interaction data in turn exposes new machine learning and data mining challenges. This class is meant to teach the practical side of machine learning for mining interactive data, such as mining user log files to make predictions, discovering interesting patterns from the sequential data, or building adaptive user interactive systems.
This course will give an overview of many models and algorithms used in modern machine learning, including sequential mining, decision theory, mixture models, clustering, ensemble methods, Hidden Markov Models, the expectation-maximization algorithm, deep learning, and reinforcement learning. The course will give the student the basic ideas and intuition behind these methods, as well as, a more formal understanding of how and why they work. Students will have an opportunity to experiment with machine learning techniques and apply them a selected problem in the context of a term project. The course will be run in lecture and seminar style, with readings from the current literature and with student presentations. This course will be of interest to students who plan to conduct subsequent work on applied machine learning and data mining and/or interactive systems, and students who plan to pursue a career in interactive personalized technologies and user adaptation. Graduate students from departments other than computer science are welcome.

Class Time: M 4:30 - 7:15 pm

CSC 591 - 021   Automated Software Engineering - Dr. Menzies

Description: This section is cross-listed with CSC 791 - 021.

Co-requisite: CSC 326 or CSC 510. Significant software industry experience may be substituted, at the instructor’s discretion.

This is a project-based class where students will use Python to build and extend their own AI tools for software engineering. While DevOps strives to "automated everything", automated software engineering strives to "automate automation". This subject will explore methods to augment standard software engineering practices with AI methods (data miners,  optimizers, theorem provers) that that peek over over our shoulders to say "try this, and don't bother  that".  
Objectives: by the end of the course, students should be able to
1. Build and maintain complex Python programs.
2. Build and modify and refactor and remix and repurpose AI software (data miners, optimizers, theorem provers) for SE tasks;
3. Discuss issues associated with applying the above to help society, and customers, achieve their goals better, faster, and cheaper.
4. Speak and write on complex technical issue.
Class web site:

Class Time: TH 4:30 - 5:45 pm

CSC 591 - 022   Testing - Dr. Stolee

Description: This section is cross-listed with CSC 712 - 022.

All software must be tested. Part of a well-rounded software engineering education involves understanding why we test, how to test, and the tools available to assist with testing. Course material is grounded in recent research and applied using modern software testing tools. Students will gain hands-on experience with advanced software testing concepts, including test case prioritization, automated test generation, mobile testing, mutation testing, and fairness testing.

Class Time: MW 3:00 - 4:15 pm

CSC 591 - 023   Advanced Computer Networks for Distributed Computing Systems - Dr. Ruozhou Yu

Prerequisites: A networking course in the graduate level (CSC/ECE 570+), Programming using C/C++, Basics on using Matlab/Python/other tools to visualize data statistics


This course is also cross-listed as CSC 791 - 023.

This course explores the design and implementation principles of advanced computer networks
that support modern distributed computing systems. In particular, the course will emphasize on
recent networking techniques developed and used for cloud computing, edge computing, and
peer-to-peer systems. Multiple aspects of each of these types of networks will be explored,
including architectures, protocols and tools, metrics and performance, and applications. The
students will be encouraged to read research papers in related areas. In addition, the students
will learn and practice using network simulation/emulation tools to model and improve the
performance of network architectures and protocols, through homework assignments and the
course project.

CSC 591 - 024   Software for Robotics Today - Dr. Ore

Description: This class is also cross-listed as CSC 791 - 024.

Advances in software-enabled robotics are unlocking disruptive capabilities in diverse areas, including transportation, space exploration, domestic assistants, agriculture, and medical robots. This course explores fundamental algorithms and AI-enabled capabilities for robots operating in real-world environments. The focus of the course will be on ways to make software-enabled robotics more reliable through automated testing and analysis. Topics covered in this class include robotic software architecture, motion planning, testing, state estimation, deep learning, AI, manipulation, multi-robot systems, and flying robots. We will explore these topics through the critical analysis of classic and contemporary articles in the fields of robotics and software engineering. By examining algorithms and systems used in the real world, we will determine what it takes to go from theory to implementation. In this class, students will present, discuss, and write analyses of current software engineering and robotics research. Further, students will work in groups on a semester-long project to explore areas of interest in software engineering and robotics. The goal of this course is for students to gain an understanding of the challenges of the current state of the art in software-enabled robotics and to improve problem-solving and critical analysis skills.

Class Time: TH 11:45 am - 1:00 pm

CSC 591 - 084   Optimization and Algorithms - Shih-Chun Lin

Description: This course is also cross-listed as ECE 582 - 084 and ECE 792 - 053.

Please find the course details here: