CSCI 322
Computing Systems Organization

Time

TR 9:45am - 11:00am (B2)

Location

MCREY 315

Instructor

Dr. Brent Yorgey
yorgey@hendrix.edu
(501) 450-1377
Office Hours

Overview

How do computers work? This course answers this deceptively simple question by providing a deep dive into the layers of abstraction composing modern computing systems. Throughout the semester, you will put your new knowledge into practice by building your own complete, working (simulated) computer. Course topics include numeric representation, digital logic, CPU design, machine and assembly language, the program stack, virtual machines, compilers, assemblers, memory management and device drivers.

Learning Goals

Upon completing this course, you will be able to:

Resources

Troubleshooting


Calendar

Assignment submission form


Date Topic Reading & Links Due dates (recommended A schedule)
T 16 Jan No class (snow)    
Th 18 Jan Boolean logic stream pdf Chapters 1 and 2 Grading contract and work plan due
    Appendix A CSCI student info survey
F 19 Jan     Project 1: Boolean logic
       
T 23 Jan Boolean arithmetic (no class meeting) youtube youtube Chapter 3  
W 24 Jan     Project 2: Boolean arithmetic
Th 25 Jan Sequential logic & memory stream pdf Chapter 3  
       
M 29 Jan     Project 3: Memory
T 30 Jan Machine & assembly language stream pdf Chapter 4  
    example.asm  
    example2.asm  
Th 1 Feb Hack assembly examples stream pdf screen.asm  
    kbd.asm  
    kbd2.asm  
    sum.asm  
    sum2.asm  
       
M 5 Feb     Project 4: Machine language
T 6 Feb Turing machine CPU stream pdf Chapter 5  
Th 8 Feb More Turing machine CPU; CPU history stream pdf pdf    
       
M 12 Feb     Project 5: Computer architecture
T 13 Feb Assembler stream pdf Chapter 6  
    Assembler.py  
    example.tm  
Th 15 Feb 6502 chip stream pdf    
       
M 19 Feb     Project 6: Assembler
T 20 Feb Virtual machines + stacks stream pdf Chapter 7  
Th 22 Feb VM to Hack translation stream pdf Chapter 8 Grading contract evaluation I due
       
M 26 Feb     Project 7: VM I: Stack Arithmetic
T 27 Feb VM branching & function instructions stream pdf Chapter 8  
    VMfiles.py  
Th 29 Feb Project work day / open office hours    
       
M 4 Mar     Project 8: VM II: Program control
T 5 Mar No class (Dr. Yorgey sick)    
Th 7 Mar No class (Dr. Yorgey sick)    
       
M 11 Mar     Project 9: High-level programming
T 12 Mar Introduction to Jack stream pdf Chapter 9  
Th 14 Mar Jack example: Monotris stream    
       
T 19 Mar No class (spring break)    
Th 21 Mar No class (spring break)    
       
T 26 Mar Tokenizing input stream pdf Chapter 10  
    compiler24/Tokenizer.py  
    compiler24/Main.py  
Th 28 Mar Tokenizer; a simple LISP compiler stream compiler24/Tokenizer.py  
    compiler24/LISPCompiler.py  
F 29 Mar     Project 10/11A: Tokenizer
       
T 2 Apr Compiling Jack to VM stream compiler24/lisp.txt  
    compiler24/LISPCompiler.py  
    compiler24/VMWriter.py  
    compiler24/jack.txt  
    compiler24/jack_compiler.txt  
W 3 Apr     Project 10/11B: Statements
Th 4 Apr Compiling: symbol tables, conditionals, and loops stream compiler24/jack.txt Grading contract evaluation II due
    compiler24/jack_compiler.txt  
    compiler24/AlphaWhere.jack  
    Chapter 11  
    GO TO statement considered harmful  
       
M 8 Apr     Project 10/11C: Conditionals and Loops
T 9 Apr Compiling arrays stream compiler24/Average.jack  
Th 11 Apr Compiling classes stream compiler24/Square/Main.jack  
    compiler24/Square/SquareGame.jack  
    compiler24/Square/Square.jack  
    compiler24/Pong/PongGame.jack  
       
M 15 Apr     Project 10/11D: Classes and Arrays
T 16 Apr Operating system I stream pdf Chapter 12  
Th 18 Apr Operating system II stream pdf    
       
M 22 Apr     Project 12A: Operating System I
T 23 Apr Memory allocation and randomness    
  Course evaluations    
Th 25 Apr Project work day    
F 26 Apr     Project 12B: Operating System II

Grading

Grading contracts

You will prepare and submit for my approval a grading contract and work plan explaining your chosen final grade and what you will do to achieve it. You will then earn your chosen final grade by fulfilling the agreed-upon contract.

This may be different than what you are used to. Professor Cathy Davidson of CUNY perfectly sums up the reasons for doing things this way:

The advantage of contract grading is that you, the student, decide how much work you wish to do this semester; if you complete that work on time and satisfactorily, you will receive the grade for which you contracted. This means planning ahead, thinking about all of your obligations and responsibilities this semester and also determining what grade you want or need in this course. The advantage of contract grading to the professor is no whining, no special pleading, on the student’s part. If you complete the work you contracted for, you get the grade. Done. I respect the student who only needs a C, who has other obligations that preclude doing all of the requirements to earn an A in the course, and who contracts for the C and carries out the contract perfectly.

Required components of a grading contract

There is no specific format required for a grading contract, but it must have the following components:

Example grading contract

For example, a grading contract might look like this:

My desired course grade in CSO is a C. To achieve this grade, I will complete the following:

I will use the recommended deadline schedule for 9 projects, except that my deadlines will be at 10pm instead of 5pm, and I will turn in Project 5 by 2/24 instead of 2/26. [Your schedule of deadlines will hopefully be more detailed/customized than this.]

My work plan is as follows: [your detailed work plan here]

Grading contract submission

You must turn in an initial proposed grading contract by the start of class on Thursday, January 18th. After the initial submission, I may require some revisions before I approve your contract.

Contract evaluation and adjustment

Two times during the semester (Thursday, February 22 and Thursday, April 4) you are required to reflect on your progress in the course and complete an evaluation of your work, comparing it against what you agreed to in your grading contract. Your evaluation should:

  1. Contain a copy of your original grading contract, with items you have completed checked off.

  2. Revise your grading contract with more specific details as appropriate, for example, regarding which projects you intend to complete.

  3. Include a 1-2 paragraph reflection, which answers questions such as the following:

    • What have you done well?
    • What have you learned?
    • What could you do to improve your learning?
    • What could I (the instructor) do to improve your learning?
    • Are there ways in which you have not lived up to the requirements of your contract, and if so, what steps are you taking, or will you take, to rectify that?

Your evaluation is also an opportunity to request an adjustment to your contract in either direction. If you find that you will be unable to meet the obligations of your contract, you may request to move to a lower grade and its requirements. Contrariwise, if you find that you’ve been performing above the obligations of your contract, you may request to fulfill the requirements for a higher grade.

Note, however, that you don’t have to wait for an evaluation to adjust your contract. If your life has really gone off the rails (or if, say, you are finding the class easier and more enjoyable than you thought!) just come and talk to me about adjusting your contract.

A, B, and C grades

D and F grades

[Adapted from Cathy Davidson.] You cannot intentionally contract for a grade of D (and certainly not for an F). However, I reserve the right to award a grade of D or F to anyone who fails to meet their contractual obligations in a systematic way. A “D” grade denotes some minimal fulfilling of the contract (typically, I would want to see at least 5 projects complete). An “F” denotes absence of enough satisfactory work, as contracted, to warrant passing of the course. Both a “D” and “F” denote a breakdown of the contractual relationship.


Coursework and policies

Projects

Your work in this course will consist of a series of challenging projects from our textbook. Taken all together, they will result in a complete, working (simulated) computer.

Below you will find a list of all the projects in one place, as well as suggested deadlines and subsets of projects depending on your desired grade.

The average completion time shown for each project is based on self-reported time spent by students in Spring 2022. However, keep in mind that actual reported times varied widely. There was not enough data to compute a meaningful average for project 12B, but it is probably similar to 12A.

Assignment submission form


