CSC Graduate Special Topic Courses - Fall 2019

CSC 591 - 001   Quantum Computing - Dr. Mueller


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

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 791 - 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