TDA567 / DIT084 Testing, debugging and verification
Course-PM
TDA567 / DIT084 TDA567 / DIT084 Testing, debugging and verification lp2 HT22 (7.5 hp)
Course is offered by the department of Computer Science and Engineering
Contact details
Examiner
Yehia Abd Alrahman
Teaching Assistants
- Nachiappan Valliappan
- David Lidell
- Prabhat Kumar Jha
There will be two guest lectures:
- Software Verification: Dr. Mauricio Chimento, currently a Software Application Developer at Jeppesen Systems AB, a Boeing company
- Dafny at Amazon: Matthias Schlaipfer, Applied Scientist at AWS in Berlin. "
Student Representatives
Students are welcome to provide feedback on the course to the student representatives or any of the teachers. For contact details, (See student representatives).
Course Evaluation:
Mid-course meeting: Mid-course Meeting.pdf
Course format
Following the university recommendations, the Testing, Debugging, and Verification course will be given in person this year. The first lecture will take place on Monday, October 31 2022 at 15.15 in room ED (room number 5363) of the EDIT building in Johanneberg campus. Please see TimeEdit. to find out the rooms of the upcoming lectures, exercise sessions, and lab sessions.
Course purpose
The main objective of the course is to develop a good understanding of the techniques that are used to (1) discover errors in computer programs, (2) analyse them and (3) eventually isolate them.
We will provide automatic and/or mathematically correct ways to ensure that a program really does what we expect it to do. 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)
- Verification (formal reasoning about programs 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:
- Introduction to Software Testing by Paul Ammann and Jeff Offutt (unfortunately not available online)
- 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.
Read more about the course structure in the respective pages:
- Lectures (schedule and slides)
- Labs (schedule and hand-in assignments)
- Exercise Sessions (schedule and exercises)
This is your guide to navigating the course and we encourage you to visit these pages weekly for up to date information about the course.
Communication tools
- This Canvas room is the primary source of information about the course. All announcements will be made on Canvas.
- The discussion forum is also hosted on Canvas. There you can ask questions about the course to the teachers and to other students. Sharing solutions to labs is forbidden, on Canvas or anywhere else.
- We use the Fire system. to handle lab submissions. All feedback for the hand-in assignments will be provided there.
Learning objectives and syllabus
Knowledge and understanding:
- 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 software verification.
- Express precise specifications of software units,
- Systematically discover inputs on which a program fails,
- Locate, analyse, and fix the error which caused the failure,
- Formally reason about simple programs for guaranteeing correctness.
Judgement and approach:
- Judge the various error removal and prevention practices that one can encounter in a working context,
- 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 on Studieportalen.
If the course is a joint course (Chalmers and Göteborgs Universitet) you should link to both syllabus (Chalmers and Göteborgs Universitet).
Examination form
The course is examined by a final individual written exam, 5.0 hec, and laboratories (practical hand-in assignments), 2.5 hec. The laboratories 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
Confirm dates below here.
Regular exam: 10 Jan 2023 at 8:30am (sign up open from 11 Oct to 21 Dec 2022)
Re-exam: 05 Apr 2023 at 02:00pm (sign up open from 21 Feb to 19 Mar 2023)
Exam paper format
The written exam will include basic learning outcomes questions and more advanced questions. All students must pass the basic questions to pass the exam and get the grade 3/G. Students who also pass the advanced questions will be able to get higher grades (4, 5/VG).
Course summary:
Date | Details | Due |
---|---|---|