Description
Book SynopsisTable of ContentsPART 1: (Introductory) Programming Fundamentals Quickstart
-
Introduction to Computers and C: Test-Driving Microsoft Visual Studio, Apple Xcode, GNU gcc, and GNU gcc in a Docker container
-
Intro to C Programming: Input, Output, Types, Arithmetic, Decision Making
-
Structured Program Development: Algorithmic Development, Problem Solving, if, if/else, while
-
Program Control: for, do/while, switch, break, continue, Logical Operators
-
Functions: Custom Functions, Simulation, Random-Number Generation, Enumerations, Function Call and Return Mechanism, Recursion, Recursive Factorial, Recursive Fibonacci
PART 2: (Intermediate) Arrays, Pointers, and Strings
-
Arrays: One- and Two-Dimensional Arrays, Passing Arrays to Functions, Searching, Sorting
-
Pointers: Pointers operators & and •, Pass-By-Value vs. Pass-By-Reference, Array and Pointer Relationship
-
Characters and Strings: C Standard Library String- and Character-Processing Functions
PART 3: (Intermediate) Formatted Input/Output, Structures, and File Processing
-
Formatted Input/Output: scanf and printf formatting
-
Structures, Unions, Bit Manipulation and Enumerations: Creating Custom Types with structs and unions, Bitwise Operators, Named Constants
-
File Processing: Streams, Text and Binary Files, CSV Files, Sequential and Random-Access Files
PART 4: (Advanced) Algorithms and Data Structures
-
Data Structures: Dynamic Memory Allocation and Deallocation, Lists, Stacks, Queues, Binary Trees
-
Computer-Science Thinking: Sorting Algorithms and Big O Insertion Sort, Selection Sort, Merge Sort, Additional Algorithms including Quicksort in the Exercises
PART 5: (Advanced) Preprocessor and Other Topics
-
Preprocessor: #include, Conditional Compilation, Macros with Arguments, Assertions
-
Other Topics: Variable-Length Argument Lists, Command-line Arguments, Multiple-Source-Pile Programs, extern, exit/atexit, calloc/realloc, goto, Numeric Literal Suffixes, Signal Handling
Appendices
- Operator Precedence Chart
- ASCII Character Set
- Numerical Integration
- Number Systems
- Multithreading/Multicore and other C18/C11/C99 Topics
- Intro to Object-Oriented Programming Concepts
Online Appendices - F-H. Using the Visual Studio Debugger, Using the GNU gdb Debugger, and Using the Xcode Debugger
Case Studies
System Programming Case Studies
- Systems Software: Building Your Own Computer
- Systems Software: Building Your Own Compiler
- Embedded Systems Programming: Robotics with the Webots Simulator
- Performance with Multithreading and Multicore Systems
Applications Programming Case Studies
- Random-Number Simulation: Building a Casino Game
- Random-Number Simulation: Card Shuffling and Dealing
- Random-Number Simulation: The Tortoise and the Hare Race
- Intro to Data Science: Survey Data Analysis
- Direct-Access File Processing: Transaction-Processing System
- Visualizing a Sorting Algorithm: Merge Sort
- Artificial Intelligence/Data Science: NLP: Who Wrote Shakespeare's Works?
- Artificial Intelligence/Data Science: Machine Learning with the GNU Scientific Library
- Game Programming: SpotOn Game with the raylib Library
- Game Programming: Cannon Game with the raylib Library
- Security and Cryptography: Implementing a Vigenère Cipher
- Visualization with gnuplot: Law of Large Numbers Animation
- Web Services and the Cloud: libcurl and OpenWeatherMap