290D - Techniques for Data Integration

Enterprise systems are large-scale software applications to support
business operations; they typically include software systems for data
management, business process/workflow management, information flows,
reporting, and data analytics.  Focusing only the data management
aspect, a typical enterprise has to struggle with many data
integration difficulties, since its data are usually spread around
many database systems, workflow systems, file systems, etc. and in a
variety of form possibly with no coherent semantics. In this course,

290F - Computing in Challenging Environments

Internet access is so critical it has been declared a “human right” by the United Nations. In developing nations Internet access can critically influence socio-economic advancement, and can enable democratic change, wide-spread education and improved health care.  In times of emergency Internet access provides vital, and at times life-saving, information.  Despite its value to society, 60% of the global population still lacks Internet access due to geographic remoteness and issues of affordability.

290F - Smartphone-centric Systems and Applications

Smartphones are becoming hugely popular. Driving interests in smartphones not only push for new exciting applications, but open up a new set of challenges on sensing, connectivity, location, energy, privacy and security issues in mobile computing.  In this advanced graduate class, we will be discussing recent developments in smartphone-based mobile systems and applications. In addition to reading and presenting recent technical papers, students will do a team project using smartphones. 

Prerequisites 

290C - String Analysis

String manipulation is a crucial part of modern software systems; for
example, it is used extensively in input validation and sanitization,
and in dynamic code and query generation. The goal of string-analysis
techniques is to determine the set of values that string expressions can
take during program execution. String analysis can be used to solve many
problems in modern software systems that relate to string manipulation,
such as: (1) Identifying security vulnerabilities by checking if a security

290I - Deep Learning for Pattern Recognition

Deep learning is a phrase given to a current widely used class of methodologies for building Pattern Recognition and Machine Learning algorithms in Academia and Industry.  Many of the deep learning techniques are from the field of Artificial Neural Networks (ANNs).  This course will provide an overview of the history of ANN research and applications from the 1950s to the present, followed by in-depth discussions and demonstrations of widely used and useful algorithms at the current time.

290T - Computational Algebra

This course cover a collection of research topics in computational algebra and number theory, as related to cryptography, cryptanalysis, security, and error-correcting codes. The students are expected to follow the course presentations, and return homework assignments. Additionally, each student is required to pick a particular area and write a short paper or presentation, covering the fundamentals of the area and describing possible open problems.

Topics

595C - Automated Worst Case and Side Channel Analysis for Software

As bug detection techniques become more effective in eliminating flaws in software systems, attacks that rely on inherent space-time complexity of algorithms used for building software systems are gaining prominence. If an adversary can generate arbitrary inputs that induce behaviors with expensive space-time resource utilization at the defender's end, in addition to mounting denial-of-service attacks, the adversary can also use the same inputs to facilitate side-channel attacks in order to infer some secret from the observed system behavior.