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.

*** Final Projects ****

  1. Find a team of 4 people to work with.
  2. Pick a project:
  3. Register your team by Monday 3/31 at 11:59 PM

This Week

Week Monday Tuesday Wednesday Thursday Friday
Mar 24 - Mar 28

Exam 2 Review, Sunday 3/23 6-8PM CHEM 1800

No Monday labs

Lecture 17 CodeLab

No Tuesday labs

Lecture 18: Exam 2 Practice

Lab 8 Extension Deadline

No Wednesday labs

No office hours Wednesday

Exam 2 3/26 6PM

No Thursday labs

No office hours Thursday

No Lecture

No Friday labs

Final Project Tutorials Sunday, 3/30 6-7PM
Elevators in 170 Weiser,
Arduino in 1324 East Hall

Current Projects and Labs

Project 4
Due Friday March 21
Lab 8
Due on the day of your scheduled lab 3/17 to 3/21

Resources for Class

Winter 2025 Exams and Major Deadlines

Exam Dates
EECS 183 Showcase

Thursday, April 24

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 24

Project 2: February 7

Project 3: February 28

Project 4: March 21

Final Project Core: April 11

Final Project Reach: April 22

Final Project Showcase: April 24

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