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.