# Topic Avg time (hrs) A B C
1 Boolean logic 5 F 19 Jan F 19 Jan M 22 Jan
2 Boolean arithmetic 5 W 24 Jan W 24 Jan M 29 Jan
3 Memory 5 M 29 Jan M 29 Jan W 7 Feb
4 Machine language 6 M 5 Feb M 5 Feb F 16 Feb
5 Computer archtecture 7 M 12 Feb W 14 Feb M 26 Feb
6 Assembler 8 M 19 Feb M 26 Feb  
7 VM I: stack arithmetic 8 M 26 Feb M 4 Mar  
8 VM II: program control 8 M 4 Mar    
9 High-level programming 7 M 11 Mar M 11 Mar M 11 Mar
10/11A Tokenizer 5 F 29 Mar M 1 Apr F 5 Apr
10/11B Statements 7 W 3 Apr W 10 Apr M 15 Apr
10/11C Conditionals and loops 8 M 8 Apr W 17 Apr  
10/11D Classes and arrays 8 M 15 Apr    
12A Operating system I 6 M 22 Apr F 26 Apr F 26 Apr
12B Operating system II ? F 26 Apr    

Keep in mind that the deadlines in the above table are only suggestions! You can and should customize to your heart’s content. For example:

Deadlines, extensions, and resubmissions

Academic integrity

Projects must be completed individually. Your experience of learning how a computer works depends directly on your independent completion of these projects.

Since completion of the projects is the fundamental learning opportunity in this class, issues of academic integrity will be taken very seriously. Typically, plagiarism on a project will carry a recommended sanction of failure in the course.


Expectations and accommodations

Expectations

Although you and I play different roles in the course, we both have your learning as a common goal. There are things I expect from you as a student in the course, but there are also things you can expect of me as the course instructor and facilitator.

If I am not fulfilling my responsibilities outlined below, you are welcome (and encouraged!) to call me out, perhaps via the anonymous feedback form. I will also initiate a conversation if you are not fulfilling yours. However, none of us will meet all of the expectations perfectly—me included!—so it’s also important that we have grace and patience with one another.

What I expect from you What you can expect from me
Communication
  • Check your email and Teams for occasional course announcements.
  • Let me know via email or Teams message if you will need to miss class for some reason.
  • Let me know as soon as possible if you feel you are struggling, would like extra help, or have something going on that will affect your engagement in the course or your ability to fulfill your responsibilities.
  • Clearly communicate expectations, assignment details and dates, and grading standards.
  • Return grades and feedback on submitted work within two weekdays of submission.
  • Respond to emails within 24 hours.
Preparation
  • Come prepared to fully engage in class meetings, with distractions minimized, to the best of your ability.
  • Spend time outside of class actively practicing unfamiliar or shaky concepts or skills (not just reading over notes).
  • Have a concrete plan for how we will spend each class meeting, prepared to lead you through the plan.
Engagement
  • Make myself available to meet outside of class, and give you my full attention during a meeting.
  • Be committed to your learning, open to feedback and willing to respond in substantive ways to your suggestions or concerns.

Attendance

Attendance in this class is not required as part of your grade. However, I do expect you to attend and appreciate knowing in advance if you will need to miss class.

Disabilities

If you have a documented disability or some other reason that you cannot meet the above expectations, and/or your learning would be best served by a modification to the usual course policies, I would be happy to work with you—please get in touch (via Teams or email)! The course policies are just a means to an end; I don’t care about the policies per se but I do care about you and your learning.

It is the policy of Hendrix College to accommodate students with disabilities, pursuant to federal and state law. Students should contact Julie Brown in the Office of Academic Success (505.2954; brownj@hendrix.edu) 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.

Diversity and Inclusion

Hendrix College values a diverse learning environment as outlined in the College’s Statement on Diversity. All members of this community are expected to contribute to a respectful, welcoming, and inclusive environment for every other member of the community. If you believe you have been the subject of discrimination please contact Dean Mike Leblanc at leblanc@hendrix.edu or 501-450-1222 or the Title IX Coordinator Jennifer Fulbright at titleix@hendrix.edu or 501-505-2901. If you have ideas for improving the inclusivity of the classroom experience please feel free to contact me. For more information on Hendrix non-discrimination policies, visit hendrix.edu/nondiscrimination.

Mental and Physical Health

Hendrix recognizes that many students face mental and/or physical health challenges. If your health status will impact attendance or assignments, please communicate with me as soon as possible. If you would like to implement academic accommodations, contact Julie Brown in the office of Academic Success (brownj@hendrix.edu). To maintain optimal health, please make use of free campus resources like the Hendrix Medical Clinic or Counseling Services (501.450.1448). Your health is important, and I care more about your health and well-being than I do about this class!