BYU CS Logo
Computing That Serves

CS 324

Course Offerings

Section # Semester Instructor Website Description
1 Fall 2017 Quinn Snell https://learningsuite.byu.edu/view/6twAFQpcK6NK.html
2 Fall 2017 Quinn Snell https://learningsuite.byu.edu/view/6twAFQpcK6NK.html
Section # Semester Instructor Website Description
1 Fall 2018 Quinn Snell
2 Fall 2018 Quinn Snell
1 Winter 2018 Casey Deccio
2 Winter 2018 Casey Deccio
1 Fall 2017 Quinn Snell https://learningsuite.byu.edu/view/6twAFQpcK6NK.html
2 Fall 2017 Quinn Snell https://learningsuite.byu.edu/view/6twAFQpcK6NK.html
1 Fall 2006 Eric Mercer http://vv.cs.byu.edu/ecen-cs-324/
2 Fall 2006 Eric Mercer http://vv.cs.byu.edu/ecen-cs-324/
1 Fall 2005 Eric Mercer http://vv.cs.byu.edu/ecen-cs-324/
2 Fall 2005 Eric Mercer http://vv.cs.byu.edu/ecen-cs-324/

Short Summary: 

Systems Programming

Credits: 

3

Prerequisites: 

Systems Programming

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

 

Linux System Programming

 

  • Students will demonstrate mastery of Linux system programming.
  • Students will be able to use Linux systems calls that are defined in C from within a C++ program to control processes and threads and to use shared memory synchronization, polling, file I/O, and sockets.
  • Students will be comfortable using the Linux command line and development environment to compile programs with Makefiles and for navigation, job control, I/O redirection, utility commands and manual pages.
  • Students will gain experience with advanced C topics (memory management, pointer manipulation, strings, etc.)

 

Multi-processing, Concurrency, and Exceptional Flow Control

 

  • Students will demonstrate mastery of multiprocessing, concurrency mechanisms, and exceptional flow control.
  • Students will write concurrent programs that provide efficiency gains from multiprocessing and demonstrate proficiency in threads, processes, mutual exclusion primitives, deadlock avoidance, signal handling and exceptional flow control.
  • Students will understand how the operating system implements processes, threads, concurrency mechanisms, including how the operating system provides scheduling.
  • Students will understand signal handling, exceptional flow control and virtualization.

 

 

Virtual Memory

 

  • Students will demonstrate how virtual memory works and how it can affect program performance

 

Internet Programming

 

  • Students will demonstrate a mastery of Internet programming, including using sockets, protocols, and non-blocking I/O.
  • Students use the BSD socket API to implement client-server programs using non-blocking I/O and polling to scalably multiplex large numbers of sockets.
  • Students use effective testing techniques for networked programs, including stress testing, load testing, and fuzz testing.
  • Students understand the role of TCP, IP, HTTP, DNS, and TLS as they relate to Internet services.




Academics