SLU logo

CSCI 2400 - Computer Architecture
ECE 3217 - Computer Architecture and Organization

Fall 2016

Instructor David Ferry, Homepage
Course Web Site
Course meeting times Monday, Wednesday, & Friday from 11:00 - 11:50, Ritter Hall Rm. 236
Midterm exams
Oct 14th, Nov 11th, regular class time and place
Final exam
Dec. 9th, 8:00AM - 9:50AM
Office hours Monday & Wednesday from 2:00 to 3:00, Friday from 10:00 to 11:00

  1. Course Description
  2. Prerequisites
  3. Assignments
  4. Course Schedule
  5. Textbooks and Other Resources
  6. Grading
  7. Links
  8. Academic Honesty
  9. Academic Support

Course Description

Computers are designed to perform useful work by executing software, and users of computer systems typically think of computer operation in terms of software and source code. However, computers are physical artifacts and software ultimately executes on hardware. The purpose of this course is to show how high level programs are achieved in hardware, and how modern computer systems are designed in order to facilitate efficient execution.

The goal of this course is for each student to learn:

Catalog Description: Introduction to the organization and architecture of computer systems, including aspects of digital logic, data representation, assembly level organization, memory systems and processor architectures.



Required course textbook: Computer Systems: A Programmer's Perspective, 3rd Ed. by Bryant and O'Hallaron, Pearson, 2016

