EECS 183 WN 2026

Welcome! Are you interested in EECS 183 for WN 2026? You’ve come to the right place! There are some changes you should be aware of before deciding which section you’d like to sign up for.

Briefly, there will be some Python sections and some C++ sections. These are essentially two different courses, though they will have many similarities:

Please note: There are Python lecture sections with Python labs, and C++ lecture sections with C++ labs. You must sign up for a lecture and lab section that match (Python lecture with Python lab, or C++ lecture with C++ lab). If you try to have a Python lecture with a C++ lab, or vice versa, you will be required to drop/add to fix this, or drop the course entirely if this doesn’t work with your schedule. Exceptions are not possible.

C++ Version

Bill Arthur and Ben Torralva

The C++ version of EECS 183 will be similar to recent semesters. For more details, please visit the current course page. By choosing the C++ version, you will learn core problem-solving and computational thinking skills, and apply them to tackle meaningful, real-world problems. The C++ version will be taught in all sections run by William Arthur and Ben Torralva.

By the end of this course, you will be able to:

Completing the C++ version of EECS 183 is an excellent and proven first step toward studies in Computer Science, Data Science, Engineering, and many other disciplines.

Python Version

Steven Bogaerts

The Python version will be taught in all sections run by Steven Bogaerts. If you choose to take the Python version, you will learn to apply computational thinking in a variety of contexts, using Python as the means of expression and with AI as the focus.

As a result of taking the Python version of EECS 183, you will be able to:

Topics include the following:

Steve, will the Python course prepare me for EECS 280, EECS 281, and beyond?

tl;dr:

Will you have an easier or harder time in those later courses, compared to someone who takes EECS 183 in C++, or ENGR 101 (Matlab and C++)? I’ll do my best to lay out various considerations below.

I’ve taught 183 in C++, I am designing 183 in Python, and I’ve also taught 280, so I understand well how these courses connect. My perspective is also shaped by having taught CS1 in various languages (C++, Python, Java) at other institutions over many years, giving me a front-row seat to how students internalize logic differently depending on their first language.

EECS 280 Does Not Assume Prior C++ Experience

As of the 2024-2025 academic year, EECS 280 is now intentionally structured to support students arriving from various language backgrounds, including Python and Java. Note, though, that many students currently in 280 still arrive with C++ experience. Because of this, the 280 instructors are actively monitoring and refining the early weeks of the course to ensure everyone can succeed. The course is very carefully designed to accommodate students with background in any language, and the instructors are extremely dedicated and talented.

What Student Backgrounds Succeed in EECS 280?

EECS 183 Python for non-CS Majors

In many professional fields outside of CS, Python has become the dominant tool for data analysis, visualization, and automation. Python has a huge ecosystem of libraries for data science, machine learning, scientific computing, web development, automation, and more. C++ is not commonly used for these tasks in most fields. Therefore, learning Python gives non-CS majors a more practical skill set that aligns with their most likely needs.

EECS 183 Python for CS Majors

The design of the Python programming language allows students to focus more deeply on algorithmic thinking and program structure without as high of a cognitive load from language features that are necessarily exposed earlier in C++. CS students must learn these complexities eventually, but in an introductory context, the pedagogical approach of this course prioritizes a deeper dive in computational logic and problem-solving patterns.

What Prior Experience Means for EECS 280

When I’ve taught EECS 280 in the past, I’ve seen students from different backgrounds have different early experiences. Any gap based on prior language experience typically narrows significantly within the first few weeks. After that, the challenge of EECS 280 comes from ideas that are new to everyone. I expect this trend to continue with the addition of 183 Python students into 280. The ‘Python-first’ path provides students with an early fluency in a language dominant in industry and data science, which complements the systems-level depth they will gain later in C++.

EECS 280 is Always a Transition

I’ll also mention that 280 is and has always been a step up in difficulty from the prerequisite options (e.g., EECS 183, ENGR 101) for everyone. But don’t let that stop you! You can and will succeed if you choose to pursue this, and EECS 183 Python is a solid choice.

EECS 183 Python Students Will Learn Some C++ As Well

I will spend a couple lectures at the end of the semester teaching C++ for Python programmers. This will not result in the same depth of C++-specific knowledge as in the C++ version of 183, but rather will show you how the logic you’ve already mastered in Python translates into C++ syntax. Your understanding of programming logic will allow you to focus on C++ syntax alone, making this transition very efficient. For students motivated to learn this material, in preparation for 280, I am confident they will be on solid ground for EECS 280.

In Conclusion

Regardless of the programming language used, both versions of EECS 183 are designed to meet the same rigorous standard of computational thinking required for the U-M CS curriculum. While EECS 183 Python is new at U-M, this approach has successful models at other top-tier institutions, and is rooted in my own experience in the classroom. I am committed to monitoring student outcomes closely and ensuring that my students have the foundation they need to thrive in 280 and beyond.

I hope that’s helpful! My goal isn’t to convince every student that Python is the ‘right’ path for them, but to ensure that those who choose it feel confident, prepared, and excited for what comes next. Whether I see you in class or not, best wishes to you!