CSCI 322 - Computing Systems Organization

Spring 2020

Official Pandemic Revision

Course 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 driver

At the end of the course, you will be expected to be able to:
Instructor:
Dr. Gabriel Ferrer
M.C. Reynolds 312
http://ozark.hendrix.edu/~ferrer/

Office Hours:
By appointment. To make an appointment with me, visit http://drferrer.youcanbook.me. From there, you can see my availability and select an appointment time.

Also, please feel free to stop by whenever my door is open.

Class Web Page: http://ozark.hendrix.edu/~ferrer/courses/322/s20/

Lecture Time: B1 (8:15-9:30 TR)

Final Exam Period: Wednesday, May 6, 2020, 2:00-5:00 pm

Required Textbook:
The Elements of Computing Systems, Noam Nisan and Shimon Schocken, The MIT Press, 2005.
Textbook web page: www.nand2tetris.org

Grading:
There are a total of 1,000 points available over the course of the semester. The thresholds for earning each letter grade are as follows:
Letter gradePoints to achieve
A900
B800
C700
D600

Here are the semester's assignments and the associated points for each:
AssignmentTotal Value
Project 140
Project 240
Project 340
Project 440
Project 540
Project 640
Project 740
Project 8a20
Project 8b40
Project 940
Project 10-11a30
Project 10-11b30
Project 10-11c40
Project 10-11d40
Project 12a40
Project 12b40
Midterm Exam150
Final Exam Cancelled
10 free points
20 points per chapter completed
250

Building a simulated computer: Our textbook contains a series of 12 projects that, when completed, result in a complete simulated computer. We will begin by constructing a simulated CPU using logic gates. From there, we will build an assembler and compiler for creating programs. We will also create a very simple operating system.

Each project must be completed individually. Your experience of learning how a computer works depends directly on your independent completion of these assignments. The rules below are intended to make the parameters of collaboration clear.

You may: You may not: 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.

Deadlines: For each assignment, to earn full credit the assignment must be submitted to Moodle by 11:55 pm on the specified date. Any part of an assignment not submitted on time earns a maximum of 70% of the possible points. All assignments must be submitted by the start of the final exam period to receive credit.

Revised Deadline Policy: Full credit will be awarded starting with Chapter 9 for anything submitted prior Wednesday, May 13 at 5 pm. Deadlines are suggestions to indicate the pace at which you should aim for keeping up.

Accommodations: It is the policy of Hendrix College to accommodate students with disabilities, pursuant to federal and state law. Any student who needs accommodation in relation to a recognized disability should inform the instructor at the beginning of the course. In order to receive accommodations, students with disabilities are directed to contact Julie Brown in Academic Support Services at 501-505-2954.

Schedule: The anticipated schedule for the semester is below. The instructor reserves the right to alter the schedule as necessary during the semester. Unless noted otherwise, each project is due at the start of class.

DateDayTopic/ActivityReadingAssignment Due
1/21TuesdayIntroduction
Boolean Logic
NoneNone
1/23ThursdayBoolean ArithmeticChapters 1 and 2
Appendix A
None
1/24(Friday)NoneNoneProject 1
1/28TuesdayMore Boolean Arithmetic
Sequential Logic
Chapter 3None
1/29(Wednesday)NoneNoneProject 2
1/30ThursdaySequential LogicChapter 3None
2/3(Monday)NoneNoneProject 3
2/4TuesdayMachine LanguageChapter 4None
2/6ThursdayHack Assembly ExamplesNoneNone
2/10(Monday)NoneNoneProject 4
2/11TuesdayComputer ArchitectureChapter 5None
2/13ThursdayComputer ArchitectureNoneNone
2/17(Monday)NoneNoneProject 5
2/18TuesdayAssemblerChapter 6None
2/20ThursdayAssembler
Review for Midterm
NoneNone
2/25TuesdayMidterm ExamChapters 1-6None
2/26(Wednesday)NoneNoneProject 6
2/27ThursdayVirtual Machine I: Stack ArithmeticChapter 7None
3/3TuesdayPractice with Stack Arithmetic
Memory Layout of Objects
NoneNone
3/4(Wednesday)NoneNoneProject 7
3/5ThursdayVirtual Machine II: Program ControlChapter 8None
3/9(Monday)NoneNoneProject 8, part 1
3/10TuesdayVirtual Machine II: Program ControlNoneNone
3/11(Wednesday)NoneNoneProject 8, part 2
3/12ThursdayHigh-Level Language ("Jack")Chapter 9None
3/17TuesdayPandemicNoneNone
3/19ThursdayPandemicNoneNone
3/24TuesdaySpring BreakNoneNone
3/26ThursdaySpring BreakNoneNone
3/30(Monday)NoneNoneProject 9: Concept
3/31TuesdayDiscussion of Concepts
Limitations of Jack
None
4/2ThursdayDemonstrationsNoneProject 9 Demo
4/3(Friday)NoneNoneProject 9
Demo feedback incorporated
4/7TuesdayTokenizing InputChapter 10None
4/9ThursdayA Simple Compiler
Jack to VM
NoneNone
4/10(Friday)NoneNoneProject 10 & 11: Tokenizer
4/14TuesdayJack to VMNoneNone
4/15(Wednesday)NoneNoneProject 10 & 11: Statements
4/16ThursdayConditionals and LoopsChapter 11None
4/20(Monday)NoneNoneProject 10 & 11: Conditionals and Loops
4/21TuesdayClasses and ArraysNoneNone
4/23ThursdayClasses and ArraysNoneNone
4/27(Monday)NoneNoneProject 10 & 11: Classes and Arrays
4/28TuesdayOperating SystemChapter 12None
4/30ThursdayOperating SystemNoneNone
5/4(Monday)NoneNoneProject 12: Part 1
5/6Wednesday, 5 pmNoneNoneProject 12: Part 2