CSCI 230 - Computing Systems Organization

Fall 2017

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 drivers.

At the end of the course, you will be expected to be able to:
Dr. Gabriel Ferrer
M.C. Reynolds 312

Office Hours:
By appointment. To make an appointment with me, visit 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:

Lecture Time: B2 (9:45-11:00 TR)

Final Exam Period: Wednesday, December 6, 2017, 8:30-11:30 am

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

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

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 10a30
Project 10b40
Project 11a30
Project 11b40
Project 12a40
Project 12b40
Midterm Exam150
Final Exam250

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 80% of the possible points. All assignments must be submitted by the start of the final exam period to receive credit.

Computer Lab Facility: You will receive an account that enables you to use the Linux machines in MCReynolds 316. Be sure to review the lab policy page:

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
Boolean Logic
8/24ThursdayBoolean ArithmeticChapters 1 and 2
Appendix A
8/25(Friday)NoneNoneProject 1
8/29TuesdayMore Boolean Arithmetic
Sequential Logic
Chapter 3None
8/30(Wednesday)NoneNoneProject 2
8/31ThursdaySequential LogicChapter 3None
9/4(Monday)NoneNoneProject 3
9/5TuesdayMachine LanguageNoneNone
9/7ThursdayHack Assembly Examples
Overview of ARM Assembly
Chapter 4None
9/11(Monday)NoneNoneProject 4
9/12TuesdayComputer ArchitectureNoneNone
9/14ThursdayComputer ArchitectureChapter 5None
9/18(Monday)NoneNoneProject 5
Review for Exam
Chapter 6None
9/26TuesdayMidterm ExamChapters 1-6None
9/27(Wednesday)NoneNoneProject 6
9/28ThursdayVirtual Machine I: Stack ArithmeticChapter 7None
10/3TuesdayPractice with Stack Arithmetic
Memory Layout of Objects
10/4(Wednesday)NoneNoneProject 7
10/5ThursdayVirtual Machine II: Program ControlChapter 8None
10/9(Monday)NoneNoneProject 8, part 1
10/10TuesdayVirtual Machine II: Program ControlNoneNone
10/11(Wednesday)NoneNoneProject 8, part 2
10/12ThursdayFall BreakNoneNone
10/17TuesdayHigh-Level LanguageNoneNone
10/18(Wednesday)NoneNoneProject 9: Concept
10/19ThursdayHigh-Level LanguageChapter 9None
10/23(Monday)NoneNoneProject 9
10/24TuesdayCompiler I: Syntax AnalysisChapter 10None
10/26ThursdayCompiler I: Syntax AnalysisNoneNone
10/27(Friday)NoneNoneProject 10: Tokenizer
10/31TuesdayCompiler I: Syntax AnalysisNoneNone
11/1(Wednesday)NoneNoneProject 10: Parser
11/2ThursdayCompiler II: Code GenerationChapter 11None
11/6(Monday)NoneNoneProject 11: Part 1
11/7TuesdayCompiler II: Code GenerationNoneNone
11/9ThursdayCompiler OptimizationNoneNone
11/13(Monday)NoneNoneProject 11: Part 2
11/14TuesdayOperating SystemChapter 12None
11/16ThursdayOperating SystemNoneNone
11/21TuesdayNo classNoneProject 12: Part 1
11/28TuesdayOperating System ProcessesNoneNone
Course Evaluations
12/4MondayNoneNoneProject 12: Part 2
Final ExamNoneAll remaining work