Main Directory / Table of Contents
- Getting Started
- Introduction to This Reference
- Introduction to File Management (under construction)
- Introduction to Program Development Tools
- Installing C in the Linux Environment
- Installing C in the Mac Environment
- Installing C in the Virtualbox Environment
- Installing C in the VMWare Environment
- Installing C in the Windows Environment
- Source Code File Organization
- Basic Program Organization
- Advanced Operations - Compiling and Linking
- Creating a Program
- The concept of Linear Progression, or Sequence
- Sequences in a Program
- Turning a Sequence into a Program
- Making Programs Easier - Making a Square
- Making Programs Easier - Making a Triangle
- Making Programs (Even More) Easier
- Choosing the Right Code
- The Four Step Programming Process
- Introduction to Structured Programming
- Overview of the Four Step Programming Process
- Step One
- Step Two
- Step Three
- Step Four
- Program Input and Output (I/O)
- The Data Stream Concept
- Standard I/O in C
- Formatted Command-Line I/O
- I/O Application - Debugging
- Data Abstraction
- Using Data in a Program
- Keywords in C
- Fundamental Data Types
- One Extended Data Type
- Data Assignment
- Using C Constants
- Mathematical Operations
- Integers - Addition and Subtraction
- Integers - Multiplication and Division
- Integers - Modulo Arithmetic
- Floating Point Arithmetic
- Mathematics with Characters
- Order of Operations (Precedence)
- Mixed-Mode Mathematics
- Combining Mathematics and Assignment
- Using External Functions
- Program Decision Making
- Computer Logic and Decision Making
- Conditional Operators and Operations
- Boolean Combinations and Logical Operators
- Applications of the Rules - Sports
- Applications of the Rules - Leap Year
- Truth Tables
- Simple Branching
- Selecting from Multiple Options - if
- Nesting if Statements
- Short Circuit Analysis
- Selecting from Multiple Options - switch
- Forcing a Default Decision, if Statement
- Forcing a Default Decision, switch Statement
- Special Case - Comparing C-Style Strings
- Functional Abstraction - Subroutines
- The Concept of Subroutines
- Creating a Function
- Functions as Factories
- Boolean Functions
- Using Functions in Programs
- Functions - Calling and Being Called, With Differing Parameters
- Programming by Contract - Pre Conditions
- Programming by Contract - Post Conditions
- Programming by Contract - Errors and Exceptions
- The main Function
- Using Header Files
- The Six Step Programming Process
- (Re)Introduction
- Step One, Reviewed
- Step Two, Reviewed
- Step Three - Locating, Identifying, and Designing Functions
- Step Four - Implementing the main Function
- Step Five - Designing the Supporting Functions
- Step Six - Implementing the Supporting Functions
- Iteration
- The Concept of Looping, or Iteration
- Simple Iteration
- Repeating a Test
- Pre-Test vs Post-Test Loops
- Reflecting on Loops
- The C while Loop
- The C for Loop
- The C do..while Loop
- Nesting Loops
- Good Practice - Using Sentinels and Flags
- Bad Practice - Using break and continue
- Looping without Loops - Recursion
- Data Storage and Retrieval
- The File Stream Metaphor, Revisited
- Starting Out with Text Files
- Simple File Output
- File Output with Loops
- Simple File Input
- File Input with Priming and Sentinels
- Homogenous Data Storage using One Dimensional Arrays
- One Dimensional Array Concepts
- One Dimensional Array Usage, with Bracket Operators
- One Dimensional Array Usage, with Pointer Arithmetic
- Adding Data to a One Dimensional Array
- Removing Data from a One Dimensional Array
- Array Operations - The Bubble Sort, Pointers, and References
- Array Operations - The Selection Sort
- Array Operations - The Insertion Sort and Pointers
- Array Operations - The Binary Search
- Array Operations - Complexity Analysis (Big O)
- Array Operations - Aliasing
- Arrays of Arrays: Two-Dimensional Arrays
- Advanced Sorting
- Merge Sort
- Quick Sort
- Advanced Sorting - Complexity Analysis (Big O)
- Radix Sort (future)
- Checking Every Possibility: Recursive Backtracking
- Introduction
- The Eight Queens Problem
- The Sudoku Problem (future)
- The Knapsack Problem (future)
- Object Oriented Programming (OOP)
- OOP - The Concept
- OOP as Tool Making
- Diving into Records, The C struct
- More on Records, Declaring a C++ Class
- More on Records, Implementing a C++ Class
- Scope Considerations with Classes
- C++ Class Inheritance
- Generic Class Study
- C++ Overloaded Operators
- Linked Lists
- Introduction
- Adding Items To A Linked List (and protecting from ALIASING)
- Removing Items From A Linked List
- Head Pointer Returns, and Double Pointers
- Other Kinds of Linked Lists
- Data Structure Applications
- Stacks
- Queues
- Binary Search Trees
- Introduction
- Inserting Into A Binary Search Tree (BST)
- Removing From a Binary Search Tree (BST)
- How It Can Go Wrong
- Self Balancing Trees
- Considering Balanced Trees
- The Adelson-Velsky and Landis (AVL) Tree
- The Red Black Tree
- The Two Three Tree
- Heap Data Structures
- Introduction to Heaps
- The Heap Insertion Operation
- The Heap Removal Operation
- Hash Tables
- The Hashing Strategy
- Hash Tables That Probe
- Hash Tables With Other Data Structures
- Graphs
- Introduction To Graphs
- Traversing Graphs