COMSC142: Computer Architecture and Organization

Spring 2025 Sam Bowne

This is an online class with
optional weekly class meetings
Tues 6:00 - 7:30 pm on Twitch.

You can get interactive help at 7:30 pm
any evening Mon-Thu on Zoom
Password: student1

Schedule · Lecture Slides · Projects · Syllabus

Class Description

ADVISORY: Eligibility for ENGL-090

The organization and behavior of real computer systems at the assembly-language level. The mapping of statements and constructs in a high-level language into sequences of machine instructions is studied, as well as the internal representation of simple data types and structures. Numerical computation is examined, noting the various data representation errors and potential procedural errors. May not be repeated. SC

LMC: DA
TRANSFER: CSU

Textbook

Dive into Systems (free, online)

Quizzes

The quizzes are multiple-choice, online, and open-book. However, you may not ask other people to help you during the quizzes. You will need to study the textbook chapter before the lecture covering it, and take the quiz before that class. Each quiz is due 30 min. before class. Each quiz has 5 questions, you have ten minutes to take it, and you can make two attempts. If you take the quiz twice, the higher score counts.

Use this Canvas server: Enroll Here · View Course · Reset password

Discussion Board

There are discussion board topics most weeks, and participation in the discussions is graded. There are dates listed in the schedule with Discussion assignments due.

For the topics and requirements, see the Discussion board in Canvas.

Schedule

DateDueTopic

Tue 1-28 0. Introduction
Demo: ED 30


Tue 2-4Quiz 0 and 1
Proj ED 30
1. By the C, by the C, by the Beautiful C
Demos: CL 10 and CL 20


Tue 2-11Quiz 2
Proj CL 10
Discussion 1
2. A Deeper Dive into C Programming
Demo: ED 202


Tue 2-18Quiz 3
Proj CL 20
Discussion 2
3. C Debugging Tools
Demo: C 101


Tue 2-25Quiz 4
Proj ED 202
Discussion 3
4. Binary and Data Representation
Demos: C 101 continued, ED 204


Tue 3-4Quiz 8
Proj C 101
Discussion 4
8. 32-bit x86 Assembly (IA32)
Demos: ASM 100, ASM 104


Tue 3-11Quiz 7
ASM 100
Discussion 5
7. 64-bit x86 Assembly (x86-64)


Tue 3-18Quiz 9
ASM 104
Discussion 6
9. ARM Assembly
Demos: ASM 105, ASM 110, ASM 120


Tue 3-25 Holiday -- no class

Tue 4-1Quiz 11
ASM 105 and ASM 110
Discussion 7
11. Storage and the Memory Hierarchy
Demo: ASM 200, ASM 210, ASM 310


Tue 4-8Quiz 12
ASM 120
Discussion 8
12. Code Optimization
Demo: ED 205, ED 206


Tue 4-15ASM 200 and ASM 210
Discussion 9
13. The Operating System
Demos: R 10 and R 20


Tue 4-22Quiz 13 (extra credit)
ED 204
Discussion 10
14. Leveraging Shared Memory in the Multicore Era (Part 1)
Demo: ED 210


Tue 4-29 ED 205
Discussion 11
14. Leveraging Shared Memory in the Multicore Era (Part 2)

Tue 5-6ED 206 15. Looking Ahead: Other Parallel Systems and Parallel Programming Models

Tue 5-13 Last Class: No New Material

Tue 5-13
through
Tue 5-20
  Final Exam available online throughout the week.
You can only take it once.

All Quizzes due 30 min. before class

Lecture Slides

0. Introduction · PDF · Keynote
1. By the C, by the C, by the Beautiful C · PDF · Keynote
2. A Deeper Dive into C Programming · PDF · Keynote
3. C Debugging Tools · PDF · Keynote
4. Binary and Data Representation · PDF · Keynote
8. 32-bit x86 Assembly (IA32) · PDF · Keynote
7. 64-bit x86 Assembly (x86-64) · PDF · Keynote
9. ARM Assembly · PDF · Keynote
11. Storage and the Memory Hierarchy · PDF · Keynote
12. Code Optimization · PDF · Keynote
13. The Operating System · PDF · Keynote
14. Leveraging Shared Memory in the Multicore Era (Part 1) · PDF · Keynote

15. Looking Ahead: Other Parallel Systems and Parallel Programming Models

Projects

Enter Flags · Scoreboard · Details

Prepare a Linux Environment

ED 30: Linux Virtual Machine (15)

LJ: Linux Journey (83 extra)

C and Debugging

CL 10: C Development Environment  15
CL 20: Stack Frames  15
ED 202: Linux Buffer Overflow Without Shellcode  40 + 75 extra
C 101: Binary Games  25 + 15 extra

x86 Assembly Language

ASM 100: Basics  20 + 49 extra
ASM 104: Bases & Printing  20 + 20 extra
ASM 105: ASCII  5 + 15 extra
ASM 110: Gdb  15 + 15 extra
ASM 120: Files  15 + 40 extra
ASM 200: Caesar Cipher  20 + 15 extra
ASM 210: XOR  5 + 15 extra

Linux Exploits

ED 204: Exploiting a Format String Vulnerability  20
ED 205: Very Simple Heap Overflow  10 + 20 extra
ED 206: Heap Overflow via Data Overwrite  10 + 35 extra
ED 207: Linux Buffer Overflow with ROP (requires VMware)  15 extra
ED 210: Exploiting a Race Condition  10 extra

Windows Exploits

ED 32: Windows 10 or 11 Virtual Machine (recommended)  15 extra
H 2: Windows 2016 Server Virtual Machine (not recommended)  15 extra
 
ED 308: Exploiting "Vulnerable Server" on Windows     Google Cloud version  50 extra
ED 309: Defeating DEP with ROP  20 extra
ED 301: Windows Stack Protection I: Assembly Code  15 extra
ED 302: Windows Stack Protection II: Exploit Without ASLR  15 extra
ED 303: Windows Stack Protection III: Limitations of ASLR  15 extra
ED 310: Windows Mitigations  10 extra

ARM

Preparing an ARM System

ED 40: Linux on ARM64 Hardware  15 extra
ED 41: Emulating ARM Machines  15 extra

Exploiting ARM Systems

ED 440: Exploiting Linux on 32-Bit ARM  15 extra
ED 441: Exploiting Linux on 64-Bit ARM  15 extra
ASM 310: ARM64 Assembly  30 extra

Rust

R 10: Rust Basics, Overflows, & Injection  35 extra
R 20: Rust Dangling Pointers & Memory Leaks  35 extra

Last Updated: 4-22-25 8 pm