**REQUIRED TEXTS: **McGraw Hill, Introduction to Computing Systems: From bits & gates to C & beyond, Patt & Patel, 2003, Second Edition

**REFERENCE TEXTS: **Course handouts.

**COURSE INSTRUCTOR: Prof. Hai Zhou** (Fall), **Prof. Chi-Haur Wu** (Winter), **Prof. Russ Joseph** (Spring)

**COURSE GOALS: **To provide an introduction to computer engineering concepts, both hardware and software, with emphasis placed on digital logic concepts. Topics include binary number representations, Boolean algebra, simplification methods for combinational circuits, introduction to sequential circuit, introduction to assembly language programming, and networks. This would serve to convince declared computer engineering majors to remain in the field, and to attract students from other majors to join computer engineering. Another goal is to prepare students to take some more advanced courses in each of the fields of computer engineering. The concepts are applied to hands-on laboratory assignments that includes hardware and software designs of a controller to navigate a robot through a given obstacle course.

**PRE-REQUISITES: **None

**DETAILED COURSE TOPICS:**

**Week 1**: Introduction to computer engineering topics. Introduction to the basic gates, truth tables and principles of Boolean Algebra. (Reading: Mano & Kime 1.1, 2.1, 2.2 and 2.6[first half]).

**Week 2**: Logic minimization using the principles of Boolean Algebra and Karnaugh Maps. (Reading: Mano & Kime 2.3, 2.4, 2.5)

**Week 3: **Continuation of logic minimization to produce minimized sum of product and product of sum expression. In addition, methods for converting AND/OR implementations to NAND only implementations and OR/AND implementations to NOR only implementations. (Reading: Mano & Kime 2.6, 2.7, 2.8)

**Week 4: **Design of combinational logic circuits. (Reading: Mano & Kime 3.1-3.4) Conversion of number between any two basis, with an emphasis on decimal, binary, octal and hex numbers. The three methods for representing negative numbers, sign magnitude, ones complement and two complement. (Reading: Mano & Kime 1.2, 1.3)

**Week 5: **Design of multi-bit adder/subtractor circuit for twos complement numbers, identifying when overflow occurs. Design and use of different routing and selection devices including decoders, encoders, and multiplexers. (Reading: Mano & Kime 4.1-4.6, 5.1-5.6)

**Weeks 6: **Introduction to microcontrollers and the relationship to assembly language. (Reading: Course Handout)

**Weeks 7: **Introduction to assembly language programming and input/output control of microcontrollers. (Reading: Course Handout)

**Week 8: **Introduction to sequential logic, including latches, M/S flip flops and edgetriggered flip flops. (Reading: Mano & Kime 6.1-6.6)

**Week 9: **Introduction to registers, micro-operations and various counters. (Reading: Mano & Kime 7.1-7.9)

**Week 10: **Introduction to Memory (Reading: Mano & Kime 3.6 and 9.1-9.6)

**COMPUTER USAGE: **Laboratory assignments relating to the assembly language programming of the microcontroller used to navigate a robot through a given obstacle course.

**LABORATORY PROJECTS: **Students get hand-on experience with the following: designing digital circuits based upon a word-problem specifications, designing a combinational logic circuit to navigate a robot, and assembly language programming of a microcontroller to navigate a robot.

Each student is given a lab kit during the first week of class; this kit contains a breadboard, power supply, digital logic probe, tweezers for handling the wires, LEDs, resistors and TTL chips.

Students also have access to numerous robots for the robot controller laboratory assignments. Each week, students are given a laboratory assignment that entails a design using concepts discussed in class the previous week. The laboratory assignments are designed to allow for the completion of a homework on a given concept prior to using the concept in the design. Every week, each student demonstrates his/her working design to the course TA. The specific design projects are given below.

**Lab 1: **Introduction to the lab kits. Students become familiar with the components in the lab kit by implementing two simple circuits. (Due week 3)

**Lab 2: **Design a simple combinational circuit based upon a given word problem. (Due week 4)

**Lab 3: **Design a complex combinational circuit, requiring the use of K-maps for logic minimization. Again a word problem is given. (Due week 5)

**Lab 4: **Design of an arithmetic circuit. (Due week 6)

**Lab 5: **Assembly language programming of a microcontroller to perform a very simple task. (Due week 8)

**Lab 6: **Assembly language programming of the microcontroller to navigate the same robot, used in lab 4, through a more complex obstacle course. (Due week 10)

**GRADES:**

Homeworks – 15%

Labs - 25%

Midterm - 30%

Final - 30%

**COURSE OBJECTIVES: **When a student completes this course, s/he should be able to:

1. Have an understanding of the field of computer engineering and an awareness of the various topics related to this field. This would serve to convince declared computer engineering majors to remain in the field, and to attract students from other majors to join computer engineering.

2. Use Boolean algebra or K-maps to simplify complex boolean expressions.

3. Convert numbers between any two number systems, especially decimal, binary, octal and hex and represent sign numbers.

4. Design arithmetic circuits to perform addition and subtraction of signed numbers and detect overflow conditions.

5. Implement functions using AND/OR gates, OR/AND gates, NORs only, NANDs only, multiplexers or decoders.

6. Design the basic flip flops using sequential logic.

7. Go from a word problem to the actual design, implementation and testing of the circuit.

8. Program simple microcontrollers in assembly language.

**ABET CONTENT CATEGORY: **25% Math and Basic Science, 75% Engineering (Design component).