| Part 1 | An Introduction to Programming | 1 |
| 1 | Programming 101 | 3 |
| Psssst! Listen Up | 4 |
| What's in It for You? | 5 |
| Looks Like Greek | 6 |
| Parlez-Vous BASIC? | 6 |
| Getting Down to the Nitty-Gritty | 8 |
| Squashing That Panic Attack | 9 |
| 2 | Introducing the Programmer's Toolbox | 11 |
| Typing It Up | 11 |
| Using a One-Line-at-a-Time Translator | 14 |
| Consulting a Full-Service Translator | 15 |
| Soliciting the Help of Debuggers | 16 |
| Putting It All Together | 18 |
| 3 | Crankin' It Up with QBasic | 21 |
| Where Is QBasic? | 21 |
| Loading QBasic | 22 |
| Exploring QBasic's Menu Bar | 24 |
| Loading a QBasic Program | 24 |
| Controlling the Edit Window | 26 |
| Typing Programs | 26 |
| Printing a Program | 30 |
| Cutting, Copying, and Pasting | 31 |
| Searching and Replacing | 34 |
| Part 2 | The Absolute Basics | 39 |
| 4 | Places Where Numbers Live | 41 |
| A Comfy Home for Numbers | 41 |
| Yes and No | 42 |
| A Secret and Handy Code | 43 |
| Bits As Regular Numbers | 43 |
| Working with Variables | 44 |
| Getting Values into Memory | 45 |
| Look! It's on the Screen! | 46 |
| Now It's in Memory! | 47 |
| Numeric and String Variables | 49 |
| What's a Nice Integer Like You Doing Here? | 51 |
| 5 | Computer-Style Arithmetic | 55 |
| Using Basic Arithmetic | 56 |
| Raising the Arithmetic Bar | 57 |
| Me First! Me First! | 61 |
| 6 | Decisions the Computer Way | 63 |
| A Digital Road Map | 64 |
| It's Simply a Matter of Choice | 64 |
| Simple if...Then Statements | 65 |
| Complex if...Then Statements | 67 |
| How Do You Compare? | 72 |
| Single Comparisons | 72 |
| Your Computer As Spock | 74 |
| The Infamous GOTO | 76 |
| 7 | Do It Again and Again | 79 |
| Around and Around We Go | 80 |
| Watch Your Step on This Ride | 82 |
| Where We'll Stop, Nobody Knows | 84 |
| Getting Dizzy Yet? | 84 |
| Nearing the End of the Ride | 86 |
| One Last Spin | 87 |
| Part 3 | Taking the Next Step | 93 |
| 8 | Saying It with Text | 95 |
| 'Til Death Do They Part | 96 |
| The Long and Short of It | 97 |
| Bits and Pieces | 99 |
| A Textual Scavenger Hunt | 102 |
| A Capital Idea | 106 |
| Numbers to Strings | 107 |
| 9 | Fancier Places Numbers Live | 111 |
| A Clever Solution to a Tricky Problem | 112 |
| The Old Indirect Approach | 114 |
| Yet Another Fantabulous Example of Programming Prowess | 115 |
| Starting Off Right | 116 |
| 10 | Fiddling with Files | 121 |
| Three Steps to Access a File | 121 |
| Opening a File | 122 |
| Saving Data to the File | 123 |
| Closing the File | 123 |
| Trying It Out | 124 |
| Loading Data from a File | 126 |
| Appending Data to a File | 127 |
| Part 4 | Advanced Programming | 131 |
| 11 | Whoops! What Now? | 133 |
| Two General Kinds of Errors | 133 |
| The Art of Predicting the Future | 134 |
| Putting on the Catcher's Mitt | 135 |
| Which Error Is Which? | 138 |
| 12 | Your Computer As Van Gogh | 143 |
| I Think I'm Seeing Spots! | 143 |
| Graphics a la Mode | 147 |
| Every Picture Is Worth a Thousand (or More) Dots | 148 |
| Dot-to-Dot the Easy Way | 151 |
| 13 | Your Computer As Beethoven | 155 |
| Making Computers Sing | 155 |
| Getting a Bit More Realistic | 157 |
| Woops, Zoops, and Zips | 159 |
| 14 | One Step at a Time | 163 |
| A Programmer's Pyramid Plan | 163 |
| Blocks in the Pyramid | 164 |
| Variable Scope | 169 |
| Still More Blocks in the Pyramid | 171 |
| 15 | Lookin' for Creepy Crawlies | 179 |
| Get the Raid! | 179 |
| Step-Into Program Trace | 180 |
| Step-Over Program Trace | 180 |
| Use a Variable Watcher | 181 |
| Insert Breakpoints | 181 |
| Raid the QBasic Way | 181 |
| Step Into, the QBasic Way | 182 |
| Spying on Variables | 185 |
| Step Over, the QBasic Way | 185 |
| Automated QBasic | 186 |
| Give Me a Break! | 186 |
| Next, Please | 187 |
| Part 5 | An Introduction to Object-Oriented Programming | 189 |
| 16 | Programming with Objects | 191 |
| Saddling a New Horse | 191 |
| Creating Projects | 192 |
| Exploring Visual Basic .NET's Main Window | 194 |
| The Code Window | 196 |
| Menus and the Toolbar | 197 |
| Getting Back to OOP | 198 |
| The Secrets of Encapsulation | 199 |
| The Secrets of Inheritance | 199 |
| The Secrets of Polymorphism | 200 |
| Writing a Class | 200 |
| Classes Versus Objects | 202 |
| 17 | Creating Your Own Objects | 203 |
| Adding Properties and Methods to a Class | 203 |
| The Deal with Properties | 204 |
| Construction and Destruction Underway | 206 |
| A Method to the Madness | 208 |
| Reading Your Books | 210 |
| The Stuff You Need to Know | 214 |
| Understanding the Basics of Inheritance | 216 |
| Dealing with Inheritance for Real | 218 |
| 18 | The Strange World of Polymorphism | 225 |
| Getting Polymorphic | 225 |
| Polymorphism on the Loose | 226 |
| When You Must, You Must | 228 |
| Getting That Shape Constructed | 229 |
| When You Must, You Must (Revisited) | 229 |
| A Shape That Works | 229 |
| Getting Back to Base-ics | 230 |
| The Secret to Polymorphism | 231 |
| A Second Shape That Works | 231 |
| From Ancestor to Ancestor | 232 |
| Testing Your Shapes | 233 |
| End of the Line | 234 |
| 19 | Exploring C# | 237 |
| Pronounced C Sharp | 237 |
| Judging a Book by Its Cover | 238 |
| Getting Your Application to Do Something | 241 |
| How OOP Fits In | 243 |
| Appendixes | |
| A | Programming Languages Overview | 249 |
| B | A Programmer's Quick Reference | 257 |
| C | Speak Like a Geek: The Complete Archive | 267 |
| Index | 271 |