Software Debugging
Automating the Boring Tasks
In this class you will learn how to debug programs systematically, how to automate the debugging process and build several automated…
Class Summary
In this class you will learn how to debug programs systematically, how to automate the debugging process and build several automated debugging tools in Python.
What Should I Know?
Basic knowledge of programming and Python at the level of Udacity CS101 or better is required. Basic understanding of Object-oriented programming is helpful.
What Will I Learn?
At the end of this course you will have a solid understanding about systematic debugging, will know how to automate debugging and will have built several function…
There are no frequently asked questions yet. If you have any more questions or need help, contact our customer service.
Automating the Boring Tasks
In this class you will learn how to debug programs systematically, how to automate the debugging process and build several automated…
Class Summary
In this class you will learn how to debug programs systematically, how to automate the debugging process and build several automated debugging tools in Python.
What Should I Know?
Basic knowledge of programming and Python at the level of Udacity CS101 or better is required. Basic understanding of Object-oriented programming is helpful.
What Will I Learn?
At the end of this course you will have a solid understanding about systematic debugging, will know how to automate debugging and will have built several functional debugging tools in Python.
Syllabus
Unit 1: How Debuggers work
Theory: Scientific method and its application to debugging.
Fun fact: First bug in the history of computer science.
Practice: Building a simple tracer.
Unit 2: Asserting Expectations
Theory: Assertions in testing and in debugging.
Fun fact: The most expensive bug in history.
Practice: Improving the tracer.
Unit 3: Simplifying Failures
Theory: Strategy of simplifying failures. Binary search. Delta
debugging principle.
Fun fact: Mozilla bugathon.
Practice: Building a delta debugger.
Unit 4: Tracking Origins
Theory: Cause-effect chain. Deduction. Dependencies. Slices.
Fun fact: Sherlock Holmes and Doctor Watson.
Practice: Improving the delta debugger.
Unit 5: Reproducing Failures
Theory: Types of bugs (Bohr bug, Heisenbug, Mandelbug,
Schrodinbug). Systematic reproduction process.
Fun fact: Mad laptop bug.
Practice: Building a statistic debugging tool.
Unit 6: Learning from Mistakes
Theory: Bug database management. Classifying bugs. Bug maps.
Learning from mistakes.
Fun fact: Programmer with the most buggy code.
Practice: Improving your tools and practicing on a real world bug
database.
Course Instructors
Andreas Zeller InstructorAndreas Zeller is a computer science professor at Saarland University, Germany. His research centers on programmer productivity: What can be done to ease the life and work of programmers? Among Linux and Unix programmers, he is best known for GNU DDD, a debugger front-end with built-in data visualization. Among academics and advanced professionals, Zeller is best known for Delta Debugging, a technique that automatically isolates failure causes for computer programs.
Gundega Dekena Assistant InstructorOnce upon a time Gundega was a Udacity student. Now, for her activities outside of her direct duties, she has earned the unofficial title "Queen of Captions" and was granted the Keys to the Forums. She also keeps a close eye on the wiki, and all things student community related.
There are no frequently asked questions yet. If you have any more questions or need help, contact our customer service.
