Department of Computer Science and Engineering

Frank M. Freimann Professor of Computer Science and Department Chair:
Jane Cleland-Huang

Professor and Associate Chair:
Michael Niemier

Dennis O. Doughty Collegiate Professor of Data Security and Privacy and Director of Graduate Studies:
Taeho Jung

Dunn Family Teaching Professor of Computer Science and Engineering and Director of Undergraduate Studies:
Ramzi K. Bualuan

Associate Teaching Professor and Director of Inclusive Excellence and Engagement:
Shreya Kumar

Assistant Teaching Professor and Director of the Bachelor of Arts in Computer Science Program:
William Theisen

Professor and Vice President and Associate Provost  for Teaching and Learning:
Ronald Metoyer

Frank M. Freimann Professor of Computer Science and Engineering; Director, Data, AI, and Computing Initiative:
Nitesh Chawla

Frank M. Freimann Collegiate Professor of Computer Science and Engineering Associate Professor, Computer Science and Engineering:
Xiangliang (Lynn) Zhang

Clare Boothe Luce Assistant Professor of Computer Science and Engineering:
Karla Badillo-Urquiola

Professor of the Practice and Director, Center for Civic Innovation:
Jay B. Brockman

Snyder Family Mission Collegiate Professor of Computer Science:
Erin Chambers

Leo E. and Patti Ruth Linback Professor of Engineering, Computer Science and Engineering:
X. Sharon Hu

Ted H. McCourtney Professor of Computer Science and Engineering:
Peter M. Kogge

Dennis O. Doughty Collegiate Professor of Engineering:
Walter Scheirer

Galassi Family Collegiate Professor in Computer Science and Engineering:
Yanfang (Fanny) Ye

Professors:
Danny Z. Chen; Collin McMillan; Tijana Milenkovic; Yiyu Shi; Aaron Striegel; Douglas Thain; Chaoli Wang; Tim Weninger

Associate Professors:
David Chiang; Adam Czajka; Meng Jiang; Siddharth Joshi

Assistant Professors:
Tingyu Cheng; Diego Gómez-Zará; Fanxin Kong; Jia-Jun (Toby) Li; Neil Lutz; Joanna da Silva Santos

Assistant Professor of the Practice:
Dan Rehberg

Teaching Professor:
Peter Bui

Associate Teaching Professors:
Aaron Dingler; Paul “Will” McBurney; Matthew Morrison

Professor Emeritus:
Kevin W. Bowyer
Patrick J. Flynn

Research Professor Emeritus:
Gregory R. Madey


Program of Studies

The Department of Computer Science and Engineering offers programs of study that lead to the degrees of bachelor of science in computer science and bachelor of science in computer engineering. The program in computer engineering is accredited by the Engineering Accreditation Commission of ABET, abet.org. The program in computer science is accredited by the Computing Accreditation Commission of ABET, abet.org. The department also offers programs that lead to a master of science in computer science and engineering, and a Ph.D.

Program Goals

The goals of the programs in computer science and computer engineering are

  1. to prepare all students for careers in the public or private sector;
  2. to prepare outstanding students for graduate study;
  3. to develop lifelong learning skills in all students;
  4. to provide comprehensive education in computer science, including theoretical foundations, software and hardware systems, and applications; and
  5. to ensure significant design experience including working in teams. 

Computer Science Program Educational Objectives

Graduates of the Computer Science program will achieve the following objectives:

  1. They will be technically qualified for practice in the profession; they will demonstrate the ability to specify, design, and implement software and/ or hardware-software systems to meet customer requirements or to advance the state of the art; the ability to employ modern computer languages, environments, and platforms in such tasks; and the ability to apply knowledge of science and mathematics to such tasks;
  2. They will be effective technical communicators, orally and in writing, and effective team members capable of working effectively in groups on computing problems;
  3. They will be ethical professionals, capable of evaluating personal and professional choices in terms of codes of ethics and ethical theories and understanding the impact of their decisions on themselves, their professions, and on society;
  4. They will be successful as graduates, either through professional employment in the private or public sector, or as students in graduate study. They will also be able to employ life-long learning tools and techniques to maintain their currency in the field.

Computer Engineering Program Educational Objectives

Graduates of the Computer Engineering program will achieve the following objectives:

  1. They will be technically qualified for practice in the profession; they will demonstrate the ability to specify, design, implement and verify software and/or hardware-software systems to meet customer requirements or to advance the state of the art; the ability to employ modern computer languages, environments, and platforms in such tasks; the ability to follow applicable engineering standards in the execution of such tasks; and the ability to apply knowledge of science and mathematics to such tasks;
  2. They will be effective communicators, orally and in writing, and collaborative team members capable of working in groups across software/ hardware/data boundaries on complex problems;
  3. They will be ethical individuals, capable of evaluating personal and professional choices in terms of codes of ethics and ethical theories and understanding the impact of their decisions on themselves, their professions, and on society;
  4. They will be successful as computer engineering graduates, either through professional employment in the private or public sector, or as students in graduate study. They will also be able to employ life-long learning tools and techniques to maintain their currency in the field.

Programs

Programs in the Department of Computer Science and Engineering follow the four-year curricula listed below. These include required and elective courses in the basic, pure, and applied sciences, as well as the humanities, Computer Science engineering, computer science, and computer engineering. Emphasis is on developing a mastery of the key principles underlying the organization, operation, and application of modern computers to real problems, with a solid grounding in math and science to permit a quantitative analysis of such solutions. In addition, central to both programs is the development of the ability to function, both independently and in multidisciplinary teams, and to be prepared for continued change in future computing technology and what effects it will have on all aspects of society. Opportunities for specialization in several professional computer disciplines are available. Students are individually assisted and advised in their choices of elective courses.

The Department of Computer Science and Engineering offers concentrations in five areas: Bioinformatics and Computational Biology, Media Computing, Mobile Computing, Cloud Computing, and Cyber Security. Each concentration is designed to offer a structured set of elective courses around an organized theme. Upon a student’s successful completion of a CS/CPEG program with a chosen concentration, the concentration will appear on the student’s transcript.

Further information about computer science and computer engineering programs may be found on the web at cse.nd.edu. Information about the Bachelor of Arts in computer science may be found at altech.nd.edu/programs/ba-in-computer-science.

The program in Computer Engineering is housed in the Department of Computer Science, but is jointly administered by both the faculty of the Department of Computer Science and Engineering and the Department of Electrical Engineering. The joint directors of the Computer Engineering program are Michael Niemier and Robert Stevenson. 

The Department of Computer Science and Engineering offers their courses under the subject code of: Computer Science and Engineering (CSE).  Courses associated with their academic programs may be found below. The scheduled classes for a given semester may be found at classearch.nd.edu.

Computer Science and Engineering (CSE)

CSE 10001  Principles of Computing  (3 Credit Hours)  
As computing and technology become increasingly intertwined with everyday life, it is essential that everyone develops a basic understanding of how computing works. In this course, students will explore the foundations of computing: hardware, software, and communications and examine the underlying concepts and ideas that transform digital information into the innovations we utilize and depend on. To gain a deeper understanding of computing at a technical level, students will develop basic programming skills via regular coding assignments and software projects. Moreover, to relate computing to different disciplines, the social, economic, and political impact of computing will be discussed.
Satisfies the following University Core Requirements: WKST-Core Science & Technology  
CSE 10024  History of Artificial Intelligence  (3 Credit Hours)  
How can we discuss the present and future of Artificial Intelligence if we don't understand its past and how we arrived at our current situation? As the pervasiveness of Artificial Intelligence (AI) in our lives and society reaches new levels, new and old questions arise, demonstrating the urgency in equipping present and future generations with tools to understand the evolution of AI better. For over 70 years, AI has provided us with an enthusiastic sequence of events beyond the continuous cycles of hype and disillusion. Understanding how these events unfolded is crucial to understanding and debating AI today and foreseeing its future applications and challenges. The "History of Artificial Intelligence" course has three main learning goals: 1) identify critical events that influenced the rise of AI and align them with the history of related scientific disciplines; 2) describe the various phases of AI's evolution and context and discuss their influence in present discussions; and, 3) reflect on AI's ethical/societal implications and critique current/possible applications.
CSE 10101  Elements of Computing I  (3 Credit Hours)  
An introduction to the technical and social dimensions of computing. This course assumes no prior programming experience and emphasizes computational thinking, problem-solving, object-oriented programming, and programming literacy using Python. Topics covered include basic syntax, data types, conditional execution, control flow structures, file I/O, and basic data manipulation. This includes basic programming constructs such as data, variables, functions, conditionals, loops, lists, files, sets, and dictionaries. Also addresses the social and historical dimensions of computing, stakeholder analysis, design requirements, and research in technology domains.

Enrollment limited to students in the Computer Applications department.

CSE 10102  Elements of Computing II  (3 Credit Hours)  
Intermediate level programming in Python, building on concepts covered in Elements of Computing I. Object-oriented programming and Python development environments. Topics covered include data structures; relational database systems; and data manipulation, analysis, and communication in a Python programming environment.
Prerequisites: CSE 10101 or CSE 30010  
CSE 10124  Introduction to Using Generative AI  (3 Credit Hours)  
CSE 10124 is a technical elective course in the Computer Science and Engineering program at the University of Notre Dame. Over the course of the semester, students will build and train, from scratch, a large-language model (LLM) similar to GPT2. Along the way students will learn the fundamentals of generative ai, including topics such as: the transformer architecture, pre-training dynamics, SFT and RLHF, RAG, and agentic harnesses and workflows. Students will build examples of all topics from scratch. Experience in programming (python particularly) is not required but highly recommended.
CSE 10150  Responsible and Ethical AI  (3 Credit Hours)  
This course provides a comprehensive exploration of the intersection between artificial intelligence and ethical responsibility, equipping students with the knowledge and critical thinking skills necessary to navigate the challenges of AI deployment in society. Beginning with foundational concepts, students will gain insight into machine learning, neural networks, and data-driven decision-making, setting the stage for discussions on the ethical concerns that arise from these technologies, including bias, privacy risks, and transparency issues. Through real-world case studies in domains like healthcare, finance, social media, and governance, students will evaluate both the promises and perils of AI, applying ethical frameworks such as deontology, utilitarianism, and fairness guidelines to propose responsible solutions. The course further examines pressing topics such as data privacy, AI accountability, regulation, and governance, providing a global perspective on AI policy efforts and industry standards. As AI continues to shape the workforce, the environment, and public trust in media, students will critically engage with its societal impact, debating automation, misinformation, and the digital divide. By the end of the course, students will synthesize their knowledge through discussions, project presentations, and reflections on future trends, ensuring they emerge as informed and ethical contributors to the evolving AI landscape.

Enrollment is limited to students with a program in NEON - Natl Educ Opp Netwrk.

Enrollment limited to students in the Pre-college college.

CSE 14101  Elements of Computing I  (2-4 Credit Hours)  
Introduction to programming using the Python language. This course assumes no prior programming experience and emphasizes computational thinking, problem-solving, object-oriented programming, and programming literacy. Topics covered include basic syntax, data types, conditional execution, control flow structures, file I/O, and basic data manipulation. This includes basic programming constructs such as data, variables, functions, conditionals, loops, lists, files, sets, and dictionaries. LB - Leuven, Belgium This course is an introduction to Python programming with a focus on the concepts of programming specifically applicable to the processing and analysis of spatial data. A student at the end should be able to work out a solution strategy to analyze spatial data based on a general scientific problem, write out program codes that allow for processing and analyzing spatial data, and develop simple programming applications in existing GIS software.
CSE 14102  Elements of Computing II  (3 Credit Hours)  
Intermediate level programming in Python, building on concepts covered in Elements of Computing I. Object-oriented programming and Python development environments. Topics covered include data structures; relational database systems; and data manipulation, analysis, and communication in a Python programming environment.
CSE 20024  History of Artificial Intelligence  (3 Credit Hours)  
How can we discuss the present and future of Artificial Intelligence if we don't understand its past and how we arrived at our current situation? As the pervasiveness of Artificial Intelligence (AI) in our lives and society reaches new levels, new and old questions arise, demonstrating the urgency in equipping present and future generations with tools to understand the evolution of AI better. For over 70 years, AI has provided us with an enthusiastic sequence of events beyond the continuous cycles of hype and disillusion. Understanding how these events unfolded is crucial to understanding and debating AI today and foreseeing its future applications and challenges. The "History of Artificial Intelligence" course has three main learning goals: 1) identify critical events that influenced the rise of AI and align them with the history of related scientific disciplines; 2) describe the various phases of AI's evolution and context and discuss their influence in present discussions; and, 3) reflect on AI's ethical/societal implications and critique current/possible applications.
CSE 20110  Discrete Mathematics  (3 Credit Hours)  
Introduction to mathematical techniques fundamental to computer engineering and computer science. Topics: mathematical logic, induction, set theory, relations, functions, recursion, recurrence relations, introduction to asymptotic analysis, algebraic structures, graphs, and machine computation.
Prerequisites: MATH 10560 or MATH 10092  
CSE 20133  Introduction to Computing for EE Majors  (3 Credit Hours)  
This course introduces Electrical Engineering majors to computational thinking, and develops their ability to solve engineering problems in software. Students will learn structured programming, algorithm analysis and development, C syntax and semantics, logical and syntactical debugging, and software engineering fundamentals. Students will engage in practical, hands-on programming exercises both inside and outside of class

