stopSpecifications for the Computer Science I Project

Amer. College Board

Comp Sci Syllabus Mr. Rogers Class Info Southside High

Overview

The programming assignment for chapters 13, 14, 15, and 16 will be a GUI and graphical program which answers a research question and uses the elements we've studied in cool but useful program. It will be judged partly on appearance, creativity, and overall "coolness". See grading rubrics at right for further grading specifications.

The project must be a simulation that answers a research question and draws a time plot of an important variable. The best projects are ones that could be expanded into a science fair project.

Project Milestones

Milestone 1. Due on or before March 25th
Research Question Proposal: Must contain a paragraph discussing a research question and hypothesis suitable for a science fair project or a statement of purpose. Must contain a second paragraph discussing required input, possible algorithms, and graphical output in at least in general terms. Keep this simple but complete. A person reading your proposal should be convinced that you are capable of programming it. Remember the program should have both a scientific and artistic side. (1 typed page max)

Choose your project wisely. If you take Computer Science II you can use your program as a starting point.

 
Milestone 2. On or before May 4th earns a 10 pt bonus, May 5th to 10th earns no bonus, May 11th to 17th earns a 10 pt penalty, May 18th earns a 20 point penalty.
Program Design: This will include the following (2 to 10 pages):
  1. Block drawing from BlueJ showing the relationship of the classes.
  2. Printouts from BlueJ outlining each class with descriptors at the top (title, purpose, author, date), important fields, and major methods with their descriptors (purpose, preconditions, post conditions). This is a design. Do NOT include code.
  3. Drawing of the GUI interface. Note: the operation and purpose of the program should be reasonably evident just by looking at the GUI.
Milestone 3. Due on or before April 6th
Working Program: This should include the following elements:
  1. GUI interface - chap. 15
  2. Can call a simple help file - chap. 13
  3. 3 classes minimum
  4. draw a graph or graphical output - chap. 14
  5. 300 lines of code minimum
  6. user documentation - Javadoc (This is simple to do in BlueJ)

Tips for Managing a Large Software Project

Creating a large software project is like ridding a horse: As long as you stay on top and the horse is going in the right direction, you're ok. But, if you lose control you're likely to find yourself spending a lot of time (and maybe pain) just getting back to where you started. The following tips are offered to help keep you in the saddle.

  1. Do a quality job on Mile Stone 2. A good starting design will make a big difference in controlling your Project. Having a logical design will make it much easier to find bad lines of code.
  2. Compile often. It's easy to find compiling errors if they are few in number and are confined to a few lines of code.
  3. Do not delete. If a line of code is not working comment it out. Do not delete it until you have your code working. This will prevent you from going in circles. When finished be sure to delete commented out code. It's bad form to leave sections of commented out code in your final program.
  4. Set up your GUI first. A GUI is easy to trouble shoot and will move you in the right direction of achieving output.
  5. Achieve Output ASAP. You cannot spot run time errors until your program is actually running. Run time errors are problems such as over running an array and will result in error messages. You also cannot evaluate your program's logic and troubleshoot logic errors until you have output. You will frequently need to add temporary output for troubleshooting purposes.
  6. Take baby steps. Troubleshooting difficulty increases exponentially with the number of errors. You need to eliminate compiling, run time, and logic errors as you write the program. Do not wait to the end before starting the debugging process.
  7. Do not let others write your code. It's ok to seek help but if you let others—who may or may not understand your design—actually alter your code you are almost guarantied to lose control of your project, especially if you code is not already working.
  8. Comment as you code. Adding comments as you code facilitates the troubleshooting process. It helps you find parts of your code which are not working.

 

Grading Rubrics

Your project folder is to be placed inside a folder with your name on it. This folder will be placed in the “Turn in Folder for Comp Sci Project” on the R or G-drive. The project must already be compiled or a deduction will be made.

Note: Criterion and Mastery factors are subject to change.

