Computing That Serves

CS 324

Course Offerings

Section # Semester Instructor Website Description
1 Fall 2017 Quinn Snell
2 Fall 2017 Quinn Snell
Section # Semester Instructor Website Description
1 Winter 2018 Casey Deccio
2 Winter 2018 Casey Deccio
1 Fall 2017 Quinn Snell
2 Fall 2017 Quinn Snell
1 Fall 2006 Eric Mercer
2 Fall 2006 Eric Mercer
1 Fall 2005 Eric Mercer
2 Fall 2005 Eric Mercer

Short Summary: 






Systems programming principles and concepts, including Linux systems programming, multiprocessing, concurrency, exceptional control flow, caching, sockets, protocols, and non-blocking I/O.


CS 324 Objectives and Topics

This document is not a syllabus. Instead, for ALL offerings of this course, this document states the expected objectives and topics for the course. Faculty members teaching this course should adhere to these objectives and topics. Students taking this course can expect to achieve the objectives and cover the topics specified, and faculty members teaching follow-on courses can expect students to have been appropriately exposed to the prerequisite material as stated.


Learning Outcomes

At the end of this course, student should have the:

1. Ability to understand and optimize programs from the assembly code output by the compiler

2. Ability to modify a CPU design to add instructions and to improve the overall efficiency of pipelined execution.

3. Ability to design and verify software that exploits a buffer-overflow security flaw in example code.

4. Ability to use a C compiler, a disassembler, a debugger, and CPU emulators to develop, debug, test, analyze, and optimzie programs.



   Integer arithmetic

   Program Control

   Arrays, structs, alignment

   Y86 pipeline

   Performance optimization

   Memory hierarchy


   Exceptions, processes, signals

   Measuring Execution time
   Virtual Memory

   Memory mapping