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 Boolean Algebra & Addition Further Reading
  • Bryant & O'Hallaron 4.2.1-4.2.2
Mon 02/03 The Stack Further Reading
  • Bryant & O'Hallaron 3.7
Wed 02/05 Calling Conventions & Stack Frames 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 Homework 2 Due
Homework 3 Assigned
Fri 02/14 git & vim
Mon 02/17 Intro to NASM and Qemu
Wed 02/19 Debugging in Qemu with gdb Homework 3 Due
Debugging Programs (video)
Linux Tools (video)
Fri 02/21 RGB Color & Graphics in Qemu
Mon 02/24 Intro to C
Wed 02/26 Data Types in C
Fri 02/28 Loops in C
Mon 03/02 Functions in C
Wed 03/04 Header Files
Fri 03/06 Calling Assembly Functions from C
Mon 03/09 Makefiles, objdump, linker
Wed 03/11 Linker Scripts Project proposals due sometime around here
Fri 03/13 C Arrays
Mon 03/16 Pointers Project proposal feedback meetings
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
Fri 03/27 x86 Protected Mode
Mon 03/30 The C Library
Wed 04/01 Data Structures in C
Fri 04/03 CPU Caches
Mon 04/06 Mid-Project Presentations
Wed 04/08 Instruction Dependences
Fri 04/10 Instruction Scheduling
Mon 04/13 In-Class Project Work Session
Wed 04/15 In-Class Project Work Session
Fri 04/17 In-Class Project Work Session