Bugs Fall 2013This is a course in the PhD program of the Faculty of Informatics at the University of Lugano. This page provides public access to the course material.
Discover, Connect, Innovate
Learn about techniques you were not aware of. Discover known approaches from a new perspective. Establish meaningful connections between ideas. Get inspired for your research.
All About Software Bugs
Navigate back in time from a failure through an infection to the defect. Learn about program slicing, delta debugging, assertions & invariants, deterministic replay, and even bug repositories.
Textbook, Papers, Tools
Read chapters of a great textbook and relevant research papers, and explore and compare tools. Meet to discuss, analyze, and compare, and generate ideas.
Logistics When, where, what and how
|Meetings||Thursday, 15:30 - 17:15, room SI-004|
|Prerequisites||PhD student in informatics|
|Textbook||Andreas Zeller, Why Programs Fail, Second Edition|
|Effort||8 hours per week (1.5 in class, 6.5 reading, thinking, and exploring tools)|
|Credits||4 ECTS - based on the 112 total working hours|
|Grade||Pass/fail (based on submitted structured notes and active participation in at least 10 of the 14 meetings)|
Where do I ask questions?
Please use our Discussions Forum on Moodle.
We are two professors of the Faculty of Informatics. Besides teaching this course, we spend our days (and sometimes nights) on research in the areas of programming languages, systems, and software engineering.
Schedule A one-semester, 14-week course
We have one weekly meeting of 90 minutes. We will usually spend 2 weeks per book chapter. In the first week we will read the chapter and do selected exercises (each chapter ends in a set of usually very insightful exercises). This provides a good introduction into a topic. In the second week we will read a relevant related paper and/or explore/compare relevant related tools/techniques (each chapter points to the most relevant research papers and tools). This gives us deeper insights into current research in the corresponding topic. Chapters 1 and 6 might not need further reading and tool exploration, thus we probably will cover them in a single week.
Note that this schedule is subject to change. We will update the contents of this schedule as we progress through the course.
|Thu, Sep. 19||Textbook How Failures Came to Be
(debugging as search in space and time)
|Read Chapter 1, solve Exercises 1.2, 1.3, and 1.4 (sample.c).
Submit your notes on Moodle.
|Thu, Sep. 26||Textbook Making Programs Fail -- Note: Chapter 3
(testing and design for debuggability)
|Read Chapter 3, propose at least one related paper to read or tool to try, solve Exercise 3.4. Submit your notes on Moodle.|
|Thu, Oct. 3||One or more of:||
|Thu, Oct. 10||Textbook Tracking Problems
(bug reports and bug repositories)
|Read Chapter 2, solve Exercise 2.2 (on Tool Bugzilla). Submit your notes on Moodle.|
|Thu, Oct. 17||One or more of:
|Thu, Oct. 24||Textbook Reproducing Problems
(non-determinism, record/replay, mock objects, crash reproduction)
|Read Chapter 4, solve Exercise 4.3. Note: On OS X use "sudo dtruss ls" (dtruss is using dtrace). Submit your notes on Moodle.|
|Thu, Oct. 31||One or more of:
|Thu, Nov. 7||Textbook Simplifying Problems
(delta debugging, ddmin algorithm)
|Read Chapter 5. Submit your notes on Moodle.|
|Thu, Nov. 14||ddmin and related approaches|
|Thu, Nov. 21||Textbook Isolating Failure Causes
(pinpointig the defect with delta debugging)
|Read Chapter 13. Submit your notes on Moodle.|
|Thu, Nov. 28||Textbook Deducing Errors
(static analysis: program dependence graph, program slicing)
|Read Chapter 7. Submit your notes on Moodle.|
|Thu, Dec. 5||One or more of:
|Thu, Dec. 12||Textbook Observing Facts
(dynamic analysis: logging, debugging, event queries, visualization)
|Read Chapter 8. Submit your notes on Moodle.|
|Thu, Dec. 19||Textbook Tracking Origins
(omniscient debugging, dynamic slicing)
|Read Chapter 9. Submit your notes on Moodle.|
Kinds of Assignments
There will be three kinds of assignments: reading book chapters, reading papers, and investigating tools.
In all three kinds of assignments you need to take notes. We would like you to organize your notes according to the following categories:
- New ideas triggered by reading/exploration (if any)
- Relationship to your own practical developer experience (if any)
- Direct connection to your own research (if any)
- Difficult points that are unclear to you (if any)
- Possibly controversial aspects (if any)
- Other notes & comments (if any)
You always have to submit some insightful notes, but you do not need to have notes in all of the above categories.
There will be one assignment each week. We expect that you have to invest about 6.5 hours in each assignment.
In general, no late assignments are accepted. You can skip (or be late with) at most 4 assignments (and their corresponding class meetings) and still get credit.
Where are the assignments?
All assignments are posted on the schedule.