(book's website)

(code examples)

(book errata)

Supporting: C Programming (a free online book providing a useful C reference)


There will be approximately 7-9 assignments for this course. These are a mix of written and programming assignments whose purpose is to apply course concepts.

Assignments submitted on time will be given full credit. Assignments submitted up to 24 hours late will be given a ten percent penalty. Assignments submitted between 24 hours and 48 hours late will be given a twenty percent penalty. Assignments submitted after 48 hours late will not be given credit, except in the case of extenuating circumstances pre-approved by the instructor.

Course Schedule

A tentative course schedule is below. Note that this schedule may change over the course of the semester. When changes occur, students will be given enough advance notice so that readings and other preparation may be accommodated.
Date Topic Readings Notes
1 Aug 22 Course Intro (PDF) CSAPP Ch. 1
2 Aug 24 Data Representation: bits, bytes, ints, text, pointers (PDF)
Topic: Bits. Bytes. Binary, Octal, and Hexadecimal number systems.
Bit-Depth and Color Representation
3 Aug 26 Topic: Unsigned integer representation CSAPP Ch. 1
4 Aug 29 Topic: Signed integer representation CSAPP Sec. 2.1-2.4
5 Aug 31 Topic: Text data and pointers CSAPP Sec. 2.1-2.4 Hwk #1 Assigned
6 Sep 2 Topic: Bitwise and Arithmetic Operations (PDF) CSAPP Sec. 2.2-2.4
7 Sep 5 No Class - Labor Day
8 Sep 7 Topic: Complements, Addition, Subtraction CSAPP Sec. 2.2-2.4
9 Sep 9 Topic: Multiplication, Division
Topic: Floating Point (PDF)
CSAPP Sec. 2.2-2.4 Hwk #1 Due
10 Sep 12 Topic: Floating Point Examples CSAPP Sec. 2.3-2.4
11 Sep 14 Topic: IEEE Floating Point CSAPP Sec. 2.3-2.4
12 Sep 16 Topic: Floating Point Add, Multiply, Cast CSAPP Sec. 2.3-2.4
13 Sep 19 Intro to Linux, C, and Machine Language No Readings Hwk #2 Assigned
14 Sep 21 Topic: Intro to Linux and C (PDF) hello.c
15 Sep 23 Continuing Intro to C strings_arrays.c
16 Sep 26 Continuing Intro to C factorial.c
17 Sep 28 Topic: Machine-Level Programming (PDF) CSAPP Sec. 3.1-3.5 Hwk #2 Due
18 Sep 30 Topic: History of x86 ISA CSAPP Sec. 3.1-3.5
19 Oct 3 Topic: Turning C into Object Code / Assembly Example CSAPP Sec. 3.1-3.5
20 Oct 5 Topic: Assembly Instructions, Registers, Operands, mov and swap example CSAPP Sec. 3.1-3.5 Hwk #3 Assigned
21 Oct 7 Program: basic.s CSAPP Sec. 3.1-3.5
22 Oct 10
23 Oct 12 Exam #1 Review Hwk #3 Due
24 Oct 14 Exam #1
25 Oct 17 No class - Fall Break
26 Oct 19 Exam Discussion CSAPP Sec. 3.4-3.6 Midterm Reinforcement
27 Oct 21 Assembly Programming 1: Hello, world! CSAPP Sec. 3.4-3.6 Hwk #4 Assigned
28 Oct 24 Topic: Machine Programming 2
Assembly Programming 2: Addressing
CSAPP Sec. 3.4-3.6
29 Oct 26 Assembly Programming 3: Arithmetic CSAPP Sec. 3.6-3.7
30 Oct 28 Assembly Programming 4: Flags CSAPP Sec. 3.6-3.7
31 Oct 31 Assembly Programming 5: Control Flow CSAPP Sec. 3.6-3.7
32 Nov 2 Assembly Programming 6: Array Search CSAPP Sec. 3.7-3.8
33 Nov 4 In-Class Programming CSAPP Sec. 3.7-3.8 Hwk #4 Due
34 Nov 7 In-Class Programming CSAPP Sec. 3.7-3.8 Hwk #5 Assigned
35 Nov 9 Exam Review CSAPP Sec. 3.7-3.8
36 Nov 11 Exam #2 Hwk #5 Due
37 Nov 14 Topic: Intro to the Y86 ISA CSAPP Sec. 4.1-4.3
38 Nov 16 Topic: Sequential Processor Architecture CSAPP Sec. 4.1-4.3
39 Nov 18 Continuing Sequential Architecture CSAPP Sec. 4.1-4.3 Hwk #6 Assigned
40 Nov 21 Topic: Pipelined Processor Architecture CSAPP Sec. 4.3-4.5
41 Nov 23 No class - Thanksgiving Break
42 Nov 25 No class - Thanksgiving Break
43 Nov 28 Continuing Pipelined Architecture CSAPP Sec. 4.3-4.5
44 Nov 30 Pipeline Hazards CSAPP Sec. 4.3-4.5 Hwk #6 Due
45 Dec 2 Topic: Cache Organization CSAPP Sec. 4.5, 6.2-6.4, 9.4, and 9.6 Hwk #7 Assigned
46 Dec 5 Topic: Cache Organization CSAPP Sec. 4.5, 6.2-6.4, 9.4, and 9.6
47 Dec 9 Final Exam - 8:00 to 9:50 Hwk #7 Due


Your grade will be determined as follows:

Activity Grade Percentage
Assignments 45%
Participation 5% each
Midterm Exams 15% each
Final 20%

Grading is done on a straight scale (uncurved) with a 90%, 80%, 70%, and 60% guaranteeing an A-, B-, C-, and D- respectively. The grading system may be curved upwards at the discretion of the instructor.

Links / Resources

Data Representation:
ASCII info on Wikipedia    (table of printable characters)
ASCII Table at
(An ASCII table is available in the blue textbook, though it's not as easy to read)

Digital Logic:
MultiMedia Logic digital logic simultor
Intro to Digital Logic at

Intel x86 Assembly:
template.s -- a simple .s assembly file you can use as a template for further development
asm2exe -- script to create executable from .s file   (e.g.    ./asm2exe abs_asm.s -g      // '-g' optional for debugging)
x86 Assembly and GDB Debugger Tutorial

Linux/Unix links:
Linx Command Line Cheat Sheet   by Dave Child       (middle column most relevant to class)
Unix Tutorial for Beginners       (great tutorial if you're new to Linux)

vi Editor:
vi Cheat Sheet

Assembly Programming Game!
TIS-100 (requires no experience, does not use x86)

Academic Honesty

Students are expected to adhere to the academic integrity and honesty policies as defined by both the University's academic integrity policy and the College of Arts & Sciences academic honesty policy.

Two particular points with regards to this class include:

Academic Support

In recognition that people learn in a variety of ways and that learning is influenced by multiple factors (e.g., prior experience, study skills, learning disability), resources to support student success are available on campus. Students who think they might benefit from these resources can find out more about:

Students with disabilities or suspected disabilities are strongly encouraged to both bring any additional considerations to the attention of the instructor and make full use of the university's Disability Resource Center.