Intermediate
Join 26,021 Students

Approx. 2 months

Assumes 6hr/wk

(work at your own pace)

Course 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.

Why Take This Course?

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.

Pre-Requisites and Requirements

Basic knowledge of programming and Python at the level of Udacity CS101 or better is required. Basic understanding of Object-oriented programming is helpful.

See the Technology Requirements for using Udacity

What Will I Learn

Syllabus

Lesson 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.

Lesson 2: Asserting Expectations

Theory: Assertions in testing and in debugging.
Fun fact: The most expensive bug in history.
Practice: Improving the tracer.

Lesson 3: Simplifying Failures

Theory: Strategy of simplifying failures. Binary search. Delta debugging principle.
Fun fact: Mozilla bugathon.
Practice: Building a delta debugger.

Lesson 4: Tracking Origins

Theory: Cause-effect chain. Deduction. Dependencies. Slices.
Fun fact: Sherlock Holmes and Doctor Watson.
Practice: Improving the delta debugger.

Lesson 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.

Lesson 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.

Instructors & Partners

instructor photo

Andreas Zeller

Instructor

Andreas 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.

instructor photo

Gundega Dekena

Course Developer

Once upon a time Gundega was a Udacity student. In a way she still is, because she is learning new things from instructors she works with and her Udacity coworkers every day.

If you occasionally want to read fun news about robotics, science and games, follow her on G+ - https://plus.google.com/+GundegaDekena.

Frequently Asked Questions


When does the course begin?

This class is self paced. You can begin whenever you like and then follow your own pace. It’s a good idea to set goals for yourself to make sure you stick with the course.

How long will the course be available?

This class will always be available!

How do I know if this course is for me?

Take a look at the “Class Summary,” “What Should I Know,” and “What Will I Learn” sections above. If you want to know more, just enroll in the course and start exploring.

Can I skip individual videos? What about entire lessons?

Yes! The point is for you to learn what YOU need (or want) to learn. If you already know something, feel free to skip ahead. If you ever find that you’re confused, you can always go back and watch something that you skipped.

How much does this cost?

It’s completely free! If you’re feeling generous, we would love to have you contribute your thoughts, questions, and answers to the course discussion forum.

What are the rules on collaboration?

Collaboration is a great way to learn. You should do it! The key is to use collaboration as a way to enhance learning, not as a way of sharing answers without understanding them.

Why are there so many questions?

Udacity classes are a little different from traditional courses. We intersperse our video segments with interactive questions. There are many reasons for including these questions: to get you thinking, to check your understanding, for fun, etc... But really, they are there to help you learn. They are NOT there to evaluate your intelligence, so try not to let them stress you out.

What should I do while I’m watching the videos?

Learn actively! You will retain more of what you learn if you take notes, draw diagrams, make notecards, and actively try to make sense of the material.