Computer Science

Undergraduate Courses

BCB 4002. Biovisualization

Cat II (offered at least every other Year).
This course will use interactive visualization to model and analyze biological information, structures, and processes. Topics will include the fundamental principles, concepts, and techniques of visualization (both scientific and information visualization) and how visualization can be used to study bioinformatics data at the genomic, cellular, molecular, organism, and population levels. Students will be expected to write small- to moderately-sized programs to experiment with different visual mappings and data types. This course will be offered in 2022-23, and in alternating years thereafter.

BCB 4003. Biological and Biomedical Database Mining

Cat II (offered at least every other Year).
This course will investigate computational techniques for discovering patterns in and across complex biological and biomedical sources including genomic and proteomic databases, clinical databases, digital libraries of scientific articles, and ontologies. Techniques covered will be drawn from several areas including sequence mining, statistical natural language processing and text mining, and data mining. This course will be offered in 2021-22, and in alternating years thereafter.

CS 1004. Introduction to Programming for Non-Majors

Cat I (offered at least 1x per Year).
This course introduces students to the fundamental principles of programming in imperative and scripting languages. Topics include control structures, iterators, functional decomposition, and basic data structures (such as records). Students will be expected to implement, test, and debug programs. Through the use of compelling applications and lab exercises, students will learn how to interface with external data systems and control devices.

CS 1101. Introduction to Program Design

Cat I (offered at least 1x per Year).
This course introduces principles of computation and programming with an emphasis on program design. Topics include the design, implementation, and testing of programs that use a variety of data structures (such as structures, lists, and trees), functions, conditionals, recursion, and higher-order functions. Students will be expected to design simple data models, and implement and debug programs in a functional programming language.

CS 1102. Accelerated Introduction to Program Design

Cat I (offered at least 1x per Year).
In the first half of the term, this course covers the same functional programming material as CS 1101 at roughly twice the pace. The second half of the term is a preview of selected advanced Computer Science topics, such as the design and implementation of application-specific languages, macros, programming with the HTTP protocol, and continuation-passing style. Students will be expected to complete an open-ended individual programming project.

CS 2011. Introduction to Machine Organization and Assembly Language

Cat I (offered at least 1x per Year).
This course introduces students to the structure and behavior of modern digital computers and the way they execute programs. Machine organization topics include the von Neumann model of execution, functional organization of computer hardware, the memory hierarchy, caching performance, and pipelining. Assembly language topics include representations of numbers in computers, basic instruction sets, addressing modes, stacks and procedures, low-level I/O, and the functions of compilers, assemblers, linkers, and loaders. The course also presents how code and data structures of higher-level languages are mapped into the assembly language and machine representations of a modern processor. Programming projects will be carried out in the C language and the assembly language of a modern processor.

CS 2022. Discrete Mathematics

Cat I (offered at least 1x per Year).
This course serves as an introduction to some of the more important concepts, techniques, and structures of discrete mathematics providing a bridge between computer science and mathematics. Topics include sets, functions and relations, propositional and predicate calculus, mathematical induction, properties of integers, counting techniques, and graph theory. Students will be expected to develop simple proofs for problems drawn primarily from computer science and applied mathematics.

CS 2102. Object-Oriented Design Concepts

Cat I (offered at least 1x per Year).
This course introduces students to an object-oriented model of programming. Building from the design methodology covered in CS 1101/CS 1102, this course shows how programs can be decomposed into classes and objects. By emphasizing design, this course shows how to implement small defect-free programs and evaluate design decisions to select an optimal design under specific assumptions. Topics include inheritance, exceptions, interface, design by contract, basic design patterns, and reuse. Students will be expected to design, implement, and debug object-oriented programs composed of multiple classes and over a variety of data structures.

CS 2103. Accelerated Object-Oriented Design Concepts

Cat I (offered at least 1x per Year).
This course covers the data structures and general program-design material from CS2102, but assumes that students have significant prior experience in object-oriented programming. The course covers object-oriented design principles and data structures more deeply and at a faster pace than in CS 2102. Students will be expected to design, implement, test, debug, and critique programs both for correctness and adherence to good object-oriented design principles. The course is designed to strengthen both the design skills and algorithmic thinking of students who already have a foundation in object-oriented programming. Advanced Placement Computer Science A courses should provide sufficient background; students from AP CS Principles courses or gentler introductions to Java Programming are advised to take CS2102 instead. Students may receive credit for only one of the following three courses: CS 2102, CS 2103, CS 210X.

CS 2119. Application Building with Object-Oriented Concepts

Cat I (offered at least 1x per Year).
This course introduces students to an object-oriented model of programming, with an emphasis on the programming approaches useful in creating software applications. Students will be expected to design, implement, and debug object-oriented programs. Topics include inheritance, user interfaces, and database access. This course is for non-CS majors with prior programming experience and an interest in building software applications.

CS 2223. Algorithms

Cat I (offered at least 1x per Year).
Building on a fundamental knowledge of data structures, data abstraction techniques, and mathematical tools, a number of examples of algorithm design and analysis worst case and average case will be developed. Topics include greedy algorithms, divide-and-conquer, dynamic programming, heuristics, and probabilistic algorithms. Problems will be drawn from areas such as sorting, graph theory, and string processing. The influence of the computational model on algorithm design will be discussed. Students will be expected to perform analysis on a variety of algorithms.

CS 2301. Systems Programming for Non-Majors

Cat I (offered at least 1x per Year).
This course introduces the C programming language and system programming concepts to non-CS majors who need to program computers in their own fields. The course assumes that students have had previous programming experience. It quickly introduces the major concepts of the C language and covers manual memory management, pointers and basic data structures, the machine stack, and input/output mechanisms. Students will be expected to design, implement, and debug programs in C. All Computer Science students and other students wishing to prepare for upper-level courses in Computer Science should take CS 2303 instead of CS 2301. Students who have credit for CS 2303 may not receive subsequent credit for CS 2301.

CS 2303. Systems Programming Concepts

Cat I (offered at least 1x per Year).
This course introduces students to a model of programming where the programming language exposes details of how the hardware stores and executes software. Building from the design concepts covered in CS 2102, this course covers manual memory management, pointers, the machine stack, and input/ output mechanisms. The course will involve large-scale programming exercises and will be designed to help students confront issues of safe programming with system-level constructs. The course will cover several tools that assist programmers in these tasks. Students will be expected to design, implement, and debug programs in C++ and C. The course presents the material from CS 2301 at a fast pace and also includes C++ and other advanced topics.

CS 3013. Operating Systems

Cat I (offered at least 1x per Year).
This course provides the student with an understanding of the basic components of a general-purpose operating system. Topics include processes, process management, synchronization, input/output devices and their programming, interrupts, memory management, resource allocation, and an introduction to file systems. Students will be expected to design and implement a large piece of system software in the C programming language. Undergraduate credit may not be earned both for this course and for CS 502.

CS 3041. Human-Computer Interaction

Cat I (offered at least 1x per Year).
This course develops in the student an understanding of the nature and importance of problems concerning the efficiency and effectiveness of human interaction with computer-based systems. Topics include the design and evaluation of interactive computer systems, basic psychological considerations of interaction, interactive language design, interactive hardware design, and special input/output techniques. Students will be expected to complete several projects. A project might be a software evaluation, interface development, or an experiment.

CS 3043. Social Implications of Information Processing

Cat I (offered at least 1x per Year).
This course makes the student aware of the social, moral, ethical, and philosophical impact of computers and computer-based systems on society, both now and in the future. Topics include major computerbased applications and their impact, human machine relationships, and the major problems of controlling the use of computers. This course is recommended for juniors and seniors.

CS 3133. Foundations of Computer Science

Cat I (offered at least 1x per Year).
This course introduces the theoretical foundations of computer science. These form the basis for a more complete understanding of, and proficiency in computer science. Topics include computational models, formal languages, and an introduction to computability and complexity theory, including NP-completeness. Students will be expected to complete a variety of exercises and proofs. Undergraduate credit may not be earned for both this course and for CS 5003. Students who have credit for CS 4123 may not receive credit for CS 3133.

CS 3431. Database Systems I

Cat I (offered at least 1x per Year).
This course introduces the student to the design, use, and application of database management systems. Topics include the relational data model, relational query languages, design theory, and conceptual data design and modeling for relational database design. Techniques that provide for data independence and minimal redundancy will be discussed. Students will be expected to design and implement database system applications. Undergraduate credit may not be earned both for this course and for CS 4432 or CS 542.

CS 3516. Computer Networks

Cat I (offered at least 1x per Year).
This course provides a broad view of computer networks. The course exposes students to all seven layers of OSI Reference Model while providing an introduction into newer topics such as wireless networking and Internet traffic concerns. The objective is to focus on an understanding of fundamental concepts of modern computer network architecture from a design and performance perspective. Topics covered include physical layer considerations, network protocols, wide area networks, local area networks, wireless networks, switches and routing, congestion, Internet traffic, and network security. Students will be expected to do extensive systems/network programming and will be expected to make use of simulation and measurement tools to gain an appreciation of current network design and performance issues. This course is also highly recommended for RBE and IMGD majors.

