Sep 17, 2024  
2023-2024 Undergraduate Academic Catalog 
    
2023-2024 Undergraduate Academic Catalog [ARCHIVED CATALOG]

Add to Portfolio (opens a new window)

CPE 2600 - Systems Programming

3 lecture hours 2 lab hours 4 credits
Course Description
This course introduces students to programming at a systems level using the C programming language. C programming topics covered include variables, functions, pointers, and structures. This course also introduces students to the mechanisms for interacting with operating system services. Topics include process creation and management, inter process communication, memory allocation and management, concurrency and synchronization, and input/output. Students are introduced to the concepts of compilation, linking, macros, build systems, and version control. Note: students may receive credit for only one of CPE 2600 and CSC 2210 . (prereq: CSC 1310  or CSC 1110   or ELE 1601  or previous programming experience) (quarter system prereq: CS 1011, CS 1021)
Course Learning Outcomes
Upon successful completion of this course, the student will be able to:
  • Navigate through a Unix system environment
  • Create and manage users, groups, files, and permissions
  • Navigate and manage the Unix file system and directory structure
  • Construct and execute shell scripts
  • Write procedural programs in C
  • Understand the use of variables, types, expressions, functions, parameters, and arguments
  • Explain how variables are allocated in memory, the relationship between variables and pointers, and the scope and lifetime of variables
  • Use build and debug tools for software development (e.g., make, gdb, valgrind)
  • Use a version control system to manage software development
  • Construct programs that use static and dynamic memory allocation along with proper use of pointers and pointer arithmetic
  • Explain how programs interact with an operating system through system calls
  • Construct programs to create processes that communicate using inter processes communication mechanisms
  • Construct programs that interact with the file system
  • Construct programs with multiple threads that use concurrency mechanisms to control access to shared resources

Prerequisites by Topic
  • Basic programming experience

Coordinator
Dr. James Lembke



Add to Portfolio (opens a new window)