Department of Electrical and Computer Engineering
The University of Texas at Austin
EE 306, Fall, 2019
Yale Patt, Instructor
TAs: Sabee Grewal, Arjun Ramesh, Joseph Ryan, Chirag Sakhuja, Meiling Tang, Grace Zhuang
Course Outline
August 28, 2019
August 28: Lecture 1. Overview of EE 306.
- The computer -- a complex system organized in levels of interpretation.
- The computer -- a universal computational device; given enough time
and space it can do anything any other computational device does.
August 29,30: Discussion Session. Orientation to the LRC system, tools.
September 2: Labor Day. University closed. No class.
September 4: 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 5,6: Discussion Session. Emphasis on Chapters 1,2, problem set 1.
September 9: Lecture 3. Bits and operations on bits (continued).
September 11: 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)
- full ADDER, MUX, DECODER
- Basic storage element (Gated RS latch)
- A register
September 12,13: Discussion Session. Emphasis on Chapter 2 and Problem Set 1
Problem set 1, due before class, September 16.
September 16: Lecture 5. Basic Logic Structures (continued).
September 18: Lecture 6. Memory and Finite State Machines
- a logic circuit to implement a small piece of memory (perhaps 2**2 x 3)
- concept of memory: address space, addressability
- The notion of state (one of the most important concepts in engineering)
- State diagram, Next State table, State Assignment
- Implementation example: sequential machine
September 19,20: Discussion Session. Emphasis on Chapter 3 and Problem Set 2.
September 23: Lecture 7. Memory and Finite State Machines (continued).
Problem set 2, due before class, September 25.
September 25: Lecture 8. Introduction to Von Neumann model and the LC-3 ISA.
- 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)
- instruction formats
- operate, data movement, and control instructions
- LD/ST (also, indirects)
- control (condition codes: N,Z,P)
- The datapath necessary to implement the LC-3
- I/O via the TRAP instruction [Keyboard in, screen out]
September 26,27: Discussion Session: Intro to LC-3, the Simulator and Program 0.
Programming Lab 0 due, 11:59pm, September 29.
September 30: No lecture. Extra office hours in lieu of class.
October 2: Lecture 9. The LC-3 Data Path, A more sophisticated LC-3 program.
- a detailed example in machine language
- example will use keyboard input, monitor output
- example will include entering data via the keyboard and outputting on the monitor
October 3,4: Discussion Section: Chapter 5, PL1
Programming Lab 1 due, 11:59pm, October 6.
October 7: Lecture 10. Structured Programming and Debugging.
- Elements of Problem Solving (stepwise refinement, systematic decomposition, etc.)
- Fundamentals of Debugging (setting breakpoints, single-step, deposit, examine, etc.)
- the control structure of a stored program (sequential, conditional, iteration)
October 9: No class. Extra office hours in lieu of class.
October 10,11: Discussion Session: Prepare for Midterm exam.
Problem set 3, due before class, October 14.
October 14: Lecture 11. Review or catch up!
October 16: Lecture 12. Exam 1.
October 17,18: Discussion Session: Go over exam, discuss Programming Lab 2.
October 21: Lecture 13. Moving up a level. Assembly Language and the Assembler
October 23: Lecture 14. Detailed examples in Assembly Language.
- going from higher to lower level: interpretation vs. translation
- translation: what do assemblers and compilers do?
- hand assemble programs from earlier lectures.
- revisiting the character count problem
October 24,25: Discussion Session: Emphasis on Chapter 7 and Programming Lab 2
Programming Lab 2 due, 11:59pm, October 27.
October 28: Lecture 15. JSR/RET, Stack
- saving/restoring state
- success/failure mechanisms
October 30: Lecture 16. Queues, Linked Lists, Character Strings.
October 31,November 1: Discussion Session: Problem set 4, Programming Lab 3.
Problem set 4, due before class, November 4.
November 4: Lecture 17. Recursion.
November 6: Lecture 18. Recursion (continued). Trees
November 7,8: Discussion Session: Data Structures, Programming Lab 3
Programming Lab 3 due, 11:59pm, November 10.
November 11: Lecture 19. Chapter 8, Physical I/O.
- asynchronous activity
- memory mapped vs. special I/O instructions
- program control vs. device (interrupt) driven
- device registers (KBDR, KBSR, DDR, DSR)
- Synchronization via the ready bit.
- interrupt enable bit
- I/O Service Routines
November 13: Lecture 20. Physical I/O, continued.
November 14,15: Discussion Session: Prepare for Midterm 2, Programming Lab 4.
Problem set 5, due before class, November 18.
November 18: Lecture 21. Review or catch up.
November 20: Lecture 22. Exam 2.
November 21,22: Discussion Session: Go over midterm, Programming Lab 4
Programming Lab 4 due, 11:59pm, November 24.
November 25: Lecture 23. TRAPs and Interrupts.
November 27: No class, Thanksgiving Recess. Enjoy the Holiday!
December 2: Lecture 24. TRAPs, Interrupts (continued)
December 4: Lecture 25. The Calculator and what comes after EE306
- ASCII/2's-complement conversion
- Stack arithmetic
- The Calculator, itself
- Parallelism, The latest hot button!
- Preview of coming attractions: The ARM ISA
December 5,6: Discussion Session: Programming Lab 5, Prepare for Final Exam.
Programming Lab 5 due, 11:59pm, December 8.
December 9: Lecture 26. Any OTHER questions!
Problem set 6, not to be handed in, use for final exam preparation.
December 13. Final exam, 7 to 10pm.
(according to the Registrar's Course Schedule, which he can change.)
Programming Labs:
- 1st programming Lab (machine language) -- Due: October 6, 11:59pm.
- 2nd programming Lab (assembly language) -- Due: October 27, 11:59pm.
- 3rd programming Lab (assembly language) -- Due: November 10, 11:59pm.
- 4th programming Lab (assembly language) -- Due: November 24, 11:59pm.
- 5th programming Lab (assembly language) -- Due: December 8, 11:59pm.
Problem Sets:
- 1st problem set, (emphasis on Chapters 1,2). Due: just before class, September 16.
- 2nd problem set, (emphasis on Chapter 2,3). Due: just before class, September 25.
- 3rd problem set, (emphasis on Chapter 4,5). Due: just before class, October 14. (Note: exam on October 16)
- 4th problem set, (emphasis on Chapter 7,8). Due: just before class, November 4.
- 5th problem set, (emphasis on Chapters 8,9). Due: just before class, November 18. (Note: exam on November 20)
- 6th problem set, (emphasis on Chapter 9,10). Not to turn in.