## Department of Electrical and Computer Engineering

### The University of Texas at Austin

EE 306, Fall, 2017
Yale Patt, Instructor
TAs:Stephen Pruett, Siavash Zangeneh, Aniket Deshmukh, Zachary Susskind, Meiling Tang, Jiahan Liu
Course Outline
August 30, 2017

August 30: 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 31/September 1: Discussion Session. Orientation to the LRC system, tools.

September 4: Labor Day. University closed. No class.

September 6: Lecture 2: Chapter 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 7/8: Discussion Session. Emphasis on Chapters 1,2, problem set 1.

September 11: Lecture 3. Chapter 2, Bits and operations on bits (continued).

September 13: Lecture 4. Chapter 3, 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 14/15: Discussion Session. Emphasis on Chapter 2 and Problem Set 2

Problem set 1, due before class, September 18.

September 18: Lecture 5. Chapter 3 continued, Basic Logic Structures.

September 20: Lecture 6. Chapter 3 continued, 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 21/22: Discussion Session. Emphasis on Chapter 3 and Problem Set 2.

September 24: Extra Discussion Session.

Problem set 2, due before class, September 25.

September 25: Lecture 7. Chapter 3 continued.

September 27: Lecture 8. Chapter 4, 5, 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)
September 28/29: Discussion Session: Introduction to the LC-3 Simulator and Programming Lab 1.

October 2: Lecture 9. Chapter 5, 6, ISA Specification of the LC-3, Structured Programming, and the character counting problem.
• 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]
October 4: Lecture 10. Chapter 5, 6 continued.
• 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)
• a detailed example in machine language
• example will use keyboard input, crt output.
• example will include entering data via the keyboard and outputting on the monitor
October 5/6: Discussion Session: Emphasis on Programming Lab 1, Chapters 5, 6.

Programming Lab 1 due, 11:59pm, October 8.

October 9: Lecture 11. Chapter 7, Moving up a level, Assembly Language and the Assembler.

October 11: Lecture 12. Chapter 7 continued, 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
Problem set 3, due before discussion section, October 12 or 13.

October 12/13: Discussion Session: Prepare for Exam 1.

October 14: Oklahoma game, enjoy the weekend, no homework due on Monday!

October 16: Lecture 13. Review.

October 18: Lecture 14. Exam 1.

October 19/20: Discussion Session: Emphasis on Chapter 7.

October 23: Lecture 15. Chapter 9.2, Soubroutines JSR/RET, Stacks and Queues, Sequentially Stored Structures.

October 25: Lecture 16. Recursion.

October 26/27: Discussion Session: JSR/RET, Stacks, other data structures, recursion.

Problem set 4, due before class, October 30.

October 30: Lecture 17. Data structures, linked lists, doubly linked lists.

November 1: Lecture 18. Trees.

November 2/3: Discussion Session: Emphasis on Programming Lab 2.

Programming Lab 2 due, 11:59pm, November 5.

November 6: 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 8: Lecture 20. Chapter 8 continued, Physical I/O.

November 9/10: Discussion Session: Prepare for Exam 2.

Problem set 5, due before class, November 13.

November 13: Lecture 21. Review or catch up.

November 15: Lecture 22. Exam 2.

November 16/17: Discussion Session: Emphasis on Programming Lab 3.

November 20: Lecture 23. Chapter 8, 9, Traps and Interrupts.

November 22: No class, Thanksgiving vacation.

November 23/24: Discussion Session: No discussion, Thanksgiving vacation.

Programming Lab 3 due before you leave for Thanksgiving.

November 27: Lecture 24. Chapter 8, 9 continued, Traps and Interrupts.

November 29: Lecture 25. Chapter 8, 9 continued, Traps and Interrupts.

November 30/December 1: Discussion Session: Programming Lab 4, Traps, Interrupts.

Programming Lab 4 due, 11:59pm, December 3.

December 4: Lecture 26. The Calculator Example (pulling a lot together).
• ASCII/2's-complement conversion
• Stack arithmetic
December 6: Lecture 27. Preview of 319K, and the future!

December 7/8: Discussion Session: Emphasis on Programming Lab 5.

December 11: Lecture 28. Last lecture: Free for all.

Programming Lab 5 due, Monday, December 11, 5pm.

Problem set 6, not to be handed in, use for final exam preparation.

Final exam, probably, Friday evening, December 15, 7 to 10pm. BUT the Registrar could change it, so please do not make plans to leave campus until the Registrar commits to the date of the final exam. Indeed, the Registrar has changed the date. The final exam will be in UTC 2.102A on Saturday, December 16, from 7 to 10pm.

Programming Labs:
• 1st programming Lab (machine language) -- Due: October 8, 11:59pm.
• 2nd programming Lab (assembly language) -- Due: November 5, 11:59pm.
• 3rd programming Lab (assembly language) -- Due: November 22, 11:59pm.
• 4th programming Lab (assembly language) -- Due: December 3, 11:59pm.
• 5th programming Lab (assembly language) -- Due: December 11, 5pm.
Problem Sets:
• 1st problem set, (emphasis on Chapters 1,2). Due: just before class, September 18.
• 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 discussion section, October 12 or 13.
• 4th problem set, (emphasis on Chapter 7). Due: just before class, October 30.
• 5th problem set, (emphasis on Chapters 8,9). Due: just before class, November 13.
• 6th problem set, (emphasis on Chapter 10). Not to turn in.