Enrollment is limited to students with a program in Electrical Engineering.

CSE 20147  Basic Data Science in Python & R  (3 Credit Hours)  
This course offers students a comprehensive overview of the foundational concepts, tools, and techniques that define the field of data science. Data science can be broadly divided into two distinct (though overlapping) areas of data engineering and data analytics; this course focuses on the analytics. Designed for beginners, this course bridges the gap between theory and practical application, enabling participants to explore how data drives decision-making across various disciplines. It is open to all majors outside of computer science and engineering, and assumes no knowledge of statistics or programming languages. Students will have the opportunity to work in either Python or R.
CSE 20176  Hacking  (3 Credit Hours)  
"Hacking" is one of the most pressing topics of technological and societal interest. Yet, it is one of the most misunderstood and mischaracterized practices in the public sphere, given its ethical and technical complexities. In this course we will combine anthropological and computer science methods to explore the digital tools, practices, and sociocultural histories of hacking with a focus on their context of occurrence from the late 1960s to the present. Our goal is to help students think anthropologically about computing as well as technically about the digital mediations that we depend on in our lives.
Satisfies the following University Core Requirements: WKIN - Core Integration  
CSE 20221  Logic Design and Sequential Circuits  (3 Credit Hours)  
Boolean algebra and switching circuits, Karnaugh maps, design of combinational and of sequential logic networks, and sequential machines.
Prerequisites: MATH 10560 or MATH 10092  
CSE 20222  Logic and Processor Design  (4 Credit Hours)  
This course is a comprehensive introduction to digital system design, intended primarily for Computer Engineering majors that spans material from basic Boolean logic through the design and implementation of a complete RISC microprocessor. Students will use the SystemVerilog hardware description language to develop models for simulation and synthesis using field-programmable gate array (FPGA) boards. Topics include an introduction to CMOS switching circuits, combinational and sequential logic, memory, finite state machines, high-level state machines, introduction to assembly language and machine code, processor datapath and controller design, and memory-mapped I/O.
Corequisites: CSE 21222  
CSE 20232  C/C++ Programming  (3 Credit Hours)  
This course introduces students to computational thinking, and develops their ability to solve engineering problems in software. Students will learn structured programming, algorithm analysis and development, C syntax and semantics, logical and syntactical debugging, and software engineering fundamentals. Students will engage in practical, hands-on programming exercises both inside and outside of class.
Prerequisites: (EG 10111 or EG 10112) and (MATH 10550)  
CSE 20289  Systems Programming  (3 Credit Hours)  
Systems Programming is a core Computer Science course that explores the fundamentals of computing systems. This course introduces students to the Unix programming environment where they will explore numerical representation, memory management, system calls, data structures, networking, and concurrency. Examining these topics will enable students to become familiar and comfortable with the lower level aspects of computing, while providing the foundation for further study in subsequent systems courses such as computer architecture and operating systems.
Prerequisites: CSE 20311  

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 20290  Career Choices in Computer Science and Engineering  (1 Credit Hour)  
A seminar series featuring selected speakers who are employed in fields related to Computer Science and Engineering or are career development professionals. The presentations and open symposium format emphasize career opportunities for Computer Science and Computer Engineering graduates. Course assignments are focused on personal career development (resume, cover letter, interviewing, networking).
CSE 20311  Fundamentals of Computing  (4 Credit Hours)  
This is the first part of a two-course computer programming sequence, intended primarily for computer science and computer engineering majors. It introduces fundamental concepts and principles of computer science, from formulating a problem and analyzing it conceptually, to designing, implementing, and testing a program on a computer. Using data and procedural abstractions as basic design principles for programs, students learn to define basic data structures, such as lists and trees, and to apply various algorithms for operating on them. The course also introduces object-oriented methods.
Prerequisites: MATH 10560 or MATH 10092  
Corequisites: CSE 21311  

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 20312  Data Structures  (3.5 Credit Hours)  
This is the second part of a two-course introduction-to-computing sequence intended for Computer Science and Computer Engineering majors. This course deepens and broadens student exposure to imperative and object-oriented programming and data structures. Topics covered include modularity, specification, data abstraction, classes and objects, genericity, inheritance. This course will focus these topics on design and use of elementary data structures such as lists, stacks, queues, and trees, as well as advanced techniques such as divide-and-conquer, sorting, searching and graph algorithms. More advanced data structures such as priority queues and search trees will also be covered.
Prerequisites: CSE 20311  
Corequisites: CSE 21312  
CSE 20321  Computer Organization  (3 Credit Hours)  
By the end of this course, students will have a foundational understanding of the design of a digital computer. The course begins by exploring how computer systems represent and process information via basic Boolean operations made out of logic gates, continuing to a simple datapath design that implements a RISC instruction set. From there, students will learn key techniques used in modern computing systems that sit at the intersection of hardware and software, including caches, virtual memory, and system calls. Students will approach each of these topics from a software practitioner's perspective, focusing on what is necessary to effectively use, program, and provision computer systems. Specific Learning Objectives By the end of this course students will be able to: 1. Formulate logic expressions using basic Boolean logic operations (e.g., AND, OR, NOT) and implement these expressions with logic gates. 2. Understand the behavior of and use for combinational logic circuits such as decoders, multiplexors, and adders. 3. Understand the behavior of and use for sequential logic circuits such as latches, flip flops, and registers. 4. Explain the organization of a simple RISC processor (namely, the datapath) and write simple assembly language programs for that processor. 5. Explain the need for, organization of, and data movement within a memory hierarchy including the register file, a first-level direct-mapped data cache, and a main memory. 6. Explain the purpose of virtual memory and the behavior of a modern (basic) virtual memory system. 7. Construct programs that use low-level functions or system calls to allocate memory, process input and output, manage processes and threads, and manipulate files and directories.
Prerequisites: CSE 20312  
CSE 20510  Electrical Circuits for CPEG Majors  (3 Credit Hours)  
An introduction to the modeling and analysis of electric circuits - this course covers basic linear circuit analysis principles that include KCL, KVL, nodal and mesh analysis methods, network theorems, operation amplifiers as linear circuit elements, and transient analysis of first-order RC/RL circuits.
CSE 20589  Software Systems  (3 Credit Hours)  
This course introduces students to fundamental software development skills and concepts such as version control, scripting, testing, packaging, data processing, and networking. Students will practice applying these techniques by building a full stack application, where they will also explore programming paradigms such as functional programming, object-oriented programming, declarative programming, and event-based programming. After this course, students will be prepared to develop non-trivial software systems using modern software development practices. Learning Outcomes Upon successful completion of this course, students will be able to: 1. Utilize commands to navigate filesystems, manipulate files, manage processes, and explore system resources. 2. Compose scripts to process and manipulate data, to automate tasks, and to communicate across the Internet. 3. Verify the correctness of programs via unit and functional testing. 4. Install and take advantage of third party libraries in addition to creating custom software packages. 5. Design a software system using software architectural patterns. 6. Build a full stack application (ie. backend, database, frontend) that employs multiple programming paradigms. 7. Deploy applications to a cloud service for public access.
Prerequisites: CSE 20311  
CSE 20639  3D Game Environments in Unity  (3 Credit Hours)  
This course provides an introduction to Unity 3D, a leading platform for developing games and interactive environments. Designed for students with no prior programming experience, it covers the basics of C# programming, designing and importing 3D assets, and using Unity’s Developer Environment to build projects. By the end of the eight weeks, you’ll have created a fully playable 3D environment and gained practical skills to bring your ideas to life in Unity.
CSE 21221  Logic Design Laboratory  (0 Credit Hours)  
Lab for Logic Design.
Corequisites: CSE 20221  
CSE 21222  Logic and Processor Design Lab  (0 Credit Hours)  
Lab section for its co-req CSE 20222
Corequisites: CSE 20222  
CSE 21311  Fundamentals of Computing Lab  (0 Credit Hours)  
Lab for Fundamentals of Computing.
Corequisites: CSE 20311  
CSE 21312  Data Structures Lab  (0 Credit Hours)  
Lab for CSE 20312
Corequisites: CSE 20312  
CSE 24110  Discrete Math  (3,4 Credit Hours)  
This course presents basic concepts in discrete mathematics needed for the study of computer science: logic and proofs, induction, set theory, functions, counting techniques, discrete probability, recursion, basic number theory and cryptography, relations, trees and graph theory. The approach of this course is specifically computer science application oriented. This course introduces the main elements of formal reasoning and its applications to the theory of computation. Starting from the definition of logic statements and elementary structures in discrete mathematics, such as numbers, sets, and graphs, the course discusses the formalization of real-life problems in mathematical and computer science terms. Mathematical tools will be introduced to infer the validity of complex statements starting from elementary ones and different techniques for deriving formal proofs of theorems will be analyzed. Examples of algorithmic solutions to real-life problems exploiting their formalization will also be presented and discussed, both in terms of correctness and efficiency.
CSE 24221  Logic Design  (3,4 Credit Hours)  
This is a foundational course in logic design that aims to provide an understanding of the fundamental concepts, circuits in digital design and expose students to the mainstream approaches and technologies used in digital design. Digital logic is the representation of signals and sequences of a digital circuit through numbers. It is the basis for digital computing and provides a fundamental understanding of how circuits and hardware communicate within a computer. The course introduces the core logical operations and demonstrates elementary methods to design logic circuits to achieve the desired function. This course also introduces the fundamentals of combinational and sequential circuits, with their high-level implementations as demonstrations. It allows students to gain hands-on experience by building computer hardware through algorithms and simple inputs. Students can learn how simple inputs of ones and zeros can be used to store information on computers, including documents, images, sounds, and videos. At the end of the course, students should be able to demonstrate an in-depth knowledge of the fundamental concepts and issues and the engineering principles involved in digital logic design and design a series of combinational and sequential circuits. Besides, students would demonstrate through hands-on experimentation knowledge of the digital design process using HDLs. IR The module reviews the theory and practice of designing digital systems. Boolean logic and binary number systems are reviewed. Design of combination circuits is covered including truth tables and a range of basic circuits (decoders, encoders, multiplexers, adders, subtracters, multipliers). Use of Karnaugh maps for logic minimisation is explained. Design of sequential circuits is covered including basic elements (clocks, latches and flip-flops) and basic circuits (counts, shift registers). Specification and design of Finite State Machines is explained. Memory systems are described. Design issues including race conditions, hazards and glitches are considered. Trinity College, Dublin (IT): On successful completion of this module, students should be able to: 1. Discriminate between combinatorial and sequential circuits. 2. Design state machines to control complex systems. 3. Understand digital design flows for systems design and evaluate the trade-offs involved in different approaches. 4. Write synthesisable Verilog. 5. Write Verilog testbenches to test Verilog modules. 6. Write test cases and high-level test plans. 7. Target a Verilog design to an FPGA board. 8. Analyse and debug Verilog modules.
CSE 24232  C/C++ Programming  (3 Credit Hours)  
C/C++ is a professional foundation course in computer science and technology. C is a general-purpose programming language oriented to problems. It has the characteristics of simple language, rich types, complete structure, strong expressiveness, direct operation of memory units, and application for modular structure. The C language has both the advantages of a high-level language and many features of a low-level language. While, C++ is an object-oriented development method that extends from the C language. It absorbs the useful concepts and effective methods in the field of software engineering. It encapsulates data and operations on data, and integrates abstraction, encapsulation, inheritance and polymorphism to help people develop programs with high modularity, high level of data abstraction, 2 information concealed, reusable, easy to modify, and easy to expand. The course consists of two parts, the first part is the general design principle in C++, which is part of C; the second part is the object-oriented part. Through this course, students can build a solid foundation for the courses of data structure, and algorithm design and analysis.
CSE 24289  Systems Programming  (3 Credit Hours)  
This course focuses on introducing students to the core concepts of the Unix operating system and how to programme this system. Today, Unix and Unix-like operating systems are ubiquitous; they are widely used in servers, embedded devices and have a growing desktop and mobile market (Linux, Mac OS X, Android etc.). This module will teach students how to develop applications for such systems, assuming no other software layer but OS. Students will improve their existing C programming language skills and will learn some key POSIX APIs to support designing and writing programs in a portable, maintainable fashion. They will learn how to write mutlithreaded and multi-process applications as well as some basics of Unix networking. All this will be done through the Unix command line, and students will learn basic tools and how to write shell scripts to automate common tasks.
CSE 24311  Data Structures  (3 Credit Hours)  
The unit studies the specification, implementations and time and space performance of a range of commonly used ADTs and corresponding algorithms in an object-oriented setting. The aim is to provide students with the background needed both to implement their own ADTs where necessary, and to select and use appropriate ADTs from object-oriented libraries where suitable. Outcomes: Students develop an understanding of the fundamentals of data structure selection, analysis, design, implementation and application, and in-depth technical knowledge of key abstract data types; the ability to undertake problem identification, formulation and solution using ADT components for storing and retrieving data; and the ability to select and use appropriate ADTs for object-oriented libraries where suitable. Also, students gain in-depth technical competence in algorithm design, implementation and analysis and learn techniques for problem identification, formulation and solution.
CSE 24312  Data Structures  (3-4 Credit Hours)  
This is the second part of a two-course introduction-to-computing sequence intended for Computer Science and Computer Engineering majors. This course deepens and broadens student exposure to imperative and object-oriented programming and data structures. Topics covered include modularity, specification, data abstraction, classes and objects, genericity, inheritance. This course will focus these topics on design and use of elementary data structures such as lists, stacks, queues, and trees, as well as advanced techniques such as divide-and-conquer, sorting, searching and graph algorithms. More advanced data structures such as priority queues and search trees will also be covered.
CSE 28901  Undergraduate Research  (1-3 Credit Hours)  
Undergraduate research project at for freshmen or sophomores under the supervision of a CSE faculty member.
Course may be repeated.  
CSE 30124  Intro Artificial Intelligence  (3 Credit Hours)  
Foundational concepts and techniques in AI and machine learning. Historical overview of the field. Search and logic programming. Canonical machine learning tasks and algorithms: supervised and unsupervised learning (classification and regression). Essential concepts from probability and statistics relevant to machine learning. Performance characterization. Modern software environments for machine learning and AI programming. Applications in unsupervised and supervised learning from image and textual data.
CSE 30125  Computational Methods  (3 Credit Hours)  
Fundamentals of numerical methods and development of programming techniques to solve problems in civil and environmental engineering. This course requires significant computer use via a scientific program language such as Matlab and/or FORTRAN. Standard topics in numerical linear algebra, interpolation, discrete differentiation, discrete integration, and approximate solutions to ordinary differential equations are treated in a context-based approach. Applications are drawn from hydrology, environmental modeling, geotechnical engineering, modeling of material behavior, and structural analysis. Fall.
CSE 30151  Theory of Computing  (3 Credit Hours)  
Introduction to formal languages and automata, computability theory, and complexity theory with the goal of developing understanding of the power and limits of different computational models. Topics covered include: regular languages and finite automata; context-free grammars and pushdown automata; Turing machines; undecidable languages; the classes P and NP; NP completeness.
Prerequisites: CSE 20312  

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 30246  Database Concepts  (3 Credit Hours)  
Effective techniques in managing, retrieving and updating information from a database system. Focusing primarily on relational databases, the course presents the entity-relationship model, query processing, and normalization. Topics such as relational calculus and algebra, integrity constraints, distributed databases, and data security will also be discussed. A final project will consist of the design and the implementation of a database system with a Web interface.
Prerequisites: CSE 20312  

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 30264  Computer Networks  (3 Credit Hours)  
This course introduces students to fundamental topics on the principles, design, implementation, and performance of computer networks. Topics include: Internet architecture, protocols, socket programming, congestion control, switching and routing, local area networks, mobile and ad-hoc networks, network security, the end-to-end arguments and resource allocation.
CSE 30321  Computer Architecture  (3 Credit Hours)  
Introduction to basic architectural concepts that are present in current scalar and superscalar machines, together with an introduction to assembly language programming and performance evaluation. Microarchitecture simulation software is used to deepen the student's understanding of processor design.
Prerequisites: CSE 20221  

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 30332  Programming Paradigms  (3 Credit Hours)  
Programming language overview: imperative and functional languages; logic programming. Scripting languages and tools. Development environments. Multilanguage interfacing. Case studies. Comprehensive programming practice using several languages.
Prerequisites: CSE 30331 or CSE 34331 or CSE 20312  

Enrollment is limited to students with a program in Computer Engineering, Computer Science or Computer Science & Engineering.

CSE 30341  Operating System Principles  (3 Credit Hours)  
Introduction to all aspects of modern operating systems. Topics include process structure and synchronization, interprocess communication, memory management, file systems, security, I/O, and distributed files systems.
Prerequisites: (CSE 20312 (may be taken concurrently) or CSE 34331 (may be taken concurrently)) or CSE 30331  

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 30342  Digital Integrated Circuits  (3 Credit Hours)  
This course, which builds upon the CSE 20221 Logic Design course, is where students learn the principles, components, and methodologies for design of large-scale digital circuits, and their integration into modern computing systems
CSE 30353  Signals Processing Fundamentals  (3 Credit Hours)  
This course considers the behavior, theory, and applications of linear systems. Representative topics to be considered may include: time/transform domain representations, convolution operations, Fourier series signal expansions, Fourier and Laplace transform analysis of linear systems, discrete time Fourier systems, fast Fourier transforms, digital information processing (analog/digital, digital/analog conversion), etc.
Prerequisites: CSE 30342  
CSE 30532  Object-Oriented Software Engineering  (3 Credit Hours)  
Object-Oriented Software Engineering is an introductory course for the Software Engineering track in the Computer Science department at the University of Notre Dame. In this course, we will practice using a variety of programming tools and techniques to build student understanding of multiple phases of the software development lifecycle, including requirements, design, implementation, testing, and maintenance. Additionally, we will look at different programming frameworks and paradigms related to version control, polymorphism, front-end development, back-end development, and data persistence. This course focuses primarily on the usage of object-oriented programming paradigms and patterns, but we will also explore design patterns, functional programming, and event-driven programming. Learning Objectives At the conclusion of this course, students will: ● Have developed proficiency in an object-oriented programming language ● Be able to use build tools in their development workflow ● Have strong familiarity with git version control, as well as best practices for using git when working with groups of students ● Be able to build automated testing suites for their software project that can find, diagnose, and prevent bugs ● Understand software design principles of modularity, functional independence, abstraction, and information hiding, and be able to qualitatively assess designs with respect to be principles ● Be familiar with a number of object-oriented design patterns, including Dependency Injection, Singleton, Builder, Factor, Abstract Factory, Adaptor, Bridge, Decorator, Observer, Strategy, Command, and Visitor patterns. ● Understand and be able to use high-order functions such as filter, sort, map, etc. and utilize functional programming basics ● Use SQLite relational databases for application persistence ● Build local GUI applications in at least one GUI framework ● Build RESTful web applications in at least one web framework
Prerequisites: CSE 20312  
CSE 30600  CSE Service Projects  (1-3 Credit Hours)  
Engineering projects in community service.
Course may be repeated.  
CSE 30701  Native AI Software and Systems Engineering for UAVs  (3 Credit Hours)  
This course prepares senior-level students to engineer software in an AI-assisted development environment (e.g., Claude), with an emphasis on cyber-physical systems (CPS) in the UAV domain. Students learn disciplined workflows for prompting, architecture design, testing and validation, and systematic review within AI-supported engineering processes. Rather than building standalone simulators, students develop and evaluate software within an existing UAV simulation environment that integrates sensing, control, and mission logic. In a structured team project, students (1) engineer UAV software components, (2) design and integrate an agentic decision-making layer for autonomous behavior, and (3) build an operator-facing application that supports safe supervision and evaluation of autonomous operations. Throughout the course, students practice accountable AI-assisted development and defend quality claims with empirical evidence and appropriate software engineering metrics. PREREQUISITES: (Programming Paradigms OR Object Oriented Software Engineering) AND Introduction to AI
CSE 30702  The AI Compute Stack: Programs, Processors, Power Grids, and Policy  (3 Credit Hours)  
This course examines large-scale AI infrastructure through four interlocking lenses: - Programs — How modern AI workloads—especially large language models—actually compute. Through detailed case studies, we will analyze where the real bottlenecks arise: attention's memory bandwidth limits, KV cache growth, distributed training communication costs, long-context scaling, and inference-time compute tradeoffs. - Processors — How hardware and physics constrain and enable AI at scale. We will examine GPUs, TPUs, memory hierarchies, interconnects, and emerging accelerator designs, along with the physical realities of power density, rack design, cooling systems, and the limits imposed by thermodynamics and semiconductor fabrication. - Power Grids — The economics of AI infrastructure and the central role of electricity. We will study the cost structure of GPU clusters, cloud pricing models, capital expenditure versus operating expenditure, electricity as the dominant operating input, grid interconnection bottlenecks, and how energy markets shape where and how large-scale compute can be built. - Policy — The geopolitical, environmental, and regulatory forces that shape AI's physical footprint. We will analyze semiconductor supply chains, export controls, energy and water constraints, embodied carbon, permitting regimes, and the broader political economy of AI infrastructure. Students finish the course able to reason across all four layers simultaneously—connecting, for example, a transformer's KV cache memory bottleneck to HBM supply constraints, to rack-level power density limits, to electricity markets, to export controls and carbon accounting. PREREQUISITES: Data Structures and Computer Architecture
CSE 30872  Programming Challenges  (3 Credit Hours)  
This course encourages the development of practical programming and problem solving skills through extensive practice and guided learning. The bulk of the class revolves around solving "brain-teaser" and puzzle-type problems that often appear in programming contests, online challenges, and job interviews. Topics covered in this course include: performing I/O, processing strings, using data structures, performing searching and sorting, utilizing recursion, manipulating graphs, and applying advanced algorithmic techniques such as dynamic programming. Additionally, basic software engineering practices such as debugging, testing, and source code management will be utilized throughout the course.

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 31321  Computer Architecture Lab  (0 Credit Hours)  
Lab for Computer Architecture I.
Corequisites: CSE 30321  
CSE 32078  Silicon Valley Pre-Departure  (0.5 Credit Hours)  
This course prepares CSE students bound for the Silicon Valley spring semester, including their internship search.
CSE 34037  Data Science for Engineers  (3 Credit Hours)  
This course provides a comprehensive introduction to the principles and practices of Data Science. Students will develop intermediate proficiency in Python, enabling them to design and implement effective data science workflows. Key topics include data sourcing, curation, and engineering (such as filtering, storage, and selection). The course also covers modern data visualization techniques, alongside foundational concepts in inference, including classification and regression. Additionally, students will learn to construct compelling narratives and stories using the insights gained from data science processes. Additional comments: This 6-week class will have the following time allocation: 1. Programming skill level-up (Python) (1 week) 2. Data engineering: sourcing, import, transform, clean, store (1 week) 3. Data to inference: regression and classification (3 weeks) 4. Visualization and storytelling (1 week) Assessment will include weekly assignments or quizzes that will build on one another.
CSE 34124  Intro to Artificial Intelligence  (3,4 Credit Hours)  
Artificial Intelligence (AI) is all about programming computers to perform tasks normally associated with intelligent behaviour. Classical AI programs have played games, proved theorems, discovered patterns in data, planned complex assembly sequences and so on. This unit of study will introduce representations, techniques and architectures used to build intelligent systems. It will explore selected topics such as heuristic search, game playing, machine learning, neural networks and probabilistic reasoning. Students who complete it will have an understanding of some of the fundamental methods and algorithms of AI, and an appreciation of how they can be applied to interesting problems. The unit will involve a practical component in which some simple problems are solved using AI techniques. DU - Dublin, Ireland: This course will cover introductory topics and conventional algorithms needed to understand the field of Machine Learning. The course will prepare students to understand and distinguish between main groups of methods used in Machine Learning, supervised and unsupervised, and how and when they are applicable. Key topics will include Regression, Decision Trees, Naive Bayes, Neural Networks, Clustering and Principal Component Analysis.
CSE 34151  Theory of Computing  (3-4 Credit Hours)  
Introduction to formal languages and automata, computability theory, and complexity theory with the goal of developing understanding of the power and limits of different computational models. Topics covered include: regular languages and finite automata; context-free grammars and pushdown automata; Turing machines; undecidable languages; the classes P and NP; NP completeness. IT - Trinity College - Dublin: On successful completion of this module, students will be able to: LO1 understand and work with implementations of Finite State Automata and regular languages appreciating both their strengths and weakness and the areas of language processing to which they might be applied LO2 understand and work with implementations of context-free grammars and parsers, including stack-based and chart parsers. LO3 understand and work with implementations of probabilistic methods in language processing such as statistical parsers, the use of Hidden Markov Models for speech recognition or statistical machine translation LO4 understand the uses to which Feature Structures may be put in grammars of natural languages LO5 understand some aspects of recursive computations on grammatical structures to serve semantic ends
CSE 34152  Computer Game Design & Programming  (3 Credit Hours)  
This course introduces the concepts and techniques for computer game design and development. Topics include: game history and genres, game design process, game engine, audio and visual design, 2D and 3D graphics, physics, optimization, camera, network, artificial intelligence and user interface design. Students participate in group projects to gain hands-on experience in using common game engine in the market.
CSE 34200  Special Topics Elective  (3 Credit Hours)  
In the broad context of Artificial Intelligence a key feature of intelligent beings is their abilities for perceiving their surrounds and making rational decisions on how to act, for example, deciding on the next move on a board game. This unit extends the classical problem-solving focus of algorithmic design to autonomous decision making, through introducing the key fundamental concepts and principles of intelligent autonomous agents.
CSE 34246  Database Concepts  (3 Credit Hours)  
Collection, organisation and storage of data are major tasks in many human activities and in every modern computing system. Computer-based information systems ensure that this data is permanently maintained, quickly updated and made accessible to users. Databases are essential components of computerised information systems. This is a module for all students interested in understanding how to design, develop and query databases. In this module students will learn the fundamentals of database models, database designing methodologies, database querying. They will learn details about the relational database model, relational database query languages (relational algebra/calculus, SQL), the entity-relationship model for database design. From a more practical point of view they will gain experience in building a relational database using a commercial database management system. Students will find these skills very useful in the development of any application requiring the storage and manipulation of data. SI - National Univ. of Singapore: This course covers the concepts involved in the implementation of database management systems. It includes physical implementation (storage management, access methods, query processing, and optimization) and dealing with multi-user applications (concurrency control).
CSE 34264  Computer Networks and Internet Systems  (3-4 Credit Hours)  
Taught at a host institution. COMP 30040 Computer Networks at UCD. This module introduces the OSI stack to students, and goes through the various layers in detail. The topics covered include: Network Types, functions, topologies, transmissions, switching, routing, management, reference models, architectures, protocols and standards; network user applications; flow and congestion control strategies; design and implementation considerations; use in Internet systems. There will be a few hot topics included each year Taught as CS 3102 Data Communications and Networks at St. Andrews University.This module introduces the basics of data communications and computer networks, and examines network protocols and architectures.
CSE 34321  Computer Architecture  (3-4 Credit Hours)  
This module introduces computer architecture through a hardware description language (HDL). The course objectives are: to describe, simulate and synthesis of digital building blocks and an entire processor, such as arithmetic circuits, memories, using VHDL; to introduce the design of processors, covering the central concepts such as the fetch-decode-execute cycle, addressing mode and instruction encoding; Starting from a MIPS instruction set architecture, gradually expanding on the details, issues and techniques in modern, high-performance processor designs. Processor performance analysis.
Prerequisites: CSE 20221  
CSE 34332  Progr. Paradigms  (3 Credit Hours)  
Programming language overview: imperative and functional languages; logic programming. Scripting languages and tools. Development environments. Multi-language interfacing. Case studies. Comprehensive programming practice using several languages. Must have taken Data Structures as a pre-req. IR This is an advanced programming module that assumes a working knowledge of object-oriented programming and data structures & algorithms, and a familiarity with functional programming. This module covers object-oriented programming in detail and explores how functional programming integrates with object-oriented programming in current practice. There is a focus on producing software that is: (1) demonstrably correct, by using unit testing and (2) maintainable, by observing sound programming principles during development. There is a strong emphasis on practical programming skills throughout this module, and being able to develop correct, maintainable code is a key part of the assessment for this module. The main programming language employed is Scala.
CSE 34341  Operating Systems  (3-5 Credit Hours)  
Introduction to Oss, OS Structure, Hardware features and Oss. Processes: Independent and Co-operative processes, Synchonisation Mechanisms, Deadlocks and Starvation. Memory Management: Binding and Relocation, Memory Organisations (fixed and variable partitions), Paging Technique, Segmentation Technique, Virtual Memory. File Management: File System structures, Files, Directories, File System Implementation. Introduction to Security and Protection: Basic Issues, Security Problem, Authentication, Encryption, Protection Problem, Trusted Systems. Case Studies: Unix, WinNT.
CSE 34468  Internet of Things  (3 Credit Hours)  
This course will introduce the basic building blocks of the Internet of Things (IoT). The course will introduce students to Python, embedded systems (Raspberry Pi), sensing, actuation, and introductory networking. The course will begin with a brief overview of Python and will then work through the basic IoT components. Specific components to be covered include I/O (input / output), timing (measuring time, time-based output (ex. PWM)), analog interactions (A/D, D/A), communication buses (serial, parallel), and networking (IP, wireless). The course will be a hands-on course with various skill building lab modules and projects.
CSE 34777  Creative Programing with Processing  (3 Credit Hours)  
This course introduces Processing, a programming language that uses computational and generative art as a context. It is designed for the construction of 2D and 3D visual forms and animation. It comes with its own IDE (Integrated Development Environment), which is light- weight but well-suited for the kind of rapid prototyping needed for dynamic visual work. Processing is a great way to introduce or strengthen programming by catalyzing excitement, creativity, and innovation. There are no pre-requisites for this course, but students may find it useful to have had any programming course beforehand, even a basic introductory one. Upon completion of this course, students will be able to:  Program in an object-oriented paradigm using conditionals, loops, data structures, arrays, functions, etc.  Manipulate and generate media in image and text formats  Generate time-based and interactive media  Design and debug very visually creative programs and animations The main resource for the course is www.processing.org ; the book Learning Processing by Daniel Shiffman will be made available for reference. Main Topics:  Introduction; setting things up  Variables; conditionals; loops  3D drawing; shapes; motion and animation  Functions; Arrays  Objects; introduction to O-O programming  Debugging  Applying math concepts in visual arts programming  3D manipulations  Inputting data; exporting  Handling sound  Dynamic drawing  Advanced topics (time permitting)
CSE 34794  Silicon Valley Internship  (3 Credit Hours)  
Internship for Silicon Valley students
CSE 34999  CSE Elective  (3-4 Credit Hours)  
This module provides students with understanding of current and emerging component technologies, focusing on the major themes of middleware, communication and service-oriented computing models.
CSE 40113  Design/Analysis of Algorithms  (3 Credit Hours)  
Techniques for designing efficient computer algorithms and for analyzing computational costs of algorithms. Common design strategies such as dynamic programming, divide-and-conquer, and Greedy methods. Problem-solving approaches such as sorting, searching, and selection; lower bounds; data structures; algorithms for graph problems; geometric problems; and other selected problems. Computationally intractable problems (NP-completeness).
Prerequisites: CSE 30331 or CSE 34331 or CSE 20312  

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40166  Computer Graphics  (3 Credit Hours)  
Introduction to interactive computer graphics. Key topics include graphics pipeline, WebGL + GLSL programming, geometric objects and transformation, modeling and viewing, interaction and animation, lighting and shading, and texture mapping. Students are expected to learn fundamental knowledge of computer graphics, essential hands-on experience in WebGL programming, state-of-the-art shader-based, GPU-accelerated graphics, and popular library for cross-browser 3D graphics.
Prerequisites: (CSE 30331 or CSE 34331 or CSE 20312) and (MATH 20580 or MATH 10094)  
CSE 40171  AI and Social Good  (3 Credit Hours)  
To reap the benefits of innovations stemming from AI, there will also have to be a framework that demonstrates alignment with societal needs and grand challenge problems, algorithmic and data responsibility, and knowledge of and compliance with best practices, coupled with a human-driven value system of sound judgment. This course will provide a foundation for Artificial Intelligence on concepts in machine learning and deep learning, decision making, and agents. In addition, the course will incorporate a discussion on ethics through reviews, discussions, and invited speakers. Utilizing an experiential learning framework, this course will involve applications of AI methods to social good problem spaces through a class project. This course will be a mix of lectures, seminars, and experiential learning opportunities. The course is open to both upper-level undergraduate and graduate students. However, it is an expectation that the graduate students will have an additional set of assignments, including a literature review paper. The graduate students will be encouraged to incorporate their research interests, as applicable, in development of their class projects.

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40175  Ethical and Professional Issues  (3 Credit Hours)  
This course seeks to develop a solid foundation for reasoning about ethical, professional, and social issues that arise in the context of computer science and engineering. Emphasis is placed on identifying appropriate legal, professional and moral contexts and on applying sound critical thinking skills to a problem. Topics covered include professional codes of ethics, safety-critical systems, whistle blowing, privacy and surveillance, freedom of speech, intellectual property, and cross-cultural issues. This course relies heavily on case studies of real-world incidents.

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40176  The Archaeology of Hacking  (3 Credit Hours)  
"Hacking" is one of the most pressing topics of technological and societal interest. Yet, it is one of the most misunderstood and mischaracterized practices in the public sphere, given its ethical and technical complexities. In this course we will combine anthropological and computer science methods to explore the digital tools, practices, and sociocultural histories of hacking with a focus on their context of occurrence from the late 1960s to the present. Our goal is to help students think anthropologically about computing as well as technically about the digital mediations that we depend on in our lives. This is a proposed integration course, and will be cross listed between Computer Science and Engineering and Anthropology. See the detailed proposal submitted with this form.
CSE 40232  Software Engineering  (3 Credit Hours)  
Software engineering is an engineering discipline that is concerned with all aspects of producing high-quality, cost-effective, and maintainable software systems. This course provides an introduction to the most important tasks of a software engineer: requirements engineering, software design, implementation and testing, documentation, and project management. A medium-scale design project combined with individual assignments complement the lectures.
Prerequisites: (CSE 30331 or CSE 34331)  

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40243  Compilers and Language Design  (3 Credit Hours)  
Compilers is a challenging and fun course for students who are planning a career in advanced software development. In this class, students will design and implement a complete compiler for a C-like language from top to bottom. The course brings together many different elements of computer science, ranging from the theoretical (formal grammar classes) to the very practical (x86 assembly language) with a pinch of software engineering in the middle. After completing the course, you will be able to write programs that manipulate computer languages in different ways, ranging from simple interactive calculators to programs that translate one language to another. Students completing the course may also experience some side effects: (1) You will learn how to use pointers really well. (2) You will gain experience in engineering a complex piece of software including revision control, testing, and evolution. (3) You will understand the C language inside and out, which will make you a better programmer all around.
Prerequisites: (CSE 30331 or CSE 34331)  

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40247  Computing in Spaceflight  (3 Credit Hours)  
NASA has never made a request of the computing industry that cannot be realized with current state-of-the-art technology. However, computer scientists and engineers have adapted their design practices to meet the challenges of spaceflight. In this course, students will learn how those adaptations contributed to innovations in computing in space and on Earth. They will survey legacy spaceflight computing systems, modern systems for supporting manned spaceflight, and incident reports. Then, students will learn about High-Performance Space Computing (HPSC) design principles, including fault tolerance, radiation hardening, demand for onboard computing resources, complete platform security, and adoption of industrial standards for project development, and their applications in space environments.
Prerequisites: CSE 30321  
CSE 40333  Mobile Application Design  (3 Credit Hours)  
In this course, students will learn about the mobile application design process, from application conception to end-user interactions. Students will design, implement, and debug/test applications for mobile devices and make use of the many capabilities these modern devices have to produce creative solutions to everyday challenges. A combination of readings, class discussions and hands-on application development will be used to provide a thorough understanding of mobile application design, with a particular emphasis on the various development stages of a semester-long team-based project. Students will create a mobile application with a specific end-user in mind. Examples include the use of smartphones for mHealth (mobile health) applications, location-based services, and/or the remote monitoring of critical infrastructure. The design process will have students identify their intended end-user, create schematics/wireframes based on user interviews, develop/debug/test their mobile application, integrate UI/UX design tools/techniques, as well as perform all necessary application evaluations and documentation. Finally, all teams will present their completed mobile applications in the culmination of this class.
CSE 40348  Emerging Interactive Technologies  (3 Credit Hours)  
This course offers instruction in developing cutting-edge interactive technologies, exploring the underlying engineering principles, and tracing their evolution over time. Students work in a studio format, dedicating extended periods to building both software and hardware prototypes. Topics include interactive technologies such as multi-touch, augmented reality, haptics, wearables, and shape-changing interfaces. Through a group project, students create their own interactive hardware/software prototypes and present them in a live demo at the end of the term.
CSE 40373  Embedded System Development  (3 Credit Hours)  
This course will focus on sophisticated embedded system development across avariety of platforms and hardware.  Concepts to be covered include sensing, actuation, fault tolerance, networking, security, and timeliness with particular consideration to the challenges posed with embedded systems limitations including size, weight, power, and cost.  Development will involve extensive use of C, Python, shell scripting, and network interactions with experience in C programming being essential.  The class will culminate in a final project leveraging extensive use of the aforementioned concepts and development tools.
CSE 40424  Human Computer Interaction  (3 Credit Hours)  
You will engage in an in-depth exploration of the field of Human-Computer Interaction (HCI) including its history, goals, principles, methodologies, successes, failures, open problems, and emerging areas. Broad topics include theories of interaction (e.g., conceptual models, stages of execution, error analysis, constraints, memory by affordances), design methods (e.g., user-centered design, task analysis, prototyping tools), visual design principles (e.g., visual communication, digital typography, color, motion), evaluation techniques (e.g., heuristic evaluations, model-based evaluations), and emerging topics (e.g., affective computing, natural user interfaces, brain-computer interfaces).

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40431  Programming Languages  (3 Credit Hours)  
Introduction to the theory of programming languages. How to define programming languages using operational semantics and type systems, and how to prove things about them. Starting with the lambda calculus as a core, a simple programming language is built up, with higher-order functions and lexical scope; algebraic data types, polymorphic types, and type inference; state and control. Students will also gain experience with functional programming and writing interpreters.
CSE 40438  High-Frequency Trading Technologies  (3 Credit Hours)  
The purpose of this project-based course is to introduce students to the world of electronic, automated, and high-frequency trading. Participants will join a team in building the technical components of a modern trading system, acquire a vocabulary for discussing and understanding financial markets and trading strategies, and learn what it takes to win in this competitive field. Topics discussed include advanced networking, algorithms, high-speed capture and storage of data, the history of trading, and a taxonomy of trading strategies.
Prerequisites: CSE 20312 and ACMS 30440  
CSE 40439  Game Development  (3 Credit Hours)  
This course introduces topics within game development to have students prototype, iterate, and present a final semester game project to their peers. These topics include emphasizing applied vector mathematics for all parts of game creation (interaction, audio, mechanics, and graphics), discussing the software behind game engines, numerical methods and coherency over discrete time, UX/UI/accessibility, and some advanced concepts in systems/software and performance/accuracy tradeoffs. The course will rely on the Godot Engine as well as the Unofficial OpenGL Math library for software development. Dev logs will rely on Obsidian notes. Students will be expected to plan their workflow, track and log jobs, and play a role as both an observer and tester for other student projects as they design and prototype their own games. The course should present new perspectives on the power of linear algebra, the importance of game testing, and how a systems perspective is important to performance and user experience.
CSE 40445  Hardware Platforms for Deep Learning and Optimization  (3 Credit Hours)  
Modern deep learning algorithms have revolutionized machine learning. However, the computational complexity of deep learning hinders practical and real-time execution of such algorithms on many resource-limited devices. This course will cover custom digital platforms, analog chips, compute-in-memory architectures and implementations, as well as algorithmic techniques aimed at tailoring machine learning to hardware implementations. The course will include one project which will build upon the concepts learned over the semester. Grades will be based on class presentations, a final project, and class participation. There is no final exam for this course.
CSE 40457  High-Level Synthesis  (3 Credit Hours)  
Goals: In this course we will study the hardware and software aspects of integrating heterogeneous components into a complete system; evaluating designs in a multi-objective optimization space; and designing new components that are reusable across different systems, product generations, and implementation platforms. Brief Description: Design and programming of System-on-Chip (SoC) platforms using high-level synthesis. Topics include: overview of technology and economic trends, methodologies and supporting CAD tools for system-level design and verification, software simulation and virtual platforms, FPGA prototyping, models of computation, the SystemC language, transaction-level modeling, hardware-software partitioning, memory organization, device drivers, on-chip communication architectures, power management and optimization, integration of programmable cores and specialized accelerators. Case studies of modern SoC platforms for various classes of applications.
CSE 40462  VLSI Circuit Design  (3 Credit Hours)  
CMOS devices and circuits, scaling and design rules, floor planning, data and control flow, synchronization and timing. Individual design projects.
Prerequisites: CSE 20221 or EE 20242  
CSE 40522  Computer Engineering Capstone Design  (4 Credit Hours)  
This course provides a comprehensive team-based design experience of a selected digital electronic system. Projects involve design concept selection, development of specification, design, prototype implementation, and documentation. Group project management skills, including scheduling and project tracking are stressed. Project assessment includes external reviews.
Prerequisites: (CSE 30321 or CSE 34321) and EE 20234  
CSE 40535  Computer Vision  (3 Credit Hours)  
The aim of Computer Vision is to give computers the ability to "understand" what they "see" in images and videos taken by one or more sensors (most often visible-light cameras). The goal of this course is to introduce and discuss methods for interpreting the visual information captured by machines to give them this ability. The course is divided into four parts. In the first part, we define the notion of computer vision, the progress made in this discipline in recent decades, current challenges, successful applications, and its limitations. We also discuss selected biological vision mechanisms as an inspiration to create better computer vision solutions. The second part explains the basics of signal processing from a computer vision perspective. This part includes image formation, image acquisition, understanding and effective use of color (and in general multi-wavelength) information, and image processing (filtering and segmentation). The third part focuses on the automatic recognition of patterns. It covers feature extraction and selection, texture descriptors, Bayesian inference, classification, and decision making. In this part, we will also discuss how these tasks can be solved using deep learning techniques, especially convolutional neural networks. Several meetings in this third part will be devoted to the reliability of modern deep learning-based, generative, and image-to-image translation models. Finally, the fourth part considers multiple-view and geometry topics in vision: motion analysis, including object tracking, projective geometry, camera geometric model, camera calibration, and 3D reconstruction. One meeting at the end of the semester will be devoted to the non-technical aspects of designing trustworthy and reliable computer vision (and AI in general) systems. After completing this course, students will be able to understand computer vision literature, recognize the frontiers of state-of-the-art computer vision systems, and select appropriate mathematical and software tools to develop algorithms solving the most important computer vision problems. Practical classes will utilize high-level programming languages (Python will be our main coding language) and popular computer vision tools and machine learning packages, such as OpenCV, Keras, Tensorflow, or Pytorch, to illustrate in practice selected topics discussed in class. The goal of the semester project is to exercise the entire computer vision pipeline on the selected vision problem. The most recent syllabus is available at https://adamczajka.com/teaching/computer-vision.
CSE 40537  Biometrics  (3 Credit Hours)  
The aim of this course is to introduce the principles of automatic biometric authentication. The course will study those biometric modalities which have commercial implementations (such as fingerprints, face, iris, voice, finger veins, handwritten signatures), as well as emerging techniques (such as brain or thermal signals). We will discuss hopes, fears, limitations and strengths related to the presented modalities, including biometric data aging, "reverse engineering" of biometric templates or possibility to use biometrics in post-mortem forensic analysis. Important part of this course will be security of biometrics (in particular presentation attack detection) and secure biometric implementations. Where appropriate, current large-scale deployments of biometrics, such as NEXUS program or biometric passports, will be used as illustration of problems discussed in class. The course will also show how to apply statistics for biometric reliability evaluation in a mathematically elegant way. During five practical classes students will interface with up-to-date commercial biometric sensors and collect an authentic biometric data as well as spoofing samples used during homework. For instance, using various computer vision tools and software libraries students will build their own iris, fingerprint and signature recognition systems following real-world implementations of these modalities, additionally resistant to various attacks such as presenting irises printed on a paper or gummy fingers. Practical classes will utilize the software designed in MATLAB and C/C++.

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40567  Computer Security  (3 Credit Hours)  
This course is a survey of topics in realm of computer security. This course will introduce the students to many contemporary topics in computer security ranging from PKIs (Public Key Infrastructures) to cyber-warfare to security ethics. Students will learn fundamental concepts of security that can be applied to many; traditional aspects of computer programming and computer systems design. The course will culminate in a research project where the student will have an opportunity to more fully investigate a topic related to the course.
Prerequisites: CSE 30331 or CSE 34331 or CSE 20312  

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40600  CSE Service Projects  (1-3 Credit Hours)  
Engineering Projects in Community Service.
CSE 40622  Cryptography  (3 Credit Hours)  
Students will learn state-of-the-art applications of cryptography throughout the semester, and relevant theories (e.g., number & group theory, elliptic curves, cryptanalysis) will be presented in order to fully understand them. Topics include: partially homomorphic encryption, formal definitions of security, elliptic curves, fully homomorphic encryption, and theories of bitcoin on top of blockchain.
Prerequisites: CSE 20312 or CSE 30331  

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40625  Machine Learning  (3 Credit Hours)  
This course on machine learning will give an overview of many concepts, learning theory, techniques, and algorithms in machine learning, such as in reinforcement learning, supervised learning, unsupervised and semi-supervised learning, genetic algorithms, including advanced methods such as sequential learning, active learning, support vector machines, graphical and relational models. The course will give the student the basic ideas and intuition behind modern machine learning methods as well as a bit more formal understanding of how, why, and when they work. The course will also include discussions on some of the recent applications, and the interface with computer vision, systems, bioinformatics, and architecture. The course will have a strong focus on project and assignments, with emphasis on writing implementations of learning algorithms.
Prerequisites: CSE 40647 or CSE 60647 or CSE 40171 or CSE 60171  

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40647  Data Science  (3 Credit Hours)  
Data mining and machine learning techniques have been widely used in many domains. The focus of this course will primarily be on fundamental concepts and methods in data science, with relevant inclusions and references from probability, statistics, pattern recognition, databases, and information theory. The course will give students an opportunity to implement and experiment with some of the concepts (e.g., data processing, classification, clustering, causality), and also apply them to the real-world data sets.
Prerequisites: CSE 20312  

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40655  Technical Concepts of Visual Effects I  (3 Credit Hours)  
This class seeks to introduce students to some basic concepts of computer-generated imagery as it is used in the field of visual effects, and to delve into some of the technical underpinnings of the field. While some focus will rely on artistic critique and evaluation, most of the emphasis of the class will be placed on understanding fundamental concepts of 3d modeling, texturing, lighting, rendering, and compositing. Those who excel in the visual effects industry are those who have both a strong aesthetic sense coupled with a solid understanding of what the software being used is doing "under the hood." This class, therefore, will seek to stress both aspects of the industry. From a methodology standpoint, the class will consist of lectures, several projects that will be worked on both in-class and out of class, scripting, many tutorials, and open discussion.

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40657  Natural Language Processing  (3 Credit Hours)  
Computers process massive amounts of information every day in the form of human language. Although they do not understand it, they can learn how to do things like answer questions about it, or translate it into other languages. This course is a systematic introduction to the ideas that form the foundation of current language technologies and research into future language technologies.
Prerequisites: (CSE 30331 or CSE 34331) and CSE 20312  

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40677  Open Source Software Development  (3 Credit Hours)  
Students will work as a team to construct a significant open source software product over the course of a semester. In addition to the software itself, students will develop the infrastructure necessary to sustain the software as part of an open source community, such as public web pages, documentation, discussion groups, bug tracking, and automated testing. Interested students should first form a small group of 4-6 students willing to work together, and then contact the instructor for permission to register.

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40679  Microprocessor-Based Application Design and Implementation  (3 Credit Hours)  
Embedded application design for highly resource-constrained computer systems employing microprocessors. Hand optimization of software for performance under real-time constraints and with limited memory. I/O interfacing for human input and graphics displays. Team-based major project specification, design, implementation, and review. This class includes a semester project that satisfies the "Major Project" requirement for the B.S. in Computer Science degree. This project will be much larger in scope than a regular assignment and will require at least eight weeks to complete. Students will design the overall goals and requirements of the project with guidance from the instructor. The project will be developed gradually through the semester by producing a series of reports (proposal, design, progress, final, and review) as noted in the class schedule. The project will necessarily draw upon skills and knowledge from prior classes, including Programming Paradigms and Computer Architecture. The final deliverable of the project will be a working software system that will be evaluated for overall competence in computing skills.
CSE 40685  Machine Learning for Embedded Systems  (3 Credit Hours)  
This is a project-oriented course that focuses on practical techniques to deploy various machine learning frameworks and algorithms on resource constrained embedded systems. Throughout the semester, students will form teams to work on a project induced from real-world problems of interest, including but not limited to natural language processing, autonomous vehicles and mobile/implantable healthcare devices. Students will be able to choose from a wide range of hardware platforms including microcontrollers, mobile CPUs, edge GPUs and/or FPGAs. In addition to gaining project experience, students will also be able to learn about state-of-the-art on trustworthiness and security of edge intelligence, hardware-aware machine learning, hardware and neural architecture co-design, etc. The course is intended for students who are interested in the application of machine learning in real-world problems.
CSE 40693  Modern Web Development  (3 Credit Hours)  
This course will focus on topics of modern web app development such as: MVC vs Component-based app architecture, RESTful API development, database schema design, interfacing with third-party APIs and more. In addition, many common JavaScript paradigms will be covered including asynchronous programming patterns, object-oriented JavaScript with classes, and unit testing. Discussions of engineering trade-offs will be complemented by projects in which students will develop their own web apps. These techniques are used by companies such as Groupon, Airbnb, Netflix, Medium and PayPal which have all adopted a full stack JavaScript approach, and are very useful to those interested in smaller tech startups as well.
CSE 40701  Native AI Software and Systems Engineering for UAVs  (3 Credit Hours)  
This course prepares senior-level students to engineer software in an AI-assisted development environment (e.g., Claude), with an emphasis on cyber-physical systems (CPS) in the UAV domain. Students learn disciplined workflows for prompting, architecture design, testing and validation, and systematic review within AI-supported engineering processes. Rather than building standalone simulators, students develop and evaluate software within an existing UAV simulation environment that integrates sensing, control, and mission logic. In a structured team project, students (1) engineer UAV software components, (2) design and integrate an agentic decision-making layer for autonomous behavior, and (3) build an operator-facing application that supports safe supervision and evaluation of autonomous operations. Throughout the course, students practice accountable AI-assisted development and defend quality claims with empirical evidence and appropriate software engineering metrics. PREREQUISITES: (Programming Paradigms OR Object Oriented Software Engineering) AND Introduction to AI
CSE 40702  The AI Compute Stack: Programs, Processors, Power Grids, and Policy  (3 Credit Hours)  
This course examines large-scale AI infrastructure through four interlocking lenses: - Programs — How modern AI workloads—especially large language models—actually compute. Through detailed case studies, we will analyze where the real bottlenecks arise: attention's memory bandwidth limits, KV cache growth, distributed training communication costs, long-context scaling, and inference-time compute tradeoffs. - Processors — How hardware and physics constrain and enable AI at scale. We will examine GPUs, TPUs, memory hierarchies, interconnects, and emerging accelerator designs, along with the physical realities of power density, rack design, cooling systems, and the limits imposed by thermodynamics and semiconductor fabrication. - Power Grids — The economics of AI infrastructure and the central role of electricity. We will study the cost structure of GPU clusters, cloud pricing models, capital expenditure versus operating expenditure, electricity as the dominant operating input, grid interconnection bottlenecks, and how energy markets shape where and how large-scale compute can be built. - Policy — The geopolitical, environmental, and regulatory forces that shape AI's physical footprint. We will analyze semiconductor supply chains, export controls, energy and water constraints, embodied carbon, permitting regimes, and the broader political economy of AI infrastructure. Students finish the course able to reason across all four layers simultaneously—connecting, for example, a transformer's KV cache memory bottleneck to HBM supply constraints, to rack-level power density limits, to electricity markets, to export controls and carbon accounting. PREREQUISITES: Data Structures and Computer Architecture
CSE 40728  System Design and Implementation of Small Autonomous Vehicles  (3 Credit Hours)  
This course provides students with a comprehensive introduction to cyber-physical systems (CPS) using autonomous vehicles as the application. We will cover essential topics including basic control theory, ROS2 (Robot Operating System), planning, and computer vision. Through a combination of lectures and hands-on labs, students will gain practical skills and knowledge in designing and implementing autonomous CPS. Concepts from all of the assignments and labs will culminate into a final project with a demo on the 1/10th sized autonomous vehicle. The course will involve programming in a Linux and Python environment with ROS2 for interfacing with the vehicle.
Prerequisites: CSE 20312  
CSE 40739  Advanced Game Development  (3 Credit Hours)  
This class extends the Game Development course, focusing on advanced techniques, heuristics, and optimizations to better understand the tools of a Game Engine and the cutting-edge of game development. The course covers the inner workings of modules in game engines enabling students to program and implement their own interactive tools. These topics will include effective practices in CPU vs GPU utilization to avoid unnecessary execution costs affecting frametime performance. Students will work simultaneously on extending premade tools to implement advanced videogame features as well as a semester project which they will present to the class – a game engine, a playable game, or both.
Prerequisites: CSE 40439 or CSE 40232  
CSE 40744  Special Topics in Machine Learning and Data Visualization  (3 Credit Hours)  
This seminar course is for graduate students interested in machine learning (ML) and data visualization (VIS). ML+VIS has emerged as the most vibrant direction in visualization research. ML+VIS encompasses two primary branches: ML4VIS (i.e., designing ML solutions for solving VIS problems) and VIS4ML (i.e., applying VIS techniques for explainable ML). The topics include representation learning, data generation, data reconstruction, visualization generation for ML4VIS, interpretation of the inner workings of neural networks, network model debugging, improvement, comparison, and selection for VIS4ML. This course is also suitable for students interested in research areas beyond VIS, such as medical imaging, computer vision, and human-computer interaction. Students will read and present relevant scientific papers and complete a related class project.

Enrollment is limited to students with a program in Computer Engineering, Computer Science or Computer Science & Engineering.

CSE 40746  Advanced Database Projects  (3 Credit Hours)  
Advanced topics in database concepts; the course's main goal is a major final project, where groups will compete for prizes and awards.
Prerequisites: CSE 30246  
CSE 40748  Human-AI Collaborative Systems  (3 Credit Hours)  
This course provides an introduction to the design, development, and evaluation of interactive software systems that facilitate effective collaborations between human users and artificial intelligence (AI). As a student in this class, you will form project groups that build interactive technologies powered by the latest machine learning (ML) technologies (e.g., Large Language Models like GPT-4) to address real-world user challenges in specific application scenarios. There are several milestones throughout the semester towards the final project.

Enrollment is limited to students with a program in Computer Engineering, Computer Science or Computer Science & Engineering.

CSE 40762  Digital Integrated Circuits 2  (3 Credit Hours)  
This follow-on course focuses on the design and implementation of digital integrated circuits using FinFET technology. Students will engage in a project-based learning experience, designing a simple RISC-V processor by midterm and customizing it through adding an accelerator to it for their final project. The course covers advanced topics such as high-performance adders, multipliers, bit-serial computation, and prepares students for the complete IC design flow culminating in a tapeout. Students will learn techniques for designing, testing, and implementing different functional blocks that make up an application specific circuit. Building upon the design exercises introduced over the semester, students will then implement high-level design techniques and optimizations for their blocks within a larger chip. The lectures will be formal presentations of course material with design examples as well as design reviews of student designs. Several guest lectures will be included from industry leaders.
Prerequisites: CSE 30342 or CSE 40462  
CSE 40770  Secure Software Engineering  (3 Credit Hours)  
Software security is a growing concern, leading to the increasing adoption of a secure software engineering practices. In light of these needs, this course covers core concepts & practices employed throughout the software development lifecycle in order to build secure software systems. This course will discuss the following topics: security principles, software weaknesses & vulnerabilities, misuse & abuse cases, risk assessment, threat modeling, secure (defensive) coding practices, vulnerability assessment using CVSS, code inspections (for security), and techniques for automated vulnerability detection (fuzzing, static and dynamic analysis). This course will also include case studies of software weaknesses (vulnerabilities) that occurred in real software systems. It will also cover the current state-of-the-art in software security research aimed at helping engineering secure software systems.
CSE 40771  Distributed Systems  (3 Credit Hours)  
A distributed system is any system of independent computers that communicate and cooperate via a newtork. Distributed systems are widely used in many settings spanning cloud services, mobile computers, internet of things, machine learning systems, interplanetary communications, and more. This course will introduce students to the fundamental properties of distributed systems, and develop techniques for building systems that are reliable, consistent, and scalable. Topics will include remote procedure call, logging and checkpointing, replication, consistency, fault tolerance, security and privacy, and more. The course will include a substantial amount of programming to build several working distributed systems that implement scalable data storage, large scale computation, and reliable communication. A course project is required. Graduate students enrolled in 60771 will additional study foundational papers in the field on these topics.
CSE 40773  Software Development for Autonomous Unmanned Vehicles  (3 Credit Hours)  
This is a software engineering class in which students will be exposed to development practices as they design, develop, test, and deploy drone-based software applications. Students will be exposed to fundamental Robot Operating System (ROS) concepts to write programs for controlling unmanned ground vehicles (UGVs). Topics covered will include path planning, onboard vision, and multi-drone collaboration. The course will include a series of assignments culminating in a team project.
Prerequisites: CSE 30331 or CSE 34331 or CSE 20312  

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40777  Technical Concepts of Visual Effects II  (3 Credit Hours)  
This course is for students who wish to dive deeper into realistic visual effects. Students will learn how to build complex 3D simulations using procedural node-based workflows to create elements like fire and water, destruction and debris fields, as well as some video editing and node-based compositing of 3D elements over live video. The course will consist of class lessons and projects.
CSE 40793  AI-Aided Modern Software Development — Mobile and Web Apps  (3 Credit Hours)  
Integrating AI tools into the software development process, this course takes a contemporary approach to building software. Students learn about different software architectures and their tradeoffs—especially mobile and web app architectures—and master Agile Methodology and practices. While taking an object oriented approach to system modeling, design and building, students learn different aspects of requirements engineering, software deployment, software testing, and quality assurance while managing technical debt through software refactoring.

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40816  Smart Health  (3 Credit Hours)  
The current healthcare system faces numerous challenges such as large cost, lack of preventive care, massive increases in chronic disease conditions and age-related illnesses, widespread obesity, poor adherence to medical regimens, and shortage of healthcare professionals. The concept of pervasive healthcare promises to provide care to anyone, at anytime, and anywhere, while increasing the coverage, quality, and efficiency of healthcare. This course studies how mobile and wireless technologies can be used to implement this vision of future healthcare. Topics include prevention techniques, continuous health monitoring, wireless and mobile technologies and standards for medical devices, personalized healthcare, body area networks, implantable devices, smartphone-based healthcare solutions, intelligent emergency management systems, pervasive healthcare data access, personal and electronic medical record systems, mobile telemedicine, context-awareness, and case studies of pervasive solutions for various health conditions and challenges.
CSE 40838  Data Visualization  (3 Credit Hours)  
Introduction to scientific and information visualization. Topics include visualization of scalar and vector fields (isosurface extraction, volume rendering, line integral convolution, and particle tracing); visual data representations (parallel coordinates, treemaps, and graph layouts); interactive techniques (focus+context visualization and coordinated multiple views); and solutions for big data visual analytics. Students will gain hands-on experiences in learning popular visualization programming (D3.js) and toolkit (ParaView). Students will have the opportunity to learn, implement, and apply visualization techniques through assignments and projects.

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40842  Hackers in the Bazaar  (3 Credit Hours)  
This a CSE elective course that explores the idea of a "hacker" and the practice of participating in the open source "bazaar". To examine the sociology of hackers, we will read, discuss, and reflect on books such as "Hackers and Painters", "The Cathedral and the Bazaar", and "Hackers: Heroes of the Computer Revolution". Additionally, students will apply the ideas and concepts explored in these books by contributing to different open source projects. Finally, students will develop a project of their own design by employing the open source development methodology.
Prerequisites: CSE 30331 or CSE 34331  
CSE 40868  Neural Networks  (3 Credit Hours)  
Neural networks are computer models inspired by our understanding of how human brain learns and processes an acquired information. This introductory course will guide you through different neural architectures suitable for various applications. We will start with bio-inspired modeling of neurons (inputs, activation function) and discuss how to use them to build artificial networks (connections, layers). The course will present structures used in supervised learning, that is static networks (Rosenblatt perceptron, Adaline, multi-layer perceptron, radial networks, deep networks including recently popular convolutional nets) and dynamic networks (recurrent networks, associative memory, Hopfield's and Boltzman's machines). Next the networks used in unsupervised learning will be discussed, such as self-organizing maps, Kohonen's networks and structures based on adaptive resonance theory (ART). The course will show how to efficiently apply different types of artificial neural networks in approximation and classification tasks and dynamic systems. We will discuss appropriate learning strategies for each of these applications and their details, such as gradient estimation and minimization techniques. Semester projects will be focused on solving real classification tasks related to computer vision area and with the use of up-to-date neural network software.

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40883  Introduction to Robotics  (3 Credit Hours)  
This course will guide students through the construction of a student designed, full motion, mid-size droid/robot. As part of the class, students will design and construct a robot using 3D printing, CAD, motion control systems, electrical circuits, sound systems, lighting systems, sensors, various communication protocols (serial, I2C, and Bluetooth), and Python programming on a Raspberry Pi. Students can build the robot as a team of two or as an individual project. The class provides an extensive build kit containing various components, materials, and tools for the project. During the final demonstration, the robot will complete various challenge courses and demonstrate unique character routines to fully demonstrate the final robot build.

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40910  Topics in Mathematical Logic  (3 Credit Hours)  
Mathematical proofs are the cornerstone of truth. Proofs verify medical devices and spacecraft work properly. They help establish guilt or innocence. The theme of this class is to explore the notion of proof with certain logical systems with the motivation of understanding mathematical proofs or reasoning. We will study proofs in extended syllogistic logics, propositional logic, other logical systems close to natural language, and first-order logic. We will show some of these systems are complete (every true statement is provable) and decidable (there is an algorithm for deciding truth) and others are not. We will explore what this means. Along the way we will hopefully learn more about how people reason.
CSE 40923  Case Studies in Computing-Based Entrepreneurship  (3 Credit Hours)  
The purpose of this course is to Inform, Introduce and (hopefully) Inspire you. You will become Informed about computing-based entrepreneurship case studies across a wide variety of areas: computer software, computer hardware, healthcare technologies, databases, web services, data analytics and more. You will also become Informed about different aspects of the entrepreneurship challenge. You will be Introduced to guest speakers who are, or who have been, principals in developing technology, founding companies, running companies, selecting technologies for venture capital investment, etc. As a result, you will hopefully be Inspired to consider pursuing computing-based entrepreneurship opportunity.

Enrollment is limited to students with a program in Computer Engineering or Computer Science.

CSE 40932  Exotic Computing  (3 Credit Hours)  
For the last 80 years computation has been inexorably intertwined with the von Neumann model of computing: a pre-specified sequential step-by-step application of relatively small operators to small pieces of named data. However, the daily headlines about AL and machine learning, quantum and neuromorphic, DNA and optical computing, are making it clear that there are alternatives. The goal of this course is to summarize in a somewhat standardized fashion and with standard terminology a hopefully large cross-section of both the computing models of today, and the newer computing models that we may encounter in the near future. A big part of this is thus to step back and ask over and over again "What do we really mean by computing?" The emphasis is not on programming languages or architectures, but on the underlying way in which computation is carried out, usually expressed mathematically, and done in a way that allows a comparison to the power of the von Neumann model. Topics at a minimum include lambda calculus, cellular automata, Petri nets, logic-based, reversible, neuromorphic, DNA-based, and quantum, with other topics added as driven by time and class interest.
CSE 40937  In-Memory Computing  (3 Credit Hours)  
This course is intended for senior undergraduate and graduate students who are interested in (i) designing efficient algorithms and software running on platforms beyond traditional multicore CPUs, and/or (ii) developing systems to accelerate popular applications such as machine learning and autonomous systems. It introduces recent and emerging hardware platforms that are typically based on nontraditional computing models, architectures, and technologies. The course specifically focuses on how demanding applications such as data analytics, artificial intelligence and graph processing can best benefit from such hardware platforms. Some example hardware platforms to be discussed include graphics processing units (GPUs), domain-specific accelerators based on near- and in-memory computing, neuromorphic computing engines based on CMOS as well as ferroelectric, magnetic and photonic devices, etc. The course emphasizes the cross-layer design practice in which unique properties of applications, algorithms, architectures, circuits and devices are identified and exploited.
CSE 40963  Theory of Neural Networks  (3 Credit Hours)  
Introduction to the theory of neural networks: expressivity (what functions a neural network can and cannot compute) and trainability (what functions a neural network can and cannot learn). Neural network architectures covered will include feed-forward, recurrent, convolutional and attention (transformer) neural networks.
CSE 40982  Interactive Dialogue Systems  (3 Credit Hours)  
An introduction to virtual agents and other dialogue systems. Virtual agents such as Siri, Cortana, and Alexa have made major inroads towards automating everyday tasks. Hotel booking, fact finding, entertainment recommendations, food delivery orders, etc., are now possible to automate. Students will learn the theoretical foundations of these systems as well as practical considerations through a lecture series and programming assignments.
CSE 40986  Low Vision Mentorship Project  (1 Credit Hour)  
In this course, Notre Dame students will be paired with students at the Illinois School for the Visually Impaired (ISVI) who are learning computer programming. ND students will work with the ISVI students to teach computer science, as well as to learn about the barriers to entry faced by low vision students to technology careers. Mentorship activities will be directed and supervised by ND faculty, and course/grade objectives align with outcomes for the ISVI students.
CSE 44113  Algorithms  (3-4 Credit Hours)  
Techniques for designing algorithms, proving their correctness, and analyzing their running times. Topics covered include: sorting, selection, heaps, balanced search trees, divide-and-conquer, greedy algorithms, dynamic programming, and graph algorithms. DU - Dublin City University The aim of this module is to develop the student's theoretical knowledge and practical implementation skills in data structures and algorithms. Students will develop an understanding of a range of abstract data types (arrays, sets, lists, stacks, queues, trees, graphs) and algorithms (searching, sorting, tree and graph traversals, computational methods) and gain practical experience in their implementation using C++.
CSE 44166  Introduction to Graphics  (3-4 Credit Hours)  
This course includes topics such as the visualization process, geometric representation of objects, 3D vision models, lighting and shading models, and the visual appearance of objects. (DU) Theoretical and technical introduction to the fundamentals of image processing and computer graphics. Starting from the first principles, we will cover topics of image formation and manipulation including point operations, histograms and morphological image processing. Further, we will focus on essentials of computer graphics and the basic implementation in Python. PA This unit teaches the fundamentals of computer-generated three-dimensional graphics and animation for applications, including creating interactive virtual environments. CU - HKU Hong Kong Course Learning Outcomes 1. [Computer graphics concepts] Be able to understand the basic concepts and apply them in analyzing and solving problems. 2. [Computer graphics models] Be able to understand the meaning and purpose of mathematical models in computer graphics, derive parameters for such models, implement such models in software systems, and apply such models to explain real-world phenomena. 3. [Computer graphics algorithms] Be able to disseminate and implement computer graphics algorithms, and understand their computing requirements. 4. [Computer graphics tools] Be able to use 2D and 3D graphics libraries, such as OpenGL, in software development.
CSE 44171  Intro to AI  (3-4 Credit Hours)  
This course provides an introduction of artificial intelligence. Topics covered include knowledge representation, search, game playing, deductive reasoning, reasoning under uncertainty, planning, learning, and philosophical foundations.
CSE 44175  Computing and Society  (3 Credit Hours)  
The aim of this modules is to provide the learner with an ability to communicate effectively in business settings, to prepare students for the workplace (INTRA) and to provide an appreciation for the Social, Legal, Ethical and issues associated with a professional work environment. 1. Discriminate between the key social, legal, ethical and regulatory issues involved in working professionally in computing. 2. Construct approaches to managing within legal, ethical and regulatory parameters. 3. Describe the vocabulary and concepts of both social, legal, ethical and regulatory approaches and be prepared to deal with workplace issues on the basis of this understanding. 4. Develop a philosophical and legal outlook that will be transferable to academic study and work generally. 5. An understanding of what is required for, and the barriers to, good communication. 6. An ability to design and write good business reports and presentations 7. An appreciation of the skills and knowledge, workplace relationship and team working to be acquired during INTRA Dublin, Ireland (IR): This class provides an in depth introduction to AI from a philosophical and societal perspective. The class centers around discussions of AI and its impacts on society.
CSE 44222  Blockchain  (3 Credit Hours)  
This course provides a holistic introduction to Blockchain Protocols and Smart Contracts. The students will learn how cryptocurrencies such as Bitcoin and Ethereum work, why they are secure, and how they can be used to implement real-world financial contracts without relying on trusted third-parties or centralized control. They will also learn to avoid, detect, and fix common security vulnerabilities in smart contracts. List of Topics 1. Introduction to Cryptocurrencies and Decentralization 2. Hash Functions and Public-key Cryptography 3. The Double-spending Problem 4. Bitcoin and Proof-of-Work (PoW) 5. Proof-of-stake and other alternatives to PoW 6. Programmable Blockchains 7. Introduction to Ethereum and Solidity 8. Tools for Implementing Smart Contracts 9. Commitment Schemes 10. Auctions and Escrows 11. Re-entrancy and Out-of-gas Vulnerabilities 12. Incentivization Bugs and Attacks by Miners 13. Verifying Correctness of Smart Contracts
CSE 44243  Compilers  (3 Credit Hours)  
This course provides the theoretical knowledge and practical skills in lexical analysis, parsing, semantic analysis, intermediate code generation, and runtime organization, giving students the foundation needed to design and implement a complete compiler.
CSE 44373  Embedded Development System  (3 Credit Hours)  
This module deals with the design and implementation of embedded systems, involving a processor, software (or firmware) and other hardware. Topics include architectures and interfacing of typical processors, programming in C and assembly language to interact with hardware in real time, design and verification of systems involving a mix of hardware and software. The module will have an emphasis on problem-based learning. Design assignments will require significant time during the trimester, and will involve working in a team and collaborating with others. Assessment of these assignments will be largely based on written reports, supplemented by interview where necessary.
CSE 44424  Human Computer Interaction  (3-4 Credit Hours)  
In this course, students will learn the factors, techniques, tools and theories of systems with which humans interact and engage. Students will research and evaluate systems with which humans interact and engage through the web or other medium in a dissimilar way. This course will cover areas such accessibility [to include disabled and other people], information visualisation, user centred methodologies, digital business interaction, user interaction security, multi-modal interfaces, human factors, and human computer interaction. AS - St. Andrews, Scotland This module covers the main aspects of Human Computer Interaction. Design guidelines, structured design methods and standards are studied, and practice is given in implementation and evaluation. Students gain experience of current interactive audio, visual and manipulative technologies. SI - National Univ. of Singapore: his class explores user-centered design problem solving techniques, tools, and theories to create systems that best addresses a given problem.
CSE 44439  Game Development  (3 Credit Hours)  
The module will provide an introduction to the essentials of computer game development.
CSE 44535  Computer Vision  (3-5 Credit Hours)  
This course provides an introduction to computer vision including history of vision techniques, fundamentals of image formation, image processing, and feature detection and matching. We'll develop basic methods for applications that include semantic segmentation for scene understanding, video-based object tracking for motion estimation, human pose estimation from images and image matching for cross-camera object re-identification. The focus of the course is to develop the intuitions and mathematics of the methods in lecture, and then to learn about the difference between theory and practice in the projects.
CSE 44567  Computer Security  (3 Credit Hours)  
This course is a survey of topics in realm of computer security. This course will introduce the students to many contemporary topics in computer security ranging from PKIs (Public Key Infrastructures) to cyber-warfare to security ethics. Students will learn fundamental concepts of security that can be applied to many; traditional aspects of computer programming and computer systems design. The course will culminate in a research project where the student will have an opportunity to more fully investigate a topic related to the course. Trinity College, Dublin (IT): The objectives of this module are: to develop an in-depth understanding of risk, data privacy, threats and risks of security breaches, an awareness of computer security (cryptographic) and protocol techniques, and an ability to understand and make appropriate and ethical decisions about securing data.
CSE 44622  Cryptography  (4 Credit Hours)  
The purpose of this module is to introduce the students to the basics of modern symmetric cryptography and to elementary number theory, as required for further study of public-key cryptography. Modern block ciphers and hash functions will be studied in some depth, and modern complex methods of block cipher cryptanalysis (linear and differential) will be covered. Participants will learn to appreciate the significance of cryptography as a means of securing information in the modern world. New ideas and some surprising and novel protocols will be discussed. Students are expected to undertake a difficult assignment, and partake in external reading and study and homework.
CSE 44625  Machine Learning  (3-5 Credit Hours)  
This module covers the core topics that dominate machine learning research: classification, clustering and reinforcement learning. We describe a variety of classification algorithms (e.g. Neural Networks, Decision Trees and Learning Classifier Systems) and clustering algorithms (e.g. k-NN and PAM) and discuss the practical implications of their application to real world problems. We then introduce reinforcement learning and the Q-learning problem and describe its application to control problems such as maze solving. DU - Dublin City University This course will cover introductory topics and conventional algorithms needed to understand the field of Machine Learning. The course will prepare students to understand and distinguish between main groups of methods used in Machine Learning, supervised and unsupervised, and how and when they are applicable. Key topics will include Regression, Decision Trees, Naive Bayes, Neural Networks, Clustering and Principal Component Analysis. HT- Hong Kong, China (HKUST) This course provides a comprehensive coverage of the machine learning field. It introduces the foundations of machine learning, such as optimization, regularization, and generalization. It covers several traditional machine learning algorithms and various types of neural networks, such as feedforward, convolutional, recurrent, and transformer models, as well as their applications to computer vision, natural language processing, and generative modelling. The course also includes selected advanced topics. Dublin, Ireland (IR): This module delves into advanced machine learning techniques central to modern artificial intelligence. Building upon foundational knowledge from "STAT30270 Statistical Machine Learning", students will explore advanced methods and models that enable accurate prediction and the ability to learn from complex, high-dimensional data. Key topics include (subject to changes): - Deep learning - Understanding and implementing neural networks, including convolutional and recurrent architectures, for processing data such as images, text, and time series. - High-dimensional data - Techniques for managing and extracting insights from large-scale datasets, with an emphasis on scalability and computational efficiency. - Model evaluation and benchmarking - Approaches to assess and compare predictive models to ensure robustness, generalizability, and performance. - Interpretability and uncertainty - Exploring the 'black-box' nature of complex models, including methods for model interpretation and quantifying predictive uncertainty. Practical sessions will involve hands-on experience with the R programming language and the Keras library, facilitating the application of concepts to real-world problems. By the end of the module, students will be equipped to design, implement, and critically evaluate advanced machine learning methods across various domains. Sydney, Australia (SY): Machine learning is the process of automatically building mathematical models that explain and generalise datasets. It integrates elements of statistics and algorithm development into the same discipline. Data mining is a discipline within knowledge discovery that seeks to facilitate the exploration and analysis of large quantities for data, by automatic and semiautomatic means. This subject provides a practical and technical introduction to machine learning and data mining. Topics to be covered include problems of discovering patterns in the data, classification, regression, feature extraction and data visualisation. Also covered are analysis, comparison and usage of various types of machine learning techniques and statistical techniques.
CSE 44637  Data Mining  (3 Credit Hours)  
The course is structured in such a way as to present important concepts of data mining and how these concepts are implemented and used in real-world applications. The key idea behind this course is to integrate the theory and practice of data mining with many references to real-world problems and cases to illustrate the concepts and the implementation issues as we go through the lectures. The first chapter is devoted to a brief introduction to some background information needed to understand the material. This is followed by data warehouse topic and how different is from database concept. The notion of data mining process is explained and how it relates to the complete KDD process, as it is very important to understand that data mining is not an isolated subject. We will then overview a survey of some techniques used to implement data mining algorithms. We will follow by studying some core topics of data mining; classification ,clustering, and association rules. Other concepts, such as prediction, regression , and pattern matching, will also be covered, but viewed as special cases of the three core topics. In each concept we will only concentrate on the most popular techniques and algorithms.
CSE 44647  Data Mining  (3-4 Credit Hours)  
This module aims to give the student a background in using a programming language such as R to deliver a competent analysis of both structured and unstructured data. RE Rome, Italy JCU CS 212 An introduction to data science industry used techniques and statistical analysis. Tools such as pandas, scikit-learn, pytorch, and more are used to implement data analysis and machine learning models. DU - Dublin City University: Data Warehousing & Data Mining - A Data Warehouse is the model or structure that supports data mining and decision support. This module teaches students how to build Data Warehouses by understanding their structures and the concept of multi-dimensional modelling. It also covers Data Mining to teach students how to extract knowledge from data warehouses using three different approaches: clustering, association rule mining and classification.
CSE 44648  Data Science  (3 Credit Hours)  
Data mining and machine learning techniques have been widely used in many domains. The focus of this course will primarily be on fundamental concepts and methods in data science, with relevant inclusions and references from probability, statistics, pattern recognition, databases, and information theory. The course will give students an opportunity to implement and experiment with some of the concepts (e.g., data processing, classification, clustering, causality), and also apply them to the real-world data sets.

Enrollment is limited to students with a program in Applied & Comp Math and Stats, Computer Engineering or Computer Science.

CSE 44693  Web Development  (3 Credit Hours)  
Web Technologies play a central role in many aspects of daily life and are a core enabler in many industries. At their core, such systems typically expose some underlying content (often stored in a database) in a contextual way to external/internal clients via a web interface. This can range from online shops, such as Amazon) to social media platforms (Facebook/ Linkedin), customer support frameworks (Zendesk), or online streaming platforms (Netflix/Youtube).
CSE 44755  Parallel Programming  (3 Credit Hours)  
A deep dive into concurrency in code, studied through various Java and C libraries.
CSE 44770  Secure Software Engineering  (3 Credit Hours)  
This unit covers different types of security vulnerabilities of computer systems and how to prevent and mitigate the effects of them. Topics include memory and arithmetic errors, validated input and inter-process communication, race conditions and file operations, cryptographic practices, and development practices.
CSE 44793  Software Development Practices  (5 Credit Hours)  
Our increasing reliance on software systems to manage our personal data means that there is a growing requirement to deliver robust and secure software. This module will focus on the importance of designing software with security in mind. This will include elements of ethical hacking and vulnerability testing as well as the techniques and tools used to create secure software and to maintain the confidentiality, integrity and availability of the systems and data.
CSE 44814  Mobile Computing  (3 Credit Hours)  
This subject is an introduction for students to the programming of mobile devices, which must already have a knowledge of programming. Topics related to the hardware of mobile devices, mobile operating systems, sensors, and how to access all this from the developer's point of view to implement the desired solutions will be discussed during the course. The subject has a great practical programming load that is carried out under the Xamarin platform.
CSE 44822  Cloud Computing  (3 Credit Hours)  
Big data systems, including Cloud Computing and parallel data processing frameworks, emerge as enabling technologies in managing and mining the massive amount of data across hundreds or even thousands of commodity servers in datacenters. This course exposes students to both the theory and hands-on experience of this new technology. The course will cover the following topics. (1) Basic concepts of Cloud Computing and production Cloud services; (2) MapReduce - the de facto datacenter-scale programming abstraction - and its open source implementation of Hadoop. (3) Apache Spark - a new generation parallel processing framework - and its infrastructure, programming model, cluster deployment, tuning and debugging, as well as a number of specialized data processing systems built on top of Spark. By walking through a number of hands-on labs and assignments, students are expected to gain first-hand experience programming on real world clusters in production datacenters.
CSE 44838  Data Visualisation  (3 Credit Hours)  
In this unit, students develop an understanding of scientific computing and modelling, analysis, problem solving and visualisation. They understand the approach of computational modelling; have strong programming skills in Excel, MATLAB and Mathematica in data analysis modelling; understand limitations and uncertainty in models; devise and implement computational models; analyse data and hypotheses; are aware of reliability and correctness; and are able to perform simulation and testing. Hong Kong: This course will introduce visualization techniques for data from everyday life, social media, business, scientific computing, medical imaging, etc. The topics include human visual system and perception, visual design principles, open- source visualization tools and systems, visualization techniques for CT/MRI data, computational fluid dynamics, graphs and networks, time-series data, text and documents, Twitter data, and spatio-temporal data. The labs and the course project will give students hands-on experience to turn their data into beautiful visualizations.On successful completion of the course, students will be able to: 1.Understand human visual system, color, design principles, and core techniques of data visualization. 2.Learn to understand domain problems and needs of end users. 3.Learn to design, implement and evaluate a visualization system. 4.Communicate effectively with domain experts, general public, and different stakeholders in government, academia and industry. 5.Analyze social impact and responsibilities as well as possible ethical, legal, security and privacy issues.
CSE 44849  Video Game Design  (3 Credit Hours)  
- History and evolution of video games and digital effects in the entertainment industry. - Taxonomy of videogames: space of representation, type of interaction, platform, number of players and objectives. - Design and production of a video game. - Programming of a videogame: equipment and processes, programming languages, game architecture - Simulation: physics, collisions, behavior, roads, spatial data structures - Graphics: 3D modeling of characters and environment, HUD, textures, lighting, special effects. - Audio: programming and integration in the game. - Artificial intelligence and video games - Animation: character animation, environment animation, camera movement. - Network and multiplayer games. - Video game engines: scene graphic architecture, graphic process phases, graphic path, most important engines and their characteristics - Development platforms: desktop, web, consoles, mobiles - Business models in video games
CSE 44902  Deep Learning  (3 Credit Hours)  
This course is designed to lecture theories of modern deep learning and give chances to students to have practice. After taking the course, we expect students to be able to implement necessary deep neural network modules for their task of interest.
CSE 44932  Exotic Computing  (3 Credit Hours)  
For the last 80 years computation has been inexorably intertwined with the von Neumann model of computing: a pre-specified sequential step-by-step application of relatively small operators to small pieces of named data. However, the daily headlines about AL and machine learning, quantum and neuromorphic, DNA and optical computing, are making it clear that there are alternatives. The goal of this course is to summarize in a somewhat standardized fashion and with standard terminology a hopefully large cross-section of both the computing models of today, and the newer computing models that we may encounter in the near future. A big part of this is thus to step back and ask over and over again ?What do we really mean by computing?? The emphasis is not on programming languages or architectures, but on the underlying way in which computation is carried out, usually expressed mathematically, and done in a way that allows a comparison to the power of the von Neumann model. Topics at a minimum include lambda calculus, cellular automata, Petri nets, logic-based, reversible, neuromorphic, DNA-based, and quantum, with other topics added as driven by time and class interest.
CSE 44935  Cybersecurity  (3 Credit Hours)  
This course is an introduction to the principles of cybersecurity. Cybersecurity, also called computer security or IT security, refers to the study of techniques to protect computing systems from attacks that threaten data confidentiality, system integrity and availability. By modeling, analyzing, and evaluating the security of computer systems, students will learn to find weaknesses in software, hardware, networks, data storage systems, mobile applications, and the Internet, and identify current security practices and defenses to protect these systems. Hong Kong China (HT): This is an introductory course on cybersecurity. It will cover the full spectrum of the security domain: basic cybersecurity principles, system security, hardware security, web security and network security. Uniquely, this course will tackle the immediate challenges of the AI era, examining adversarial machine learning (ML security), LLM jailbreaking (LLM security), and the security of agentic AI workflows (Agent security). We will introduce fundamental cybersecurity principles and provide concrete examples of security issues that arise when these principles are violated. We then discuss techniques to detect, mitigate and prevent potential security issues.
CSE 44971  Quantitative Methods for Decision Support  (3 Credit Hours)  
This course aims to provide students with knowledge of certain models and quantitative tools (Decision Theory, Game Theory, Dynamic Programming and Markov Chains) that support them in successfully tackling the problems they face. In order to do this, and given that in order to apply the techniques it is necessary to understand the problem in detail and appreciate the different facets that they may present, the subject will be given an eminently applied approach, in which for each type of problem the characteristics and their relationships within the system formed by the organization will be previously addressed.
CSE 44973  Software Development  (3 Credit Hours)  
In this module, students apply their programming skills to a large-scale, semester-long project. All students undertake the same project, and that project introduces the students to programming in a number of modern contexts (mobile, cloud, etc.)
CSE 44998  Data Warehousing  (3 Credit Hours)  
Relational databases are the backbones of modern businesses in processing transactions and storing customer data. Most organisations usually deploy several relational databases for operational convenience. It is quite often necessary to integrate the information existing in different relational databases for planning and decision making. Data warehouses are built to facilitate planning and decision making in businesses integrating data from different relational databases. Online analytical processing (OLAP) is a technology that uses a data warehouse for answering aggregation queries often used in planning. While relational databases hold important transactional information of a business, the success of a business quite often depends on advanced planning and development of strategies based on customer behaviour. Data mining technologies are used for discovering such patterns and trends in data stored in relational databases. This unit introduces the key mechanisms in data warehousing and OLAP. It discusses logical and physical design of data warehouses including star schema, snowflake schema, data marts, partitioning and materialised views. Students study the use of data warehouses through a study of the OLAP technology including the multidimensional OLAP (MOLAP) and relational OLAP (ROLAP) architectures, OLAP operations and structured query language (SQL) support for OLAP.
CSE 44999  Special Studies  (3-5 Credit Hours)  
Special studies course while abroad.
CSE 46101  Directed Readings  (1-3 Credit Hours)  
This course consists of directed readings in Computer Science Engineering.
CSE 48423  iTREDS Capstone Experience  (1 Credit Hour)  
1-credit research for students in the iTreds program
CSE 48523  iTREDS Capstone Experience 2  (1 Credit Hour)  
2nd capstone experience course for iTreds students
CSE 48623  iTREDS Capstone Experience 3  (2 Credit Hours)  
3rd capstone experience course for iTreds students ( the sequence - once steady state is reached - will be CSE 48423, 48523, 48623 (resp. 1, 1, 2 credits) )
CSE 48901  Undergraduate Research  (1-4 Credit Hours)  
A research project at the undergraduate level under the supervision of a CSE faculty member.
Course may be repeated.  
CSE 48999  Research Experience for Undergraduates  (0 Credit Hours)  
This is a zero-credit, ungraded course for students engaged in independent research or working on a special project with a faculty member or a member of the University staff. It is taken as an indication of the student's status. No coursework is required.