Course Overview |
| Lecture: | CRN 47765 | 1030-1145 Tuesday/Thursday 106B8 Engineering Hall |
| Discussion: | AD1, CRN 50239 | 1400-1450 Tuesday (Thaddeus) 257 Everitt Lab |
| AD2, CRN 50240 | 1100-1150 Wednesday (Chris) 257 Everitt Lab | |
| AD3, CRN 50241 | 1300-1350 Wednesday (Nick) 241 Everitt Lab | |
| Lecturer: | Matt Frank | mif@uiuc.edu |
| TAs: | Nick Weaver | nrweaver@uiuc.edu | Christopher Co | cco2@uiuc.edu | Thaddeus Koehn | tkoehn2@uiuc.edu |
Objectives: This class will introduce you to
the concepts and abstractions central to the development of modern
computing systems, with an emphasis on the systems software that
controls interaction between devices and other hardware and
application programs. We will cover input-output semantics,
synchronization, interrupts, multitasking, virtualization of
resources, protection, and resource management concepts. You will
also be introduced to network and storage device abstractions. In
terms of practical skills, you will be exposed to software development
tools for source control, debugging, dependency management, and
compilation, and will work in the context of a real operating system
executing in a virtual machine. You will also develop software
analysis skills as well as team-based development and testing
skills.
The list of topics includes:
Prerequisites ECE 290. ECE 190 is strongly recommended. If you have not taken ECE190, please review the guide to catching up on ECE 190 material. We expect you to have the necessary background. You may want to purchase a copy of Patt & Patel's book (the ECE190 textbook), or at least print copies of the free appendices.
Textbook:The primary source of material for this class is a set of class notes to be distributed throughout the semester (most of them will be available from the start). Two books are also required, and will serve as the primary source of information for particular topics. There are also many reference materials available. Please see the class web page for a list of materials. We will also print copies of relevant manuals and books and keep them in the lab (238 Everitt). Please be considerate of your peers when using these resources. You may want to print copies of the manuals for yourself as well; most are available for free. The required textbooks are:
What you should expect:
There will be 4 prelab assignments to prepare you for the MPs,
one of which is a survey. They will be posted on the webpage for the
course and due in class on the posted due dates.
There will be 4 programming assignments, the first of which is involves setting up your class environment, and the last of which is a final project in which you will implement your own operating system. Both the fourth and final programming assignments must be written in groups of four. Assignments will typically involve both user-level and Linux kernel programming in C. Please see the tool references and MP0 for details on the environment.
There will be 3 midterms and one final exam. The midterms will be in class (10:30-11:45 AM) on Thursday, September 18, Thursday, October 16 and Thursday, November 13. The final exam will be from 8:00-11:00 AM, Wednesday, December 17.
Weight of assignments:
| Machine Problems: | 20% (1%, 9%, 10%) |
| Final Project: | 20% |
| Exams: | 13% midterm #1 13% midterm #2 13% midterm #3 17.5% final exam |
| Other: | 3.5% subjective evaluation |
Grading mechanics:
| Total Points | Minimum Semester Grade |
|---|---|
| >90 | A |
| >80 | B |
| >70 | C |
These are guaranteed minimum grades (that is, if everyone in class gets a 90 or above then I guarantee that everyone gets an A.) In past semesters this curve has been too "tough." For example, in practice an 85% was an A and a 70% was actually a B, not a C. The top 25%, or so, scores got an A, or A-, and the top 60%, or so, of the class earned at least a B-.
Website and newsgroup: The website (http://courses.ece.uiuc.edu/ece391/) will contain important announcements, lecture notes, handouts, and other material helpful for succeeding in this course.
Please read the ECE 391 web board, available through the web boards link at http://my.ece.uiuc.edu, on a daily basis. This board will serve as a forum for students to post and answer questions, discuss issues, warn of pitfalls, etc. The TAs and I will read and post to the newsgroup to focus discussions and to provide more definitive answers to posted questions.
Academic integrity: You are encouraged to study in groups, and to come to my office in groups. Studying in groups usually will result in all of you understanding the material better. You, working with other members of your study group, can often unravel concepts to the benefit of all members of the group much better than one can person can, working alone. You are allowed to work together on MP prelabs. However, you must properly credit anyone with whom you have collaborated. Should you work on the entire assignment as a group, we prefer that you turn in one copy of your solution with all of your names rather than replicating it. This policy DOES NOT APPLY to machine problems, final projects, or examinations!
All other work products of this course (machine problems, final projects, and examinations) must be your own individual work for individual assignments, and the work only of your team for team assignments. The value of a degree from the University of Illinois depends on maintaining the highest standards of academic integrity. Any violations of academic integrity will be dealt with severely. All parties involved will, at minimum, receive a 0 on that assignment or exam, their name will be reported to the department, and their final course grade will be reduced by one full letter. A second offense will result, at a minimum, in failing the class, if not expulsion from the university.
Final thoughts: I encourage everyone to stop by my office to introduce yourself before the end of the semester.
Explore! We will help you learn how to find your way around a computer system. It's up to you to become proficient at grokking (see R. Heinlen, Stranger in a Strange Land, or gcc) other people's code and figuring out how to leverage their work (we will, of course, require that you do some of these things on your assignments, but think of this class as an opportunity to improve your skills).