CS 3733. Software Engineering

Cat I (offered at least 1x per Year).
This course introduces the fundamental principles of software engineering. Modern software development techniques and life cycles are emphasized. Topics include requirements analysis and specification, analysis and design, architecture, implementation, testing and quality, configuration management, and project management. Students will be expected to complete a project that employs techniques from the topics studied. This course should be taken before any course requiring a large programming project. Undergraduate credit may not be earned both for this course and for CS 509.

CS 4032. Numerical Methods for Linear and Nonlinear Systems

Cat I (offered at least 1x per Year).
This course provides an introduction to modern computational methods for linear and nonlinear equations and systems and their applications. Topics covered include solution of nonlinear scalar equations, direct and iterative algorithms for the solution of systems of linear equations, solution of nonlinear systems, and the eigenvalue problem for matrices. Error analysis will be emphasized throughout.

CS 4033. Numerical Methods for Calculus and Differential Equations

Cat I (offered at least 1x per Year).
This course provides an introduction to modern computational methods for differential and integral calculus and differential equations. Topics covered include interpolation and polynomial approximation, approximation theory, numerical differentiation and integration, and numerical solutions of ordinary differential equations. Error analysis will be emphasized throughout.

CS 4099. Special Topics in Computer Science

Cat III (offered at discretion of dept/prgm).
Instances of this course will explore advanced and emerging topics that are not covered by the current regular CS offerings. Content and format will vary to suit the interests and needs of the faculty and students. This course may be repeated for credit as topics change.

CS 4100. Artificial Intelligence for Interactive Media and Games

Cat II (offered at least every other Year).
Algorithms and programming techniques from artificial intelligence (AI) are key contributors to the experience of modern computer games and interactive media, either by directly controlling a non-player character (NPC) or through more subtle manipulation of the environment. This course will focus on the practical AI programming techniques currently used in computer games for NPC navigation and decision-making, along with the design issues that arise when AI is applied in computer games, such as believability and real-time performance. The course will also briefly discuss future directions in applying AI to games and media. Students will be expected to complete significant software development projects using the studied techniques. This course will be offered in 2021-22, and in alternating years thereafter.

CS 4120. Analysis of Algorithms

Cat II (offered at least every other Year).
This course develops the skill of analyzing the behavior of algorithms. Topics include the analysis with respect to average and worst case behavior and correctness of algorithms for internal sorting, pattern matching on strings, graph algorithms, and methods such as recursion elimination, dynamic programming, and program profiling. Students will be expected to write and analyze programs. Undergraduate credit may not be earned both for this course and for CS 5084. This course will be offered in 2022-23, and in alternating years thereafter.

CS 4123. Theory of Computation

Cat II (offered at least every other Year).
Building on the preliminaries established in CS 3133, this course explores fundamental questions of computability and complexity. Emphasis is on both mathematical foundations and applications to computing practice. Topics include the Church-Turing thesis, the halting problem, NP-completeness, time and space complexity classes, and related material as determined by the instructor. Students will be expected to read and write mathematical proofs.

CS 420X. GRAPHICL SIMUL OF PHYSICAL SYS

CS 4233. Object-Oriented Analysis and Design

Cat II (offered at least every other Year).
This Software Engineering course will focus on the process of Object-Oriented Analysis and Design. Students will be expected to complete a large number of exercises in Domain Modeling, Use Case Analysis, and Object-Oriented Design. In addition, the course will investigate Design Patterns, which are elements of reusable object-oriented software designs. This course will survey a set of design patterns and consider how these patterns are described and used to solve design problems. This course will be offered in 2022-23, and in alternating years thereafter.

CS 4241. Webware: Computational Technology for Network Information Systems

Cat I (offered at least 1x per Year).
This course explores the computational aspects of network information systems as embodied by the World Wide Web (WWW). Topics include languages for document design, programming languages for executable content, scripting languages, design of WWW based human/computer interfaces, client/server network architecture models, high level network protocols (e.g., http), WWW network resource discovery and network security issues. Students in this course will be expected to complete a substantial software project (e.g., Java based user interface, HTML/CGI based information system, WWW search mechanisms).

CS 4300. Graphics, Simulation, and Aesthetics

Cat II (offered at least every other Year).
This course trains students to create accelerated simulations using Graphics Processing Unit (GPU) programming techniques, and to render the output of these simulations in aesthetically interesting ways. The aesthetic focus of the course is grounded by examining the histories of experimental animation, video synthesis, and the use of simulation in the digital arts. Students will evaluate the effectiveness of GPU-accelerated techniques for a variety of simulations and will create their own aesthetic explorations of appropriate simulations throughout the course.

CS 4341. Introduction to Artificial Intelligence

Cat I (offered at least 1x per Year).
This course studies the problem of making computers act in ways which we call intelligent. Topics include major theories, tools and applications of artificial intelligence; aspects of knowledge representation; searching and planning; and natural language understanding. Students will be expected to complete projects which express problems that require search in state spaces and to propose appropriate methods for solving the problems. Undergraduate credit may not be earned both for this course and for CS 534.

CS 4342. Machine Learning

Cat I (offered at least 1x per Year).
In this course, students will explore both theoretical and practical aspects of machine learning, including algorithms for regression, classification, dimensionality reduction, clustering, and density estimation. Specific topics may include neural networks and deep learning, Bayesian networks and probabilistic graphical models, principal component analysis, k-means clustering, decision trees and random forests, support vector machines, and kernel methods.

CS 4401. Software Security Engineering

Cat I (offered at least 1x per Year).
This course provides an introduction to the pitfalls and practices of building secure software applications. Topics will include threat modeling, secure software development, defensive programming, web security, and the interaction between security and usability. The course focuses on the application level with minor attention to operating-system level security; network-level security is not covered. Assignments involve designing and implementing secure software, evaluating designs and systems for security-related flaws, and presentations on security issues or tools. All students will be required to sign a pledge of responsible conduct at the start of the course.

CS 4404. Tools and Techniques in Computer Network Security

Cat II (offered at least every other Year).
This course introduces students to modern network security concepts, tools, and techniques. The course covers security threats, attacks, and mitigations at the operating-system and network levels (as opposed to the software level). Topics include authentication, authorization, confidentiality, integrity, anonymity, privacy, intrusion detection and response, and cryptographic applications. Students will become familiar with modern security protocols and tools. Assignments will involve using security-testing software to uncover vulnerabilities, network packet analyzers, and existing security applications to create secure network implementations. The course requires enough programming and systems background to understand attacks and use systems tools but does not involve significant programming projects. Assignments and projects will use a Linux base for implementation.

CS 4432. Database Systems II

Cat II (offered at least every other Year).
This course concentrates on the study of the internals of database management systems. Topics include principles and theories of physical storage management, advanced query languages, query processing and optimization, index structures for relational databases, transaction processing, concurrency control, distributed databases, and database recovery, security, client server and transaction processing systems. Students may be expected to design and implement software components that make up modern database systems. Undergraduate credit may not be earned both for this course and CS 542. This course will be offered in 2021-22, and in alternating years thereafter.

CS 4433. Big Data Management and Analytics

Cat I (offered at least 1x per Year).
This course introduces the emerging techniques and infrastructures for big data management and analytics including parallel and distributed database systems, map-reduce, Spark, and NoSQL infrastructures, data stream processing systems, scalable analytics and mining, and cloud-based computing. Query processing and optimization, access methods, and storage layouts developed on these infrastructures will be covered. Students are expected to engage in hands-on projects using one or more of these technologies.

CS 4445. Data Mining and Knowledge Discovery in Databases

Cat II (offered at least every other Year).
This course provides an introduction to Knowledge Discovery in Databases (KDD) and Data Mining. KDD deals with data integration techniques and with the discovery, interpretation, and visualization of patterns in large collections of data. Topics covered in this course include data warehousing and mediation techniques; data mining methods such as rule-based learning, decision trees, association rules, and sequence mining; and data visualization. The work discussed originates in the fields of artificial intelligence, machine learning, statistical data analysis, data visualization, databases, and information retrieval. Several scientific and industrial applications of KDD will be studied. This course will be offered in 2021-22, and in alternating years thereafter.

CS 4513. Distributed Computing Systems

Cat II (offered at least every other Year).
This course extends the study of the design and implementation of operating systems begun in CS 3013 to distributed and advanced computer systems. Topics include principles and theories of resource allocation, file systems, protection schemes, and performance evaluation as they relate to distributed and advanced computer systems. Students may be expected to design and implement programs that emphasize the concepts of file systems and distributed computing systems using current tools and languages. Undergraduate credit may not be earned both for this course and for CS 502. This course will be offered in 2021-22, and in alternating years thereafter.

CS 4515. Computer Architecture

Cat II (offered at least every other Year).
This course explores the architectural design of modern computer systems in terms of instruction sets and the organization of processors, controllers, memories, devices, and communication links. Topics include an overview of computer architectures and system components, theoretical foundations, instruction-level and thread-level pipelining, multifunction pipelines, multi-core systems, caching and memory hierarchies, and multi-core and parallel computer organization. Students may be expected to design and implement programs that simulate significant components of modern computer architectures. This course will be offered in 2022-23, and in alternating years thereafter.

