Instructor:  Yale Patt 
Web: 
http://www.ece.utexas.edu/~patt 
Office:  541a Engineering Sciences Building (ENS) 
Phone:  5124714085 
Email:  patt@ece.utexas.edu 
Office hours:  MW, 5:00pm to 6:30pm, at the front of the classroom or in my office (ENS 541a), and by appointment 
Important information about EE 306 is also contained in a handout titled: Introduction to EE 306. Please be sure to read it. It expands on a number of items in this Course Descriptor. Also, the handout titled: Course Outline (aka, Syllabus) contains a lecture by lecture schedule of topics for the entire semester, the major emphasis of each discussion session, the due dates of problem sets and programming assignments, and the dates of all examinations. 

Course Overview: 
This is the first course in computing for students
of computer engineering and electrical engineering. The objective is to provide
a strong foundation that a serious student can build on in later courses
across the spectrum of computer science and engineering. The idea is that a
more complete understanding of the fundamentals will help a student acquire a
deeper understanding of more advanced topics, whether that topic is in
computer architecture, operating systems, data base, networks, algorithm
design, software engineering, or whatever. The approach is "motivated"
bottomup. That is, after providing some overview of why a new concept is
important, we attempt to tie that new concept to what the student already
understands. Starting with the transistor as a switch, we build logic
gates, then more complex logic structures, then gated latches, culminating
in an implementation of memory. From there, we study the computer's instruction
cycle, and then a particular computer, the LC3 (for Little Computer 3).
We got it wrong the first couple of times! The LC3 captures the important
structures of a modern computer, while keeping it simple enough to allow full
understanding. The first programming assignment is in the machine language of
the LC3. From there, we move up to Assembly Language, and learn how an
assembler works. The remaining programming assignments are in LC3 Assembly
Language. We cover good programming style and practice, and teach debugging
from the gitgo. An LC3 Simulator allows the student to debug his/her
own programs. Input (via the keyboard) and output (via the monitor) both
use the physical device registers. System service routines, written in
LC3 Assembly Language, are used to perform I/O functions. They are invoked
by user programs by the TRAP instruction and corresponding trap vector.
Subroutine calls and returns complete the LC3 instruction set. 
Course Description: 
The course will cover the material of Chapters 1 through
10 of the textbook. A detailed outline of the contents is contained in
the textbook's
Table of Contents.
See also the handout, Course Outline (aka Syllabus), available in hard copy
and on the class web site. 
Meeting Info: 
The course consists of three hours of lecture + a one hour
discussion section each week. Lectures will be in WEL 2.224,
MW 3:30p  5:00p. Discussion sections will be scheduled at various times
of the day on Fridays. The
Course Schedule lists the meeting times and room numbers for each of
the discussion sections. Note that each discussion section has its own unique
id. Students are free to attend
the discussion section of their choice, although I would like you to attend your
assigned discussion section on September 1. 
Teaching Assistants: 
Aseem Bathla, Cameron Davison, Lisa de la Fuente, Phillip Duran, Jose Joao, Jasveen Kaur, Rustam Miftakhutdinov, Veynu Narasiman, Nady Obeid, Poorna Samanta 
Course Home Page: 
http://www.ece.utexas.edu/~patt/06f.306 
Textbook: 
Introduction to Computing Systems: from bits and gates to C and beyond;
Yale N. Patt and Sanjay J. Patel; McGraw Hill, 2004, 2nd edition.
You will need the 2nd edition. There have been many substantial changes
since the first edition. The ISBN for the 2nd edition is: 0072467509 
Additional Course Resources: 
Class handouts will be supplied when
necessary to supplement the concepts discussed in lecture.
Other information will be downloadable from the course homepage. 
Prerequisites: 
There are no formal prerequisites.
No programming experience is assumed.
On the other hand, we do assume that the student is able and highly motivated
to learn and has the energy to support that motivation. We also assume that
your mathematics background is at least at the level where you are enrolled
in the serious calculus sequence. EE 306 is intended for freshmen, but is
open to all students who want a serious introduction to computing in general
and computer engineering in particular. 
Homework Policy: 
Problem sets will be assigned periodically. Usually,
students will have between one and two weeks to complete them. Students will be encouraged
to form study groups to work homework problems. Only one copy of a problem
set per group need be turned in. There will be five programming
assignments, one in machine language, four in assembly language. Dates and
times when problem sets and programming assignments are due are contained on
the Course Outline. Students are encouraged to discuss the structure of the program with other members
of their group. However, the detailed algorithm and actual coding must
be done by the student working alone. Collaboration on the algorithm and/or
giving or accepting actual code for a program constitutes cheating, and
will be dealt with harshly.
Please see the handout: Introduction to EE 306 for more information on what constitutes cheating. 
Quiz and Exam Policy: 
There will be two exams in class, one on October 4, the other on
November 13. There will be a final exam on December 15, during the normal
final exam period. All exams will be closed book, with two exceptions:
(1) The student may bring into the exam three sheets of paper on which
the student is free to write anything he/she wishes. All three sheets must
be original sheets in the student's own handwriting. (2) The student may
bring into the exam any handouts that have been expressly permitted by
the instructor prior to the exam. The student may not have in his possession
during any exam a calculator, a mobile phone, or any other mechanism that in
the view of the instructor can distract from a fair and balanced examination. 
Final Exam: 
See above. There will be a final exam
from 7 to 10pm on December 15 during the normal final exam period. 
Grading Mechanics: 
Course Grade: Problem sets (2% each, times 6 assignments = 12%) Programming Assignments (4% each, times 5 assignments = 20%) Two inclass exams (18% each = 36%) Final exam (25%) Other (7%) Policy: Problem sets and programming assignments are due on the date and at the time specified. Makeup exams will not be given, except under very rare circumstances. Excused absence from an inclass exam must be obtained in advance, except in very rare circumstances. 