Program #1 FAQ

  1. What features does the application need to provide?

  2. Highest Need Very Desirable Moderate Need Lowest Need
  3. What engineering tradeoffs should I consider?

  4. The user wants an inexpensive product delivered quickly.  The user is willing to sacrifice some convenience in usability in order to keep the cost down.  (Hint: don't use a GUI unless you are fluent with the needed tools).  However, do not design a UI that requires the user to answer a series of interactive questions. Such an interface is not of professional quality.

    You may not have time to implement all the desired features, so prioritize your efforts to produce the highest need features first.
     

  5. What platform does the application have to run on?

  6. You may use any development language / platform you desire, but you must be able to demonstrate your solution on one of the platforms available in the CSc labs: Windows, Solaris, Linux, or the Web.
     
  7. What data structures should I use?

  8. It's up to you. Vector, List and Tree are all possible choices but it depends on the class library you choose. Also, performance requirements drive the data structure choice.
     
  9. Does the user care about external file formats?

  10. Not really but he wants an inexpensive solution, and designing your own format may be costly. The best solution is to use a serializable collection class but other simple solutions are also acceptable. Don't even think of designing your own binary format.  It is recommended to not use text files for persistent storage; it's a lot of tedious work and will probably take more time to develop than serialization.
     
  11. Do you have an example of serialization?

  12. Check out:
    Write File
    Read File
  13. What about sorting? We need to sort entries for printing?

  14. The instructor insists that you not use a O(n2) sort!  Do not write any sorting code. Instead:
        a. Use a collection class (e.g. TreeSet in Java) that sorts for you OR
        b. Use Collections.sort OR
        c. Use a sort function from a library (e.g. man 3 qsort in Unix) OR
        d. Use a command line sort (both DOS and Unix have them)
     
  15. What, specifically, constitutes unacceptable code?

  16. After program 1, all code must meet the class coding standards.  On the first program, these standards will not be enforced rigorously, but this is a good chance to get in the habit of following the class standards. As a minimum,
    1. have an overview in each file.
    2. have specifications for each method.
    3. use meaningful variable names and have comments where code isn't clear.
    4. be nicely formatted (dark print, no wrap-around, use blank lines for layout, ...)
    5. have NO magic numbers.

    6.  
  17. What quality level do you expect?

  18. Demo quality, as defined by Dr. Stearns Quality Level Guidelines
     
  19. May I use command line arguments for the input?

  20. Yes.
     
  21. What about test cases?

  22. The bare minimum is to verify all of the required features.
    Be sure to run at least two program sessions to verify that you can create a playlist, save it on disk and then read it in.
     
  23. What are some of the use cases we don't need to implement?