CS 4516. Advanced Computer Networks

Cat II (offered at least every other Year).
This course provides an in-depth look into computer networks. While repeating some of the areas from CS 3516, the goal is to go deeper into computer networks topics. This in-depth treatment in topics such as routing, congestion control, wireless layer protocols, and physical signaling considerations will require the use of basic queuing theory and probability to provide a more formal treatment of computer networks performance. Other topics covered include LAN and WLAN technologies, mobile wireless networks, sensor networks, optical networks, network security, intrusion detection, and network management. Students will be expected to do more sophisticated network programming than seen in CS 3516 and will conduct laboratory activities involving measuring the performance of modern networking applications running on both wired networks and infrastructure wireless networks. Undergraduate credit may not be earned both for this course and for CS 513. This course will be offered in 2021-22, and in alternating years thereafter.

CS 4518. Mobile and Ubiquitous Computing

Cat II (offered at least every other Year).
The goal of this course is to acquaint students with fundamental concepts and state-of-the-art computer science literature in mobile and ubiquitous computing. Topics to be covered include mobile systems issues, human activity and emotion sensing, location sensing, mobile human-computer interaction, mobile social networking, mobile health, power saving techniques, energy and mobile performance measurement studies, and mobile security. The course will introduce the programming of mobile devices such as smartphones running the Android operating system. Students may not earn credit for both CS 403X and CS 4518.

CS 4533. Techniques of Programming Language Translation

Cat II (offered at least every other Year).
This course studies the compiling process for high-level languages. Topics include lexical analysis, syntax analysis, semantic analysis, symbol tables, intermediate languages, optimization, code generation, and run-time systems. Students will be expected to use compiler tools to implement the front end and to write a program to implement the back end of a compiler for a recursive programming language. Undergraduate credit may not be earned for both this course and for CS 544. This course will be offered in 2022-23, and in alternating years thereafter.

CS 4536. Programming Languages

Cat II (offered at least every other Year).
This course covers the design and implementation of programming languages. Topics include data structures for representing programming languages, implementing control structures (such as functions, recursion, and exceptions), garbage collection, and type systems. Students will be expected to implement several small languages using a functional programming language. Undergraduate credit may not be earned for both this course and CS 536. This course will be offered in 2021-22, and in alternating years thereafter.

CS 453X. MACHINE LEARNING

In this course, students will explore both theoretical and practical aspects of machine learning, including algorithms for regression, classification, dimensionality reduction, clustering, and density estimation. Specific topics may include: neural networks and deep learning, Bayesian networks and probabilistic graphical models, principal component analysis, k-means clustering, decision trees and random forests, support vector machines and kernel methods.
Recommended background: Knowledge of Multivariate Calculus (MA 1024 or MA 1034), Linear Algebra (such as MA 2071), Probability (MA 2621 or MA 2631), and Algorithms (CS 2223).

CS 4731. Computer Graphics

Cat I (offered at least 1x per Year).
This course studies the use of the computer to model and graphically render two- and three-dimensional structures. Topics include graphics devices and languages, 2- and 3-D object representations, and various aspects of rendering realistic images. Students will be expected to implement programs which span all stages of the 3-D graphics pipeline, including clipping, projection, arbitrary viewing, hidden surface removal, and shading. Undergraduate credit may not be earned both for this course and for CS 543.

CS 4732. Computer Animation

Cat II (offered at least every other Year).
This course provides an in-depth examination of the algorithms, data structures, and techniques used in modeling and rendering dynamic scenes. Topics include animation hardware and software; parametric blending techniques; modeling physical and articulated objects; forward and inverse kinematics; key-frame, procedural, and behavioral animation; and free-form deformation. Students will be expected to develop programs to implement low-level animation algorithms as well as use commercial animation tools to design and produce small- to moderately-sized animations. This course will be offered in 2022-23, and in alternating years thereafter.

CS 4801. Introduction to Cryptography and Communication Security

Cat I (offered at least 1x per Year).
This course provides an introduction to modern cryptography and communication security. It focuses on how cryptographic algorithms and protocols work and how to use them. The course covers the concepts of block ciphers and message authentication codes, public key encryption, digital signatures, and key establishment, as well as common examples and uses of such schemes, including the AES, RSA-OAEP, and the Digital Signature Algorithm. Basic cryptanalytic techniques and examples of practical security solutions are explored to understand how to design and evaluate modern security solutions. The course is suited for students interested in cryptography or other security related fields such as trusted computing, network and OS security, or general IT security.

CS 4802. Biovisualization

Cat II (offered at least every other Year).
This course will use interactive visualization to model and analyze biological information, structures, and processes. Topics will include the fundamental principles, concepts, and techniques of visualization (both scientific and information visualization) and how visualization can be used to study bioinformatics data at the genomic, cellular, molecular, organism, and population levels. Students will be expected to write small- to moderately-sized programs to experiment with different visual mappings and data types. This course will be offered in 2022-23, and in alternating years thereafter.

CS 4803. Biological and Biomedical Database Mining

Cat II (offered at least every other Year).
This course will investigate computational techniques for discovering patterns in and across complex biological and biomedical sources including genomic and proteomic databases, clinical databases, digital libraries of scientific articles, and ontologies. Techniques covered will be drawn from several areas including sequence mining, statistical natural language processing and text mining, and data mining. This course will be offered in 2021-22, and in alternating years thereafter.

CS 4804. Data Visualization

This course trains students in data visualization, the graphical communication of data and information for presentation, confirmation, and exploration. Students learn the stages of the visualization pipeline, including data characterization, mapping data attributes to graphical attributes, user task abstraction, visual display techniques, tools, paradigms, and perceptual issues. Students evaluate the effectiveness of visualizations for specific data, task, and user types. Students implement visualization algorithms and undertake projects involving the use of commercial and public-domain visualization tools.

CS 480X. DATA VISUALIZATION

This course exposes students to the field of data visualization, i.e., the graphical communication of data and information for the purposes of presentation, confirmation, and exploration. The course introduces the stages of the visualization pipeline. This includes data modeling, mapping data attributes to graphical attributes, visual display techniques, tools, paradigms, and perceptual issues. Students learn to evaluate the effectiveness of visualizations for specific data, task, and user types. Students implement visualization algorithms and undertake projects involving the use of commercial and public-domain visualization tools.
Recommended background: Knowledge of Linear Algebra (such as MA 2071), Probability theory (MA 2621), and Software Engineering (CS 3733).

DS 4433. Big Data Management and Analytics

Cat I (offered at least 1x per Year).
This course introduces the emerging techniques and infrastructures for big data management and analytics including parallel and distributed database systems, map-reduce, Spark, and NoSQL infrastructures, data stream processing systems, scalable analytics and mining, and cloud-based computing. Query processing and optimization, access methods, and storage layouts developed on these infrastructures will be covered. Students are expected to engage in hands-on projects using one or more of these technologies.

ECE 4802. Introduction to Cryptography and Communication Security

Cat I (offered at least 1x per Year).
This course provides an introduction to modern cryptography and communication security. It focuses on how cryptographic algorithms and protocols work and how to use them. The course covers the concepts of block ciphers and message authentication codes, public key encryption, digital signatures, and key establishment, as well as common examples and uses of such schemes, including the AES, RSA-OAEP, and the Digital Signature Algorithm. Basic cryptanalytic techniques and examples of practical security solutions are explored to understand how to design and evaluate modern security solutions. The course is suited for students interested in cryptography or other security related fields such as trusted computing, network and OS security, or general IT security.

IMGD 4100. Artificial Intelligence for Interactive Media and Games

Cat II (offered at least every other Year).
Algorithms and programming techniques from artificial intelligence (AI) are key contributors to the experience of modern computer games and interactive media, either by directly controlling a non-player character (NPC) or through more subtle manipulation of the environment. This course will focus on the practical AI programming techniques currently used in computer games for NPC navigation and decision-making, along with the design issues that arise when AI is applied in computer games, such as believability and real-time performance. The course will also briefly discuss future directions in applying AI to games and media. Students will be expected to complete significant software development projects using the studied techniques. This course will be offered in 2021-22, and in alternating years thereafter.

IMGD 4300. Graphics, Simulation, and Aesthetics

Cat II (offered at least every other Year).
This course trains students to create accelerated simulations using Graphics Processing Unit (GPU) programming techniques, and to render the output of these simulations in aesthetically interesting ways. The aesthetic focus of the course is grounded by examining the histories of experimental animation, video synthesis, and the use of simulation in the digital arts. Students will evaluate the effectiveness of GPU-accelerated techniques for a variety of simulations and will create their own aesthetic explorations of appropriate simulations throughout the course.

MA 2201. Discrete Mathematics

