ECEn 324 Syllabus

ECEn 324 Syllabus

Spring 2010


Course Overview

This class examines the concepts underlying hardware and software components that are common to most computer systems. The main premise of the course is that "what's under the hood" matters since it affects the correctness, performance, and usefulness of application programs. The key principles underlying the material in this class are:

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.

Course Competencies

Each degree program at BYU has specified Program Educational Objectives (what the program prepares students to achieve) and Program Outcomes (specific skills, attributes, and knowledge that students should possess upon graduation). Relative to the Program Outcomes, each course has associated competencies that define specific, measurable skills, attributes, or areas of knowledge that successful completion of the course should demonstrate. For this class, these are the following:

Prerequisites

It is expected that all students enrolled will have successfully completed the following classes:

Students should also have a working knowledge of the C language and Linux programming environment.

Texts

This book is required of all course participants:
Computer Systems: A Programmer's Perspective, 2nd Edition. Randal E. Bryant and David O'Hallaron, Prentice Hall, 2011.
There are substantial differences between the 1st and 2nd editions of the text, and it is critical that you have the 2nd edition.

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.

Lab Assignments

The labs are a major emphasis in this course; all lab assignments must be completed to receive a passing grade (C- or better) in this class. Unless an exception is approved in advance, the final deadline for all lab submissions is noon on the last day of classes for the semester or term.

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.

Quizzes

To encourage you to complete the assigned reading in a timely way, you must complete an online quiz (on Blackboard) after each class on material discussed that day. The deadline for taking each quiz is 11:00 PM on the day of class. Each quiz is "multiple choice", "open-book" (you can and should consult the text when taking it), and will consist of 5 multiple-choice questions. You will have a limited amount of time (40 minutes) to complete each quiz, and you must complete it once you start it, so make sure that you've read carefully before attempting it. In the calculation of grades, your lowest 4 quiz scores will be dropped. If the assigned reading includes material that you do not understand, it is your responsibility to ask questions in class so that you are prepared for the quiz. You are to complete each quiz without any assistance from any other person, and you should not discuss the quiz with anyone else until the deadline for taking it has passed.

Homework

Homework assignments usually consist of problems from the book, but other assignments will also be given. Homework assignments are intended to keep you current on your reading and to encourage you to experiment by writing, compiling, and running relevant code on the lab computers. Thus, many problems involve some programming; in general, you must submit a printout of your source code and (sample) program output captured from running the compiled program on a machine. (Use a fixed-width font for all code listing so they can be reviewed easily by a TA.) In all cases, homework assignments are to be completed individually by each student.

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

Regardless of the points allocated per assignment, all homework assignments will be weighted equally in the calculation of final grades.

Honor Code Standards

In keeping with the principles of the BYU Honor Code, students are expected to be honest in all of their academic work. Academic honesty means, most fundamentally, that any work you present as your own must in fact be your own work and not that of anyone else. Violations of this principle may result in a failing grade in the course and additional disciplinary action by the university.

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.

Exams

Two closed-book midterms will be given in in the testing center on the dates indicated in the class schedule. The final will cover all material covered over the semester and will be given in the testing center.

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.

Tracking Your Scores

A summary of your scores on all graded assignments and exams will be posted on Blackboard. Please check your posted scores regularly to make sure they are correct. In the absence of any reports of errors, scores will be assumed correct one week after they are posted.

Final Grades

Assignments from the class will be weighted as follows:
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.

Succeeding in this Course

This course will be unlike any other course you have taken. It doesn't necessarily require more work than other technical courses, but it does require a different mindset in approaching the wide range of material covered. As previously noted, much reading, thinking, and experimentation is required. (Some maturity in the discipline is essential in making value judgements about which details to pay attention to as you read.) I expect students who complete this class to be fluent in computer systems.

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.)

Preventing Sexual Discrimination or Harassment

Sexual discrimination or harassment (including student-to-student harassment) is prohibited both by the law and by Brigham Young University Policy. If you feel you are being subjected to sexual discrimination or harassment, please bring your concerns to the professor. Alternately, you may lodge a complaint with the Equal Employment Office (D-240C ASB, 422-5895, eeo@byu.edu) or with the Honor Code Office (4440 WSC, 422-2847, hco@byu.edu).

Students with Disabilities

If you have a disability that may affect your performance in this course, you should get in touch with the University Accessibility Center (1520 WSC, 422-2767, uac@byu.edu). This office can evaluate your disability and assist the professor in arranging for reasonable accommodations.


Last updated on 27 April 2010