Home > Academics > Course Resources > CSE Course Info

CSE Course Info

Curious about classes in our curriculum? Look below to see a sampling of course descriptions and to navigate to course websites where you can learn more. Additional information on all EECS courses is available from the Course Resources page.

The following resources are also available to help you plan:

For up-to-date information on how courses can count for requirements, see the CS Course Lists (CS-Eng and CS-LSA majors) and DS Course Lists (DS-Eng majors).

CSE course sorting tool

Want to see which courses are options for completing your degree? This interactive tool allows you to find courses that match your remaining degree requirements and the tags that interest you. Once you click on the button below, the tool will open in a new window.

Course descriptions and websites

Please see collected course websites, syllabi, and other general course info below. We post current semester course websites received from instructors, but resources from the recent past are still maintained here to provide some insight into courses. Course instructors should be contacted for additional information on their courses.

ENGR 101: Introduction to Computers and Programming

Solving engineering problems with computer programming in MATLAB and C++.

Learn More>

EECS 183: Elementary Programming Concepts

An introductory course to computer science and programming, covering the basics of computing as well as problem-solving and algorithmic thinking.

Learn More>

EECS 203: Discrete Math

Introduction to the mathematical foundations of computer science.

Learn More>

EECS 280: Programming and Introductory Data Structures

Computer science fundamentals, with programming in C++. Build an image processing system, a game of Euchre, a web backend, and a machine learning algorithm.

Learn More>

EECS 281: Data Structures and Algorithms

Data structures and algorithms in C++.

Learn More>

EECS 370: Introduction to Computer Organization

Basic concepts of computer organization and hardware.

Learn More>

EECS 367: Introduction to Autonomous Robots

An introduction to the computational foundations of autonomous robotics for building modern robot operating systems and applications to perform mobile manipulation tasks.

Learn More>

EECS 373: Introduction to Embedded System Design

This class is focused on the principles and practices of modern embedded system design.

Learn More>

EECS 376: Foundations of Computer Science

An introduction to computer science theory, with applications.

Learn More>

EECS 388: Introduction to Computer Security

This course teaches the security mindset and introduces the principles and practices of computer security as applied to software, host systems, and networks.

Learn More>

EECS 390: Programming Paradigms

This course offers a survey of programming language features and paradigms, with a focus on how to effectively use them.

Learn More>

EECS 440: Extended Reality for Social Impact

Design, development, and application of virtual and augmented reality software for social impact.

Learn More>

EECS 441: Mobile App Development for Entrepreneurs

Best practices in the software engineering of mobile applications and best practices of software entrepreneurs in the design, production and marketing of mobile apps.

Learn More>

EECS 442: Computer Vision

Class topics include low-level vision, object recognition, motion, 3D reconstruction, basic signal processing, and deep learning.

Learn More>

EECS 448: Applied Machine Learning for Modeling Human Behavior

This course will cover current practices in measuring and sensing human behavior via machine learning.

Learn More>

EECS 470: Computer Architecture

An advanced course on computer architecture. Design a fully synthesizable, out-of-order processor.

Learn More>

EECS 471: Applied Parallel Programming with GPUs

Parallel computing and application development for massively parallel processors such as GPUs.

Learn More>

EECS 473: Advanced Embedded Systems

We will explore rapid prototyping, design of APIs for hardware devices, PCB design (from basics to power converters and power integrity issues), Real-time operating systems, and device drivers for high-level systems using Linux.

Learn More>

EECS 475: Introduction to Cryptography

This class is an undergraduate-level introduction to modern cryptography. The emphasis is on essential concepts, precise attack models and security definitions, and constructions of some real-world cryptosystems.

Learn More>

EECS 477: Introduction to Algorithms

Fundamental techniques for designing efficient algorithms and basic mathematical methods for analyzing their performance

Learn More>

EECS 484: Database Management Systems

Concepts and methods for the design, creation, query and management of large enterprise databases.

Learn More>

EECS 485: Web Systems

A holistic course of modern web systems and technologies, covering front end and back end. Build an Instagram clone in the first half of the semester, and a Google clone in the second.

Learn More>

EECS 489: Computer Networks

Topics include socket programming, naming and addressing, video streaming and content distribution, flow and congestion control, routing, and cloud, datacenter, and software-defined networks.

Learn More>

EECS 490: Programming Languages

This course covers the design and use of modern programming languages. We will build up systematically from formal first principles while considering human factors in language design, language prototyping, and techniques for reasoning precisely about program behavior throughout the course.

Learn More>

EECS 491: Introduction to Distributed systems

A course on the design and implementation of consistent, scalable, performant, and reliable distributed systems.

Learn More>

EECS 494: Introduction to Video Game Development

Students will learn to implement small-to-medium sized video games using the industry-standard Unity3D Game Engine.

Learn More>

EECS 495: Accessible Software Systems Design

Using established software development methodology, build software system that combines new technology and also addresses disability or illness.

Learn more>