Skip to content

ChristufaY/cs354

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CS354 – Machine Organization and Programming (Spring 2021)

This repository contains coursework and programming assignments from CS354 at the University of Wisconsin–Madison. The course focuses on understanding how computers execute programs at the hardware level, including concepts such as memory management, x86 assembly, C programming, and operating system fundamentals.


🧠 Course Focus

  • Low-level programming in C and x86 assembly
  • Memory hierarchy and management (stack, heap, pointers)
  • System calls and process control
  • Debugging with gdb and valgrind
  • Implementing core operating system behaviors

📁 Key Projects & Assignments

🔹 x86 Assembly Projects

  • Binary Bomb Lab: Reverse-engineered an executable using gdb and disassembled x86 to defuse logical "bombs".
  • x86 Assembly Exercises: Learned calling conventions, control flow, and register manipulation by writing assembly code from scratch.

🔹 C Programming Projects

  • Memory Allocation: Reimplemented simplified versions of malloc() and free() to manage dynamic memory with manual bookkeeping.
  • Shell Implementation: Created a basic Unix shell in C, supporting command parsing, background processes, and signal handling.
  • Pointer and Stack Exercises: Practiced pointer arithmetic, function call frames, and stack organization.

🔹 Debugging and Analysis

  • Used tools like gdb, valgrind, and objdump to analyze memory leaks, stack frames, and low-level program flow.

💡 Learning Outcomes

  • Gained a deep understanding of how software interacts with hardware.
  • Built confidence in debugging and system-level programming.
  • Learned to reason about runtime behavior, memory safety, and performance at a low level.

🛠 Tools & Languages

  • C (GCC)
  • x86 Assembly
  • gdb, valgrind, make
  • Linux/Unix terminal environment

📂 Repository Contents

  • x86/: Assembly exercises and disassembly analysis.
  • pointers/, memory/, stack/: Projects focused on memory and stack operations in C.
  • malloc/: Manual memory allocator project.
  • shell/: Custom shell implementation.
  • bomb/: Reverse engineering and debugging exercises.

🔗 Notes

This repository is a reflection of hands-on learning in systems programming. Each directory contains source code and reports relevant to the specific topic.

About

UW Madison Fall 2021 CS354 Projects/Coursework

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors