CSC 226

CSC 226 logo

Software Design and Implementation


Final Lab Project

Your final lab project may be completed individually or in a pair as pair programmers.

Your task in this final lab project is to expand code created earlier in the term in a direction of your own choosing and using an appropriate object-oriented class structure.

The Requirements:

  1. Code reusability is good! So, this project gives you to opportunity to choose something from the course you really enjoyed and want to expand. In particular, you must enhance a program you or your partner has made in the course, and/or build off of code which we have provided to you.

  2. Regardless of what you decide to do, you MUST include references to the original program and explain exactly how you modified and/or enhanced it in the report, as explained below. As always, ideas from the internet and all consultations with your peers, the TAs or instructors must be documented.
  3. Your project must use object-oriented programming concepts in some way. So, your program may optionally be separated into as many modules as necessary. If you need multiple files, you must make sure to submit ALL the files needed to run your program or play your game, including any text files used by your program. Your design document above should include a CRC card explaining your planned object-oriented design.
  4. Feel empowered to be creative!

  5. Before you begin your program, you should create a Design Document detailing your plan. This must briefly describe which program or programs you modified, and why you chose this to do. Your Design Document is a plan; plans can change. But you should have a Design Document which outlines enough of your program that you feel confident you can complete all the work outlined by the deadline. Because this is for planning before you begin coding, your Design Document is due earlier than the rest of the project, on April 1st, 2015. Below is a sample design document modified from A12:

    Example: Initial Software Design Document for Final Project

    Our Proposed Project Extends the A12: DNA Assignment

    by Dr. Jan Pearce and Dr. Scott Heggen

    MOTIVATION: This program was motivated by an interest in the relationship between biology and computer science, and how computer science and algorithms can make biology problems easier, and in many cases, now solvable.

    PURPOSE: The primary purpose of this software is to take a string, determine whether or not it is a valid DNA sequence, and if it is, return the corresponding amino acid sequence.

    INITIAL DESIGN PLAN:
    We will complete this assignment by adding the functions:

    ORIGINAL IMPLEMENTATION:

    • This project builds off of A12: DNA assignment: http://cs.berea.edu/courses/csc226/tasks/a12.DNA.html. The original implementation of A12 included the following functions:
      • is_nucleotide()
      • num_times()
      • complement_strand()
      • mRNA()
      • chunk_amino_acid()
      • amino_acid_chunks()
      • genomics_test_suit()
      • testit()
      • main()
    NEW CONTRIBUTIONS:
    • The new work we expect to have done for the final project will include:
      • Refactoring the code to use classes. The CRC card for the class structure is included.
      • Implementing a new function called uncouple_strand() which uncouples the DNA binding and strand scission activities of Fok I endonuclease.(Based on: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC47616/)
    • CRC Card: see this link for sample a CRC card and a template to use for your own cards: https://docs.google.com/document/d/1ntNNd9f-1IpU1YQPVqLubWvubO5SroASfqDR6eQ6pU4/edit?usp=sharing
      • Because we are requiring object-oriented design in your final project (see the next bullet, Step 5), you will need to include a CRC card for your design. Again, this is a planning document, so a perfectly accurate CRC card is not expected. Plans can change!

  6. Create instructions explaining how to use project. You must at the very least include instructions as part of your accompanying report, but you can also integrate instructions into your program.

  7. Include the usual descriptive header as a comment at the top of all of your Python files.

  8. As you know, labs are designed to require more synthesis of the programming concepts than typical assignments. For this reason, they are more complicated, so are given more credit. This is even more true for the final lab project. For this project, create a two-page (or so) write-up in a Microsoft Word document namedYourUserName-FP.docx that includes the following sections:

    The first four bullets of this list must be included in BOTH the in the initial design document due on April 1, 2016 and the final report:
    • MOTIVATION: In a paragraph, explain your motivation for choosing this particular project.
    • PURPOSE: Briefly describe the primary purpose of your program.
    • INITIAL DESIGN PLAN: This is the Design Document you created in Step 4 and 5 above. The Design Document is should be created before your final write-up, but will also be included inside of the write-up in this section. It may not fully reflect your final product, as projects evolve over time.
    • ORIGINAL IMPLEMENTATION: A list in bullet form of the components of the code which had already been accomplished.

    In addition to the above the following will be included in the final report:
    • NEW CONTRIBUTIONS: A list in bullet form of specifically what is expected to be newly accomplished including any challenges overcome and innovations that were not specifically required by the assignment.
    • SUMMARY: A brief summary description of the design and implementation, including how much your initial design plan evolved, the final result you achieved and the amount of time you spent as a programmer in accomplishing these results. This should be no more than two paragraphs.
    • TESTING: A unit-test suite should be completed for all fruitful functions, and a list in bullet form of all input values used for testing for components where unit-tests cannot be used.. Here you should be careful to select representative input cases, including both representative typical cases as well as extreme cases.
    • FILES: A list in bullet form of the names of all files submitted (source code and input, etc.)
    • VIDEO: A publicly available link to a YouTube video which you create, demonstrating how to use your program. See item 9) below.
    • INSTRUCTIONS: Explain how to use your program and/or play your game.
    • ERRORS: A list in bullet form of all known errors and deficiencies.
    • RESOURCES AND REFERENCES: Reference all ideas or code which are not your own, and describe and how you integrated the ideas or code into your program.
    • REFLECTION: A paragraph or so of your own reflections on and reactions to the final lab project.
  9. A short (less than 5 minutes) demonstration video will also be required. This video will be presented during the last week of class. Your video should include you briefly discussing your project and it's motivation, demonstrate how to use the program, and end with a short discussion about what you learned through the process of building the program. To submit, post the video to YouTube, mark it as public, and provide a link to the video in your final write-up.

  10. DUE DATES:
    1. Final Project Design Document due on Friday, April 1, 2016 at NOON.
    2. Except for the video, the rest of the Final Project (code and write-up) will be due on Friday, April 22, 2016 by NOON.
    3. The project video will be due on Monday, April 25, 2016
    4. We will have a live demo session during our final exam period. It might be the most fun final exam you've ever had!
    5. A point worth repeating: have a good time with your project and enjoy some creative freedom!
    6. Submit your zipped folder YourUserName-FP.zip with all of your modules, a link to your video, and your report into the FP submission folder in Moodle.

Copyright 2016 | http://cs.berea.edu/courses/CSC226/ | Licensed under a Creative Commons Attribution-Share Alike 3.0 United States License