Question: What exactly is EECS402?

Answer: EECS402 is a "practical programming course" at the University of Michigan, Ann Arbor. It is not intended for, or allowed to be taken for credit by Computer Science (CS), Computer Engineering (CE), or Electrical Engineering (EE) students. This class was developed to be a course specifically for non-CS/CE/EE students that have recognized a need for programming skills in their research and/or career, but being outside the CS/CE/EE fields, have not had a chance to take typical "CS1"/"CS2" classes.

The course was originally developed as an elective for the Bioinformatics and Biostatistics graduate programs. Those students often came to UofM with little or no programming experience, but programming was a big part of those degree programs. Since these were graduate students, taking a 200-level course such as EECS280 at UofM, wasn't appropriate, and graduate students would not be able to receive credit for such a 200-level course. Furthermore, EECS280 wasn't really the right class for these students, as EECS280 is really meant to be a foundation course for CS undergraduates. EECS280 may be a bit more "theoretical" in nature than a course like EECS402. Today, EECS402 has grown to a course taken by students across a wide variety of disciplines. Even for students that will end up programming in a language other than C++, EECS402 is a great foundation for understanding object-oriented design and development, and most of the topics covered can be easily adapted to to other object-oriented languages, such as Python or Java.

EECS402 is taught in the C++ language, and starts with no assumed programming experience. The course is a heavy-workload course, with emphasis on using good programming style, and assumes no programming experience or background. While some programming experience may help with the basics, EECS402 starts at the very beginning, and many students in the course have been very successful after registering for the course with absolutely no programming experience whatsoever. The course starts out with well-defined programming project specifications and advances to projects that are far less defined, allowing the students to have more control over the decisions that lead to the project's design, development, and testing.

At the conclusion of the course, students will have learned C++ from basics through, and including, advanced topics like inheritance, polymorphism, exceptions, etc.

Since the course is a more "practical" version of EECS280 (and maybe a little of EECS281), CS/CE/EE majors are not allowed to take the course for credit, as EECS402 would consist primarily of material they would have covered in 280/281, and those students would have already received credit for those courses.

Today, the course is taken by graduate students from many disciplines throughout the University. It is a required course for the graduate students in Data Science, and many other students take the course to gain an understanding of how to perform design and development of object-oriented programs in C++ to solve real world problems such as those they might encounter in their research, or in their careers.

While subject to change at any semester, the course is typically graded with four to six programming projects accounting for 85% of the total grade and in-class quizzes accounting for 15% of the final grade.