Summary

  • This is an intermediate course that teaches the basics of computer organization, mainly from the pogrammer's perspective. The high-level goal of this course is to make you a more versatile and dextrous programmer. We will do that by teaching you how the computer works, which will make you understand how your program is executed. The course will be roughly organized as five weeks of assembly programming, five weeks of C programming, and a five week team project.
  • The schedule on this page lists the topics we will cover by date.

Required Materials

  • Laptops will be required in class. Please bring your laptop to class every day. We'll be using them for labs. Minimum system requirements:
    • 8GB RAM
    • Intel/AMD CPU
  • Textbook: Computer Systems: A Programmer's Perspective, 3rd edition

Office Hours

  • Doyle 309
  • Tuesday: Noon - 1PM
  • Or by appointment

Labs

  • Thursday: 4PM - 6PM
  • Doyle 314

TA Allan Miller

Grading

  • Treat this course like a job where you are trying to get promoted. If you show up and do your work, you will get a good grade.
  • Each person will get five slop days to turn in assignments late. You can use up to two days per assignment.
  • No partial credit for code that does not compile.
    • Homework: 40 %
    • Participation: 10 %
    • Progress: 10 %
    • Final Project: 40 %
    Percentage Letter Grade
    91+ A
    89-90 A-
    87-88 B+
    77-86 B
    75-76 B-
    73-74 C+
    62-72 C
    60-61 C-
    50-59 D
    Below 50 F

Scheduling Conflicts

  • If you have a (legitimate) scheduling conflict with a quiz or exam, it is possible to schedule a makeup session. You must let me know at least two weeks prior to the quiz/exam date. Legitimate scheduling conflicts include religious observances.
  • LUC's academic calendar can be found here.

Mandatory Reporter Statment

  • Each faculty and staff member at Loyola University Chicago is required to report any incidents of gender-based misconduct that they are made aware of, even if it happened in the past. Gender-based misconduct includes discrimination based on actual or perceived sex, sexual orientation, gender expression or identity, or pregnancy or parenting status; dating and domestic violence; sexual misconduct (including sexual assault, sexual harassment, and sexual exploitation); and stalking.

Tools

Collaboration

  • Students are expected to write their own code for homework assignments. No copying or code sharing is allowed. Copying code from the Internet is also not allowed.

Course Schedule

Tenative

Date Topic Details
Mon 01/13 Intro, Class Structure, Policies, etc. Slides
Wed 01/15 Intro to emu8086 Homework 1 Assigned | GitHub Repo
Fri 01/17 Hex & ASCII Further Reading
  • Bryant & O'Hallaron 2.1.1 and 2.3
Mon 01/20 MLK Day - No Class Last day to drop without a W 1/21
Wed 01/22 Loops in Assembly Code Example: Filling up Memory
Further Reading
  • Bryant & O'Hallaron 3.6.5-3.6.7
Fri 01/24 Addressing Modes, Global Variables & Endianness Code Example: String Operations
Further Reading
  • Bryant & O'Hallaron 3.4.1-3.4.3
Mon 01/27 How Computers Execute Instructions
Wed 01/29 BIOS Calls Code Example: BIOS Hello World
Fri 01/31 Graphics Code Example: Graphics
Mon 02/03 The Stack Code Example: Function Calls
Further Reading
  • Bryant & O'Hallaron 3.7
Wed 02/05 Calling Conventions & Stack Frames Stack Activity
Homework 1 Due
Homework 2 Assigned
Fri 02/07 Local Variables and Stack Frames
Mon 02/10 Interrupts Further Reading
  • Bryant & O'Hallaron 8.1
Wed 02/12 Installing Linux on VMWare Ubuntu VM
Homework 3 Assigned
Fri 02/14 git & vim Homework 2 Due
Mon 02/17 Intro to NASM and Qemu
Wed 02/19 Debugging in Qemu with gdb Instruction Encodings
Debugging Programs (video)
Linux Tools (video)
Fri 02/21 RGB Color & Graphics in Qemu In Class Exercise
Mon 02/24 Intro to C
Wed 02/26 Data Types in C Homework 3 Due
Fri 02/28 Loops in C In-Class Activity
Mon 03/02 Spring Break
Wed 03/04 Spring Break
Fri 03/06 Spring Break
Mon 03/09 Makefiles, objdump, linker
Wed 03/11 Linker Scripts C Graphics Repo
Fri 03/13 C Arrays
Mon 03/16 Pointers
Wed 03/18 C structs
Fri 03/20 Boot Sector
Mon 03/23 Memory-Mapped I/O & Video Modes Further Reading:
Wed 03/25 Terminal Driver in C Video: Getting Started on Graphics Project
Video: C Structs and Makefiles
Image for Bit Blit Activity: donnie.c
Fri 03/27 x86 Protected Mode C Graphics Engine Due
Video: Boot Sequence and Hard Disk Layout
Mon 03/30 The C Library Computer Architecture
Wed 04/01 Data Structures in C Disk Image Repositories on GitHub | Disk Image Instructions
Fri 04/03 CPU Caches
Mon 04/06 Mid-Project Presentations Computer Architecture: Datapath in Simulator
Wed 04/08 Computer Architecture II
Fri 04/10 No Class: Easter Break
Mon 04/13 No Class: Easter Break
Wed 04/15 Instruction Scheduling Disk Image Lab due
Computer Architecture: Executing Instructions
Fri 04/17 In-Class Project Work Session CircuitVerse Project
Homework 4
Mon 04/20 Computer Architecture
Wed 04/22 Computer Architecture
Fri 04/24 Computer Architecture
Mon 04/27 Exam Week Homework 4 Due