CSCI 210: Computer Organization (W22)

CSCI 210: Computer Organization

General Information

Professor: Simon D. Levy


Lecture: MWF 4:00-5:00pm  CGL 114

Office Hours: MWF 2:00-4:00pm and by appointment.Zoom meetings are the preferred way to meet for office hours, but I am happy to meet in person given enough notice.

Textbook: Y.N. Patt and S.J. Patel, Introduction to Computing Systems: From Bits and Gates to C and Beyond, 3rd Edition.

Course Objectives

By the end of this course you will:

    • Understand the relationship between hardware and software.
    • Be able to make use of the binary number system to translate values between the binary and decimal number systems, to perform basic arithmetic operations (i.e. addition, subtraction, multiplication, and division) and to construct machine code instructions.
    • Be able to design and implement solutions for basic programs using assembly language with a focus on data storage, selection and repetition constructs, subprograms, and array allocation and processing.
    • Be able to design logical expressions and corresponding integrated logic circuits for a variety of problems including the basic components of a CPU such as adders, multiplexers, the ALU, a register file, and memory cells.
    • Be able to explain the fetch-execute cycle performed by the CPU and how the various components of the data path are used in this process.


The work for the course will consist of

    • Homework assignments, done with your lab partner (both of you turn it in to your github repository by 11:59pm on the due date): 50% of grade
    • Two one-hour exams,  15% each = 30% of grade
    • Comprehensive final exam: 20% of grade


Washington and Lee University makes reasonable academic accommodations for qualified students with disabilities. All undergraduate accommodations must be approved through the Office of the Dean of the College. Students requesting accommodations for this course should present an official accommodation letter within the first two weeks of the (fall or winter) term and schedule a meeting outside of class time to discuss accommodations. It is the student’s responsibility to present this paperwork in a timely fashion and to follow up about accommodation arrangements. Accommodations for test-taking should be arranged with the professor at least a week before the date of the test or exam.

Final Exam Policy

The final exam for this course will be given during the final exam week. You can take this exam during any of the regularly scheduled exam periods that week. You must supply an exam envelope to the instructor or the department administrative assistant no later than noon on the last day of class. You must specify a provisional day and time on the envelope, which you are free to change on the clipboard provided outside the door of Parmly 407 any time that week. Email or phone requests to reschedule will not be accepted.

The exam will be given in Parmly 405, and you should arrive promptly before the appointed time. If you are more than 15 minutes late, you will have to reschedule your exam. If you are more than 15 minutes late to the last exam period on Friday afternoon, you will receive a grade of 0 on your exam.

Students who have approved academic accommodations must make arrangements to use those accommodations directly with the instructor no later than the last day of class. Students approved for extra time will receive that time at the tail end of the morning exam period or before the beginning of the afternoon exam period (for example, ending at 1:30 PM for a morning exam or beginning at 12:30 PM for an afternoon exam). Students approved for a low-distraction testing location should reserve that space during the last week of classes (following instructions distributed by the Dean’s Office.

Honor System

Unless stated otherwise, the exams will be done without books or notes and without assistance from other people.  For the programming assignments you should feel free to discuss approaches with other students, as long as you are not sharing or copying code.

Tentative Schedule

Monday Wednesday Friday
10 Jan
Week 1
Course introduction

Chapters 1 and 2

Number systems: binary, hex, unsigned integers Signed integers
17 Jan
Week 2
Martin Luther King Day; no classes

Due: Assignment #1

Floating-point numbers Floating-point numbers
24 Jan
Week 3
The Boolean system

Chapter 3

Due: Assignment #2

Combinational circuits: transistors, gates, and adders Control circuits and ALU
31 Jan
Week 4
Clocks, latches, and memory The von Neumann architecture

Chapters 4 and 5

Due: Assignment #3


The instruction execution cycle

Chapters 4 and 5

Review for Exam #1

07 Feb
Week 5
Exam #1 Discuss exam The LC3 instruction set: computation

The LC3 instruction set: data movement

The LC3 instruction set: control

14 Feb
Week 6
Assembly language: intro

Chapters 6 and 7

Assembly language: processor

Chapters 6 and 7

Due: Assignment #4

Assembly language: I/O

Chapter 8

28 Feb
Week 7
String processing

Chapters 7 and 8

String I/O

Due: Assignment #5

LC3 Simulator Online


Chapter 9

07 Mar
Week 8
Review for exam  Exam #2

Due: Assignment #6

Discuss Exam #2
14 Mar
Week 9
Recursive subroutines

Chapter 10

Managing a system stack Type conversions
21 Mar
Week 10
Chapters 11-19

Introduction to C programming

Modular decomposition

Arrays and pointers

Due: Assignment #7

Arrays and pointers
28 Mar
Week 11
Arrays and pointers Arrays and pointers
Due: Assignment #8

C strings and text files
04 Apr
Week 12
C strings and text files
Due: Assignment #9

C strings and text files Review for Final Exam
11 Apr Finals Week Due: Assignment #10

Useful Links

LC-3 simulator online

LC-3 Resources

LC-3 Instruction Set Card

LC-3 Programming Style Guide

Logisim: a logic circuit design and simulation environment