We marked the exams. Here are the averages. CS447 exam: 82%; class average: 79.9%. CS647 exam: 80%, class average: 80.2%. ECE453 exam: 79%, class average: 76.6%. SE465 exam: 86%, class average: 86.0%. Overall exam: 83%, average: 81.2%.
We're in the process of marking the exams. Here is the exam and my solutions.
I meant to say that you had to use mock objects somewhere in Q3, not everywhere. If you lost marks for using mock objects somewhere but not everywhere, send me mail and I'll fix your mark.
I will be holding office hours all day on Friday, April 16 (10:00-4:00) and Monday (10:00-1:00; 2:15-5:00, note the last minute change). I'll be around before then too, if you have any questions. I've posted solutions for A3 and A4. I will bring your marks to date to the exam.
By the way, someone noticed that I posted the wrong version of last year's final. I've now posted the proper 2009 final and 2009 final solutions.
Friday, March 26: no SE section (11:30). Monday, March 29: Guest lecture by Derek Rayside. Thursday, April 1: tutorial (bring questions). Friday, April 2: no class. Monday, April 5: no class. Exam period (dates TBA): extra office hours.
Here is version 1 of the course project. I've made a suggestion that MoveOption is quite complicated and that you might want to focus your attention more precisely.
Bob Zhang will lead a tutorial (slides) this Thursday and Friday, March 11 and 12, on tools for debugging (replay debugging, valgrind, and stepping backwards through programs).
Here is Assignment 4 (v4). (PS: hint: "EasyMock Class Extension"). You may have to seek out EasyMock's dependencies cglib-nodep-2.2.jar and objenesis-tck-1.2.jar.
Mehdi Amoui Kalareh will lead a tutorial (slides) this Thursday and Friday, February 25 and 26, on the Java Modelling Language.
Here is Assignment 3 (v1). Sorry for the delay. It is due in two weeks, on Wednesday, March 3. As discussed in class, I'll continue using my homebrew assignment handin system, but you'll be able to retrieve your submitted assignments.
Inconveniently, the website I mentioned in the assignment is down. I've mirrored the text.
By the way, as I mentioned in class, we'll be re-assigning the marks on A2Q1. Let M be your mark for part (a), which was out of 13, and let N be your mark for part (b), which was out of 12. Your new mark will be 2M+0.5N, and the denominator will be 25.
We marked the midterms today. (By we, I mean the TAs, with me offering moral support. Thanks, Xavier (Q4), Bob (Q1), Mehdi (Q2) and Samaneh (Q3)!) You'll get them back in class Friday.
I've written up solutions. You can also consult a histogram of the marks distribution. The mean over all students was 70%; by class: SE 76%, CS447: 66%, ECE453: 64%, CS647: 66%. (The medians are pretty much the same as the means.)
Here's the midterm. I probably should've dropped one of Q2 and Q3.
In case you're curious, here is last year's final and solutions to that final.
A2 solutions now available.
There will be a review tutorial on Thursday, February 4 and Friday, February 5, led by Samaneh Navabpour. Here are last year's midterm (solutions) as well as practice questions.
If x is a List, consider a call to
x.add() to be a use of x and not a def.
Something is being defined, but it's not x. Ignore the
def in this case.
Assignment 2 is now available and
due by 11:59pm (EST) on Wednesday, February 3rd. Please use ASM
rather than reflection to read the classes; ASM enables you to analyze
classes without loading them into the running Java Virtual Machine.
Note that some of the information is visible in fields of the
MethodNode, e.g. the field access
in conjunction with ACC_STATIC.
Some students have pointed out to me that Prime Path Coverage imposes a ridiculous number of test requirements. So, if you have e.g. a cycle 1-2-3-4-5-6-7-8-1, you can write that PPC imposes "1-2-3-4-5-6-7-8-1 and related cycles" and explain what "and related cycles" means.
In response to a question in class: you don't need to use assertions as long as you can somehow argue that you're getting the coverage criteria that you need.
Marking scheme for Question 1: 13 points for submitting a working program; 2 points for code readability; 5 points for (good) comments; 5 points for code quality (modularity, algorithm, etc.)
Xavier's source code from Tutorial 1 (JUnit) is available.
Assignment 1 is now available and due by 11:59pm (EST) on Monday, January 18th. The essay for Question 1 should be single-spaced.
Here is the syllabus for this class.
This course comes with some flexibility for assignment handin dates. You have 4 "grace days" to use throughout the term. Handing in an assignment a day late consumes a grace day. If you use more grace days than you have, I will divide the marks for late assignments by 2, if you manage to hand in the assignment before I return it.
The textbook for the class will be:
Paul Ammann and Jeff Offutt. Introduction to Software Testing. Cambridge University Press, 2008.
This book is available on amazon.ca for $62. I also strongly recommend the following book:
Andreas Zeller. Why Programs Fail: a Guide to Systematic Debugging. Morgan Kaufmann, 2005.
The Zeller book is quite practical and I expect that it will be useful to you in the future as well.
Several students have asked me if the tutorials and labs are mandatory. They are not mandatory for this course.