CSCI 230 - Computing Systems Organization

Fall 2018

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:

Lecture Time: MWF 10:10-11:00 (A3)

Room: MC Reynolds 317

Instructor: Dr. Bayazit Karaman, MC Reynolds 313

Office Hours: By appointment. To make an appointment with me, please send an email. Also, please feel free to stop by whenever my door is open.

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 grade Points to achieve
A 900
B 800
C 700
D 600

Here are the semester's assignments and the associated points for each:

Assignment Total Value
Project-1 40
Project-2 40
Project-3 40
Project-4 40
Project-5 40
Project-6 40
Project-7 40
Project-8a 20
Project-8b 40
Project-9 40
Project-10a 30
Project-10b 40
Project-11a 30
Project-11b 40
Project-12a 40
Project-12b 40
Midterm Exam 150
Final Exam 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 80% of the possible points. All assignments must be submitted by the start of the final exam period to receive credit.

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.

Date Day Topic/Activity Reading Assignment Due
08/22/2018 Wednesday Introduction
Boolean Logic
None None
08/24/2018 Friday Boolean Logic Chapter 1 and Appendix A
Hardware Simulator
None
08/27/2018 Monday Boolean Arithmetic Chapter 2 Project-1
08/29/2018 Wednesday Boolean Arithmetic None None
08/31/2018 Friday Sequential Logic Chapter 3 Project-2
09/03/2018 Monday Labor day (No class) None None
09/05/2018 Wednesday Sequential Logic None None
09/07/2018 Friday Machine Language Chapter 4 None
09/10/2018 Monday Hack Assembly Examples None Project-3
09/12/2018 Wednesday Computer Architecture Chapter 5 None
09/14/2018 Friday Computer Architecture None None
09/17/2018 Monday Assembler Chapter 6 Project-4
09/19/2018 Wednesday Assembler None None
09/21/2018 Friday Review for Exam None None
09/24/2018 Monday Review for Exam None Project-5
09/26/2018 Wednesday Midterm Exam Chapters 1-6 None
09/28/2018 Friday Virtual Machine I: Stack Arithmetic Chapter 7 Project-6
10/01/2018 Monday Virtual Machine I: Stack Arithmetic
Practice with Stack Arithmetic
None None
10/03/2018 Wednesday Practice with Stack Arithmetic None None
10/05/2018 Friday Practice with Stack Arithmetic Chapter 8 None
10/08/2018 Monday Virtual Machine II: Program Control None Project-7
10/10/2018 Wednesday Virtual Machine II: Program Control None None
10/12/2018 Friday Fall Break None None
10/15/2018 Monday High-Level Language Chapter 9 Project-8a
Project-8b
10/17/2018 Wednesday High-Level Language None None
10/19/2018 Friday High-Level Language None None
10/22/2018 Monday Compiler I: Syntax Analysis Chapter 10 Project-9
10/24/2018 Wednesday Compiler I: Syntax Analysis None None
10/26/2018 Friday Compiler I: Syntax Analysis None None
10/28/2018 Sunday None None None
10/29/2018 Monday Compiler I: Syntax Analysis None None
10/31/2018 Wednesday Compiler I: Syntax Analysis None None
11/01/2018 Thursday None None
11/02/2018 Friday No Class None Project-10a
11/05/2018 Monday Compiler I: Syntax Analysis None None
11/07/2018 Wednesday Compiler II: Code Generation Chapter 11 Project-10b
11/9/2018 Friday Compiler II: Code Generation None None
11/12/2018 Monday Compiler II: Code Generation None None
11/14/2018 Wednesday Compiler II: Code Generation Chapter 12 None
11/16/2018 Friday Operating System None None
11/19/2018 Monday Operating System None None
11/21/2018 Wednesday Thanksgiving (No class) None None
11/23/2018 Friday Thanksgiving (No class) None None
11/26/2018 Monday Operating System None None
11/28/2018 Wednesday Operating System None None
11/30/2018 Friday Operating System None None
12/03/2018 Monday Review for Final Exam None None
12/07/2018 Friday
8:30-11:30
Final Exam None Project-11a
Project-11b
Project-12a
Project-12b
All remaining work