Problem Solving · C · Memory
Essential Background These topics support the course sequence from syntax and control flow through arrays, functions, pointers, structures, files, preprocessing, dynamic memory, callbacks, data structures, algorithms, and debugging.
BC
Basic Computer Use Files · folders · terminal basics
Programming requires comfort with creating, saving, locating, and organizing source files.
Technical significance
A compiler and debugger operate on real files, paths, and executables.
Files Terminal
Know file/folder basics, paths, extensions, and simple terminal navigation.Connections: .c files, headers, compiler output, command-line tools.
More ↓
PS
Problem Solving Decomposition · steps · cases
Programming begins with expressing a solution as a finite sequence of steps.
Technical significance
Before syntax, you should be able to break a task into smaller operations.
Decomposition Algorithms
Identify inputs, outputs, intermediate steps, and exceptional cases.Connections: functions, control flow, algorithms, debugging.
More ↓
BM
Basic Mathematics Arithmetic · precedence · expressions
C programs frequently manipulate numeric expressions.
Technical significance
Operator precedence and integer behavior matter in low-level code.
Arithmetic Operators
Be comfortable with arithmetic, remainder, comparison, and precedence.Connections: + - * / %, conditions, indexing.
More ↓
BL
Boolean Logic AND · OR · NOT
Conditions and loops depend on Boolean reasoning.
Technical significance
C uses integer-valued conditions and logical operators to control execution.
Logic Conditions
Understand AND/OR/NOT, comparisons, truth tables, and compound conditions.Connections: if, while, for, &&, ||, !.
More ↓
BH
Binary & Hexadecimal Base-2 · base-16 · bit patterns
C often exposes machine-level data representations.
Technical significance
Binary and hexadecimal make bitwise operations and addresses easier to understand.
Binary Hex Bits
Know base conversion and powers of two.Connections: masks, addresses, integer representation, debugging.
More ↓
VT
Variables & Data Types int · char · float · double
C requires explicit declarations and a clear understanding of representation.
Technical significance
Type choice determines range, precision, storage, and valid operations.
Types Variables
Understand declarations, initialization, scope, signedness, and integer/floating types.
More ↓
CF
Control Flow if · switch · loops
Procedural programming organizes execution through sequence, selection, and iteration.
Technical significance
Most programs are built from combinations of these structures.
if switch loops
Trace if/else, switch, for, while, and do-while blocks.
More ↓
FN
Functions Parameters · return values · scope
Functions divide programs into reusable units.
Technical significance
Good function design reduces duplication and localizes state.
Functions Parameters
Understand declarations, definitions, calls, return values, parameter passing, and local scope.
More ↓
AR
Arrays Indexed storage · contiguous elements
Arrays store fixed-size sequences of same-type elements.
Technical significance
Array indexing is directly connected to memory addresses and pointer arithmetic.
Arrays Indexing
Know 0-based indexing, bounds, traversal, initialization, and multidimensional arrays.
More ↓
ST
Strings char arrays · null terminator
C strings are arrays of characters terminated by a zero byte.
Technical significance
String handling exposes buffer sizes and memory-safety concerns.
Strings char[]
Understand \0, string length, copying, comparison, and buffer capacity.
More ↓
PT
Pointers & Addresses & · * · indirection
Pointers are central to C's memory model.
Technical significance
They enable dynamic structures, pass-by-address patterns, buffers, and low-level interfaces.
Pointers Addresses
Distinguish p, *p, and &x. Understand pointer types, null, aliasing, and pointer arithmetic.
More ↓
SH
Stack & Heap Automatic vs dynamic storage
C programs use different storage regions with different lifetimes.
Technical significance
Understanding lifetime prevents dangling pointers, leaks, and invalid accesses.
Stack Heap
Automatic locals typically live in stack frames; malloc-family allocations persist until free.
More ↓
DM
Dynamic Memory malloc · calloc · realloc · free
Dynamic allocation lets programs request storage at runtime.
Technical significance
Manual ownership means the programmer must release memory correctly.
malloc free
Understand allocation size, null checks, resizing, freeing exactly once, and avoiding use-after-free.
More ↓
SR
Structures struct · records · aggregate data
Structures group related fields into one record.
Technical significance
They are the foundation of custom data models in procedural C.
struct Records
Know declaration, initialization, . and -> member access, nested structs, and arrays of structs.
More ↓
ET
Enums, typedef & Unions Named constants · aliases · shared storage
Advanced data types make interfaces clearer and memory layouts more expressive.
Technical significance
Unions and bit fields expose low-level representation choices.
enum typedef union
Use enum for named constants, typedef for aliases, and union for shared storage representations.
More ↓
BW
Bitwise Operations AND · OR · XOR · shifts
Bitwise operations manipulate individual bits inside integers.
Technical significance
They are common in embedded systems, flags, masks, and compact formats.
Bitwise Masks
Know &, |, ^, ~, <<, >> and how to build/test masks.
More ↓
PP
Preprocessor #include · #define · conditional compilation
The preprocessor transforms source text before compilation.
Technical significance
Headers, macros, and compile-time configuration depend on this phase.
Preprocessor Macros
Understand #include, macros, include guards, and #if/#ifdef.
More ↓
CP
Compilation Pipeline Preprocess · compile · assemble · link
C source passes through multiple toolchain stages before execution.
Technical significance
Many build errors make sense only when these stages are understood.
Compiler Linker
Know preprocessing, compilation, assembly, and linking.Connections: .o files, undefined references, libraries, GCC/Clang.
More ↓
HD
Headers & Separate Compilation Declarations · definitions · linkage
Large C programs are split across source and header files.
Technical significance
Correct interfaces depend on separating declarations from definitions.
Headers Linkage
Understand extern, static linkage, header guards, and multi-file organization.
More ↓
FI
File I/O FILE* · fopen · fread/fwrite
C exposes file handling through the standard I/O library.
Technical significance
Files introduce buffering, persistent storage, errors, and positioning.
Files stdio
Understand opening modes, reading/writing, EOF, fclose, fseek/ftell, and error checks.
More ↓
FP
Function Pointers Callbacks · indirect calls
C can store addresses of functions and call them indirectly.
Technical significance
Function pointers enable callbacks, dispatch tables, comparators, and plugin-like designs.
Callbacks Function Pointers
Understand matching parameter/return types and indirect calls.Connections: qsort comparators, event handlers, state machines.
More ↓
RC
Recursion Base case · recursive call
Recursive functions call themselves on smaller subproblems.
Technical significance
Recursion makes call-stack behavior visible in C.
Recursion Call Stack
Know base cases, progress toward termination, stack depth, and when iteration is preferable.
More ↓
DS
Basic Data Structures Linked lists · stacks · queues
Pointers and structs combine naturally into dynamic data structures.
Technical significance
These examples consolidate memory management and procedural abstraction.
Linked List Stack Queue
Understand node allocation, links, insertion/deletion, push/pop, enqueue/dequeue.
More ↓
AC
Basic Algorithms & Complexity Search · sort · Big-O
Later topics introduce sorting, searching, and complexity.
Technical significance
Even simple C programs benefit from understanding growth in runtime.
Searching Sorting Big-O
Know linear search, binary search, simple sorting, and O(1), O(log n), O(n), O(n²).
More ↓
DBG
Debugging Warnings · breakpoints · stack traces
C errors often involve memory, types, and undefined behavior.
Technical significance
Compiler warnings and a debugger are essential tools.
GDB Warnings
Compile with warnings enabled. Learn breakpoints, stepping, variables, stack traces, and memory diagnostics.
More ↓
UB
Undefined Behavior Language rules · unsafe operations
Some invalid C operations have no defined result.
Technical significance
Understanding undefined behavior is critical for correct low-level programs.
Undefined Behavior Safety
Examples: out-of-bounds access, use-after-free, signed overflow, invalid shifts, uninitialized reads.
More ↓
EH
Error Handling Return codes · errno · defensive checks
C generally uses explicit error reporting instead of exceptions.
Technical significance
Robust programs must check failures and clean up deliberately.
Errors errno
Check fopen/malloc results, propagate meaningful return codes, and release partially acquired resources.
More ↓
CLI
Command Line Shell · arguments · redirection
C programs are often compiled and tested from a terminal.
Technical significance
Command-line familiarity makes compiler, debugger, and file workflows easier.
Terminal gcc
Know navigation, running executables, argv arguments, and basic input/output redirection.
More ↓
No prerequisite matches your search or filter.