CS 241

CS 241 - System Programming

Fall 2021

TitleRubricSectionCRNTypeHoursTimesDaysLocationInstructor
System ProgrammingCS241AD166269OD01700 - 1820 W    Shivram Gowtham
System ProgrammingCS241AD275920OD01830 - 1950 W    Eric Shengwen Zhang
System ProgrammingCS241AD375921OD00930 - 1050 R    Arpitha Raghunandan
System ProgrammingCS241AD475922OD01100 - 1220 R    Aditya S Mansharamani
System ProgrammingCS241AD575923OD01230 - 1350 R    Yinfang Chen
System ProgrammingCS241AD675924OD01400 - 1520 R    Yinfang Chen
System ProgrammingCS241AD857584OD01100 - 1220 F    Aditya S Mansharamani
System ProgrammingCS241AD957585OD01230 - 1350 F    Meghna Mandava
System ProgrammingCS241ADA59531DIS01700 - 1820 W  0218 Siebel Center for Comp Sci Lawrence Angrave
Shivram Gowtham
System ProgrammingCS241ADB51471DIS01830 - 1950 W  0218 Siebel Center for Comp Sci Lawrence Angrave
Eric Shengwen Zhang
System ProgrammingCS241ADC51472DIS00930 - 1050 R  0218 Siebel Center for Comp Sci Lawrence Angrave
Arpitha Raghunandan
System ProgrammingCS241ADD51473DIS01100 - 1220 R  0218 Siebel Center for Comp Sci Lawrence Angrave
Aditya S Mansharamani
System ProgrammingCS241ADE51474DIS01230 - 1350 R  0218 Siebel Center for Comp Sci Lawrence Angrave
Yinfang Chen
System ProgrammingCS241ADF51475DIS01400 - 1520 R  0218 Siebel Center for Comp Sci Lawrence Angrave
Yinfang Chen
System ProgrammingCS241ADH66270DIS01530 - 1650 R  0218 Siebel Center for Comp Sci Lawrence Angrave
Meghna Mandava
System ProgrammingCS241ADI66271DIS01700 - 1820 R  0218 Siebel Center for Comp Sci Lawrence Angrave
Eric Shengwen Zhang
System ProgrammingCS241ADJ66272DIS01830 - 1950 R  0218 Siebel Center for Comp Sci Lawrence Angrave
Eric Shengwen Zhang
Muhammed Ishaq Imran
System ProgrammingCS241ADK51476DIS01100 - 1220 F  0218 Siebel Center for Comp Sci Lawrence Angrave
Aditya S Mansharamani
System ProgrammingCS241ADL66273DIS01530 - 1650 W  0218 Siebel Center for Comp Sci Lawrence Angrave
Arpitha Raghunandan
System ProgrammingCS241ADM46648DIS01230 - 1350 F  0218 Siebel Center for Comp Sci Lawrence Angrave
Meghna Mandava
System ProgrammingCS241AL145300OLC40900 - 0950 M W F    Lawrence Angrave
System ProgrammingCS241AL266268LEC40900 - 0950 M W F  1002 Electrical & Computer Eng Bldg Lawrence Angrave

Official Description

Basics of system programming, including POSIX processes, process control, inter-process communication, synchronization, signals, simple memory management, file I/O and directories, shell programming, socket network programming, RPC programming in distributed systems, basic security mechanisms, and standard tools for systems programming such as debugging tools. Course Information: Credit is not given for both CS 241 and ECE 391. Prerequisite: CS 225 and CS 233. Class Schedule Information: Students must register for one lecture and one discussion section.

Text(s)

The CS241 textbook is comprised of opensource and free course notes, available here as a a single pdf and on the course website in html format.

Learning Goals

Interact with a POSIX operating system in C via system calls to create system applications (2), (6)
Implement and evaluate a dynamic memory allocator (2), (6)
Analyze and implement a virtual memory subsystem (2), (6)
Create system applications that manipulate processes and threads (1), (2), (6)
Evaluate how OS schedules processes and threads (6)
Communicate and synchronize between threads and processes to create robust system applications (1), (2), (6)
Use synchronization to identify and fix potential deadlock and race conditions in concurrent programs (2), (6)
Manipulate filesystem structures (inodes etc.) (2), (6)
Design and create client and server programs to communicate across networks (1), (2), (6)
Understands and uses system security mechanisms to build secure programs (1), (2), (6)
Can analyze how a specific security error (e.g. buffer overflow, file access control, page access control) impacts the Confidentiality, Integrity and/or Availability of data or service. (1)
Can identify multiple development practices (e.g. design reviews, code reviews, testing) as important practices to build secure programs. (6)
Can briefly describe well-known security case studies (e.g. network protocol implementation errors, CPU side channel attacks) and how they comprise the Confidentiality, Integrity and/or Availability of data or service. (6)

Topic List

Basic internal structure and purpose of operating systems
Input-output, file, and directory structures
Memory allocation and deallocation
Virtual memory
Interaction with the operating system kernel via system calls
Multi-process programming and inter-process communication
Multi-thread programming and inter-thread communication
Synchronization primitives including semaphores and mutexes
Deadlock causes and avoidance
Multi-core scheduling algorithms
Network programming with TCP/IP
Security elementary principles and practices (programming practices, protocols and well-known case studies)

Required, Elective, or Selected Elective

Required.

Last updated

5/10/2019by Lawrence Angrave