Breadcrumb
  1. Training
  2. Education & Training Catalog
  3. Pennsylvania State University, The School of Electrical Engineering and Computer Science
  4. Introduction to Systems Programming

Introduction to Systems Programming

This course explores the art and methods of systems programming. Practically speaking, lectures and course assignments will provide students experience programming in C within the UNIX environment. UNIX tools will be introduced, as will the general UNIX philosophy. Fluency in use of the command line will be encouraged and expected, as will canonical compiler tools such as gcc. We will examine the use of shell programs, compilers, build sequences, memory management, filesystems, signal processing, parallel programming, and other topics essential to computer scientists. In addition, we will introduce students the basics of systems administration on UNIX virtual machines.

Course Overview

Overall Proficiency Level
2 - Intermediate
Course Catalog Number
CMPSC311
Course Prerequisites
  • Object Oriented Programming with Web-Based Applications (CMPSC 221 )
  • Intermediate Programming (CMPSC 122)
  • Introduction to Programming Techniques (CMPSC 121)
  • Techniques of Calculus I (MATH 110) or Calculus With Analytic Geometry I (MATH 140)
Training Purpose
Functional Development
Skill Development
Management Development
Specific Audience
All
Delivery Method
Classroom
Course Locations

360 Willard Building
University Park, PA 16802

114 Earth & Engineering Sciences
University Park, PA 16802

Course Location Map
  • Your Location
  • Providers
  • Courses
  • Course and Provider Quantity
National CAE Designated Institution
  • Classroom

Learning Objectives

There are several themes of the course:

  1. Understand computer systems, especially low-level influences on high-level goals. This includes the machine-level representation of programs and data structures; the memory hierarchy and its impact on performance; access to stored information via file systems, and access to other computer systems via networks.
  2. Understand existing system software and software standards, especially the UNIX toolset. This includes preparing a program (editors, static analysis, development environments); running a program (compilers and interpreters, assembler, linker, loader, debugger, profiler, tracer); controlling parts of a program (memory management, threads); communication between programs (within one system using signals, between systems using sockets and communication protocols); and combinations of software tools with scripting languages.
  3. Understand real code, such as selections from the Linux operating system kernel and GNU utilities and libraries, and through comparative selections from Solaris, Linux, and Mac OS X.
  4. Understand system performance, including experiments on program performance and optimization techniques.

Framework Connections

The materials within this course focus on the NICE Framework Task, Knowledge, and Skill statements identified within the indicated NICE Framework component(s):

Specialty Areas

  • Training, Education, and Awareness
  • Systems Administration
  • Systems Development
  • Systems Analysis

Specialty Areas have been removed from the NICE Framework. With the recent release of the new NICE Framework data, updates to courses are underway. Until this course can be updated, this historical information is provided to give better context as to how it can help you with your cybersecurity goals.

Feedback

If you would like to provide feedback on this course, please e-mail the NICCS team at NICCS@mail.cisa.dhs.gov. Please keep in mind that NICCS does not own this course or accept payment for course entry. If you have questions related to the details of this course, such as cost, prerequisites, how to register, etc., please contact the course training provider directly. You can find course training provider contact information by following the link that says “Visit course page for more information...” on this page.

Last Published Date: