======Learn C The Hard Way====== This is the in-progress free version of Learn C the Hard Way. It was just converted to a new format so things might be missing or formatted wrong. Email help@learncodethehardway.org to report any problems. ======Table Of Contents====== * Preface * Introduction: The Cartesian Dream Of C * Exercise 0: The Setup * Exercise 1: Dust Off That Compiler * Exercise 2: Make Is Your Python Now * Exercise 3: Formatted Printing * Exercise 4: Introducing Valgrind * Exercise 5: The Structure Of A C Program * Exercise 6: Types Of Variables * Exercise 7: More Variables, Some Math * Exercise 8: Sizes And Arrays * Exercise 9: Arrays And Strings * Exercise 10: Arrays Of Strings, Looping * Exercise 11: While-Loop And Boolean Expressions * Exercise 12: If, Else-If, Else * Exercise 13: Switch Statement * Exercise 14: Writing And Using Functions * Exercise 15: Pointers Dreaded Pointers * Exercise 16: Structs And Pointers To Them * Exercise 17: Heap And Stack Memory Allocation * Exercise 18: Pointers To Functions * Exercise 19: A Simple Object System * Exercise 20: Zed's Awesome Debug Macros * Exercise 21: Advanced Data Types And Flow Control * Exercise 22: The Stack, Scope, And Globals * Exercise 23: Meet Duff's Device * Exercise 24: Input, Output, Files * Exercise 25: Variable Argument Functions * Exercise 26: Write A First Real Program * Exercise 27: Creative And Defensive Programming * Exercise 28: Intermediate Makefiles * Exercise 29: Libraries And Linking * Exercise 30: Automated Testing * Exercise 31: Debugging Code * Exercise 32: Double Linked Lists * Exercise 33: Linked List Algorithms * Exercise 34: Dynamic Array * Exercise 35: Sorting And Searching * Exercise 36: Safer Strings * Exercise 37: Hashmaps * Exercise 38: Hashmap Algorithms * Exercise 39: String Algorithms * Exercise 40: Binary Search Trees * Exercise 41: Using Cachegrind And Callgrind For Performance Tuning * Exercise 42: Stacks and Queues * Exercise 43: A Simple Statistics Engine * Exercise 44: Ring Buffer * Exercise 45: A Simple TCP/IP Client * Exercise 46: Ternary Search Tree * Exercise 47: A Fast URL Router * Exercise 48: A Tiny Virtual Machine Part 1 * Exercise 48: A Tiny Virtual Machine Part 2 * Exercise 50: A Tiny Virtual Machine Part 3 * Exercise 51: A Tiny Virtual Machine Part 4 * Exercise 52: A Tiny Virtual Machine Part 5 * Next Steps * Deconstructing K&R C ======Frequently Asked Questions====== How long does this course take? You should take as long as it takes to get through it, but focus on doing work every day. Some people take about 3 months, others 6 months, and some only a week. What kind of computer do I need? You will need either an OSX or Linux computer to complete this book. Copyright (C) 2010 Zed. A. Shaw Credits