Computer Organization

Labs from the Computer Organization class taught at Williams College. The course covers material on topics including machine level code and its generation, performance evaluation and optimization, computer arithmetic, as well as memory organization and management

  1. Bit Manipulation in C - A series of programming puzzles solved with solely binary operations
  2. Binary Bomb - Uses x86-64 assembly instructions to implement comparisons, loops, switch statements, recursion, pointers, and arrays and defuse a "binary bomb". Also gives exposure to gdb debugger for stepping through assembly code
  3. Extending the Y86-64 Simulator - Writing simple Y86-64 programs and gaining exposure with the Y86-64 tools. Second part involved extending the SEQ simulator with a new instruction. Third part involved modifying the branch prediction algorithm used in PIPE
  4. Understanding Cache Memories - Writing a C program that simulates the behaviour of a cache memory
  5. Memory Management and C Practice - Practicing manual memory management (allocating and freeing memory) and using pointers/arrays
  6. Writing a Dynamic Storage Allocator - Writing a dynamic storage allocator for C programs (own version of malloc and free routines)
Designed by BootstrapMade