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:
- CSE Workload Surveys (numerical data on workload based on student feedback)
- Special Topics Courses (semester-by-semester options for various requirements)
- ULCS/MDE/Capstone information sheet (student feedback on various courses)
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
ENGR 101: Introduction to Computers and Programming
Solving engineering problems with computer programming in MATLAB and C++.
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.
EECS 203: Discrete Math
Introduction to the mathematical foundations of computer science.
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.
EECS 281: Data Structures and Algorithms
Data structures and algorithms in C++.
EECS 370: Introduction to Computer Organization
Basic concepts of computer organization and hardware.
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.
EECS 373: Introduction to Embedded System Design
This class is focused on the principles and practices of modern embedded system design.
EECS 376: Foundations of Computer Science
An introduction to computer science theory, with applications.
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.
EECS 390: Programming Paradigms
This course offers a survey of programming language features and paradigms, with a focus on how to effectively use them.
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.
EECS 442: Computer Vision
Class topics include low-level vision, object recognition, motion, 3D reconstruction, basic signal processing, and deep learning.
EECS 448: Applied Machine Learning for Modeling Human Behavior
This course will cover current practices in measuring and sensing human behavior via machine learning.
EECS 470: Computer Architecture
An advanced course on computer architecture. Design a fully synthesizable, out-of-order processor.
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.
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.
EECS 477: Introduction to Algorithms
Fundamental techniques for designing efficient algorithms and basic mathematical methods for analyzing their performance
EECS 484: Database Management Systems
Concepts and methods for the design, creation, query and management of large enterprise databases.
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.
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.
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.
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.
EECS 495: Accessible Software Systems Design
Using established software development methodology, build software system that combines new technology and also addresses disability or illness.