Tentatively Planned Program Electives for 2022-2023

Winter 2022-2023

CS4980 Compiler Construction

We will look at the design and implementation of a compiler, including lexical analysis, parsing, grammars, semantic analysis, code generation, and optimization. In addition to understanding how programming languages are implemented and optimized, this course will give tools for embedding programming concepts into other languages. This course can be taken in addition to CS 3040, Programming Languages and Interpreters. details

SE4910 Mobile Application Development

This course provides an introduction to the architecture, design, and development of software systems that support smart phones. Topics include the design and layout of native Android applications, implementing software with web APIs, using sensors in applications, and much more. Labs provide hands-on experience developing mobile applications.

CS4981 ML Production Systems

Students will design, implement, deploy, and operate a machine learning-powered service, including components for data processing, model training, modeling serving, model evaluation, and monitoring. Technologies and design patterns for streaming and batch data processing as well as storage systems will be introduced.

CS4981 Graph Machine Learning

This course focuses on the computational, algorithmic, and modeling challenges specific to the analysis of graphs. By studying the underlying graph structure and its features, students are introduced to machine learning techniques and data mining tools better able to reveal insights on a variety of networks. details

Spring 2023

CS4920 Information Security

This course provides a survey of computer security, consisting of the business case for security, principles of security, classes of vulnerabilities (e.g., buffer overrun), and the principles of cryptography. Cryptography topics are covered in depth, including secret and public key methods, stream ciphers, and related tools and standards such as Kerberos and PGP. details

SE4940 Network Security Tools and Practices

This course introduces students to cybersecurity through the application of tools and practices used in real-world network security analyses. Students learn the history of securing computer networks and the evolution of threats from hackers to sophisticated criminal organizations. Proactive security measures including authentication, encryption and firewalls are introduced. Students are given the opportunity to securely configure both wired and wireless networks. Monitoring technologies including intrusion detection, packet sniffing and computer/network forensics approaches are discussed and applied. Lab exercises focus on the application of tools in a live network environment to achieve best practices in network security. details

CS4230 Distributed and Cloud Computing

This course provides an introduction to the concepts, architecture, and programming techniques in high-performance distributed computing environments. An emphasis is placed on scalable web services applications. Topics include cloud computing, data processing in large clusters, distributed and parallel data processing, distributed storage systems, virtualization, and secure distributed computing. Students will study state-of-the-art solutions developed by Google, Amazon, VMWare, Yahoo, Microsoft, Sun/Oracle, and the research community. Topics may vary to reflect the current state-of-the-art and student interest. Students will apply what they learn in a series of introductory lab exercises and complete a final project using a distributed computing platform. details

CS4980 Game Development

This course provides an in depth look at game development, including development and design decisions that lead to successful games. Based on review of design elements of existing games, students design their own game and implement key features in a quarter-long project. Game projects are developed in current game engines such as Unity or Unreal Engine.

CS4980 An Engineering Approach to Game Theory and Economics

This course provides an engineering approach to economics using game theory that can be applied to study current economic issues. A brief introduction to game theory is given in the context of the engineering foundation that will be developed. An introduction to Mathematic's symbolic programming is provided. Mathematica is used to study both empirical trends as well as engineering model simulations based on the engineering extension of game theory. Finally, a review of the concepts from physics and mathematics that underlie the approach is given. Along with these introductory foundations, economic applications will be presented and shown to depend on aspects of modern theories of differential geometry. The student gains insight into these applications from engineering areas such as circuit theory.

CS4980 Natural Language Processing

This course an in-depth introduction to various topics in Natural Language Processing, including sentiment analysis, text classification, and machine translation. Students will learn how to analyze text define grammars to build and train language models for various purposes and implement basic NLP systems.

CS4981 Competitive Programming

This course provides an exploration of algorithms and data structure with a focus on their use solving problems presented in programming competitions. A brief introduction to algorithm runtime and space complexity analysis will be given in the context of constraints presented by problems in a competitive programming environment. The course will then present how competitive programming problems can be categorized and solved by recognizing the appropriate algorithm and data structure to use. Lab sessions will consist of practice in solving problems along with writing new problems.

CS4981 Recommendation Systems

Forthcoming

Fall 2022

CS4920 Information Security

This course provides a survey of computer security, consisting of the business case for security, principles of security, classes of vulnerabilities (e.g., buffer overrun), and the principles of cryptography. Cryptography topics are covered in depth, including secret and public key methods, stream ciphers, and related tools and standards such as Kerberos and PGP. details

CS4981 GPU Programming

This course provides an introduction to GPU programming. Topics include parallel programming paradigms, the CUDA programming language, profiling of CUDA C++/C code, optimization strategies, GPU libraries, and application of GPU acceleration. Students will implement linear algebra operations, image processing algorithms, and compare their implementations with Nvidia libraries.

CS4981 Robotics

This course introduces topics in robotic control and programming. Emphasis is placed on hands on applications of control algorithms and solving robotic tasks. Topics covered include open and closed loop control, inverse and forward kinematics, error propagation and statistical analysis, low to high level computer vision, control architecture design, and wireless communication and control. Students will be required to program and solve robotic tasks, but also document and explain their work through a mixture of presentations and simple lab reports.

CS4981 Competitive Programming

This course provides an exploration of algorithms and data structure with a focus on their use solving problems presented in programming competitions. A brief introduction to algorithm runtime and space complexity analysis will be given in the context of constraints presented by problems in a competitive programming environment. The course will then present how competitive programming problems can be categorized and solved by recognizing the appropriate algorithm and data structure to use. Lab sessions will consist of practice in solving problems along with writing new problems.

CS4981 Deep Learning in Signal Processing

This elective course provides an overview of deep learning methods and models as used in digital signal processing (DSP), including key DSP concepts that appear in and adjacent to such models in both real-time and off-line applications. Key topics include training pipelines, convolutional layers of various dimensions used on both time series and time-frequency representations of data, common network architectures, mitigation of overfitting, error metrics, and performance evaluation. Topics of student interest will be addressed by special lecture topics and course projects.