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

This course is a study of the layers of abstraction composing the design of modern computing systems. 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 Assignments due
T 18 Jan Introduction
Boolean logic
   
Th 20 Jan Boolean arithmetic Chapters 1 and 2
Appendix A
 
F 21 Jan     Project 1
       
T 25 Jan Boolean arithmetic; sequential logic Chapter 3  
W 26 Jan     Project 2
Th 27 Jan Sequential logic (memory) Chapter 3  
       
M 31 Jan     Project 3
T 1 Feb Machine & assembly language Chapter 4  
  example.asm, example2.asm    
Th 3 Feb Hack assembly examples    
       
M 7 Feb     Project 4
T 8 Feb Turing machine CPU Chapter 5  
Th 10 Feb More Turing machine CPU; CPU history    
       
M 14 Feb     Project 5
T 15 Feb Assembler Chapter 6  
  Assembler.py, example.tm    
Th 17 Feb 6502 chip    
  6502 layout, SMB source code    
       
M 21 Feb     Project 6
T 22 Feb VM memory layout & access Chapter 7  
Th 24 Feb No class (ice)    
       
M 28 Feb     Project 7
T 1 Mar VM stack arithmetic & branch instructions Chapter 8  
Th 3 Mar VM function instructions    
  VMfiles.py    
       
M 7 Mar     Project 8
T 8 Mar Introduction to Jack Chapter 9  
Th 10 Mar Jack example: jumping Jack    
F 11 Mar     Project 9: Proposal
       
T 15 Mar Project 9 demos   Project 9: Demo
Th 17 Mar No class    
F 18 Mar     Project 9
       
Spring break      
       
T 29 Mar Tokenizing input Chapter 10  
  Tokenizer.py    
Th 31 Mar A simple LISP compiler    
  Compiler.py    
  Unfortunately, Dr. Yorgey pushed the wrong button so there is no recording for the 3/31 class    
F 1 Apr     Project 10/11A: Tokenizer
       
T 5 Apr Compiling Jack to VM    
  AlphaWhere/Main.jack / compiler.txt    
W 6 Apr     Project 10/11B: Statements
Th 7 Apr Compiling conditionals and loops Chapter 11  
  AlphaShow/Main.jack / compiler.txt    
  GO TO statement considered harmful    
       
M 11 Apr     Project 10/11C: Conditionals and Loops
T 12 Apr Compiling arrays    
  Average/Main.jack    
Th 14 Apr Compiling classes    
  Square/Main.jack / Square/SquareGame.jack    
  Pong/PongGame.jack / compiler.txt    
       
M 18 Apr     Project 10/11D: Classes and Arrays
T 19 Apr Operating system I Chapter 12  
Th 21 Apr Operating system II    
       
M 25 Apr     Project 12A
T 26 Apr Memory allocation and randomness    
Th 28 Apr Project work day    
F 29 Apr     Project 12B
       

Coursework and policies

Specifications grading

This course uses specifications grading. Briefly, this means that grading of individual projects is on a credit/no-credit basis, with a specification that tells you what you must do in order to get credit. Your final letter grade in the course, in turn, is based simply on the number of projects successfully completed. There will be 15 projects available to complete throughout the semester.

Grade Projects required
A 14
B 12
C 10
D 8

Due dates policy

Projects

Assignment submission form


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. See the links below for the details and specification for each project.

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

Any violations of this policy will be referred to the Committee on Academic Integrity as a major violation, with a recommended sanction of failure in the course.

# Name Due
1 Boolean logic F 21 Jan
2 Boolean arithmetic W 26 Jan
3 Memory M 31 Jan
4 Machine language M 7 Feb
5 Computer archtecture M 14 Feb
6 Assembler M 21 Feb
7 VM I: stack arithmetic M 28 Feb
8 VM II: program control M 7 Mar
9 High-level programming  
  Proposal F 11 Mar
  Demo T 15 Mar
  Final version F 18 Mar
10/11A Tokenizer F 1 Apr
10/11B Statements W 6 Apr
10/11C Conditionals and loops M 11 Apr
10/11D Classes and arrays M 18 Apr
12A Operating system I M 25 Apr
12B Operating system II F 29 Apr

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 Allison Vetter at titleix@hendrix.eduor 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!