Fall 2020



A close look at what goes on "under the hood" of a computer, examining how machine code for a C program runs on a linux computer. Sometimes called "Computer Organization", a course like this one is a required part of most computer science degree programs, typically taken by in the second or third year.

Topics include a review of the C programming language, machine-level data representation and assembly language, processor organization, system performance, memory caching and virtual memory, code compilation and linking, processes, signals, and some networking.

Prequisites: Permission of the instructor. Two previous computer science courses such as Introduction to Computer Science and a Data Structures course, or the equivalent are required, including familiarity with the unix shell and C programming language.

learning outcomes

By taking this course, students will see the inner workings of the unix operating system. In particular, they will


We'll meet twice weekly in a zoom session, Tue and Fri from 2-4pm, to make sure we're all on the same page and to discuss the material.

I'll post regular course notes describing what you should be doing, as well as twice weekly assignments. I may also post some videos of myself explaining some topics if that seems appropriate.

We'll be following a Carnegie Melon course which has videos, pdf slides, and packaged coding "labs" , all by the authors of the textbook.

So the course will consist of :

While I've taught this course a number of times before at Marlboro College, doing it entirely online is new to me, so this plan may well change as we go along. Please do give me feedback about what is and isn't working.


You should expect to spend at least twenty hours per week on this course, and perhaps more depending on your background and inclinations.

This material is technical and detailed; you'll need to both to dig in and study the sources, and to be persistent in working on the assignments and labs.

All work in this class is to be completed and submitted by each student - none of these are to be submitted as group projects. However, you may work with others if you choose, as long as you document in your submission what was your work and what wasn't. You may also search online for hints as needed - as long as you clearly quote your sources, and give credit where credit is due.

For all the work that you turn in, I am looking for you to demonstrate that you understand the material and have engaged with the problem fully. Simply finding an answer online and quoting it is not enough - your goal should be to convince me that after reading, studying, and with whatever assistance you found, you have understood and accomplished the task at hand.

expectations and academic integrity

A note on attribution, code, and the culture of programming...

The "culture" surrounding programming is one that encourages sharing and collaboration. Open-source software, online communities such as StackOverflow, GitHub/Gist, and the fast-paced nature of the technology world have all led to a vast collection of places where programmers can quickly and easily get help in solving common and not-so-common problems. This is a fantastic and vital part of being a 'programmer', and I encourage you to use and contribute to these communities.

This being said, there are a few important guidelines that MUST be followed in order to strike a balance between collaboration and academic integrity:

Here's an example of quoting your sources : a lot of the preceding language in this syllabus is from Andrew Cencini's Fall 2019 Intro CS course. ("Hi Andrew!")


This is the schedule I have in mind as of Oct 19. It may change depending on how things go.

In any case, go by what's on the assignments page for what's due when.

 date       calendar        deadlines         book     topic
 ----       --------        ---------         ----     ----

 Tue Oct 20 first_class                         
 Wed     21                                   chap 1   shell, C, tools
 Thu     22
 Fri     23                 HW 0              

 Mon     26                                   chap 2   bits, bytes, ints
 Tue     27                 HW 1 
 Wed     28
 Thu     29 plan day
 Fri     30                 data lab due      chap 3   machine code

 Mon Nov  2              
 Tue      3                 HW 2                       
 Wed      4 plan day                                   
 Thu      5
 Fri      6                 bomb lab due

 Mon      9  
 Tue     10 plan day        HW 3
 Wed     11                                   chap 6    cache memory
 Thu     12
 Fri     13                 attack lab due

 Mon     16                                   chap 8    processes
 Tue     17                 HW 4 (memory)
 Wed     18 
 Thu     19                                  
 Fri     20                 HW 5 (processes)

 Mon     23 
 Tue     24                 shell lab due
 Wed     25 thanksgiving
 Thu     26 thanksgiving
 Fri     27 thanksgiving

 Mon     31                                   chap 9    virtual memory
 Tue Dec  1                 HW 6
 Wed      2
 Thu      3
 Fri      4                 malloc lab due

 Mon      7                                   chap 11   networking
 Tue      8                 HW 7
 Wed      9                   
 Thu     10
 Fri     11 last_class      proxy lab due

The labs are challenging. I would like you to


Your course evaluation will be based on

For each of those four pieces I'll assign a letter grade (A=excellent, B=good, C=fair, etc) and then average those grades.

For the homework part, a reasonable effort to engage in the material for a homework assignment is worth 1.0 point. If there are for example 10 assignments, then there are a total of 10 possible points for homework complete. Turning in a partial assignment or a late work is worth less than 1.0, perhaps 0.5 depending on how late or how much is done. I often use placeholder words such as "yes" (i.e. 1.0) or "partly" (i.e. < 1.0), and then use my judgement to assign numeric values and an overall grade at the end of the term.

For the labs, your work will be judged on how how well it shows your understanding of the material. Explain what you did in a way that would make sense to someone else in the course, including a bibliography of your sources and enough context to make it clear what you're talking about.

If circumstances outside of your control - illness, technology issues, your dog ate your homework - get in the way, please do let me know, and we will try to work things out.


Questions about anything at all? Ask jim.

college policies


Bennington College provides reasonable accommodations to students with documented disabilities when such accommodations are requested and necessary to ensure equal access to College programs and facilities. If you believe you are entitled to an accommodation speak with Katy Evans, the Academic Services and Accommodations Advisor, about any disability-related needs. If approved, you will receive a memo detailing your specific accommodations; it is your responsibility to provide me with the memo and discuss the implementation of accommodations. Note that I will not be aware of your needs if you do not share this memo with me. Accommodations are not retroactive, so the sooner we meet to discuss your needs, the better. Also, students experiencing mental and/or physical health challenges that are significantly impacting their academic work are encouraged to speak with their faculty advisor and member of Academic Services ( or 440-4400) about the impact and to connect with resources through health and psychological services (440-4426 or 440-4451).

basic needs

At Bennington College, we understand that basic needs (food, housing, and wellness) have a direct impact on academic performance, mental-emotional-physical health, professional development, and holistic success of our students. If you have a personal circumstance or need that will affect your learning or performance in this course, please let me or your faculty advisor know so that we can direct you to available resources to help support you during the term.


Bennington College is committed to fostering the intellectual growth of all students, and to creating a learning environment where human cultural diversity is valued and respected. To that end, in this course all students can expect a respectful, welcoming and inclusive environment. I hope that all students in this course will openly share their unique perspectives and, just as importantly, respect the perspectives, comments, and contributions made by every other student and guest that participates in this course during the term. If you feel that at any time that this goal is not being met, please don’t hesitate to see me, or speak with a college administrator (e.g., from The Office of Diversity & Inclusion, Student Life, or Academic Services) to share your concern. /courses /fall2020 /systems /syllabus
last modified Tue November 10 2020 9:57 pm