Cat I (offered at least 1x per Year).
This course serves as an introduction to some of the more important concepts, techniques, and structures of discrete mathematics providing a bridge between computer science and mathematics. Topics include sets, functions and relations, propositional and predicate calculus, mathematical induction, properties of integers, counting techniques, and graph theory. Students will be expected to develop simple proofs for problems drawn primarily from computer science and applied mathematics.

MA 3257. Numerical Methods for Linear and Nonlinear Systems

Cat I (offered at least 1x per Year).
This course provides an introduction to modern computational methods for linear and nonlinear equations and systems and their applications. Topics covered include solution of nonlinear scalar equations, direct and iterative algorithms for the solution of systems of linear equations, solution of nonlinear systems, and the eigenvalue problem for matrices. Error analysis will be emphasized throughout.

MA 3457. Numerical Methods for Calculus and Differential Equations

Cat I (offered at least 1x per Year).
This course provides an introduction to modern computational methods for differential and integral calculus and differential equations. Topics covered include interpolation and polynomial approximation, approximation theory, numerical differentiation and integration, and numerical solutions of ordinary differential equations. Error analysis will be emphasized throughout.

Graduate Courses

BCB 502. Biovisualization

This course uses interactive visualization to explore and analyze data, structures, and processes. Topics include the fundamental principles, concepts, and techniques of visualization and how visualization can be used to analyze and communicate data in domains such as biology. Students will be expected to design and implement visualizations to experiment with different visual mappings and data types, and will complete a research oriented project.

BCB 503. Biological and Biomedical Database Mining

This course will investigate computational techniques for discovering patterns in and across complex biological and biomedical sources, including genomic and proteomic databases, clinical databases, digital libraries of scientific articles, and ontologies. Techniques covered will be drawn from several areas including sequence mining, statistical natural language processing and text mining, and data mining.

CS 5003. Foundations of Computer Science: an Introduction

This is the study of mathematical foundations of computing, at a slower pace than that of CS 503 and with correspondingly fewer background assumptions. Topics include finite automata and regular languages, pushdown automata and context-free languages, Turing machines and decidability, and an introduction to computational complexity.

CS 5007. Introduction to Applications of Computer Science with Data Structures and Algorithms

This is an introductory graduate course teaching core computer science topics typically found in an undergraduate Computer Science curriculum, but at a graduate-level pace. It is primarily intended for students with little formal preparation in Computer Science to gain experience with fundamental Computer Science topics. After a review of programming concepts the focus of the course will be on data structures from the point of view of the operations performed upon the data and to apply analysis and design techniques to non-numeric algorithms that act on data structures. The data structures covered include lists, stacks, queues, trees and graphs. Projects will focus on the writing of programs to appropriately integrate data structures and algorithms for a variety of applications. This course may not be used to satisfy degree requirements for a B.S., M.S., or Ph.D. degree in Computer Science or a minor in Computer Science. It may satisfy the requirements for other degree programs at the discretion of the program review committee for the particular degree.

CS 5008. Introduction to Systems and Network Programming

This course is focused on significant programming projects and provides an overview of the principles of computer networks and a general-purpose operating system. The course provides the student with an understanding of the basic components of an operating system, including processes, synchronization and memory management. The course exposes students to the Internet protocol suite networking layers while providing an introduction into topics such as wireless networking and Internet traffic considerations. The objective is to focus on an understanding of fundamental concepts of operating systems and computer network architecture from a design and performance perspective.Students will be expected to design and implement a variety of programming projects to gain an appreciation of the design of operating systems and network technologies. This course may not be used to satisfy degree requirements for a B.S., M.S., or Ph.D. degree in Computer Science or a minor in Computer Science. It may satisfy the requirements for other degree programs at the discretion of the program review committee for the particular degree.

CS 502. Operating Systems

The design and theory of multiprogrammed operating systems, concurrent processes, process communication, input/output supervisors, memory management, resource allocation and scheduling are studied.

CS 503. Foundations of Computer Science

This is the study of mathematical foundations of computing. Topics include finite automata and regular languages, pushdown automata and context-free languages, Turing machines and decidability, and an introduction to computational complexity.

CS 504. Analysis of Computations and Systems

The following tools for the analysis of computer programs and systems are studied: probability, combinatorics, the solution of recurrence relations and the establishment of asymptotic bounds. A number of algorithms and advanced data structures are discussed, as well as paradigms for algorithm design.

CS 5084. Introduction to Algorithms: Design and Analysis

This course is an introduction to the design, analysis and proofs of correctness of algorithms. Examples are drawn from algorithms for many areas. Analysis techniques include asymptotic worst case and average case, as well as amortized analysis. Average case analysis includes the development of a probability model. Techniques for proving lower bounds on complexity are discussed, along with NP-completeness. Note: students with a strong background in design and analysis of computer systems, at the level equal to a B.S. in computer science, should not take CS 5084 and should consider taking CS 504 or CS 584.

CS 509. Design of Software Systems

This course introduces students to a methodology and specific design techniques for team-based development of a software system. Against the backdrop of the software engineering life-cycle, this course focuses on the object-oriented paradigm and its supporting processes and tools. Students will be exposed to industrial-accepted standards and tools, such as requirements elicitation, specification, modeling notations, design patterns, software architecture, integrated development environments and testing frameworks. Students will be expected to work together in teams in the complete specification, implementation and testing of a software application.

CS 513. Computer Networks

This course provides an introduction to the theory and practice of the design of computer and communications networks, including the ISO seven-layer reference model. Analysis of network topologies and protocols, including performance analysis, is treated. Current network types including local area and wide area networks are introduced, as are evolving network technologies. The theory, design and performance of local area networks are emphasized. The course includes an introduction to queueing analysis and network programming.

CS 514. Advanced Systems Architecture

See ECE 572 course description on page 104.

CS 521. Logic in Computer Science

This course is an introduction to mathematical logic from a computer science perspective. Topics covered include the exploration of model theory, proof theory, and decidability for propositional and first-order classical logics, as well as various non-classical logics that provide iseful tools for computer science (such as temporal and intuitionistic logics). The course stresses the application of logic to various areas of computer science such as computability, theorem proving, programming languages, specification,and verification. The specific applications included will vary by instructor.

CS 522. Numerical Methods

See MA 510 course description.

CS 525. Topics in Computer Science

A topic of current interest is covered in detail. Please consult the department for a current listing of selected topics in this area.

CS 526. Human-Robot Interaction

This course focuses on human-robot interaction and social robot learning, exploring the leading research, design principles and technical challenges we face in developing robots capable of operating in real-world human environments. The course will cover a range of multidisciplinary topics, including physical embodiment, mixed-initiative interaction, multi-modal interfaces, human-robot teamwork, learning algorithms, aspects of social cognition, and long-term interaction. These topics will be pursued through independent reading, class discussion, and a final project.

CS 528. Mobile and Ubiquitous Computing

This course acquaints participants with the fundamental concepts and state-of-the-art computer science research in mobile and ubiquitous computing. Topics covered include mobile systems issues, human activity and emotion sensing, location sensing, mobile HCI, mobile social networking, mobile health, power saving techniques, energy and mobile performance measurement studies and mobile security. The course consists of weekly presentations on current advanced literature, discussions and a term project. The term project involves implementing research ideas on a mobile device such as a smartphone.

CS 529. Multimedia Networking

This course covers basic and advanced topics related to using computers to support audio and video over a network. Topics related to multimedia will be selected from areas such as compression, network protocols, routing, operating systems and human computer interaction. Students will be expected to read assigned research papers and complete several programming intensive projects that illustrate different aspects of multimedia computing.

CS 533. Modeling and Performance Evaluation of Network and Computer Systems

Methods and concepts of computer and communication network modeling and system performance evaluation. Stochastic processes; measurement techniques; monitor tools; statistical analysis of performance experiments; simulation models; analytic modeling and queueing theory; M/M, Erlang, G/M, M/G, batch arrival, bulk service and priority systems; work load characterization; performance evaluation problems.

CS 534. Introduction to Artificial Intelligence

This course gives a broad survey of artificial intelligence. The course will cover methods from search, probabilistic reasoning, and learning, among other topics. Selected topics involving the applications of these tools are investigated. Such topics might include natural language understanding, scene understanding, game playing, and planning.

CS 535. Advanced Topics in Operating Systems

This course discusses advanced topics in the theory, design and implementation of operating systems. Topics will be selected from such areas as performance of operating systems, distributed operating systems, operating systems for multiprocessor systems and operating systems research.

CS 536. Programming Language Design

This course discusses the fundamental concepts and general principles underlying current programming languages and models. Topics include control and data abstractions, language processing and binding, indeterminacy and delayed evaluation, and languages and models for parallel and distributed processing. A variety of computational paradigms are discussed: functional programming, logic programming, object-oriented programming and data flow programming.

CS 538. Knowledge-Based Systems

The course will review knowledge-based problemsolving systems. It will concentrate on an analysis of their architecture, knowledge and problemsolving style in order to classify and compare them. An attempt will be made to evaluate the contribution to our understanding of problems that such systems can tackle.

CS 539. Machine Learning

The focus of this course is machine learning for knowledge-based systems. It will include reviews of work on similarity-based learning (induction), explanation-based learning, analogical and case-based reasoning and learning, and knowledge compilation. It will also consider other approaches to automated knowledge acquisition as well as connectionist learning.

CS 540. Artificial Intelligence in Design

The main goal of this course is to obtain a deeper understanding of what design is, and how AI might be used to support and study it. Students will examine some of the recent Al-based work on design problem-solving. The course will be run in seminar style, with readings from the current literature and with student presentations. The domains will include electrical engineering design, mechanical engineering design, civil engineering design and software design (i.e., automatic programming). This course will be of interest to those wanting to prepare for research in design, or those wishing to increase their understanding of expert systems. Graduate students from departments other than computer science are welcome.

CS 541. Deep Learning

This course will offer a mathematical and practical perspective on artificial neural networks for machine learning. Students will learn about the most prominent network architectures including multilayer feedforward neural networks, convolutional neural networks (CNNs), auto-encoders, recurrent neural networks (RNNs), and generative-adversarial networks (GANs). This course will also teach students optimization and regularization techniques used to train them such as back- propagation, stochastic gradient descent, dropout, pooling, and batch normalization. Connections to related machine learning techniques and algorithms, such as probabilistic graphical models, will be explored. In addition to understanding the mathematics behind deep learning, students will also engage in hands-on course projects. Students will have the opportunity to train neural networks for a wide range of applications, such as object detection, facial expression recognition, handwriting analysis, and natural language processing.

CS 542. Database Management Systems

An introduction to the theory and design of data-base management systems. Topics covered include internals of database management systems, fundamental concepts in database theory, and database application design and development. In particular, logical design and conceptual modeling, physical database design strategies, relational data model and query languages, query optimization, transaction management and distributed databases. Typically there are hands-on assignments and/or a course project. Selected topics from the current database research literature may be touched upon as well.

CS 543. Computer Graphics

This course examines typical graphics systems, both hardware and software; design of low-level software support for raster displays; 3-D surface and solids modeling; hidden line and hidden surface algorithms; and realistic image rendering including shading, shadowing, reflection, refraction and surface texturing.

CS 544. Compiler Construction

A general approach to the design of language processors is presented without regard for either the source language or target machine. All phases of compilation and interpretation are investigated in order to give the student an appreciation for the overall construction of a compiler. Typical projects may include implementation of a small compiler for a recursive or special-purpose language.

CS 545. Digital Image Processing

This course presents fundamental concepts of digital image processing and an introduction to machine vision. Image processing topics will include visual perception, image formation, imaging geometries, image transform theory and applications, enhancement, restoration, encoding and compression. Machine vision topics will include feature extraction and representation, stereo vision, model-based recognition, motion and image flow, and pattern recognition. Students will be required to complete programming assignments in a high-level language.

CS 546. Human-Computer Interaction

This course prepares graduate students for research in human-computer interaction. Topics include the design and evaluation of interactive computer systems, basic psychological considerations of interaction, interactive language design, interactive hardware design and special input/output techniques. Students are expected to present and review recent research results from the literature, and to complete several projects.

CS 547. Information Retrieval

This course introduces the theory, design, and implementation of text-based and Web-based information retrieval systems. Students learn the key concepts and models relevant to information retrieval and natural language processing on large-scale corpus such as the Web and social systems. Topics include vector space model, crawling, indexing, web search, ranking, recommender systems, embedding and language model.

CS 548. Knowledge Discovery and Data Mining

This course presents current research in Knowledge Discovery in Databases (KDD) dealing with data integration, mining, and interpretation of patterns in large collections of data. Topics include data warehousing and data preprocessing techniques; data mining techniques for classification, regression, clustering, deviation detection, and association analysis; and evaluation of patterns minded from data. Industrial and scientific applications are discussed.

CS 549. Computer Vision

This course examines current issues in the computer implementation of visual perception. Topics include image formation, edge detection, segmentation, shape-from-shading, motion, stereo, texture analysis, pattern classification and object recognition. We will discuss various representations for visual information, including sketches and intrinsic images.

CS 552. Generative Artificial Intelligence

Generative Artificial Intelligence (Gen-AI) is a class of machine learning models that generate new data (text, images, faces, voice, artwork) that is near indistinguishable from the equivalent real data typically generated by humans. These models are trained based on realistic example data sets from the real world. This course covers the underlying fundamentals of generative models. It also introduces the design and modeling of some of the modern generative models: Variational Autoencoders (VAEs), Generative Adversarial Networks (GANs), Diffusion models, ChatGPT, Large Language Models, to name a few. Several applications will be discussed, ranging from image generation for engineering or science applications to the utilization of generated data for data augmentation in AI systems. Ethical concerns related to the danger of these generative technologies concerning issues from misinformation, bias, to data ownership are reviewed.

CS 553. Machine Learning Development and Operations

This course teaches students the computational skills required in the fields of Artificial Intelligence (AI) and Data Science. As data-driven decision-making and AI applications continue to transform industries, proficiency in programming and machine learning tools is important. In this course, you will develop a strong foundation in programming languages commonly used in AI and Data Science (such as Python). This course will cover the development, debugging, deployment, and subsequent monitoring phases of models in end-to-end pipelines core to machine learning systems. You will also familiarize yourself with popular libraries, frameworks and debugging on IDEs, such as PyCharm, PyTorch, scikit-learn, and/or pandas. Possible topics may include practice code development with a copilot as well as deployment of models on a cloud computing environment The student will engage in hands-on projects to practice their programming skills to solve realworld AI and Data Science problems.

CS 554. Natural Language Processing

Natural Language Processing (NLP) is an interdisciplinary field at the intersection of artificial intelligence, linguistics, and computer science, dedicated to enabling computers to understand, interpret, and generate human language. NLP underpins advancements in human-computer interaction, information retrieval, sentiment analysis, chatbots, and a multitude of other applications. The course may cover a wide range of topics, including language modeling, sequence-to-sequence architectures, sentiment analysis, machine translation, and advanced techniques for natural language understanding and generation, providing a comprehensive foundation for NLP expertise.

CS 555. Responsible Artificial Intelligence

Artificial Intelligence (AI) algorithms have a significant impact on peoples lives. In this course, we discuss social responsibility around data privacy, bias in data and decision-making, policies as guardrails, fairness and transparency in the context of applying AI algorithms. Case studies considering societal challenges caused by AI technologies may include AI-based hiring recommendations stemming from societal biases present in training datasets, AI-empowered selfdriving cars behaving in a dangerous manner when encountering atypical road conditions, digital health applications inadvertently revealing private patient information, or large language models like chat-GPT generating incorrect or harmful responses. This course also studies AI-based algorithmic solutions to some of these challenges. These include the design of robust machine learning algorithms with constraints to ensure fairness, privacy, and safety. Strategies for how to apply these methods to design safe and fair AI are introduced. Topics may include min-max optimization with applications to training machine learning models robust to adversarial attacks, stochastic methods for preserving privacy of sensitive data, and multi-agent machine learning models for reducing algorithmic bias and polarization in recommender systems.

CS 556/DS. On-Device Deep Learning

Deep Learning, a core of modern Artificial Intelligence, is rapidly expanding to resourceconstrained devices, including smartphones, wearables, and intelligent embedded systems for improving response time, privacy, and reliability. This course focuses on bringing these powerful deep-learning applications from central data centers and large GPUs to distributed ubiquitous systems. On-Device Deep Learning is an interdisciplinary topic at the intersection of artificial intelligence and ubiquitous systems, dedicated to enabling computing on edge devices. This course includes a wide range of topics related to deep learning in resource constrained settings including pruning and sparsity, quantization, neural architecture search, knowledge distillation, on-device training and transfer learning, distributed training, gradient compression, federated learning, efficient data movement and accelerator design, dynamic network inference, and advanced compression and approximation techniques for enabling on-device deep neural network inference and training. This course provides a comprehensive foundation for cutting-edge tinyML expertise

CS 557. Software Security Design and Analysis

Software is responsible for enforcing many central security goals in computer systems. These goals include authenticating users and other external principals, authorizing their actions, and ensuring the integrity and confidentiality of their data. This course studies how to design, implement, and analyze mechanisms to enforce these goals in both web systems and programs in traditional languages. Topics include: identifying programming choices that lead to reliable or flawed security outcomes, successful and unsuccessful strategies for incorporating cryptography into software, and analysis techniques that identify security vulnerabilities. The course will cover both practical and theoretical aspects of secure software, and will include a substantial secure software design project.

CS 558. Computer Network Security

This course covers core security threats and mitigations at the network level. Topics include: denial-of-service, network capabilities, intrusion detection and prevention systems, worms, botnets, Web attacks, anonymity, honeypots, cybercrime (such as phishing), and legality and ethics. The course prepares students to think broadly and concretely about network security; it is not designed to teach students low-level tools for monitoring or maintaining system security. Assignments and projects will assess each students ability to think both conceptually and practically about network security.

CS 559. Advanced Topics in Theoretical Computer Science

This course has an instructor-dependent syllabus.

CS 561. Advanced Topics in Database Systems

