Assignments:
|
Due |
|
|
8/28 |
• Send me an email from the account where you receive email regularly • Download (from my web site) the paper “The Economic Impacts of Inadequate Infrastructure for Software Testing” by NIST, 2002. (It’s large.) • Read by 8/30/2007 (next class) chapters 1, 2, 3.1, 3.2, 3.8, 4. Be prepared to discuss them in class. (Bring a hard copy of these pages.)
• In the language of your choice: – Implement a program that holds an array of Customer objects – Customers have names, addresses, ID numbers, credit reference numbers. – Read the data from a file. Write it to a file. Provide a simple interface for searching by ID number and customer name. Use binary search. (You must implement the search algorithm.) – Test this program. The test suite will be turned in. – Explain to me why the test suite is adequate. – Due in 1 week.
|
|
8/30 |
Find 5 examples of “notorious” software failures in history, at least 2 of which have occurred in the last 3 years. · Write a brief description of each. Be sure to provide me with references. Read the following papers: · Cem Kaner, “Software Negligence and Testing Coverage”1996, http://www.kaner.com/coverage.htm · Steve Cornett, “Code Coverage Analysis”, 2004, http://www.bullseye.com/coverage.html · Write a 1 page summary of each
|
|
9/11 |
Implement a program that simulates a multi-tasking, single processor system with three processes. The system does not have pre-emptive capabilities, but instead depends on “good behavior”. Each process has the following algorithm:
Do forever try to get the processor flag if (got the flag) do some small amount of processing print out the name of this thread and the progress of the processing else // didn’t get the flag sleep (random period of time)
• The flag is global • Only one process is allowed to be processing at any given time • You cannot use “synchronize” • Remember to test this adequately
|
|
9/13 |
|
|
9/13 |
The original version (1928) of Ackermann' function may be defined recursively on the nonnegative integers by
ack( x, y, z ) <== if x=0 then y+z else if x<=2 and z=0 then x-1 else if x>2 and z=0 then y
else ack( x-1, y, ack(x,y,z-1) ). Prove the following for all nonnegative integers x, y, and z,
ack( x, y, 0 ) equals if x=1 then 0 else if x=2 then 1 else y ;
ack( 1, y, z ) equals y*z ; ack( 2, y, z ) equals y^z ; ack( x, 1, z ) equals if x=0 then z+1 else if x=1 then z else 1 .
|
|
9/20 |
· Prove the following using natural deduction: 1.
p ® (q®r) |- p /\ q ® r 2.
q®r |- p\/q ® p\/r 3.
Øp \/ q |- p®q 4.
p® q, r® s |- p\/r ® q\/s 5.
(p \/(q® p)) /\ q |- p 6.
p® q/\r |- (p® q) /\ (p® r) 7.
p® (q\/r), q® s, r® s |- p® s 8.
Øp, p\/r |- r |
|
9/20 |
· Download or gain access to SPIN · http:// spinroot.com (also available on CS Unix machines) |
|
9/27 |
Write a one-page description of liability and personal responsibility with respect to software development. |
|
10/02 |
• Read the Standish Group Report Standish_Survey.htm on the course website • Read about the Mars Pathfinder priority inversion problem – http://research.microsoft.com/~mbj/Mars_Pathfinder/Mars_Pathfinder.html – http://www.embedded.com/story/OEG20020321S0023 • Write pseudocode for the locking algorithm • Draw the state diagram for the two-process problem • Identify the sequence of executions that leads to the problem • Identify the problem as deadlock, livelock, or starvation
|
|
10/02 |
Read chapters 1, 2, and 3 in the text |
|
10/09 |
In the
Using the five software disasters you wrote about earlier this semester as background, write a paper that takes a stand on the responsibility of software manufacturers and individual software engineers for the software they produce. Explain if, how, and when corporations or individual software developers should be held liable for software failures. Explain the difficulty in adequately verifying and validating software and how this is either similar to or different from other manufactured goods.
The purpose of this assignment is for you to understand the technical issues related to software assurance, understand in general terms product liability as it applies to software, and to formulate and articulate a well-reasoned argument for taking a stance with respect to responsibility.
The paper should be approximately 5000 words in length. Papers should be double-spaced with 1” margins. Page numbers should appear at the bottom center of each page. Use either 10 or 11 point font. The title should be 14 point bold centered. Papers should be submitted in pdf format, and should not contain the author’s name or identification.
The evaluation rubric for this assignment can be found on the course website. |
|
10/21 |
Each of you has been assigned 2 papers to review. Your job as a reviewer is to evaluate the paper with respect to the criteria posted on the web page. You will provide a written evaluation of the paper to me, and I will forward the comments to the author. Your job is to help the author make a better paper. You are being graded on the quality of the review. The criteria are posted on the course web page. |
|
10/30 |
Each of you has been given your two peer reviews. You must grade each review by using the rubric posted on the web page and return an electronic meta-review to me. |
|
11/7 |
You have been given reviews of your papers. You must rewrite your papers taking into account the reviews. You must include with your paper a response to the comments of the reviewers. It is possible that you disagree with your reviewer. You must support your reasons for not taking the comments into account. Your reviewers will see the new paper and your previous reviews.
As before, you must send me a pdf with the author name in the file name, but no identification in the file itself. |
|
11/15 |
Show me SPIN models that answers the following questions:
x = 1; do :: x++ :: break od; assert (x != 128)
how many process states? Is the assert always true? What if the break is removed?
active proctype A() { do :: x = 3-x ;; y = 3 – y; progress: skip od } active proctype B() { do :: x = 3-x: progress: skip ;; y = 3 – y od }
program me; var p1inside, p2inside: boolean procedure one; begin while true do begin while p2inside do; p1inside := true; criticalsectionone(); p1inside := false; otherstuffone(); end; end; procedure two; begin while true do begin while p1inside do; p2inside := true; criticalsectiontwo(); p2inside := false; otherstufftwo(); end; end; begin p1inside := false; p2inside := false; parallel_begin one(); two(); parallel_end; end.
|
|
11/26 |
Peer review 2: devil’s advocate You will review two papers. You have been given the revised copies of the papers and the original peer reviews. Your job is two-fold. First, you must ensure that the paper has adequately responded to the reviews. Second, you must play “devil’s advocate” and challenge the author’s assertions and claims in every reasonable manner. If there are logical fallacies, it is your job to point them out. If the argument can be discredited, you must do so. Again, your job is to help the author make a better paper. You are being graded on the quality of the review. The criteria are posted on the course web page. |
|
12/5 |
Congratulations! Due to the high quality of your work,
your paper has been accepted in the prestigious Roach Journal, pending your
ability to address the issues raised by the reviewers. However, to keep
publishing costs down, there is a strict 2000 word limit. You must rewrite
the paper keeping all of the content and addressing the reviewers’ comments,
but reducing the size of the paper to meet the 2000 word constraint. |