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.

We're glad you are here!

If you are joining the course after the first week, here are some things you need to do:

If you are on the waitlist: talk to faculty. We want to make sure you register.

Staff office hours are available! Find the times and locations here.

This Week

Week Monday Tuesday Wednesday Thursday Friday
Sep. 14 - Sep. 18

Assignment 1 Due

Lecture 3 and 4 CodeLab

Lecture 5 and 6 zyBooks

Lab 2 Extension Deadline

Lecture 5: Functions 2

Project 1 Extra Credit

Lecture 6: Branching Project 1 Due

Current Projects and Labs

Project 1
Due 9/18 8PM
Lab 3
Due evening of your lab at 11:59PM, with extension until 9/21

Resources for Class

Fall 2026 Exams and Major Deadlines

Exam Dates
Project Deadlines

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