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.

The first class meeting is Tues, Jan 28.

You can get interactive help at 7:30 pm
any evening Mon-Fri 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


Tue 2-4Quiz 0 and 1
Proj ED 30
1. By the C, by the C, by the Beautiful C


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


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

Tue 2-25Quiz 4
Proj ED 202
Discussion 3
4. Binary and Data Representation

Tue 3-4Quiz 8
Proj C 101
Discussion 4
8. 32-bit x86 Assembly (IA32)

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

Tue 3-25 Holiday -- no class

Tue 4-1Quiz 11
ASM 105 and ASM 110
Discussion 7
11. Storage and the Memory Hierarchy

Tue 4-8Quiz 12
ASM 120
Discussion 8
12. Code Optimization

Tue 4-15Quiz 13
ASM 200 and ASM 210
Discussion 9
13. The Operating System

Tue 4-22 ED 204
Discussion 10
TBA

Tue 4-29 ED 205
Discussion 11
TBA

Tue 5-6ED 206 TBA

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
14. Leveraging Shared Memory in the Multicore Era
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

Rust

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

Last Updated: 2-11-25 8:09 pm