Criterion

  1. Research Question or Purpose Answered ( 15 pts ): Does the project answer the research question and do major algorithms work in a meaningful manner? Answering the research question or purpose is more important than having an impressive GUI.
  2. Abstract ( 5 pts ): Does the applet or main class have a short paragraph in comments at the beginning that explains what it does?
  3. User Friendliness ( 5 pts ): Is the purpose and operation of the program reasonably evident just by looking at the GUI? Can a new user understand and use the project by muddling?
  4. Efficiency of Code ( 15 pts ): The program must use loops and methods rather than needlessly repeating lines of code.
  5. Style ( 5 pts ): Does the program follow conventional style and indenting forms?
  6. Comments ( 5 pts ): Are the comments and Javadoc’s adequate?  For example: each class and method should have a purpose. Each fields or variable should have either an obvious name or comment. Each method should have a purpose, preconditions, and post conditions. Algorithms and significant code segments inside methods Overdoing comments will result in a deduction.
  7. Help file( 10 pts ): Has a pull down menu in the GUI which can display a help feature.
  8. Programming elements ( 35 pts ): The code must contain the following elements:
  • methods
  • loops - both simple and nested
  • fields
  • parameter passing
  • arrays
  • instances
  • if-else statements
  1. Robustness ( 5 pts ): Is it easy to crash the program?

Total Possible = 100

Mastery Factors

  1. GUI and Graphics ( 0-1 ): Must have a GUI interface containing controls like buttons and pull down menus and must have some form of graphics.
  2. Functionality ( 0-1 ): Will the project compile and do all the features of the GUI work? Programs that won't compile receive a zero.
  3. Credits ( 0-1 ): Is all borrowed code from open source programs clearly marked as such? Plagiarism will result in a grade of zero.
  4. Number of Classes ( 0-1.01 ): Are there at least 3 classes? Programs with less than 3 classes receive a zero.
  5. Size ( 0-1.01 ): Are there at least 300 line of code written by the student? Repeated lines of code will not be counted as part of the 300 line if a loop or method could do the job more efficiently. Spaces, borrowed code, and comments do not count.
  6. Student Understanding ( 0-1 ): Can the student explain the code?
  7. Coolness ( .9-1.03 ): Is the program cool in some way or hum drum? Does it in some way exceed expectations?
 

Highest Possible = 1.05 ( Note a grade this high would be extremely rare)

The final grade is calculated by multiplying all the Mastery Factors (MF) times the sum of all the Criterion (C).

Grade = (MF1*MF2*...*MF8)*(C1+C2+...+C9)

The maximum grade is 105%

 

Ideas for Project

Possible ideas are as follows:

  1. Artificial Intelligence: This attempt to simulate the human brain functions. This includes neural networks which are computer programs which learn.
  2. Artificial Life: Uses computer simulations to derive general theories about life. the Scientific American article "ARTIFICIAL LIFE: Boids of a Feather Flock Together" is a great place to start.
  3. Cellular automata: Cellular automata are computer programs that try to simulate life at the cellular level. They attempt to explain how undifferentiated cells can divide and become complex structures such as appendages.
  4. Chaos Theory: This deals with non linear systems which can become chaotic. It includes various forms of turbulence, animal populations, climate and the stock market.
  5. Fractals: These use relatively simple iterated equations to produce elaborate graphics.
  6. Number Series: There are many different type. Computers are commonly used to discover new members of various series. This includes the search for perfect numbers, mersenne primes, etc.
  7. Spam Filters: These devices are used for blocking e-mail spam. They can range from very sophisticated to very simple filters and can be fairly simple to write.
  8. Markov Chains:
  9. Physics Simulations Accounting for Air Resistance: The reason air resistance is ignored in most calculations has to do with the fact that it generally requires a computer to do account for it.
  10. Random Number Generators: There's no such thing as a perfect random number generator. Usually they have to strike a balance between performance and speed and are still a topic of research among computer scientists.
  11. Monte Carlo Simulations: These are programs which use random number generators to simulate complex problems. They can be extremely complex or very simple. Simple simulations of this type can be done with relatively little programming experience. The Marine Biology case study is an example of a Monte Carlo Simulation.
  12. Flocking/herding Behavior: Programs of this type attempt to simulate the behavior of predators and prey using simple sets of rules.
  13. Snow Flake/Crystal Growth: Look at thousands of pictures of snow flakes and they all tend to be slightly different yet they are recognizable as snow flakes. This implies that there are simple rules which can govern how the crystals are formed.