ISM 6258 HW 2
ISM 6258 HW 2 Due on March 30 (Monday) by 11:55 pm Program Description In this assignment, you will redo Assignment 1 using functions and also extend its functionality. Like Assignment 1, you will develop a Console Application that grades a multiple choice test with 10 questions taken by 8 students. The applications finds each student’s letter grade based on that test, and then displays: (i) a table listing names, scores and grade for all students, (ii) average, standard deviation, and median of the test scores, (iii) a histogram showing the number of students who got A, B, C, D, or F, etc. Suppose the student’s names, their answers to the questions, the answer key and the score for each question are as given below. Student’s Answers to the Questions Jack A B A C C D E E A D John D B A B C A E E A D Jill E D D A C B E E A D Mary C B A E D C E E A D Peter A B D C C D E E A D Bob B B E C C D E E A D Nancy B B A C C D E E A D Pat E B E C C D E E A D Key D B D C C D A E A D Score 2 2 5 3 3 4 4 4 6 7 1. The Main() method should create one two dimensional array to store the student’s answer and three different one dimensional arrays to store the student names, the answer key and the scores for each question, and initialize them to the values given above. You may create other arrays if you like, but only if necessary. DO NOT declare any array at class-level. Every array you declare should be declared inside a function (Main or other). Note that we may change the student responses, the answer key and/or the scores for the questions when we test your application. So, write your code in such a way that it will work for any values. 2. The Main() method should then call a method called ComputeGrades(). The ComputeGrades method must (1) take 3 arrays as input: one containing the student responses, the second containing the answer key, and the third containing the scores for the questions, (2) compute the total scores and grades that the students earn, and (3) “return” two arrays: one containing the total score for each student and the other containing the grade the student earns. The grading scheme to be used is: A: [90%,100%], B: [80%, 90%), C: [70%, 80%), D: [60%, 70%), F: <60%. Note that B:[80, 90) means a student gets a B if his score is >= 80%, but strictly less than 90%. 3. The Main() method should then call a method called ComputeStatistics() that takes the students’ scores array as input and computes and “returns” the average, the standard deviation, and the median of the student scores. 4. The Main() method should then call a method called DisplayResults() that takes appropriate inputs and display the results as shown in the sample output. To do this, the DisplayResults() method should in turn call a method called DrawHistogram() which takes appropriate inputs and displays the histogram as shown in the sample output. Sample Output Note: You do not have to have the same amount of spacing as shown in the sample output above. But make sure that the output is neatly formatted, the columns in the table of student information are left aligned and all the values are displayed with only two decimal spaces. Instructions for Submission 1. Create a ZIP file containing all the subdirectories starting with the project root directory. The zip file must be named A2_yourLastNameYourFirstName.zip 2. Submit the zip file as an attachment using the E-Learning Assignment tool. Note that not following the submission instructions exactly will result in loss of points. Grading Following criteria will be used to grade the program 1. Successful compilation without any errors or warnings; if the code does not compile as it is, you get a 0 on the assignment. So my suggestion would be to attempt the problem in steps. As soon as you have a version which is compiling and partially working, save a copy of it before you attempt to add features to this code. This will make sure that you always have a copy of code that compiles and correctly implements at least some parts of the assignment which you can submit and get partial credit. 2. Correctness of the program 3. Code Readability (spacing, indentation, etc). 4. Code Reusability 5. The TA/instructor may ask you to come and explain your design/code. The ability to explain your design/code and its correctness may carry some points. Hints: 1. Use the following formulas for calculating variance and standard deviation: n 1 n xi 2 2 x , x i , Var i1 x Std .Dev. Var n n i1 2. You can use Math.Sqrt( ) method to calculate the square root. Check the .NET Framework Class Library documentation for details on the Math.Sqrt() method. Here is a piece of code that is showing how it can be used. double x; double y = 5; x = Math.Sqrt(y) ; // x will get square root of 5 Academic Integrity: This is an individual assignment. Plagiarism and Cheating of any kind on the assignment will not be tolerated. It may result in an “F’ for this assignment or depending on the severity of the case, may lead to an “F” for the entire course. It may be subject to appropriate referral to the Office of Student Judicial Affairs for further action. For more information, consult the Dean of Students Academic Honesty Student Guide at http://www.dso.ufl.edu/judicial/procedures/academicguide.php. All programming assignments are to be done individually. We will use special software to verify that your work is completely distinct from that of your classmates and also from information on the internet. A list covering some examples of actions which break the honor code is given below: • Copying, submitting, or viewing the work of another student. • Submitting work that is copied from information posted on the Internet or any other source • Working in any capacity with or helping student(s) • Providing your own work or transferring the work of someone else to another student.