Fall 2025 - CMPT 201 D100

Systems Programming (4)

Class Number: 5422

Delivery Method: In Person

Overview

  • Course Times + Location:

    Sep 3 – Dec 2, 2025: Wed, Fri, 12:30–2:20 p.m.
    Burnaby

  • Prerequisites:

    (CMPT 125 or CMPT 135) and MACM 101, both with a minimum grade of C-.

Description

CALENDAR DESCRIPTION:

An introduction to a UNIX-like application-OS interface from a programmer's perspective. Introduces operating systems and their interfaces for user-level programs. Students learn how to programmatically interact with an OS efficiently, correctly, and securely. Topics include: command-line tools, programming with memory, processes, threads, IPC, as well as basics of OS security. Students who have taken CMPT 300 first may not then take this course for further credit.

COURSE DETAILS:

By taking this course, students will learn:

  • User-level services and abstractions provided by operating systems
  • How to write programs that utilize those services and abstractions correctly, efficiently, and reliably, using Linux

Students will be equipped with important practical and theoretical background for upper-level courses. Topics covered in this course include:
  • Linux command-line interface, shell scripting, and basic development tools
  • Processes and threads
  • Memory management
  • Virtual memory
  • Scheduling
  • Synchronization
  • Storage and file system abstractions
  • Communication abstractions such as IPC, sockets, and RPC
  • Basics of OS security and cryptographic functions.

 

In addition to CMPT 201 Prerequisites: (CMPT 125 or CMPT 135) and MACM 101, both with a minimum grade of C-, we strongly recommend that students are proficient in:

  • C programming (e.g., writing CMPT 125- or CMPT 135-level programs in C without getting help)
  • Experience in using the command-line interface on Linux

COURSE-LEVEL EDUCATIONAL GOALS:

Students are expected to achieve proficiency in the following areas:

  • Interacting with, and programming in, a Linux environment using the command-line interface
  • Utilizing programming tools such as build systems and debuggers
  • Manipulating and managing data in memory correctly
  • Programming concurrency with processes and threads
  • Understanding concurrency concepts such as semaphores, locks, critical sections, deadlocks, common concurrency patterns, etc.
  • Understanding file system abstractions and programming with them
  • Understanding communication abstractions such as IPC, sockets, and RPC and programming with them
  • Understanding cryptographic functions and programming with them

Grading

NOTES:

Grading scheme to be discussed during first week of class.

Materials

RECOMMENDED READING:

Computer Systems: A Programmer's Perspective, 3rd Edition, Randal E. Bryant and David R. O'Hallaron, Pearson 2015 9780134092669

The Linux Programming Interface Michaek Kerrisk 2010, No Starch Press, ISBN 9781593272203

Operating Systems: Three Easy Pieces, Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, v. 1.0 9781985086593 (Free online)

Advanced Programming in the UNIX Environment, 3rd Edition, W. Stevens and Stephen Rago, Addison-Wesley, 2013 9780321637734

Unix Network Programming, Volume 1: The Sockets Networking API, 3rd Edition, W. Stevens, Bill Fenner, and Andrew Rudoff, Addison-Wesley 2003, 9780131411555

UNIX Network Programming, Volume 2: Interprocess Communications, 2nd Edition, W. Richard Stevens, Prentice Hall 1998 9780130810816

The Art of Unix Programming, Eric Steven Raymond, 1st Edition, 2003 Addison-Wesley, 9780131429017

C Programming Language, 2nd Edition, Dennis Ritchie and Brian Kernighan, 2nd Edition 1988 9780131103627

 

REQUIRED READING NOTES:

Your personalized Course Material list, including digital and physical textbooks, are available through the SFU Bookstore website by simply entering your Computing ID at: shop.sfu.ca/course-materials/my-personalized-course-materials.

Department Undergraduate Notes:

The following are default policies in the School of Computing Science. Please check your course syllabus whether the instructor has chosen a different policy for your class, otherwise the following policies apply.
 
  • Students must attain an overall passing grade on the weighted average of exams in the course in order to get a C- or higher.
  • All student requests for accommodations for their religious practices must be made in writing by the end of the first week of classes, or no later than one week after a student adds a course. After considering a request, an instructor may provide a concession or may decline to do so. Students requiring accommodations as a result of a disability can contact the Centre for Accessible Learning (caladmin@sfu.ca).

Registrar Notes:

ACADEMIC INTEGRITY: YOUR WORK, YOUR SUCCESS

At SFU, you are expected to act honestly and responsibly in all your academic work. Cheating, plagiarism, or any other form of academic dishonesty harms your own learning, undermines the efforts of your classmates who pursue their studies honestly, and goes against the core values of the university.

To learn more about the academic disciplinary process and relevant academic supports, visit: 


RELIGIOUS ACCOMMODATION

Students with a faith background who may need accommodations during the term are encouraged to assess their needs as soon as possible and review the Multifaith religious accommodations website. The page outlines ways they begin working toward an accommodation and ensure solutions can be reached in a timely fashion.