Find the Bug: Table of Contents

1. Bug Classification

2. Tips on Walking Through Code

Split the Code into Sections with Goals
Identify the Meaning of Each Variable
Look for Known Gotchas
Choose Inputs for Walkthroughs
Walk Through Each Section

3. C

Brief Summary of C
Selection Sort
Linked List Insertion
Linked List Removal
Memory Copy
Parse a String into Substrings
Memory Allocator
Memory Free
Recursive Word Reversal
Calculate All Possible Routes
Kanji Backspace

4. Python

Brief Summary of Python
Is a Number Prime
Find a Substring
Alphabetize Words
Encode Strings Using a Character Map
Print the Month and Day
Go Fish, Part I: Draw a Card from a Deck
Go Fish, Part II: Ask if Another Hand Has a Card
Go Fish, Part III: Play a Full Game
Parse Numbers Written in English
Assign Gift Givers

5. Java

Brief Summary of Java
Is a Year a Leap Year
Convert a Number to Text
Draw a Triangle on the Screen, Part I
Draw a Triangle on the Screen, Part II
Reverse a Linked List
Check if a List Has a Loop
Play the Game Pong, Part I
Play the Game Pong, Part II
Compute Bowling Scores

6. Perl

Brief Summary of Perl
Sort a File by Line Length
Print the Prime Factors of a Number
Tab Expansion
Simple Database
Find Repeating Part of a Fraction
Expand Indented File List to Full Paths
Sort All the Files in a Directory Tree
Calculate Student Test Averages
Merge Sort of Multiple Files
Play the Game Mastermind

7. x86 Assembly Language

Brief Summary of x86 Assembly Language
Make Change for a Dollar
Multiply Two Numbers Using Shifts
Join Strings with a Delimiter
Calculate Fibonacci Numbers
Check if Two Words Are Anagrams
Convert a 64-Bit Number to a Decimal String
Sum A Signed Array
Play the Simulation Game Life
Check if Parentheses Match in Source Code
Radix Exchange Sort

Appendix A. Classification of Bugs

Appendix B. Index of Bugs of Type

Appendix C. References

(c) 2004 Adam Barr