EECS 183: Elementary Programming Concepts in C++

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 lectures. If you are in the 11:30 AM or 2:30 PM lecture, please go here

Exam 1 - Tuesday, 2/17 at 6pm

Unless you received special instructions directly from the admin, here is where to go for the exam.

This Week

Week Monday Tuesday Wednesday Thursday Friday
Feb 16 - Feb 20

Exam 1 Review, Sunday 2/15
6-8PM
CHEM 1210

Lecture 10 CodeLab

Lecture 12 zyBooks

Lab 5 Extension Deadline

No Tuesday Labs

No office hours Tuesday

Exam 1 2/17 6PM

No Lecture

No Wednesday Labs

No office hours Wednesday

No Thursday Labs

Lecture 12: Arrays 1

No Friday Labs

Current Projects and Labs

Project 3
Due Friday 2/27
No Lab
No lab the week of Feb 16

Resources for Class

Winter 2025 Exams and Major Deadlines

Exam Dates
EECS 183 Showcase

Thursday, April 23

Michigan League Ballroom

You and your team of 4 will attend one of four, 60-minute sessions, to be scheduled later in the semester.

Project Deadlines

Project 1: January 23

Project 2: February 6

Project 3: February 27

Project 4: March 20

Final Project Core: April 10

Final Project Reach: April 21

Final Project Showcase: April 23

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