Low Level Programming

Course #CS3040

Start Starts: not available Info For details, contact NPS Online at online@nps.edu.

Clock Est. completion in 3 months

Location pin Offered through Distance Learning

Avg. tuition cost per course: See tuition Info For specific tuition costs of each program or contact information, please contact the NPS Tuition office at tuition@nps.edu .

Learn more about Service Obligation Info Officers accepting orders to a Graduate Education Program (GEP) are obligated to serve on active duty after completion.

Questions? Reach out directly:

NPS Online Student Support

online@nps.edu

Email
Offerings database access

Overview

This course is an accelerated survey of the C programming language for computer scientists. It introduces students to programming practices using the C language, and the tools needed to effectively write and debug C programs. The class illustrates the design decisions associated with the low-level operations not implemented in other modern programming languages, demonstrating C's performance and control capabilities. Topics include function calling convention, dynamic memory allocation, recursion, file input/output, kernel management of files, searching/sorting, data types, data structures using C (arrays, hash tables, doubly linked lists, etc), and secure programming in C. Prerequisites: Students are expected to know how to program in at least one language, or exempted by permission of the instructor. Familiarity with Linux or another UNIX-like operating system will be helpful.

Prerequisites

  • CS2020

Learning Outcomes

Upon completion of this course, students will be able to:

  • Employ the C language and standard libraries to solve intermediate-level programming problems.
  • Properly employ common productivity and development tools (e.g., gcc, make) to create and compile C programs.
  • Properly employ and interpret the output of C program debugging tools (i.e., gdb, valgrind).
  • Describe and discuss the stages of the C build process.
  • Create C program modules, including building libraries and developing proper header files.
  • Describe the layout of C variables in memory at the byte level.
  • Describe and construct complex C data types and interpret their layout in memory.
  • Describe C data type and space limitations and how to avoid problems such as numeric overflow and underflow.
  • Describe how the call stack operates to support C function calls, variable arguments, and the consequences of abusing the stack (e.g., buffer overflow).
  • Describe C process management and thread management, including creation, communication, synchronization, and race conditions.
  • Describe how the kernel supports C applications in execution using system resources.