Homework and lab assignments in this class will explore a variety of important topics, but their coverage of the important material is not exhaustive. In other words, many important points will not be addressed in assignments and may require careful reading and contemplation to understand thoroughly.
WARNING: This class requires a lot of reading: we cover almost 850 pages of the text. If you don't consistently take the time to read (and reread!) the text carefully, you cannot expect to do well on the exams. Regular class attendance will reinforce the material from the reading and give you an opportunity to ask questions about topics addressed. If you do not attend class, I will conclude that you are not concerned with your grade. Note that you are expected to read the assigned material before it is discussed in class.
Students should also have a working knowledge of the C language and Linux programming environment.
This book is recommended for those who are new to C or
who want a good C book:
The C Programming Language, 2nd Edition.
Brian W. Kernighan and Dennis M. Ritchie,
Prentice Hall, 1988.
Unless a specific lab assignment states otherwise, labs are to be completed individually by each student. Consistent and timely efforts to complete the labs are important. Labs are due before midnight on the assigned day. Late labs will be docked 20 percent per weekday (Monday-Friday) to a maximum of 80 percent. (In other words, no matter how late you finish a lab, you can still get 20 percent if the late submission is error free.) You will each be allowed a total of 2 late days without penalty for labs over the course of the entire semester or term. Use them wisely!
Regardless of the points given for each lab, all labs will be weighted equally in the calculation of final grades.
The ECEn department Linux machines in CB 425 will be used for the labs in this class. You will need a CAEDM account to access these machines. For more information about the "spice" machines and CAEDM accounts, click on the "computer help" link on the ECEn home page.
Completed homework assignments are to be submitted before 10:00pm (on the appropriate dates) using the Drop Box on Blackboard. Submissions are expected to be either pdf or raw text files. Homework placed in the dropbox after the submission deadline may receive no credit, so make sure you submit assignment in a timely way. All submissions should clearly identify your name, the course number, the assignment number, and each problem worked. Since some homework submissions can be a bit lengthy (with your source code and program output included), please make it easy to find your answer. If the TAs can't decipher it, they can't give you credit. When submitting your work via the Drop Box, make sure you "send" the file and not just "add" it. (After submission, the file should be "submitted" and not "posted" in your own Drop Box.)
To increase the amount of time the TAs have to help you (as opposed to grading homework), each homework problem (or discrete portion of a homework problem) will receive
Most of the learning in this class will come from applying the things we talk about in class. Most of the homework and all the lab assignments will require you to create code, and all code submitted must be of your own creation. For this class you will be deemed to have cheated if you obtain code required for an assignment via the internet, or if you share code, either by copying, retyping, looking at, or supplying a copy of a file. To avoid such problems, you are required to read-protect all your directories and files for this class. (Do a "man chmod" on linux machines to see how to do this.)
It is NOT cheating to help another student use the computers or class software, to help someone understand high-level design issues or the big picture of what is going on, to help someone understand the assignment, or even to help someone debug their code, but you must not write it for them.
Students are expected to adhere to the Dress and Grooming Standards. Adherence demonstrates respect for yourself and others and supports an effective learning and working environment. It is the university's expectation, and my own expectation in class, that each student will abide by all Honor Code standards. Please contact the Honor Code Office (4440 WSC, 422-2847) if you have questions about those standards.
You are responsible to schedule your time to take all exams; they will be available in the testing center over multiple days to give you some flexibility. Do not miss exams: only under very unusual circumstances will you be given an opportunity to make up an exam that you miss. Plan your travel and interview trips around your exams.
| Quizzes | 10% |
| Homework | 10% |
| Labs | 25% |
| Midterms | 25% |
| Final | 30% |
| 100% |
Although the final exam contributes just 30 percent of your final grade, you will not receive a passing grade (C- or better) in the class if you do not receive a passing grade on the final. The final exam is a comprehensive assessment of all material covered, and you must demonstrate reasonable mastery of this material to pass the class.
Separate from any concerns about the volume of information to consider, there are two noteworthy challenges in achieving this fluency. First, topics pertaining to computer systems are inherently interconnected to a myriad of operational details. The important concepts are truly understood only after diving into the details to a reasonable extent. Similarly, your understanding of the concepts discussed can only be assessed by asking questions about details. On exams, I care mostly about your understanding of the concepts, but the questions will necessarily include many details. For better or worse, this is a discipline where the details matter. Don't just skip over the details in your reading. Moreover, do your best to extract meaning from the details. If you think you have to memorize 850+ pages of trivia to succeed in this class, you are definitely approaching it in the wrong way.
A second challenge is that we cannot conveniently describe the operation of computer systems (at the level we care about) in precise mathematical terms, so we are stuck with using English descriptions which are inherently ambiguous. Detailed descriptions of system components and mechanisms can be very lengthy; our text does a good job of presenting information succinctly and at the right level, but it still can be misunderstood. As you read and participate in class discussions, you should strive to become familiar with the terminology used in the book and lectures. (Unfortunately, companies and other authors don't use exactly the same terms, but once you understand the concepts, you'll be able to understand other dialects without much trouble.) If you do not understand the terminology used in the text and our class discussions, you will struggle on the exams.
A related problem with lengthy, written descriptions is that the writer must decide on a single linear sequence in which to treat the material. No matter what order is picked, some material is better understood after exposure to topics covered later. To maximize your understanding, review old material occasionally and see if you have new insight since you saw it last. Some of the greatest "Eureka!" moments in learning about computer systems come from making connections between topics covered in different chapters in the book. Truly, interactions between the pieces are often the most interesting aspects of any system.
The best way to get your hands around everything is to immerse yourself in the class experience. Read regularly and thoroughly. Attend class and ask questions. Ask the TAs questions when they are on duty, and ask questions of the instructor during office hours. Study with others in the class. Try to stump each other with questions about how things actually work. (None of this is particularly new or innovative, but it is as important in this class as any other you'll take.)
Last updated on 27 April 2010