CS3040: Low Level Programming - NPS Online
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.

Application Deadlines
No upcoming deadlines.
Academic Calendar
No upcoming events.