# Homework Assignment #1

### Due on paper in lecture, Monday 26 September 2011

Correction in purple added 18 September.

Correction in brown added 18 September.

• Question 1 (15): SPIRE is UMass' system for online course information and registration. Choose three of the eight aspects of software quality in L&C Chapter 1, and comment on how SPIRE is a good or bad piece of software with respect to those aspects.

• Question 2 (10) Do Exercises 2.1 and 2.2 on pages 24-25 of L&C. (For example, the "order of" the function 2n + 6 is "O(n)".)

• Question 3 (20) For each of the two code fragments in Exercises 2.4 and 2.5 on page 25 of L&C, give the order of the growth function and justify your answer. Correction: L&C meant to say "`count2=1`" instead of "`count2=0`". Solve the problem with this change in the code, and say what will happen to the method if this change is not made.

• Question 4 (15) The statement "O(n2) + O(n2) = O(n2)" means "if f and g are each functions that are bounded above by quadratic functions, then f + g is also bounded above by a quadratic function". Explain why this is true. Then determine the order of "O(n)[O(n) + O(1)] + O(n) + O(n3)" and justify your answer.

• Question 5 (20) Do Exercises 3.4 and 3.5 on page 66 of L&C. In Exercise 3.5, I earlier said "assume that each of the three parts starts over with the result of Exercise 3.4" but this makes no sense as (b) and (c) are the same commands. Assume that the operations of (a), (b), (c) take place sequentially in that order.

• Question 6 (20) Write a Java static method

`Integer[ ] rearrange (Integer [ ] input)`

that will take any array of Integer objects as inputs and return an array of the same length containing the same objects but such that (a) all the even numbers come before the odd numbers, (b) all the original even numbers are in the same relative order, (c) all the original odd numbers are in reverse order relative to their position in "input". Use a `Stack<Integer>` object.