Next Section

Find the Bug A Book of Incorrect Programs

Bug hunting is an art, and you need to be a master. Get Find the Bug, and you'll become one. Long-time Microsoft programmer Adam Barr presents 50 programs, each with exactly one bug. Your assignment: find it. As you do, Barr will teach you how to "think like your processor"... anticipating exactly how code will behave, even without running it. You'll learn better ways to read code, understand it -- and above all, improve it. Whether you're building new systems or maintaining someone else's, you'll find bugs earlier, faster, with less frustration... and write cleaner code to begin with.

 

Table of Contents

    About the Author
    Preface
    Chapter 1.  Bug Classification
    Chapter 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
      Summary
    Chapter 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
    Chapter 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
    Chapter 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
      Quicksort
      Play the Game Pong, Part I
      Play the Game Pong, Part II
      Compute Bowling Scores
    Chapter 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
    Chapter 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
      Syntax Versus Semantics
      Classification Used in This Book
      A–Algorithm
      D–Data
      F–Forgotten
      B–Blunder
      Summary
    Appendix B.  Index of Bugs by Type
    Appendix C.  References
      Classification of Bugs
      General Sources for Bug Types
      C
      Python
      Java
      Perl
      x86 Assembly Language
    Index

    Next Section