Introduction To Computing The Correct (Bottom Up) Approach
Yale N. Patt, Kevin J. Compton · 2020
Abstract NOTE: The first page of text has been automatically extracted and included below in lieu of an abstract Session 2632 Introduction to Computing -- The Correct (Bottom-up) Approach Yale N. Patt, Kevin J. Compton Department of Electrical Engineering & Computer Science University of Michigan, Ann Arbor Abstract The EECS department at Michigan has recently instituted a major change in its undergraduate program. Instead of starting with a high level language programming course as is done at most universities, we start students with a basic understanding of gates, latches, and the von Neumann model and programming in machine language and assembly language before the first C construct is introduced. This paper describes the course, our rationale, and some observations after teaching it for the third time. 1. Introduction/Rationale. The Electrical Engineering and Computer Science Department at the University of Michigan, Ann Arbor, has recently instituted a major change in its requirements for our undergraduate majors. We feel strongly that the conventional model practiced throughout the country of introducing majors to computing via a high level language programming course is flawed. Our answer to whether it is better to start with Pascal, C, or C++ is "none of the above." We have introduced a new course, EECS 100, Introduction to Computing, where the students start from the bottom and work up. That means, we treat (in order) CMOS transistors (briefly), logic gates, latches, logic structures, (MUX, Decoder, Adder), memory, the Von Neumann model of execution, a simple computer (the LC-2), machine language programming of the LC-2, assembly language programming of the LC-2, the high level language C, and finally some basic analysis of the algorithms the students have written. The idea is to continually build on what has gone before, so that nothing is magic, and everything can be tied to the foundation that has already been laid. EECS 100 was developed primarily by the authors, although it has benefited greatly from input from (first) other members of the Computer Science and Engineering curriculum committee, in particular Ann Ford and David Kieras, and (more recently) from the TAs who have suffered through the first few iterations, in particular, PhD student Sanjay Patel. EECS 100 is the required first course for all students at Michigan who wish to major in Computer Science, Computer Engineering, and Electrical Engineering. It is also being considered by the College of Engineering as a first course in Computing for majors in other