Department of Electrical and Computer Engineering
The University of Texas at Austin

EE 306, Fall, 2004
Yale Patt, Instructor
TAs: Linda Bigelow, Tommy Buell, Jeremy Carrillo, Aamir Hasan, Danny Lynch, Rustam Miftakhutdinov, Veynu Narasiman, Vishal Parikh, <<others to be named>>
Course Outline
August 25, 2004

August 25: Lecture 1. Overview of ECE 306.
The computer -- a universal computational device; given enough time and space it can do anything any other computational device does.

August 30: Lecture 2: Bits and operations on bits.
-- The bit as a unit of information.
-- Encoding of bits: Binary numbers (integer data type, ASCII characters.
-- Negative numbers, 2's complement representation, sign­extension.
-- hex representation of binary numbers.
-- Arithmetic operations on numbers. ADD, SUB. [Note that x+x = left shift]
-- Logical operations on bits. AND, OR, NOT.

September 1: Lecture 3. Bits and operations on bits (continued).

September 6: Labor Day. No class.

September 8: Lecture 4. Basic Logic Structures.
-- The transistor as a switch
-- Basic Gates (AND, OR, NOT)
-- Truth table representations
-- Any arbitrary function can be built out of these gates
(no attempt at minimization. Just an awareness exercise)

September 13: Lecture 5. Storage elements.
-- Basic storage element (Gated RS latch)
-- A register
-- a logic circuit to implement a small piece of memory (perhaps 2**2 x 3)
-- concept of memory: address space, addressability

September 15: Lecture 6. Finite State Control and Sequential Machines.
-- The notion of state
-- State diagram, Next State table
-- State Assignment
-- Implementation example: sequential machine

September 20: Lecture 7. Introduction to Von Neumann model. Emphasis on memory.
-- the basic structure of the Von Neumann model, showing the basic flow.
-- instruction = opcode, operands
-- encoding of instructions and data
-- instruction cycle (Fetch, Decode, EA, Fetch data, Execute, Store result)
-- organization of memory
-- address space, addressability revisited (MAR, MDR)

September 22: Lecture 8. ISA Specification of the LC­3
-- instruction formats
-- operates
-- LD/ST
-- indirects
-- control (condition codes: N,Z,P)
-- The datapath necessary to implement the LC­3
-- How I/O works at a very simple level [Keyboard in, screen out]
-- KBDR, KBSR, DDR, DSR (ready bit, interrupt enable bit)
-- Conversion

September 27: Lecture 9. ISA Specification of the LC­3 (continued)

September 29: Lecture 10. Problem Solving and On­Line Debugging.
-- Elements of Problem Solving (stepwise refinement, systematic decomposition, etc.)
-- Fundamentals of Debugging (setting breakpoints, single­step, deposit, examine, etc.)

October 4: Lecture 11: Review for exam, or catch up.

October 6: Lecture 12. Exam 1.

October 9: Football game vs. Oklahoma. No assignment due next Monday.
Enjoy the game. Drive safely -- I want to see all of you in class next week.

October 11: Lecture 13. A stored program in the LC­3 ISA
-- the control structure of a stored program (sequential, conditional, iteration)
-- a detailed example in machine language -- counting the number of "?"
-- example will use keyboard input, crt output.
-- example will include entering data via the keyboard and outputting on the monitor (search a file counting occurrences of a particular character -- in detail, using LC­3)

October 13: Lecture 14. Moving up a level, Assembly Language and the Assembler.
-- going from higher to lower level: interpretation vs. translation
-- translation: what do assemblers and compilers do?
-- hand assemble programs from earlier lectures.

October 18: Lecture 15. Detailed example of Lecture 13, in Assembler.

October 20: Lecture 16. Physical I/O.

October 25: Lecture 17. The TRAP instruction and I/O Service Routines
-- Keyboard and Monitor Data and Status Registers
-- Polling and Interrupt driven processing
-- ASCII/binary conversion

October 27: Lecture 18. Subroutines (JSR/RET mechanism)

November 1: Lecture 19. Stacks. Parameters. How are they passed?

November 3: Lecture 20. An application of stacks: Interrupt processing

November 8: Lecture 21. Review or catch up!

November 10: Lecture 22. Exam 2.

November 15: Lecture 23. Another application: Conversions -- ASCII/binary

November 17: Lecture 24. Another application: Recursion.

November 22: Lecture 25. The Calculator Example (pulling it all together).

November 24: Lecture 26. Review

November 25,26: Thanksgiving Day recess. Enjoy the holiday.

November 29: Lecture 27. The Calculator Example, continued.

December 1. Lecture 28. Review or Catch up! Prepare for Final exam.

December 10. Final Exam, 7 to 10pm.

Programming Assignments:
1st programming assignment (machine language) -- Due: October 17, 11:59pm.
2nd programming assignment (machine language) -- Due: October 24, 11:59pm.
3rd programming assignment (assembly language) -- Due: October 31, 11:59pm.
4th programming assignment (assembly language) -- Due: November 21, 11:59pm.
5th programming assignment (assembly language) -- Due: December 3, 11:59pm.

Problem Sets:
1st problem set, (emphasis on Chapters 1,2). Due: just before class, September 8.
2nd problem set, (emphasis on Chapter 3). Due: just before class, September 20.
3rd problem set, (emphasis on Chapter 4). Due: just before class, September 27.
4th problem set, (emphasis on Chapter 5). Due: just before class, October 4. (Note: exam on October 6)
5th problem set, (emphasis on Chapters 6-9). Due: just before class, November 8. (Note: exam on Nov 10)
6th problem set, (emphasis on Chapter 10), Due: December 3, 5pm.