Department of Electrical and Computer Engineering
The University of Texas at Austin
EE 306, Fall, 2021
Yale Patt, Instructor
TAs: Sabee Grewal, Ali Fakhrzadehgan, Ying-Wei Wu, Michael Chen, Jason Math, Adeel Rehman
Additional introductory comments about EE 306
August 25, 2021
Class meets: 3:30 to 5pm, MW. There will be 8 discussion sections, as shown on
The University's Fall Course Schedule. You are registered for one of them, and
in fact, your registration is tied to the unique number of that section. The
first Discussion Session will be held this Thursday or Friday, August 26 or 27.
I would like you to go to the session that you are registered for this week.
However, after this week, 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. Problem sets will be returned in
discussion section, so you will need to identify on those pieces of work which
section you wish to have your problem sets returned to. Other than that, what
section or sections you attend is completely up to you. Your final grade in
the course will be reported by me in December, and as long as your name appears
in one of the sections, it does not matter which one. Also, if you miss your
discussion section, and want to attend one of the others, that is fine also.
Or, if you want to regularly attend more than one section to get more than one
perspective, that is also okay.
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 to 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 section 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 in EE306.
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
things 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 over
the past 30 years. Most universities start with an introduction to programming
in some high level programming language like JAVA, for example. However,
there is a lot of talk among computer education professionals lately that this
approach is not the best approach. We pioneered the approach of EE 306 for the
first time at the University of Michigan in the Fall of 1995. As of this
moment, about 300 colleges and universities have adopted our approach, and the
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, C++ and Beyond, 3rd edition," by
Yale N. Patt and Sanjay J. Patel.
Simulator: Available on both Windows, Unix, and MacOS platforms. Your
TA will show you how to access it when it becomes necessary to use it. You are
also encouraged to read the tutorial on the LC-3 Simulator, available from the
EE306 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 sections, 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
algorithm. That is, you can work together on the high-level discussion of the
problem. But once you start designing the details of the algorithm, even
before 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 me 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.