Final Study Guide

Final in MOODLE.

If a question is multiple answer, you will almost certainly need to select more than one answerFor many of the select multiple answer questions you will need to select all but one answer.

2. Metaphors for a Richer Understanding of Software Development

  • What are some common metaphors, and what is there strengths and weaknesses

3. Measure Twice, Cut Once: Upstream Prerequisites

  • Choosing Between Iterative and Sequential Approaches
  • What are the typical Architectural Components and what do they mean?

4. Key Construction Decisions

  • Programming into a Language
  • Programming language selection
  • Levels of languages relative to C

5. Design in Construction

  • Know the Design Challenges
  • Importance of Managing ComplexityProgrammers who program “into” a language first decide what thoughts they want to express, and then they determine how to express those thoughts using the tools pro- vided by their specific language.
  • Desirable Characteristics of a Design
  • Coupling

6. Working Classes

  • Benefits and needs for an ADT
  • Good Abstraction
  • Good Encapsulation

7. High-QualityRoutines

  • Reasons to Create a Routine
  • Cohesion
  • Parameter Order

8. Defensive Programming

  • Use of Assertions
  • Error-Handling Techniques
  • Robustness vs. Correctness
  • Barracades

9. The Pseudocode Programming Process

  • Good verses bad Pseudocode

10. General Issues in Using Variables

  • Implicit Declarations
  • Guidelines for Initializing Variables
  • Rules on scope of variables and variable "live" times

11. The Power of Variable Names

  • Know the rules for good and bad variable names
  • What is the Most Important Naming Consideration?
  • The Effect of Scope on Variable Names

12. Fundamental Data Types

  • What are Avoid “magic numbers”. How and why to avoid them.
  • Integer Ranges (8,16,32bit signed and unsigned)
  • Comparing and doing arthemitic on floating point numbers

13. Unusual Data Types

  • What are the uses of structures?
  • Pointer. How to use. Dog Tag - purpose and how they work. Shredding Memory.
  • Global veriables. aliasing problems with global data. Code reuse hindered by global data.
  • Tramp Data.

14. Organizing Straight-Line Code

  • How to organize code Statements That Must Be in a Specific Order
  • How to deal with dependancies amoung lines of code.

15. Using Conditionals

  • How if-then-else works
  • How Switch statement work
  • Putting the nominal case first

16. Controlling Loops what are the kinds of loop structures, and how do they work?

  • When is the FOR loop called for? When Not?
  • How to use break, continue, and next

17. Unusual Control Structures

  • What is unusual about Multiple Returns from a Routine?
  • What are the rules for using recursion appropriately?
  • Goto's - when and why are they appropriate to use?

18. Table-Driven Methods

  • What are the three types of table-driven methods, and how does each work?
  • Why are tables used?

19. General Control Issues

  • What are methods of writing good Boolean Expressions?
  • What are ways of Making Complicated Expressions Simple?
  • What are Techniques for Reducing Deep Nesting?

20. The Software-Quality Landscape

  • What are the External Characteristics of Software Quality?
  • What are the Internal Characteristics of Software Quality?
  • What are some Techniques for Improving Software Quality

21. Collaborative Construction

  • What are the elements of Effective Pair Programming?
  • What is a formal inspection? What are the roles, and steps?
  • What are typical components of a informal walk-through?

22. Testing

  • What is the role of developer testing?
  • What is test first verses test last? What are the advanges of each?
  • What is Structured Basis Testing and Data-flow Testing? How is each done?

23. Debugging

  • What is the role of debugging? What is, and isn't, its purpose?
  • What are the bad ways to debug?
  • What are good ideas to try when looking for a bug?

24. Refactoring

  • What is refactoring? When is it used, and for what? What is NOT it's purpose.
  • What are the reasons to refactor?
  • What are some specific kinds of Data-Level Refactorings? Statement-LevelRefactorings? Routine-Level Refactorings? Class Implementation Refactorings?

33 Personal Character

  • Humility
  • Honesty
Topic revision: r1 - 2015-05-11 - 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