CSC 300, Turner
Spring 2006

Sample essay questions and format suggestions for Midterm.
Open book and notes.  Since not every student has a laptop computer
to use, no laptops will be allowed.  You must print or write legibly
so that I can easily understand what you write.


You will be given a number of True/False questions designed to demonstrate your comprehension of the assigned readings and class discussions.   
Here is a sample:

SAMPLE TRUE OR FALSE.  (Comment if necessary)

1.   A dialectic is the result of argument, counter argument and 
reformulation of the argument in an ongoing process aiming at some 
consistent form of truth.

2.   One form of the "categorical imperative" is "never treat another human
being merely as a means but always as an end."

3.   Software Engineering is not a licensed profession anywhere in the United States.

4.   The ACM/IEEE Software Engineering Code of Ethics (SE Code) requires us to obey the law at all times.

5.   Weyuker believes that software test oracles don't exist.

6.   Hamlet supports the old adage that, "testing can reveal the presence of bugs, but never their absence."

7.   David Parnas encourages software designers to lie about the actual process used to develop software.

8.   "Trans-Scientific" questions are those that may be raised by scientific work, but cannot be answered by the scientific method.

9.   The SE Code requires software developers to ensure that important tradeoffs are available to and accepted by the public.

10.   A software process description could be critical to a case of programming negligence.

Short Answer.  Short answers must be clear and simple.  

11.   	a.  What is "untestable" software?
	b.  What does Weyuker recommend developers do when they deal with "untestable" software.

12.	Does the answer to 11 suggest some way to define "adequate testing" ("inadequate testing?") under the SE Code?

13.	a.  What is software "reliability"?
	b.  Give two reasons why basic reliability models fail for software (explain).

14.	a.  Define Deontology. 
	b.  Define Rule-Utilitarianism.  
	c.  Give a case where these ethical standards yield different results.


Essays.  When applicable, I suggest a format similar to that explained 
in class and mandated for your papers.

SAMPLE ESSAY:  (This essay asks for specific work and the format 
of the answer should follow that in some rational way.)

A.  Suppose you write a paper extending Weyuker's analysis in her paper, 
"On Testing NonTestable Programs."  You show that testing of software still 
isn't anywhere near an exact science and that we have no objective measure 
for the "strength" or "thoroughness" of testing.  You admit that we can 
get a bug list that clearly helps avoid certain problems, but that is the 
only certain result of testing.

The IEEE asks you to write some guidelines regarding the Software 
Engineering Code of Ethics section 3.11.  You'll write 
guidelines involving adequacy of test documentation
and you'll give very brief justification for each guideline.

ANOTHER ESSAY, with a more open format. 

B.  You graduate from Cal Poly (after receiving an "A" in your CSC 300
class!)  That high grade gets you an interview with UnderCover Systems
where they claim to value ethics highly.  They offer you a job (and you
have no other offers) at a salary that will enable you to pay for some 
critical surgery for your mother that she could not otherwise pay for.

UnderCover Systems hires you and only gives you the job title after you
have signed your Nondisclosure agreement.  They hire you as an
"information retrievel operative" where you will write programs designed
to connect to networked PC's and gather data which will be sent back to
a special database without the PC owner's knowledge or consent.  You 
quickly speak to your manager regarding the dubious ethics of the job
title and he responds, "it's OK, we only apply these techniques to 
potential terrorists.  The U.S. government funds us, so we're in the 
clear!"  "If we don't find these terrorists before they strike us,"
he continues, "we'll be responsible for the horrors they may cause!"
He tells you to get back to work and do your job or you may lose your
job due to the lack of progress you're making.


Suggestions:

a. Start with any simple facts you will rely on in writing your answer. The facts should be given without judgment.  Citations should be given if you know them (even roughly).

b. Name the question (issue) you will address - grounded in those facts. The question should be natural to ask after someone reads the facts. 

(At some level, consider what rules or ethical principles will come into play, you might even write them down as applicable to the issue in a list.
These may suggest some of the arguments you'll need to cover.)

c. Consider varying arguments regarding possible positions or 
answers to your question.  Here you may include readings you've done (cite as best as you can) and you may even cite class discussions (do this sincerely, to the best of your recollection).  You will be graded on your ability to cover the major alternative arguments made by others on this question.  The arguments should be made sincerely and in their strongest light.  You should not reveal your own position when covering the arguments of others.  

d. Analyze and write your answer to the question.  This should incorporate the rules, ethics, and arguments you've found.  It may include your arguments for the most rational position on the question, or you may argue for a new position.  Remember that basic rational argument will apply general principles and rules to specific facts, with a resulting conclusion that is defensible.  

In your analysis, you'd be wise to admit any weaknesses and explain how your conclusion still holds up.  

You will be graded wholistically, but the most credit comes from your
analysis: criticizing and synthesizing other arguments, making your own
position in a clear and consistent manner.

Note: I also suggest a very simple outline before you begin to write your 
answer.  Since the exam is of limited time, you should allocate that 
time carefully.