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
  • Thursday: 1 - 2 PM
  • Or by appointment
TA Tyler Arndt

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.
  • NO LATE WORK WILL BE ACCEPTED.
  • No partial credit for code that does not compile.
    • Homework: 40 %
    • Participation: 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

  • No collaboration is permitted on exams or quizzes.
  • Collaboration, but not copying, is encouraged on homework assignments. If you obtain a solution through research, e.g., in the library or online, cite your source completely and write up the solution in your own words.

Course Schedule

Tenative

Date Topic Details
Mon 01/13 Intro, Class Structure, Policies, etc.
Wed 01/15 Intro to emu8086 Homework 1 Assigned
Fri 01/17 Hex & ASCII
Mon 01/20 MLK Day - No Class
Wed 01/22 Loops in Assembly Homework 2 Due
Homework 3 Assigned
Fri 01/24 Addressing Modes Homework 1 Due
Homework 2 Assigned
Mon 01/27 Global Variables & Endianness
Wed 01/29 Functions in Assembly
Fri 01/31 BIOS Calls
Mon 02/03 The Stack
Wed 02/05 Calling Conventions Homework 3 Due
Homework 4 Assigned
Fri 02/07 Local Variables and Stack Frames
Mon 02/10 Interrupts
Wed 02/12 Installing Linux on VMWare
Fri 02/14 git & vim
Mon 02/17 Intro to NASM and Qemu
Wed 02/19 Debugging in Qemu with gdb
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