Instructor Dr. Carl Burch
Telephone:450–1377 (office); 499–9892 (home)
Office:MCRey 310
Office hours:  T 8:30–9:30, W 9:30–10:30,
R 2:00–3:00, F 9:30–10:30
drop-ins, appointments always welcome

Our primary goal is to understand how computing systems work at all layers, from the digital circuit level through the assembly language level, the operating systems level, and the high-level languages level. By the end of this course, you should be able to:

  • design digital circuits to perform simple combinational and sequential tasks.
  • write assembly language programs.
  • compose C programs involving sophisticated pointer manipulation.
  • describe the purpose of the operating system and the approaches typically used to provide some of its more important behavior, such as loading programs and manipulating virtual memory.
  • describe techniques for implementing high-level language techniques, such as object-oriented design or garbage collection, in terms the computer can execute.

Key topics to be covered in this course:

  • Using the UNIX shell and basic UNIX system calls (including fork, exec)
  • The C programming language, with particular emphasis on pointers and bit operators
  • The ARM assembly language
  • Binary representation of integer, floating-point, and character data
  • Digital logic design, including Karnaugh maps, multiplexers, and flip-flops
  • Cache design
  • Process memory: program stack, heap, garbage collection
  • Operating system fundamentals: process switching, virtual memory

In place of a textbook, there are extensive notes posted on the class Web page.

Web page


There are a total of 1,000 points over the semester. Letter grades will be assigned with cutoffs at 900 for an A, 800 for B, 700 for C, and 600 for D.

Class attendance/participation 60 pts
Assignments (13, 25–50 pts each) 490 pts
Tests (three, 100 pts each) 300 pts
Final 150 pts
TOTAL 1,000 pts

I reserve the right to make adjustments in the entire grading scheme or in particular cases.

I do not normally curve grades at the end of the course; instead, I monitor your progress and perform any curves as I grade tests. When I curve test scores, I add a fixed amount to all scores; as a result, some test scores may end up being above 100%. I anticipate, but will not insist, that the median test score will be around 75%. Normally, scores in the non-test categories will be higher; the average class grade will likely be a B even though the average test grade is a C.


Several points are designated for class participation. I will assign half of these points near the semester's middle, and the other half near the semester's end.

I do monitor your class attendance. If your attendance is excellent (missing one or fewer classes each half-semester), you will receive at least 60% of these attendance/participation points. If you feel your absence should be excused, please warn me about the absence a day in advance. Whether I excuse your absence is my call.

The remaining 40% of these points are for participation, including both questions during class and responses to questions during class. I may give more than full credit in unusual circumstances. Take this as an invitation: I value your active participation in class, and I expect you to show evidence of being fully tuned in during class sessions.


Normally, an assignment will be posted on the course Web page each Friday, and it will be due the following Friday. For each 24-hour period after the time due, I will deduct up to 10% of the points possible.

For most assignments (when teamwork is unspecified), you may feel free to work alone or with one other student. If you work with somebody else, you should jointly submit a single solution. I reserve the right to change this policy, individually or collectively, at any time.

You may also ask occasional questions of classmates when you need help, but no solutions (even if only partial) should be passed between students (or teams). Under no circumstances should I receive two copies of identical or near-identical solutions.

The Linux laboratory computers are the official testbed for your solutions. Even if your solution works on another computer, your program has failed if it does not work on these. (Note our Linux network policies.)


The scheduled days for tests, listed below, will likely not change.

Tue 16 SepTest 1
Tue 7 OctTest 2
Tue 4 NovTest 3
Wed 10 DecFinal, 9:00am

All tests will last for only 60 minutes of the 75-minute class period, except for the two-hour final.

If you miss a test, you must receive advance permission from me to receive more than a 0. (Dire medical emergencies usually constitute an exception.) If you are excused from the test, I will either double your lowest quiz or exam score or administer a make-up, at my discretion. Let me know well in advance — 24 hours for exams and quizzes, and two weeks for the final. I would like to remind you that, when e-mail is impossible, telephones exist also. Do not skip a test without my prior approval!

Note that I may require you to document your reason for absence. Travel arrangements and work schedules are not adequate reasons to miss a test.


You must properly attribute any work or ideas you use in assignments for this course which are quoted or derived from others. Plagiarism includes not only copying the ideas and the written and spoken words of others, but also copying or otherwise appropriating their computer files as well. Interfering with the work of others is also a serious academic offense. I will abide by the catalog's Academic Honesty policy in referring cases to the college's Committee on Academic Integrity.

Discussing or viewing others' solutions to assignments is officially out of bounds, as is discussing or showing your own solution to others. In practice, I realize, you may help other students; this presents a problem only when the solution you submit is substantially similar to another student's. A strong correlation between your solution and a classmate's solution constitutes evidence of cheating.

Office hours

Feel free to stop by my office any time you want to talk about something related to the class. I have listed office hours, but they are not intended to limit you. The office hours represent when I will try to be available in my office, but I'm equally available at all times that my office door is open. I'm also happy to arrange appointments.

If you're not in the building, feel free to telephone my office. And if I'm not in my office, you can send e-mail. But please try to contact me directly before asking questions via e-mail: E-mail is much less efficient.


Most Hendrix students intuitively know the appropriate bounds for behavior in class. But: Cellphone use is prohibited during class, even if calls are received outside the classroom, and even if it is only text-messaging. Use of laptops is restricted to activities directly related to what is currently being discussed; I reserve the right to prohibit them if I feel this policy is being abused.

Any inappropriate use of electronic devices (or of reading materials) is worse than an absence, since it distracts other students. It will count accordingly in the attendance/participation policy; you could potentially receive a negative score.

On tests, no electronic devices other than a simple watch are permitted.


It is the policy of Hendrix College to accommodate students with disabilities, pursuant to federal and state law. Students should contact Julie Brown in Academic Support Services (505.2954; to begin the accommodation process. Any student seeking accommodation in relation to a recognized disability should inform the instructor at the beginning of the course.