If you have difficulties accessing the discussion forum or posting your assignments, contact the TA or grader.
Students should read the assigned lecture material and post a list of questions about the material to the class discussion forum (to be announced in the class).
Students should also post their answers to questions by their classmates to the same discussion forum.
The sections to read for reading assignments are indicated
on the course syllabus page in red letterfont, next to the lecture title. It is important that you also try to solve the problems related to the assigned section (at the end of each chapter).
These problems illustrate practical examples for theoretical concepts.
Most problems are solved on the back of the book, in the chapter titled SOLUTIONS TO SELECTED PROBLEMS.
Try to solve each problem on your own and look at the solution only if you find it very difficult. Students are encouraged to solve the problems that do not have solutions in the book, or look for mistakes in the existing solutions, or think of an alternative/improved solution, for additional credit credit.
Note that you are not required to use the recommended textbook.
You are welcome to use any textbook
or any other source. Just make sure your
questions are on topic. The lecture topics and dates are given
on the course syllabus page.
Do not start new discussion threads but instead just follow the initial threads that were set-up by the TA/grader.
Download the class lecture notes here:
During the lecture, you should keep track of all questions that you
asked or answered,
because the instructor will not be able to memorize each student’s
participation and the TA/grader may not be present during the class.
To ensure that you receive credit for your participation, you must post your questions/answers to the discussion forum immediately after the lecture. You will receive credit only for the questions/answers that you posted on the discussion forum.
Students are highly encouraged to send in their questions on time.
Questions and answers for any reading assignment can be submitted any time
during the semester. Even if you already submitted your homework for a given section and later (e.g., while working on project reports) you have more questions from the same section, post them at any time.
However, only the contributions that are posted within one week after the lecture will be graded. After that, any new Q/A’s are acceptable, but will not be graded.
The questions/answers for each lecture will be graded using a
star rating scale.
The number/quantity as well as the quality of your questions will count,
as follows. The grade for each assignment will be assigned on the scale
2/3/4/5 points (zero for no submission), where 5 = “A”
or “excellent”, 4 = “B” or “good”,
3 = “C” or “fair”, and
2 = “D” or “poor”.
Any late submission will cause 1 point deduction from the score.
A highly rated assignment will meet the following criteria:
• An assignment that meets all of these criteria will receive
• An assignment that fails one of these criteria will receive a “B”
• An assignment that fails two or three of these criteria will receive a “C”
• An assignment that fails four or more of these criteria will receive a “D”
Also see section Examples of Questions below.
There is no specific number of questions required per lecture; perhaps the best strategy is to visit the discussion forum and see how many questions are asked by the best students—then try to ask as much or more and keep in mind that the quality of your questions matters as well.
To receive the full credit, you must post your questions before the lecture, and answers to existing questions any time during the day of the lecture.
You should ask anything that you feel needs better explanation. It
is impossible that you will find everything clear in the assigned
material and careful reading and thinking about the material will
surely lead to some doubts and questions.
Also, if a statement or diagram appears to be incorrect, or conflicting with another statement or diagram—that is also a good question to ask.
Just ask about any doubt that you encounter.
Please do not send vague statements, which
are not even questions, such as these examples:
1. “I don’t understand Example ___x____ fully.”
2. “I understand the principles for assigning responsibilities, but I am confused about Figure 2-27?”
First, these are not questions. They are statements about person’s state of understanding. Second, they are not at all specific about what is not clear. It is not possible even to try to answer them and clarify the refereed materials, because it could be anything.
Please be more specific in your questions. In the above example, what exactly are you finding confusing about Figure 2-27?
We will not consider such vague questions when grading your reading assignments.
A typical mistake students do goes like this: I did not submit
any reading assignments because most of the time I could either
comprehend things or I would research the Web to understand
The purpose of the reading assignments is twofold: (1) for students to master the course material, and (2) for the instructor to know that students worked on the assignment. Therefore, if you don’t submit any reading assignments, the instructor does not know whether or not you did them.
Even if you find answers to your doubts on the Web, post your questions and your answers on the discussion forum.
Graded by Chao Han, on the scale 1–3 for 1=“poor”, 2=“average”, 3=“high”
Examples of Highly Rated Contributions, based on these criteria:
1. asked specific questions about his/her thoughts and doubts
2. stated the questions clearly and unambiguously
3. asked many questions, implying that he/she read everything carefully
4. answered questions by others
5. for answers, provided external links to stregthen the argument
6. submitted on time
Question 1: On page 135, Figure 2-39 presents the logical organization of software tests. We can see Unit testing, Integration testing, and System testing. Acceptance testing is also discussed following this figure. Later, the book also mentions Regression testing, Black box testing and White box testing. I think the additional 3 testing methods are also useful testing approaches. But I’m also kind of confused about their roles in the whole testing process. In which testing part can we use them? How can we use them? And what’s their relationship? How can we distinguish them?
Question 2: In the section on Equivalence Testing, this book uses heuristics to select a set of test cases in order to find equivalence classes of inputs. And it also states that these rules of thumb are generally useful but do not guarantee correctness. However, I think this method is very reasonable. Input parameters are divided into different groups and treated differently, which could cover most types of input parameters. Besides, there is also a logic defining the criteria for equivalence classes (Coverage, Disjointedness,and Representation). I don’t know why heuristics do not guarantee correctness. Is there any analysis or arguments about this?
Question 3: The book mentions control flow testing and state-based testing when discussing Boundary testing. I’m wondering the connection betwen these 3 terms. And how can we distinguish them.
Question 4: On page 141, the book says that if class implementations are available for some functions, we could use them instead of writing drivers and stubs when we are doing unit testing. But doesn’t this conflict with the main purpose of unit testing? We are writing stubs and drivers and testing only one fixture at a time to isolate the errors and to get errors only from the fixture. If we use implemented functions, how will we be able to understand which function causes the error?
Question 5: On page 143, 3rd paragraph, this sentence is too abstract for me and I didn’t understand it: Components are combined in a horizontal fashion and integration processes in different direction, depending on the horizontal integration testing strategy.
Examples of Average Rated Contributions, based on these criteria:
1. questions not specific but rather generic
2. questions poorly formulated and difficult to understand what is being asked
3. submitted after deadline
Question 1: On page 138, about the Boundary Testing: If the input parameter is not a continuous one, like including 1 to 2 and 3 to 4 the same time. How can we use Boundary Testing? Is that put all the boundary in, or just put the largest one and smallest one? And if put all the boundary in, when parameter has countless section, is it possible to use Boundary Testing?
Question 2: In Section 2.7.2, you talk about a few kinds of testing. But you did not mention under what situation should we use them. When we have little information for the coding, how can we deal with the testing? Is there a priority among all these testing?
Examples of Poorly Rated Contributions, based on these criteria:
1. questions are trivial
2. questions are redundant and show careless reading—answers are already available somewhere in the book
3. submitted long after deadline
Question 1: As mentioned in the page 165, a refactoring of existing code is a method to improve its design. But what is the difference between refactoring and reusing? Are they the same thing. Or, refactoring just change the structure of design while reusing duplicates the contents of elements used?
Graded by Chao Han