This course covers modern database and information systems as well as research issues in the field. Topics and systems covered may include object-oriented, workflow, active, deductive, spatial, temporal and multimedia databases. Also discussed will be recent advances in database systems such as data mining, online analytical processing, data warehousing, declarative and visual query languages, multimedia database tools, web and unstructured data sources, and client-server and heterogeneous systems. The specific subset of topics for a given course offering is selected by the instructor. Research papers from recent journals and conferences are used. Group project required.

CS 562. Advanced Topics in Software Engineering

This course focuses on the nondesign aspects of software engineering. Topics may include requirements specification, software quality assurance, software project management and software maintenance.

CS 563. Advanced Topics in Computer Graphics

CS 564. Advanced Topics in Computer Security

This course examines one or more selected current issues in the area of computer security. Specific topics covered are dependent on the instructor. Potential topics include: modeling and analyzing security protocols, access-control, network security, and human-centered security.

CS 565. User Modeling

User modeling is a cross-disciplinary research field that attempts to construct models of human behavior within a specific computer environment. Contrary to traditional artificial intelligence research, the goal is not to imitate human behavior as such, but to make the machine able to understand the expectations, goals, knowledge, information needs, and desires of a user in terms of a specific computing environment. The computer representation of this information about a user is called a user model, and systems that construct and utilize such models are called user modeling systems. A simple example of a user model would be an e-commerce site which makes use of the users and similar users purchasing and browsing behavior in order to better understand the users preferences. In this class, the focus is on obtaining a general understanding of user modeling, and an understanding of how to apply user modeling techniques. Students will read seminal papers in the user modeling literature, as well as complete a course project where students build a system that explicitly models the user.

CS 566. Graphical Models for Reasoning Under Uncertainty

This course will introduce students to graphical models, such as Bayesian networks, Hidden Markov Models, Kalman filters, particle filters, and structural equation models. Graphical models are applicable in a wide variety of work in computer science for reasoning under uncertainty such as user modeling, speech recognition, computer vision, object tracking, and determining a robots location. This course will cover 1) using data to estimate the parameters and structure of a model using techniques such as expectation maximization, 2) understanding techniques for performing efficient inference on new observations such as junction trees and sampling, and 3) learning about evaluation techniques to determine whether a particular model is a good one.

CS 567. Empirical Methods for Human-Centered Computing

This course introduces students to techniques for performing rigorous empirical research in computer science. Since good empirical work depends on asking good research questions, this course will emphasize creating conceptual frameworks and using them to drive research. In addition to helping students understand what makes a good research question and why, some elementary statistics will be covered. Furthermore, students will use and implement computationally intensive techniques such as randomization, bootstrapping, and permutation tests. The course also covers experiments involving human subjects, and some of the statistical and non-statistical difficulties researchers often encounter while performing such work (e.g., IRB (Institutional Review Board), correlated trials, and small sample sizes). While this course is designed for students in Human Computer Interaction, Interactive Media & Game Development, and Learning Sciences and Technologies, it is appropriate for any student with programming experience who is doing empirical research.

CS 568. Artificial Intelligence for Adaptive Educational Technology

Students will learn how to enable educational technology to adapt to the user and about typical architectures used by existing intelligent tutoring systems for adapting to users. Students will see applications of decision theoretic systems, reinforcement learning, Markov models for action selection, and Artificial Intelligence (AI) planning. Students will read papers that apply AI techniques for the purpose of adapting to users. Students will complete a project that applies these techniques to build an adaptive educational system.

CS 571. Case Studies in Computer Security

This course examines security challenges and failures holistically, taking into account technical concerns, human behavior, and business decisions. Using a series of detailed case studies, students will explore the interplay among these dimensions in creating secure computing systems and infrastructure. Students will also apply lessons from the case studies to emerging secure-systems design problems. The course requires active participation in class discussions, presentations, and writing assignments. It does not involve programming, but assumes that students have substantial prior experience with security protocols, attacks, and mitigations at the implementation level. This course satisfies the behavioral component of the M.S. specialization in computer security.

CS 573. Data Visualization

This course exposes students to the field of data visualization, i.e., the graphical communication of data and information for the purposes of presentation, confirmation, and exploration. The course introduces the stages of the visualization pipeline. This includes data modeling, mapping data attributes to graphical attributes, visual display techniques, tools, paradigms, and perceptual issues. Students learn to evaluate the effectiveness of visualizations for specific data, task, and user types. Students implement visualization algorithms and undertake projects involving the use of commercial and public-domain visualization tools. Students also read papers from the current visualization literature and do classroom presentations.

CS 577. Advanced Computer and Communications Networks

This course covers advanced topics in the theory, design and performance of computer and communications networks. Topics will be selected from such areas as local area networks, metropolitan area networks, wide area networks, queueing models of networks, routing, flow control, new technologies and protocol standards. The current literature will be used to study new networks concepts and emerging technologies.

CS 578. Cryptography and Data Security

See ECE 578 course description.

CS 582. Biovisualization

This course uses interactive visualization to explore and analyze data, structures, and processes. Topics include the fundamental principles, concepts, and techniques of visualization and how visualization can be used to analyze and communicate data in domains such as biology. Students will be expected to design and implement visualizations to experiment with different visual mappings and data types, and will complete a research oriented project.

CS 583. Biological and Biomedical Database Mining

This course will investigate computational techniques for discovering patterns in and across complex biological and biomedical sources, including genomic and proteomic databases, clinical databases, digital libraries of scientific articles, and ontologies. Techniques covered will be drawn from several areas including sequence mining, statistical natural language processing and text mining, and data mining.

CS 584. Algorithms: Design and Analysis

This covers the same material as CS5084 though at a more advanced level. As background, students should have experience writing programs in a recursive, high-level language and should have the background in mathematics that could be expected from a B.S. in Computer Science.

CS 585. Big Data Management

Big Data Management deals with emerging applications in science and engineering disciplines that generate and collect data at unprecedented speed, scale, and complexity that need to be managed and analyzed efficiently. This course introduces the latest techniques and infrastructures developed for big data management including parallel and distributed database systems, map-reduce infrastructures, scalable platforms for complex data types, stream processing systems, and cloud-based computing. Query processing, optimization, access methods, storage layouts, and energy management techniques developed on these infrastructures will be covered. Students are expected to engage in hands-on projects using one or more of these technologies.

CS 586. Big Data Analytics

Big Data Analytics addresses the obstacle that innovation and discoveries are no longer hindered by the ability to collect data, but by the ability to summarize, analyze, and discover knowledge from the collected data in a scalable fashion. This course covers computational techniques and algorithms for analyzing and mining patterns in large-scale datasets. Techniques studied address data analysis issues related to data volume (scalable and distributed analysis), data velocity (high-speed data streams), data variety (complex, heterogeneous, or unstructured data), and data veracity (data uncertainty). Techniques include mining and machine learning techniques for complex data types, and scale-up and scale-out strategies that leverage big data infrastructures. Real-world applications using these techniques, for instance social media analysis and scientific data mining, are selectively discussed. Students are expected to engage in hands-on projects using one or more of these technologies.

CS 587. Cyber Security Capstone Experience

To reduce cyber security theory to practice, the capstone project has students apply security concepts to real-world problems. The capstone represents a substantial evaluation of the students cyber security experience. Students are encouraged to select projects with practical experience relevant to their career goals and personal development. In the capstone, students will propose a project idea in writing with concrete milestones, receive feedback, and pursue the proposal objectives. Since cyber security is a collaborative discipline, students are encouraged to work in teams.This course is a degree requirement for the Professional Masters in Cyber Security (PM-SEC) and may not be taken before completion of 21 credits in the program. Given its particular role, this course may not be used to satisfy degree requirements for a B.S., M.S., or Ph.D. degree in Computer Science or a minor in Computer Science. Students outside the PM-SEC program must get the instructors approval before taking this course for credit.

CS 588. Computer Science Capstone Experience

The capstone represents a substantial evaluation of the students computer science experience. Students are encouraged to select projects with practical experience relevant to their career goals and personal development. In the capstone, students will propose a project idea in writing with concrete milestones, receive feedback, and pursue the proposal objectives. Students are encouraged to work in teams. This course is a degree requirement for the Master of Computer Science (MCS) and may not be taken before completion of 21 credits in the program. Given its particular role, this course may not be used to satisfy degree requirements for a BS, MS, or PhD degree in Computer Science or a minor in Computer Science. It may not be taken by students in other degree programs.

CS 591. Fundamentals in Cyber Security for Teachers

This course is focused on fundamentals of network and computer security with an emphasis on how intruders gain access to systems, how they escalate privileges, and what steps can be taken to secure a system against such attacks. Topics include computer networking basics, operating system basics, vulnerability, and attacks (social engineering, distributed denial of service attacks, buffer overflows, race conditions, trojans, and viruses), intrusion penetration, cyber defenses, network hardening, system hardening, and security administration. This course enrolls high school teachers based on their education, teaching, and/or professional experience. They must have earned the equivalent of a four-year U.S. bachelors degree to be considered for enrollment. This course is not eligible for credit for the BS/MS programs (either via MS-CS or MS-SEC), MS-CS, MS-SEC, or PhD-CS degrees.

