CSC3004 Software Development

Final Exam Study Guide
Spring 2011
Exam Time: Wednesday, May 18, 1:00-2:50

  1. Metaphors in Software Development – What are they? Why use them? Give several examples. What are their limits?

  2. What is the overarching goal of preparing for construction?

  3. Why are Prerequisites important in Software Development?

  4. Iterative and Sequential Approaches – what are they? How do we choose between them?

  5. Problem-Definition Prerequisite – what is it, why is it important?

  6. Consider the student information system at MVNU. Give 3 examples of each of the following:
    a. Specific Functional Requirements
    b. Specific Nonfunctional (Quality) Requirements
    c. Requirements Quality
    d. Requirements Completeness

  7. Software architecture – why is it import to specify this carfully?

  8. Software architecture – What are the typical components of good software architecture. What is the purpose of each?

  9. What is the importance of having good requirements for a project? What are software requirements?

  10. What are Key Construction Decisions? Give and explain several.

  11. What factors are involved in selecting a program language?

  12. What are the strengths and weaknesses of C++?

  13. What does it mean to say design is “Wicked”? “-- JimSkon - 2011-05-15

  14. Sloppy? About tradeoffs? Restrictions? Emergent?

  15. Why is managing complexity so important in software development?

  16. What is the meaning and significance of each of the following in design?
    a. Minimal complexity
    c. Loose coupling
    d. Extensibility
    e. Reusability
    f. High fan-in
    g. Low-to-medium fan-out
    h. Portability
    i. Leanness
    j. Stratification

  17. What the key steps in designing with objects are:

    1. Identify the objects and their attributes (methods and data).

    2. Determine what can be done to each object.

    3. Determine what each object is allowed to do to other objects.

    4. Determine the parts of each object that will be visible to other objects—which parts will be public and which will be private.

    5. Define each object's public interface.

  18. What is the meaning and purpose of each of the following?

    1. Encapsulate Implementation Details

    2. Inherit—When Inheritance Simplifies the Design

    3. Hide Secrets

  19. What are the Two Categories of Secrets?

  20. Why is it valuable to hide secrets?

  21. What does it mean to keep Coupling Loose? Why is this important?

  22. What does it mean to keep Strong Cohesion? Why is this important?

  23. Describe and give an example of each of the following design practices:

    1. Iterate

    2. Divide and Conquer

    3. Top-Down and Bottom-Up Design

    4. Experimental Prototyping

    5. Collaborative Design

  24. For each of the above, what is its advantage? Disadvantage?

  25. What is an ADT? What are it’s benefits?

  26. Given a piece of code, find and critique all instances of poor class interface and/or abstraction. Suggest improvements,

  27. Give an example of a class interface with services at different levels of abstraction.

  28. Why is it better to NOT expose member data in public?

  29. Describe “has a” and “is a” relationships among classes. How is each implemented?

  30. What is polymorphism? Under what circumstances should a case statement be replaced with polymorphism?

  31. What are valid reasons to create a routine?

  32. What are good practices to use in naming a routine?

  33. What are good practices to use in creating and using parameters when designing a routine?

  34. How can a routine protect its inputs, and why should it do this?

  35. What is offensive programming and why should it used?

  36. What are some of the advantages of using pseudocode is designing code?

  37. What are implicit variable declarations, and why are they often undesirable?

  38. Why and when should variables be initialized?

  39. What is the “life” of a variable? Be able to compute it.

  40. What does it mean to minimize the scope of a variable, and how can it be done?

  41. What is variable persistence?

  42. What is meant by variable binding time? What are some common binding times? Give examples of each.

  43. What are the advantages/disadvantages of early binding verses late binding?

  44. Why is it a good time to use each variable for one purpose only?

  45. What is the MOST IMPORTANT variable naming consideration?

  46. Why is it good to have a consistent naming policy? Give several reasons.

  47. What does it mean to have a “problem oriented” variable name? What is the alternative?

  48. With variables, what are some ways to do each of the following:

    1. Differentiate between variable names and routine names

    2. Differentiate between classes and objects

  49. Hashed Files

  50. Considerations:

    1. record distribution

    2. synonyms

    3. collisions,

    4. packing density, load factor

    5. Bucket size

  51. Techniques for collisions resolution: buckets, overflow techniques

    1. linear probing

    2. non-linear probing, double hashing

    3. Separate area for overflows

    4. Progressive overflow

    5. Bucket size considerations

    6. clustering problems, primary and secondary

  52. Advantages, disadvantages with respect to other techniques

  53. Tree Files Structures

  54. Multiway trees.

  55. B-Trees - Definition, terminology, searching, insertion & deletion

  56. B*-trees - Compared to B-tree.

  57. B+ trees, definition, advantages, management

  58. With all but AVL trees, be able to insert and delete records from a given tree.

  59. Could a B+ tree file system be modified to allow for less than or equal search? How or why not?

  60. What is the path length of a tree? Average path length?

  61. A full node in a n-way B-tree contains how many key values? How many pointers?

  62. A node in a n-way B-tree search tree contains a minimum of how many key values? How many pointers?

  63. What is the maximum number of nodes in a three-way tree with height 5? What is the maximum number of key values in this tree?

  64. What is the probability that a key insertion will cause a split in a B-tree of order 16?

  65. What is the number of nodes that need to be visited in the worst case to find a key in a B-tree of order 3 with 242 keys? with 1023 keys?


-- JimSkon - 2011-05-15
Topic revision: r1 - 2011-05-15 - JimSkon
 
This site is powered by the TWiki collaboration platformCopyright &© by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback