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

Students cannot enroll who have a program in Computer Engineering or Computer Science.

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 major 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  The Archeology 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.
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  (3 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.
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 major 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 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 20600  CSE Service Projects  (1-3 Credit Hours)  
Engineering projects in community service.
Course may be repeated.  
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 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 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  Introduction to 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 major 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 major 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 major 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 major 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 major 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 30600  CSE Service Projects  (1-3 Credit Hours)  
Engineering projects in community service.
Course may be repeated.  
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 major 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 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 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 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 major 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 major 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 major 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 major in Computer Engineering or Computer Science.

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 major in Computer Engineering or Computer Science.

CSE 40431  Theory of 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  Special Studies: 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 40536  Computer Vision II  (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 (usually visible-light cameras). This course will be focused on advanced topics in computer vision, and specifically oriented around robotic vision. Completing Computer Vision I course, or prior skills and knowledge of basic computer vision topics and tools (confirmed by passing an entry test), is required to attend this class. This course is prepared jointly with our industrial partner (Amazon Robotics) and will encompass three main modules: (1) interactive class meetings discussing advanced and current topics in computer vision, (2) semester project focused on object detection and recognition in dense clutter, organized in a challenge/competition formula, and (3) pre- sentation of student solutions and selection of the competition winner. Class meetings will be organized around selected, current problems presented at the leading computer vision meetings, such as CVPR, ECCV, ICCV and WACV. Rather than regular lectures, these will be highly interactive sessions, focused on understanding both the challenges presented in the papers, as well as strengths and weaknesses of the proposed solutions. The semester project will solve an example, real-world problem proposed by Amazon Robotics and related to robotic vision. Students may be given an opportunity to present their final project solutions to the Amazon Robotics research team. After completing this course students will understand current top-level literature on computer vision, know seminal solutions to selected advanced challenges in vision-related tasks, and understand how to apply complex methods and tools in real-world problem of object identification.
Prerequisites: CSE 40535  
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 major 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 40601  Computing Service Projects - Community Engagement and Countering Systemic Bias  (1 Credit Hour)  
Computing systems unwittingly help enforce or reinforce systemic bias. In this course, students are taught how to examine bias in systems or make conscious design decisions that prevent bias that once coded will persist undetected in systems for a long time. In this course, we will be combining data analysis, data visualization, web development, software development tools and open government data to design, build and analyze systems that allow for civic engagement and explore data bias, systemic bias and social justice related issues in the local community or national community. This course will use Python as the primary language and will examine data in the following formats: csv, json, xml, data from apis, etc. Major themes: Data exploration Systemic Bias exploration Graphical User Interface design Community engagement Government open data Civic technology Python programming Data visualization Data analysis Social good
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 major 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 major 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 major 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 major 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 major 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 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 major 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  Principles and Practices of Software Development  (3 Credit Hours)  
Principles, techniques, practices, and tools for modeling, designing, implementating, and testing medium to large-scale software systems. Topics covered include design patterns, architectural styles and tactics for improving performance, extensibility, maintainability, and reliability of software systems. The course will include several short, remote talks by practicing Software Engineers.

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

CSE 40814  Mobile Computing  (3 Credit Hours)  
This course looks at the intersection between mobile computing, mobile telephony, and wireless networking, addressing the unique network protocol challenges and opportunities presented in these fields. While some of the more important physical layer properties of radio communications will be touched, the focus will be on network protocols above the physical layer, particularly media access control, transport protocols, and routing. The course will be project-oriented, giving students an opportunity to work with state-of-the-art mobile computing technology, including cell phone programming, location-aware systems using GPS, and emerging network protocols and applications.
Prerequisites: CSE 30331 or CSE 34331  

Enrollment is limited to students with a major 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 40822  Cloud Computing  (3 Credit Hours)  
This course introduces fundamentals and applications of cloud computing intended primarily for computer science and computer engineering majors. Core concepts of virtualization, cloud infrastructure components, and cloud services will be covered. Specific areas of discussion include virtual machine performance, cloud management interfaces, network and storage infrastructure, IaaS, PaaS, SaaS, QoS, Cloud Security, and hybrid cloud models. Students will have the opportunity to apply their understanding of cloud infrastructure in practice through course projects with access to both campus and commercial cloud services.
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 major in Computer Engineering or Computer Science.

CSE 40874  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 senior undergraduate and graduate students. However, it is an expectation that the graduate students will have 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.
CSE 40883  Robotics Studio  (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 40884  Network Science  (3 Credit Hours)  
Networks are everywhere! Networks (graphs) can be used to elegantly model and analyze real-world phenomena in various domains. Examples are the Internet, Facebook, cell phone communications, airline routes, stock markets, disease spread, brain, molecular interactions between genes/proteins in a cell etc. Networks are important! For example, both graphite and diamond are composed of carbon atoms, but what gives them different properties (graphite being soft and dark, diamond being hard and clear) is the connections (links) between the atoms, i.e., the network. So, what is network science about? This interdisciplinary course will introduce students to the different types of real-world networks. Also, the course will introduce state-of-the-art computational approaches for network analysis. Because of the increasing complexity of the real-world network data, in order to analyze the networks efficiently, these approaches will span many fields, e.g., algorithms, graph theory, data mining, machine learning, pattern recognition, information theory, big data, probability and statistics, and visualization. Vibrant network science topics that will be explored include: network properties and measures of network structure, network modeling, network evolution (i.e., dynamic network analysis), link prediction, community detection (i.e., clustering), network comparison and alignment, network integration (i.e., heterogeneous network analysis), and network visualization. While the course will encompass traditional course activities (lectures, homeworks, and exams), the focus will be on getting practical hands-on experience in analyzing real-world network data through a course project, reading latest research papers on network science and its real-life applications in a variety of domains, and active in-class discussion of the papers
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 major 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 40947  Cross-Layer Design for CMOS and Beyond-CMOS Technologies  (3 Credit Hours)  
As Moore's Law based device scaling and accompanying performance scaling trends are slowing down, it is increasingly challenging for von Neumann architectures and traditional digital processing to meet the performance and energy targets for many demanding applications such as training large neural networks and extract information from huge amount of multi-modality data (image, video and audio, etc.). Emerging CMOS and beyond CMOS technologies are being actively investigated by both industry and academia.This course exposes students to the state-of-the-art advances in design techniques for employing CMOS and beyond-CMOS technologies in compute/data-intensive applications especially from the machine learning and big data areas. It focuses on identifying/modeling unique features of algorithms, architectures, circuits and devices and exploiting these features to improve overall application-level performance. Special attention will be given to addressing challenges including accuracy, energy, memory requirement, process variation, limited precision, and reliability. Some example technologies considered include deep submicron CMOS, resistive RAM, spintronics and ferroelectrics.
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 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.