Department of Electrical and Computer Engineering
The University of Texas at Austin
EE 306, Fall, 2008
Yale Patt, Instructor
TAs: Jeffrey Allan, Arvind Chandrababu, Eiman Ebrahimi, Aravind Jakkani, Khubaib,
Allison Korczynski, Pratyusha Nidamaluri, Zrinka Puljiz, Che-Chun Su, Christopher Wiley
Additional introductory comments about EE 306
August 27, 2008
Class meets: 3:30 to 5pm, MW in BUR 106. There will be 15 discussion
sessions, as shown on The University's updated Fall Course Schedule.
You are registered for one of them, and in fact, your registration is tied to
the unique number of that session. (There were initially 19 sessions, but
four were canceled due to budgetary considerations. If your session was
canceled, it is not a problem. You will be signed up for one of the other
sessions of your choosing. What is important is that you are signed up on
the books for one of the sessions.) The first Discussion Session will
be held on Friday, August 29. This Friday, I would like you to go to
the session that you are registered for. However, if you find it more
comfortable to change sessions after that 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 sessions, 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 programs will be
returned in discussion session, so we will need to know which session you
are attending. Also, if you miss your discussion session, and want to
attend one of the others, that is fine also. Or, if you want to regularly
attend more than one session to get more than one perspective, that is also
okay.
We will also have additional help sessions each day Tuesday and
Thursday in the late afternoon and evening for students who feel they need
extra help. These will not be official discussion sessions, but will be
available to whoever needs them. Feel free to attend any of them if you
find them useful.
We will not take attendance. You are in college now, and with that (in my
view) comes the responsibility for managing your time, and deciding how best
to learn what you need to know. That is, you get to decide whether or not
you come to class. I should point out, however, that the TAs and I are very
unsympathetic to a student who does not attend class or discussion session
and then expects us to make up for that with private tutoring. I should also
add that this is not my first year of teaching, and my experience has been
that if you don't come to class, you probably don't pass the course.
I am also well aware of the fact that this is for many of you your first
venture away from home, and you don't have your mother telling you to do your
homework while she is making your bed for you. You are on your own, and there
are plenty of distractions just waiting to do you in. I am not suggesting that
you abstain from all distractions and have no fun at all this semester. I am
suggesting that your ability to manage fun and study will have a lot to do
with how successful you are here. Too many students wait until they have
flunked the first exam to recognize that things are different than they were
in high school.
You are strongly encouraged to form study groups, and share your insights as
well as challenge each other's mastery of the material. Mastery of the material
will be very important to success in this course. We are well aware that you
have gotten great mileage from your ability to memorize. Our experience is
that memorization ability will not work here. The exams are geared to testing
your deep understanding, and NOT your ability to memorize. Study partners
can provide the necessary foil to test whether you really understand 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
you are encouraged 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 previously 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 the Fall of 1995. As of this moment, about 100 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, 2nd edition," by Yale N. Patt
and Sanjay J. Patel.
Simulator: Available on both Windows and Unix platforms. Your TA will show
you how to access it when it becomes necessary to use it. Our current plan
is to devote the discussion session of September 26 to that. You are also
encouraged to read the tutorial on the LC-3 Simulator, available from the
EE 306 web page.
Information on the course web page.
The programming assignments will require using the LC-3 (for Little
Computer 3), a machine invented specifically for this course. The reason for
the "3" is that we did not get it right the first time, ...or even the second
time. You will write, debug and run each of the programs on the LC-3 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 sessions, the book, and
any material on the website
as different mechanisms for helping you learn the material. We will
expect you to write five programs and solve six 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 in your dorm room, and computer 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 serious
computing education. We also hope you have a good time during it.