Department of Electrical and Computer Engineering
The University of Texas at Austin
EE 306, Fall, 2002
Yale Patt, Instructor
TAs: Linda Bigelow, Mustafa Erwa, Lester Guillory, Kevin Major,
Abhay Pradhan, Moinuddin Qureshi, Paroma Sen, Santhosh Srinath,
Matt Starolis, David Thompson, Vikrant Venkateshwar
Introduction to EE 306
August 28, 2002
Class meets: 4 to 5:30pm, MW in Welch 2.224. There will be 24 discussion
sections, as shown on the accompanying discussion sheet. You are registered
for one of them, and in fact, your registration is tied to the unique
number of that section. However, if you find it more comfortable to change
sections for any reason, feel free to do so. Education works best when you and
the instructor are on the same wavelength, so you are encouraged to shop
around for the TA who teaches best for your needs. If you do change sections,
the only thing we need you to do is let the two relevant TAs know, so you
will not fall through the cracks when it comes to grading. Problem sets and
exams will be returned in discussion section, so we will need to know which section
you are attending. Also, if you miss your discussion section, and want
to attend one of the others, that is fine also.
We will not take attendance. You get to decide whether or not you come
to class. However, this is not our first year teaching, and our experience
tells us that if you don't come to class, you probably don't pass the
course.
You are strongly encouraged to form study groups, and share your
insights as well as challenge each other's mastery of the material. Our experience
also tells us that if you form an effective study group, you will probably
all do better in the course than if you go it alone. Life (and certainly life
after graduation) is about working in teams, and we encourage you to do so
here.
Achievement will be based to a large extent on your performance on the
three exams. Copying others' homework without it going through your head is a
sure way to fall flat on your face on the exams.
This is an engineering course. It will continually build on the
knowledge you have already gained in the course. It probably is not a good idea
to let it slide and try to catch up at the last minute. Please do not
consider that a challenge.
Statement of the objectives of the course:
This course is a serious introduction to the fundamental underpinnings
of computing. It is a first course. We assume you are enrolled
because you want a serious introduction to computing.
Our objective is to remove a good deal of the mystery of how computers
work and to teach you enough programming methodology to enable you to get the
computer to do useful work for you. In that vein, we will start at the
bottom and work our way up. In every case, when we cover a sophisticated topic,
we will try to tie it to what you already know. We expect you to come out
of this course not only knowing how to do some things, but also having a
deeper understanding of why some of those things are as they are.
We should also tell you at the outset that this course represents a
major departure from the way computing has been introduced at most
universities in the last 30 years. Most universities have been starting with an
introduction to programming. However, there is a lot of talk among computer
education professionals lately that the historical approach is not the best
approach. We pioneered the approach of 306 for the first time at the University of
Michigan in Fall of 1995. As of this moment, more than 75 colleges and
universities have adopted our approach. That number is continuing to grow.
We in ECE at UT strongly agree with this approach. That is why EE 306 is now the
first required computing course for all electrical and computer engineering students.
Course materials:
Textbook: "From Bits and Gates to C and Beyond," by Yale Patt and Sanjay Patel.
Simulator: Available on both Windows and Unix platforms. Your TA will show
you how to access it.
Information on the course web page.
The programming assignments will require using the LC-2 (for Little
Computer 2), a machine invented specifically for this course. The
reason for the "2" is that we did not get it right the first time. You will write,
debug and run each of the programs on the LC-2 Simulator.
Finally, we will post material from time to time on the web that we
think you will find useful. Please check the website regularly. I would say, at
least every other day. If an announcement has been posted on the website for
more than three days, and you are not aware of it, the fact that you are not
aware of it will not be considered a legitimate excuse.
What we expect from you: We do not expect to read the book to you.
You should consider the lectures, the discussion sections, the book, and
any material on the website as different mechanisms for helping you learn the same material. We
will expect you to write five programs and solve seven problem sets. On the
problem sets you are encouraged to work together in groups. The programming
assignments you may work in groups up to the point where you begin the
actual construction of the program. That is, you can work together on
the high-level development of an algorithm. But once you start writing
code, you are on your own. The problem sets and the programming assignments
are ways for you to check to see if you are getting the material. If you
are not getting it, please see one of the TAs or the instructor for help.
We encourage you to study in groups, and, where practical, to come
to various office hours in groups. That usually will result in all of you
understanding the material better. You are encouraged to ask questions
after you have thought about the material, and to challenge assumptions.
Computer Engineering deals with "nature" that is man-made (person-made,
actually, but that is awkward) and so we the people may have made it
wrong.
Your own work: Although we encourage you to study together, the
actual programs you write and examinations you take MUST be your own work.
Providing information to another student where prohibited, or obtaining
information from another student where prohibited is considered
cheating. This includes the exchange of any information during an examination and
any code that is part of a solution to a programming assignment.
Allowing another student to read something on your paper during an examination is
considered cheating. In fact, leaving information unprotected so it
can be compromised by another student is considered cheating. This
includes sheets of paper lying about, and files that are not properly
protected. If you cheat, you violate the soul of the University, which
we take very seriously, and will deal with in the harshest possible way.
If you have any question as to what is permitted and what is not, ask
the instructor or a TA FIRST. If you don't ask first, and you do something
that is not allowed, the response "I thought it was okay" is not an
acceptable justification. I am embarrassed to have to bother all of you with this
paragraph, since for most of you, the contents of this paragraph is
totally unnecessary. But, every semester there are some who feel it is okay to
cheat. And, to attempt to deter them from cheating, I apologize for
having to take up all this time of the rest of you.
For those of you who decide to continue in this course, Good Luck.
We hope you find the experience an effective initiation to your
computing education. We also hope you have a good time during it.
Last Updated: 23 July 2002 -- kmajor