System Programming and Unix

Course Description

CSCV352 is designed to develop an understanding of the various components of the Unix operating system from both a system user’s perspective and a system programmer’s perspective including both the shell and programming interfaces; to write sophisticated C applications using multiple source files and separate compilation; and to implement algorithms involving complex data types and structures. CSCV352 meets the National Security Agency (NSA) Center of Academic Excellence in Cyber Operations (CAE-CO) academic requirements for Low Level Programming.

Learning Outcomes

The student will:

  • Learn basic Unix shell skills.
  • Remote login to a console.
  • Discuss the history of Unix.
  • Manipulate and create files using a Unix text editor.
  • Change file permissions in Unix.
  • Construct a basic BASH shell script.
  • Create and compile a C program.
  • Debug a C program using gdb.
  • Use the scanf and printf functions to read and write formatted data.
  • Construct an expression from C operators and their operands.
  • Use if-then-else and switch constructs to implement selection logic.
  • Perform iteration in a C program using for, while, and do-while loops.
  • Identify the basic data types provided by the C programming language.
  • Implement and invoke functions.
  • Identify common blocks and variable scope.
  • Declare and demonstrate manipulation of string (character arrays).
  • Declare and manipulate 1-d and 2-d arrays.
  • Perform pointer arithmetic.
  • Develop programs to read and write from files.
  • Develop a dynamic memory allocation program.
  • Demonstrate advanced manipulation of array data.
  • Demonstrate how to implement a C struct.
  • Create a simple algorithm using dynamic memory allocation and structures.
  • Demonstrate the ability to link together multiple C files using header files.
  • Demonstrate the ability to create object files.
  • Create a makefile.