- Introduction
- 1. Getting Started
- 1.1. Installation
- 1.2. Hello World
- 1.3. Hello MSBuild
- 2. Programming a Guessing Game
- 3. Common Programming Concepts
- 3.1. Variables
- 3.2. Primitives
- 3.3. Literals
- 3.4. Comments
- 3.5. Assignment
- 3.6. Strings
- 3.7. Math
- 3.8. Comparison
- 3.9. Control Flow
- 3.10. Combining Comparisons
- 3.11. Routines
- 3.12. Preprocessor
- 3.13. Quiz Answers
- 4. Fetching Fun: A Simple HTTP Client Project
- 4.1. HTTP Routines
- 4.2. JSON
- 5. Complex Types
- 5.1. Repository
- 5.2. Synergy Data Language
- 5.3. Structures
- 5.4. Quiz Answers
- 6. Collections
- 6.1. ArrayList
- 6.2. Arrays
- 6.3. Dictionary
- 7. Program Organization
- 7.1. Namespaces
- 7.2. Projects
- 7.3. Libraries
- 7.4. Prototyping
- 8. Following the Trend: An Inventory Project
- 8.1. Repository
- 8.2. Recommendations
- 8.3. Reporting
- 9. Testing
- 9.1. Testable Code
- 9.2. Unit Testing
- 9.3. Test Driven Development in the Brownfield
- 10. Object Oriented Features
- 10.1. Classes
- 10.2. Objects
- 10.3. Inheritance
- 10.4. Interfaces
- 10.5. Delegates
- 11. Banking on Basics: Exploring OOP with a Simple Bank Simulation
- 11.1. Accounts
- 11.2. Transfers
- 11.3. If its not tested, it doesn't work
- 12. Error Handling
- 12.1. Exceptions
- 12.2. OnError
- 12.3. Error List
- 13. Persisting Your Data: ISAM
- 13.1. ISAM
- 13.2. Hooks
- 13.3. Select
- 13.4. DBMS
- 14. Back to the Bank: Persisting Data with ISAM
- 14.1. Storing
- 14.2. Searching
- 14.3. Leaving a Paper Trail
- 14.4. Thread Carefully: Ensuring Consistency
- 15. Advanced Memory Management
- 15.1. Ranging and Overlays
- 15.2. Mapping
- 15.3. Quiz Answers
- 16. Common Patterns
- 16.1. Anti-Patterns
- 16.1.1. Big Ball of Mud
- 16.1.2. Circular References
- 16.1.3. God Object
- 16.1.4. Dirty Build
- 17. Beyond Types
- 17.1. Generics
- 17.2. Lambdas
- 17.3. Async
- 17.4. Extension Methods
- 17.5. Partial Things
- 17.6. Functional Style
- 17.7. Existing Code