An introduction to systematic problem-solving through programming for students with little or no prior coding experience. Students will learn how to divide a process into manageable components, how to describe those processes in the C programming language, and how to analyze and understand the behavior of their programs. Students will learn the fundamentals of writing, compiling, debugging, and executing C programs through hands-on exercises and real-world applications. Weekly lab assignments will give students the opportunity to apply core programming concepts, such as variables, data types, operators, loops, functions, structures, pointers, memory management, and file I/O.

Prerequisite:
Credits: 3

Learning Outcomes

By the end of this course, students will be able to:

  • Develop a basic understanding of how to analyze and break down large problems to implement efficient solutions using the C programming language.
  • Write, compile, and run clearly documented small-to-medium-sized programs that utilize fundamental data types, variables, and control structures, allowing others to read, understand, and modify them.
  • Determine the functionality of code written by oneself and others through reading and tracing short segments of code.
  • Apply pointers effectively to manipulate arrays, strings, and dynamically allocated data.
  • Employ basic file I/O techniques to read, write, and process external data.
  • Use debugging and development tools (IDEs, command-line compilers, breakpoints) to identify and resolve logical and runtime errors.
  • Understanding of how C’s low-level features (memory management, compilation, linking) connect to broader engineering applications.

Textbook

Recommended: The C Programming Language (2nd Edition) by Brian W. Kernighan and Dennis M. Ritchie.

Syllabus

Fall 2025

Offered

Fall odd years