CS 592. Introduction to Digital Forensics for Teachers

This course covers basic concepts and skills of digital forensics. Topics include the digital forensics profession, basic investigation procedure, legal aspects of forensics, setting up the forensic lab environment, evidence data acquisition, forensic analysis of different computer systems (Linux, Mac, and Windows), and data hiding techniques; projects involving using common digital forensic tools. This course enrolls high school teachers based on their education, teaching, and/or professional experience. They must have earned the equivalent of a four-year U.S. bachelors degree to be considered for enrollment. This course is not eligible for credit for the BS/MS programs (either via MS-CS or MS-SEC), MS-CS, MS-SEC, or PhD-CS degrees.

CS 593. Cyber Security Teaching Methods

This course is focused on introduction to existing generally accepted guidelines and frameworks (such as HSCCG, CSEC, CAE Knowledge Units, NCWF) in the discipline of cyber security. Methods for teaching cyber security to transform cyber security subject matter, with pedagogical content knowledge, into student learning. Topics include culturally-relevant methods, scaffolding knowledge, differentiation, assessment, and cyber security instructional technologies (ranges, CTFs, competitions, and unplugged activities). This course enrolls high school teachers based on their education, teaching, and/or professional experience. They must have earned the equivalent of a four-year U.S. bachelors degree to be considered for enrollment. This course is not eligible for credit for the BS/MS programs (either via MS-CS or MS-SEC), MS-CS, MS-SEC, or PhD-CS degrees.

CS 594. Graduate Qualifying Project in Artificial Intelligence

This 3-credit graduate qualifying project, typically done in teams, provides a capstone experience in applying Artificial Intelligence skills to a real-world problem. It will be carried out in cooperation with an industrial sponsor, and is approved and overseen by a core or collaborative faculty member in the Artificial Intelligence Program. This offering integrates theory and practice of Artificial Intelligence, and includes the utilization of tools and techniques acquired in the Artificial Intelligence Program to a real-world problem. In addition to a written report, this project must be presented in a formal presentation to faculty of the AI program and sponsors. Professional development skills, such as communication, teamwork, leadership, and collaboration, will be practiced. This course is a degree requirement for the Master of Science in Artificial Intelligence (MS-AI) and may not be taken before completion of 21 credits in the program. Students outside the MS-AI program must get the instructors approval before.

CS 596. Advanced Digital Forensics and Incident Response for Teachers

This course focuses on providing students practical hands-on experiences on digital forensics, cyber-crime scene analysis and electronic discovery. Topics include technical methodologies and formal procedures for conducting forensic investigations; data acquisition, data recovery, file systems and storage analysis, file carving, data hiding and steganography, anti-forensics, network, and mobile forensics; projects involving using, understanding, and designing digital forensics tools. This course enrolls high school teachers based on their education, teaching, and/or professional experience. They must have earned the equivalent of a four-year U.S. bachelors degree to be considered for enrollment. This course is not eligible for credit for the BS/MS programs (either via MS-CS or MS-SEC), MS-CS, MS-SEC, or PhD-CS degrees.

CS 598. Directed Research

CS 599. Master's Thesis

CS 673. Advanced Cryptography

This course provides deeper insight into areas of cryptography which are of great practical and theoretical importance. The three areas treated are detailed analysis and the implementation of cryptoalgorithms, advanced protocols, and modern attacks against cryptographic schemes. The first part of the lecture focuses on public key algorithms, in particular ElGamal, elliptic curves and Diffie-Hellman key exchange. The underlying theory of Galois fields will be introduced. Implementation of performance security aspects of the algorithms will be looked at. The second part of the course deals with advanced protocols. New schemes for authentication, identification and zero-knowledge proof will be introduced. Some complex protocols for real-world application such as key distribution in networks and for smart cardswill be introduced and analyzed. The third part will look into state-of-the-art cryptoanalysis (i.e., ways to break cryptosystems). Brute force attacks based on special purpose machines, the baby-step giant-step and the Pohlig-Hellman algorithms will be discussed.

CS 699. Ph.D. Dissertation

DS 503. Big Data Management

Big Data Management deals with emerging applications in science and engineering disciplines that generate and collect data at unprecedented speed, scale, and complexity that need to be managed and analyzed efficiently. This course introduces the latest techniques and infrastructures developed for big data management including parallel and distributed database systems, map-reduce infrastructures, scalable platforms for complex data types, stream processing systems, and cloud-based computing. Query processing, optimization, access methods, storage layouts, and energy management techniques developed on these infrastructures will be covered. Students are expected to engage in hands-on projects using one or more of these technologies.

DS 504. Big Data Analytics

Big Data Analytics addresses the obstacle that innovation and discoveries are no longer hindered by the ability to collect data, but by the ability to summarize, analyze, and discover knowledge from the collected data in a scalable fashion. This course covers computational techniques and algorithms for analyzing and mining patterns in large-scale datasets. Techniques studied address data analysis issues related to data volume (scalable and distributed analysis), data velocity (high-speed data streams), data variety (complex, heterogeneous, or unstructured data), and data veracity (data uncertainty). Techniques include mining and machine learning techniques for complex data types, and scale-up and scale-out strategies that leverage big data infrastructures. Real-world applications using these techniques, for instance social media analysis and scientific data mining, are selectively discussed. Students are expected to engage in hands-on projects using one or more of these technologies.

DS 541. Deep Learning

This course will offer a mathematical and practical perspective on artificial neural networks for machine learning. Students will learn about the most prominent network architectures including multilayer feedforward neural networks, convolutional neural networks (CNNs), auto-encoders, recurrent neural networks (RNNs), and generative-adversarial networks (GANs). This course will also teach students optimization and regularization techniques used to train them such as back-propagation, stochastic gradient descent, dropout, pooling, and batch normalization. Connections to related machine learning techniques and algorithms, such as probabilistic graphical models, will be explored. In addition to understanding the mathematics behind deep learning, students will also engage in hands-on course projects. Students will have the opportunity to train neural networks for a wide range of applications, such as object detection, facial expression recognition, handwriting analysis, and natural language processing.

DS 547. Information Retrieval

This course introduces the theory, design, and implementation of text-based and Web-based information retrieval systems. Students learn the key concepts and models relevant to information retrieval and natural language processing on large-scale corpus such as the Web and social systems. Topics include vector space model, crawling, indexing, web search, ranking, recommender systems, embedding and language model.

DS 551. Reinforcement Learning

Reinforcement Learning is an area of machine learning concerned with how agents take actions in an environment with a goal of maximizing some notion of cumulative reward. The problem, due to its generality, is studied in many disciplines, and applied in many domains, including robotics and industrial automation, marketing, education and training, health and medicine, text, speech, dialog systems, finance, among many others. In this course, we will cover topics including: Markov decision processes, reinforcement learning algorithms, value function approximation, actor-critics, policy gradient methods, representations for reinforcement learning (including deep learning), and inverse reinforcement learning. The course project(s) will require the implementation and application of many of the algorithms discussed in class.

DS 552. Generative Artificial Intelligence

Generative Artificial Intelligence (Gen-AI) is a class of machine learning models that generate new data (text, images, faces, voice, artwork) that is near indistinguishable from the equivalent real data typically generated by humans. These models are trained based on realistic example data sets from the real world. This course covers the underlying fundamentals of generative models. It also introduces the design and modeling of some of the modern generative models: Variational Autoencoders (VAEs), Generative Adversarial Networks (GANs), Diffusion models, ChatGPT, Large Language Models, to name a few. Several applications will be discussed, ranging from image generation for engineering or science applications to the utilization of generated data for data augmentation in AI systems. Ethical concerns related to the danger of these generative technologies concerning issues from misinformation, bias, to data ownership are reviewed.

DS 553. Machine Learning Development and Operations

This course teaches students the computational skills required in the fields of Artificial Intelligence (AI) and Data Science. As data-driven decision-making and AI applications continue to transform industries, proficiency in programming and machine learning tools is important. In this course, you will develop a strong foundation in programming languages commonly used in AI and Data Science (such as Python). This course will cover the development, debugging, deployment, and subsequent monitoring phases of models in end-to-end pipelines core to machine learning systems. You will also familiarize yourself with popular libraries, frameworks and debugging on IDEs, such as PyCharm, PyTorch, scikit-learn, and/or pandas. Possible topics may include practice code development with a copilot as well as deployment of models on a cloud computing environment The student will engage in hands-on projects to practice their programming skills to solve realworld AI and Data Science problems.

DS 554. Natural Language Processing

Natural Language Processing (NLP) is an interdisciplinary field at the intersection of artificial intelligence, linguistics, and computer science, dedicated to enabling computers to understand, interpret, and generate human language. NLP underpins advancements in human-computer interaction, information retrieval, sentiment analysis, chatbots, and a multitude of other applications. The course may cover a wide range of topics, including language modeling, sequence-to-sequence architectures, sentiment analysis, machine translation, and advanced techniques for natural language understanding and generation, providing a comprehensive foundation for NLP expertise.

DS 555. Responsible Artificial Intelligence

Artificial Intelligence (AI) algorithms have a significant impact on peoples lives. In this course, we discuss social responsibility around data privacy, bias in data and decision-making, policies as guardrails, fairness and transparency in the context of applying AI algorithms. Case studies considering societal challenges caused by AI technologies may include AI-based hiring recommendations stemming from societal biases present in training datasets, AI-empowered selfdriving cars behaving in a dangerous manner when encountering atypical road conditions, digital health applications inadvertently revealing private patient information, or large language models like chat-GPT generating incorrect or harmful responses. This course also studies AI-based algorithmic solutions to some of these challenges. These include the design of robust machine learning algorithms with constraints to ensure fairness, privacy, and safety. Strategies for how to apply these methods to design safe and fair AI are introduced. Topics may include min-max optimization with applications to training machine learning models robust to adversarial attacks, stochastic methods for preserving privacy of sensitive data, and multi-agent machine learning models for reducing algorithmic bias and polarization in recommender systems.

DS 594. Graduate Qualifying Project in Artificial Intelligence

This 3-credit graduate qualifying project, typically done in teams, provides a capstone experience in applying Artificial Intelligence skills to a real-world problem. It will be carried out in cooperation with an industrial sponsor, and is approved and overseen by a core or collaborative faculty member in the Artificial Intelligence Program. This offering integrates theory and practice of Artificial Intelligence, and includes the utilization of tools and techniques acquired in the Artificial Intelligence Program to a real-world problem. In addition to a written report, this project must be presented in a formal presentation to faculty of the AI program and sponsors. Professional development skills, such as communication, teamwork, leadership, and collaboration, will be practiced. This course is a degree requirement for the Master of Science in Artificial Intelligence (MS-AI) and may not be taken before completion of 21 credits in the program. Students outside the MS-AI program must get the instructors approval before.

ECE 537. Advanced Computer and Communications Networks

This course covers advanced topics in the theory, design and performance of computer and communications networks. Topics will be selected from such areas as local area networks, metropolitan area networks, wide area networks, queueing models of networks, routing, flow control, new technologies and protocol standards. The current literature will be used to study new networks concepts and emerging technologies.

ECE 545. Digital Image Processing

This course presents fundamental concepts of digital image processing and an introduction to machine vision. Image processing topics will include visual perception, image formation, imaging geometries, image transform theory and applications, enhancement, restoration, encoding and compression. Machine vision topics will include feature extraction and representation, stereo vision, model-based recognition, motion and image flow, and pattern recognition. Students will be required to complete programming assignments in a high-level language.

ECE 556. On-Device Deep Learning

Deep Learning, a core of modern Artificial Intelligence, is rapidly expanding to resourceconstrained devices, including smartphones, wearables, and intelligent embedded systems for improving response time, privacy, and reliability. This course focuses on bringing these powerful deep-learning applications from central data centers and large GPUs to distributed ubiquitous systems. On-Device Deep Learning is an interdisciplinary topic at the intersection of artificial intelligence and ubiquitous systems, dedicated to enabling computing on edge devices. This course includes a wide range of topics related to deep learning in resource constrained settings including pruning and sparsity, quantization, neural architecture search, knowledge distillation, on-device training and transfer learning, distributed training, gradient compression, federated learning, efficient data movement and accelerator design, dynamic network inference, and advanced compression and approximation techniques for enabling on-device deep neural network inference and training. This course provides a comprehensive foundation for cutting-edge tinyML expertise

ECE 572. Advanced Systems Architecture

See ECE 572 course description on page 104.

ECE 578. Cryptography and Data Security

See ECE 578 course description.

ECE 581. Modeling and Performance Evaluation of Network and Computer Systems

Methods and concepts of computer and communication network modeling and system performance evaluation. Stochastic processes; measurement techniques; monitor tools; statistical analysis of performance experiments; simulation models; analytic modeling and queueing theory; M/M, Erlang, G/M, M/G, batch arrival, bulk service and priority systems; work load characterization; performance evaluation problems.

ECE 588. Cyber Security Capstone Experience

To reduce cyber security theory to practice, the capstone project has students apply security concepts to real-world problems. The capstone represents a substantial evaluation of the students cyber security experience. Students are encouraged to select projects with practical experience relevant to their career goals and personal development. In the capstone, students will propose a project idea in writing with concrete milestones, receive feedback, and pursue the proposal objectives. Since cyber security is a collaborative discipline, students are encouraged to work in teams.This course is a degree requirement for the Professional Masters in Cyber Security (PM-SEC) and may not be taken before completion of 21 credits in the program. Given its particular role, this course may not be used to satisfy degree requirements for a B.S., M.S., or Ph.D. degree in Computer Science or a minor in Computer Science. Students outside the PM-SEC program must get the instructors approval before taking this course for credit.

ECE 673. Advanced Cryptography

This course provides deeper insight into areas of cryptography which are of great practical and theoretical importance. The three areas treated are detailed analysis and the implementation of cryptoalgorithms, advanced protocols, and modern attacks against cryptographic schemes. The first part of the lecture focuses on public key algorithms, in particular ElGamal, elliptic curves and Diffie-Hellman key exchange. The underlying theory of Galois fields will be introduced. Implementation of performance security aspects of the algorithms will be looked at. The second part of the course deals with advanced protocols. New schemes for authentication, identification and zero-knowledge proof will be introduced. Some complex protocols for real-world application such as key distribution in networks and for smart cardswill be introduced and analyzed. The third part will look into state-of-the-art cryptoanalysis (i.e., ways to break cryptosystems). Brute force attacks based on special purpose machines, the baby-step giant-step and the Pohlig-Hellman algorithms will be discussed.

MA 510. Numerical Methods

See MA 510 course description.

RBE 526. Human-Robot Interaction

This course focuses on human-robot interaction and social robot learning, exploring the leading research, design principles and technical challenges we face in developing robots capable of operating in real-world human environments. The course will cover a range of multidisciplinary topics, including physical embodiment, mixed-initiative interaction, multi-modal interfaces, human-robot teamwork, learning algorithms, aspects of social cognition, and long-term interaction. These topics will be pursued through independent reading, class discussion, and a final project.

RBE 549. Computer Vision

This course examines current issues in the computer implementation of visual perception. Topics include image formation, edge detection, segmentation, shape-from-shading, motion, stereo, texture analysis, pattern classification and object recognition. We will discuss various representations for visual information, including sketches and intrinsic images.

SEME 565. User Modeling

User modeling is a cross-disciplinary research field that attempts to construct models of human behavior within a specific computer environment. Contrary to traditional artificial intelligence research, the goal is not to imitate human behavior as such, but to make the machine able to understand the expectations, goals, knowledge, information needs, and desires of a user in terms of a specific computing environment. The computer representation of this information about a user is called a user model, and systems that construct and utilize such models are called user modeling systems. A simple example of a user model would be an e-commerce site which makes use of the users and similar users purchasing and browsing behavior in order to better understand the users preferences. In this class, the focus is on obtaining a general understanding of user modeling, and an understanding of how to apply user modeling techniques. Students will read seminal papers in the user modeling literature, as well as complete a course project where students build a system that explicitly models the user.

SEME 566. Graphical Models for Reasoning Under Uncertainty

This course will introduce students to graphical models, such as Bayesian networks, Hidden Markov Models, Kalman filters, particle filters, and structural equation models. Graphical models are applicable in a wide variety of work in computer science for reasoning under uncertainty such as user modeling, speech recognition, computer vision, object tracking, and determining a robots location. This course will cover 1) using data to estimate the parameters and structure of a model using techniques such as expectation maximization, 2) understanding techniques for performing efficient inference on new observations such as junction trees and sampling, and 3) learning about evaluation techniques to determine whether a particular model is a good one.

SEME 567. Empirical Methods for Human-Centered Computing

This course introduces students to techniques for performing rigorous empirical research in computer science. Since good empirical work depends on asking good research questions, this course will emphasize creating conceptual frameworks and using them to drive research. In addition to helping students understand what makes a good research question and why, some elementary statistics will be covered. Furthermore, students will use and implement computationally intensive techniques such as randomization, bootstrapping, and permutation tests. The course also covers experiments involving human subjects, and some of the statistical and non-statistical difficulties researchers often encounter while performing such work (e.g., IRB (Institutional Review Board), correlated trials, and small sample sizes). While this course is designed for students in Human Computer Interaction, Interactive Media & Game Development, and Learning Sciences and Technologies, it is appropriate for any student with programming experience who is doing empirical research.

SEME 568. Artificial Intelligence for Adaptive Educational Technology

Students will learn how to enable educational technology to adapt to the user and about typical architectures used by existing intelligent tutoring systems for adapting to users. Students will see applications of decision theoretic systems, reinforcement learning, Markov models for action selection, and Artificial Intelligence (AI) planning. Students will read papers that apply AI techniques for the purpose of adapting to users. Students will complete a project that applies these techniques to build an adaptive educational system.