EECS 183: Elementary Programming Concepts
University of Michigan
EECS 183 is an introductory course to computer science and programming, covering the basics of computing as well as problem-solving and algorithmic thinking.
This website is for everyone in the 8:30 AM, 1 PM, and 4 PM (C++) lectures. If you are in the 11:30 AM or 2:30 PM lecture (Python), please go here.
Staff office hours are available! Find the times and locations here.
This Week
| Week | Monday | Tuesday | Wednesday | Thursday | Friday |
|---|---|---|---|---|---|
| Oct. 5 - Oct. 9
Exam 1 Review, Sunday 10/4, 6-8PM, CHEM 1210 |
No labs this week |
Lecture 11: Exam 1 Review |
Exam 1 10/7 8PM No office hours Wednesday |
No office hours Thursday Lecture 12: Pass by Reference |
Current Projects and Labs
Resources for Class
Fall 2026 Exams and Major Deadlines
Exam 1: October 7, 8PM
For exam schedule conflicts, request Exam 1 alternate here
Exam 2: November 11, 8PM
For exam schedule conflicts, request Exam 2 alternate here
There is no final exam.
Project 1: September 18
Project 2: October 2
Project 3: October 23
Project 4: November 6
Final Project Core: November 24
Final Project Reach: December 11
Final Project Showcase: December 15
EECS 183 is an introductory course to computer science and programming, covering the basics of computing as well as problem-solving and algorithmic thinking.
EECS 183 is an introductory course in computer programming for computer science majors and non-majors alike. Topics include control flow, introductory data structures, algorithms using selection and iteration, basic object-oriented programming, testing and debugging. We primarily use C++ as a programming language. There are no prerequisites. EECS 183 assumes no prior programming experience.
By the end of this course, a successful student will be able to:
- Read a specification and translate it to a computer program
- Follow a process of writing one small part of a program at a time
- Comfortably use Visual Studio or XCode to write and debug code
- Write test cases that test the full range of code functionality
- Design an algorithm to generate a given output
- Write functions using both pass by reference and pass by value parameters
- Use file streams and standard streams to read input and write output
- Write a class and successfully access private and public member variables
- Run test inputs to a program and compare them to test outputs to verify a program works correctly
- Format a program according to a style guide