Software debugging, which involves localizing, understanding, and removing the cause of a failure, is a notoriously difficult, extremely time consuming, and human-intensive activity. For this reason, researchers have invested a great deal of effort in developing automated techniques and tools for supporting various debugging tasks. In this seminar, we discussed several different tools and techniques that aid in the task of Fault Prediction, Localization and Repair. The talks encompassed a wide variety of methodologies for fault prediction and localizing, such as - statistical fault localization, - core dump analysis, - taint analysis, - program slicing techniques, - dynamic fault-comprehension techniques, - visualization techniques, - combining hardware and software instrumentation for fault detection and failure prediction, - and verification techniques for checking safety properties of programs. For automatically (or semi-automatically) repairing faulty programs, the talks covered approaches such as - automated repair based on symbolic execution, constraint solving and program synthesis, - combining past fix patterns, machine learning and semantic patch generation - a technique that exploits the intrinsic redundancy of reusable components, - a technique based on memory-access patterns and a coverage matrix, - a technique that determines a combination of mutual-exclusion and order relationships that, once enforced, can prevent buggy interleaving. in addition, this seminar also explored some unusual topics such as Teaching Debugging, using Online Courses. Another interesting topic covered was the low representation of females in computing, and how programming and debugging tools interact with gender differences.