Course syllabus
Course-PM
TDA567 / DIT082 Testing, debugging and verification lp2 HT19 (7.5 hp)
Course is offered by the department of Computer Science and Engineering
Contact details
Email to any teachers: <username>@chalmers.se
Lecturer:
- Moa Johansson <jomoa>
Teaching Assistants:
- Yu-Ting (Jeff) Chen <yutingc>
- Alejandro Gómez Londoño <alejandro.gomez>
- Nachiappan (Nachi) Valliappan <nacval>
Due to the lecturer's upcoming parental leave starting mid-December, the official examiner after this point is Wolfgang Ahrendt, <ahrendt>.
There will be one guest lecture given by John Hughes, professor at Chalmers and founder of Quviq AB. John is a world expert in property based testing and the inventor of the QuickCheck tool.
Course purpose
The course is about how to convince oneself that a program unit really does what it should. There are different methods for verifying programs that will be covered in this course:
- testing (which has the purpose of finding errors in a program in a systematic way)
- debugging (which has the purpose to systematically trace and eliminate an error)
- proving or formal verification (reasoning about the program in order to guarantee correctness).
Verifying a program only makes sense if we can precisely specify what the program is supposed to do. Many specifications are written in natural language which might lead to imprecision and misunderstandings. In the course you will learn how to use precise methods for specifying functional requirements. Such precise specifications will then be our basis for the verification of programs.
Schedule
Course literature
There are no mandatory books that students must buy, nor is there any single textbook covering all the content of this course. However, as a complement to the course slides, the following books which are available as e-books from Chalmers Library might be helpful:
-
Why Programs Fail: A Guide to Systematic Debugging by Andreas Zeller
A definitive and modern treatment of debugging. -
The Art of Software Testing, 3rd Edition by Glenford J Myers
A classic book on testing. -
The Science of Programming by David Gries.
Covers topics related to program verification and the weakest pre-condition calculus. -
Code Complete, 2nd Edition by Steve McConnell
An extremely useful book on all aspects of programming, not only for the present course. Chapters 22 and 23 cover testing and debugging.
The course uses several software tools. A collection of documentation and online references to these tools can be found on the Tools page.
Course design
The course will have two lectures per week (Monday and Thursday), one lab session (Monday) and one exercise session (Thursday). Lab sessions will focus on the hand-in assignments: this is where you can get help with upcoming hand-ins, as well get clarification about feedback. Exercise sessions will be closely linked to the lectures of the week. Here, students may solve given problems, discuss solutions and interact with teachers in a more informal manner. The first part of the exercise session is dedicated to students solving problems themselves or in small groups, with the later half dedicated to discussion of (possibly alternative) solutions.
Students are strongly advised to attend all teacher-led sessions to get as much as possible out of the course.
Read more on the respective pages:
Changes made since the last occasion
Minor updates to split one lab assignment into two smaller ones with the aim of spreading workload more evenly during the study period.
Minor update to modernise the written exam format, with the aim of clarifying which questions are required to be answered for the different grades. The exam will consist of a Part A to be answered by all students to pass, and a Part B which only need to be attempted by those aiming for grades 4, 5 or VG.
Learning objectives and syllabus
Learning objectives:
After completion of the course the student is expected to be able to
- describe the possibilities and limitations of both informal and formal techniques for the discovery, analysis, and resolving of program errors
- describe the concept of precise specifications of software units
- discuss the principles of verification
- express precise specifications of software units
- characterise inputs on which a program fails
- locate, analyse, and fix the error which caused the failure
- formally reason about simple programs for guaranteeing correctness
- judge the various error tracing and prevention practices they encounter
- contribute to the development and improvement of error removal and prevention techniques in a given context
- follow up on, and take advantage of, conceptual and technical developments in the area of testing, debugging, and verification that go beyond the exact techniques covered in the course
Link to the syllabus Chalmers.
Link to the syllabus GU.
Examination form
The course is examined by a final individual written hall exam, 5.0 hec, and Laboration (practical hand-in assignments), 2.5 hec. The laborations are must be done in groups of 2-3 students. Instructions for labs will be posted during the course.
In case a practical hand-in assignment is not passed in the first attempt, the student is granted a second try, to be submitted within one week. Labs can only be assessed during the study period in which the course is given, i.e. must be completed before the January exam.
The exam and the labs can be passed independently. However, to pass the course both the labs and exam must have been passed. In case of a pass, the final course grade is determined by the final exam.
The final grade is given on the standard scale for the respective universities: U (fail), 3, 4, 5 for Chalmers students and Fail, Pass (G), Pass with Distinction (VG) for GU students.
Exam Dates
Regular exam: 8.30 am on 14 January 2020 (Johanneberg)
Re-exam: 14.00 pm on 8 April 2020 (Johanneberg)
The exam is pen-and-paper. No external aids are allowed. The building and room of the examination is posted in Studentportalen closer to the exam data.
Exam Paper Format
The written exam will be divided into a Part A (basic learning outcomes) and a Part B (advanced questions). All students must pass Part A to pass the exam and get the grade 3/G. Only students aiming for higher grades(4, 5 / VG) must in addition pass Part B.
Student Representatives and Feedback
Students are welcome to provide feedback on the course to either the student representatives or directly to the teacher. For contact details, see: Student Representatives
Course summary:
Date | Details | Due |
---|---|---|