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