Skip to content

Commit e247f6d

Browse files
committed
add homework hack + rubric
1 parent 9ecac45 commit e247f6d

1 file changed

Lines changed: 197 additions & 0 deletions

File tree

_notebooks/Foundation/tri1/Lessons/2025-10-14-1.14CallingInstanceMethods.ipynb

Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,203 @@
385385
"source": [
386386
"### Answer: D"
387387
]
388+
},
389+
{
390+
"cell_type": "markdown",
391+
"id": "794c9d84",
392+
"metadata": {},
393+
"source": [
394+
"---"
395+
]
396+
},
397+
{
398+
"cell_type": "markdown",
399+
"id": "22ee7f73",
400+
"metadata": {},
401+
"source": [
402+
"# Homework Hack"
403+
]
404+
},
405+
{
406+
"cell_type": "code",
407+
"execution_count": 13,
408+
"id": "6da8bbc9",
409+
"metadata": {
410+
"vscode": {
411+
"languageId": "java"
412+
}
413+
},
414+
"outputs": [
415+
{
416+
"name": "stdout",
417+
"output_type": "stream",
418+
"text": [
419+
"=== Student Grade Tracker System ===\n",
420+
"\n",
421+
"Creating student: Emma Rodriguez\n",
422+
"Student created successfully!\n",
423+
"\n",
424+
"--- Adding Grades for Emma ---\n",
425+
"Adding grade: 95 points\n",
426+
"Adding grade: 88 points\n",
427+
"Adding grade: 92 points\n",
428+
"Adding grade: 85 points\n",
429+
"\n",
430+
"--- Emma Rodriguez's Grade Report ---\n",
431+
"Student Name: Emma Rodriguez\n",
432+
"Total Points: 360\n",
433+
"Assignments Completed: 4\n",
434+
"Current Average: 90.00\n",
435+
"Letter Grade: A\n",
436+
"Status: Excellent work!\n",
437+
"\n",
438+
"========================================\n",
439+
"\n",
440+
"Creating student: James Wilson\n",
441+
"Student created successfully!\n",
442+
"\n",
443+
"--- Adding Grades for James ---\n",
444+
"Adding grade: 78 points\n",
445+
"Adding grade: 82 points\n",
446+
"Adding grade: 75 points\n",
447+
"\n",
448+
"--- James Wilson's Grade Report ---\n",
449+
"Student Name: James Wilson\n",
450+
"Total Points: 235\n",
451+
"Assignments Completed: 3\n",
452+
"Current Average: 78.33\n",
453+
"Letter Grade: C\n",
454+
"Status: Keep working hard!\n",
455+
"\n",
456+
"========================================\n",
457+
"\n",
458+
"Final Summary:\n",
459+
"Emma Rodriguez - Average: 90.00 (A)\n",
460+
"James Wilson - Average: 78.33 (C)\n"
461+
]
462+
}
463+
],
464+
"source": [
465+
"public class Student {\n",
466+
" // === Instance variables ===\n",
467+
" private String name;\n",
468+
" private int totalPoints;\n",
469+
" private int numAssignments;\n",
470+
"\n",
471+
" // === Constructor ===\n",
472+
" public Student(String name) {\n",
473+
" this.name = name;\n",
474+
" this.totalPoints = 0;\n",
475+
" this.numAssignments = 0;\n",
476+
" }\n",
477+
"\n",
478+
" // === Void instance methods (modify state) ===\n",
479+
" /** Adds a grade (0–100 recommended) and updates totals. */\n",
480+
" public void addGrade(int points) {\n",
481+
" totalPoints += points;\n",
482+
" numAssignments += 1;\n",
483+
" System.out.println(\"Adding grade: \" + points + \" points\");\n",
484+
" }\n",
485+
"\n",
486+
" /** Prints a formatted report of the student’s performance. */\n",
487+
" public void printReport() {\n",
488+
" System.out.println(\"\\n--- \" + name + \"'s Grade Report ---\");\n",
489+
" System.out.println(\"Student Name: \" + name);\n",
490+
" System.out.println(\"Total Points: \" + totalPoints);\n",
491+
" System.out.println(\"Assignments Completed: \" + numAssignments);\n",
492+
" double avg = getAverage();\n",
493+
" System.out.println(\"Current Average: \" + format2(avg));\n",
494+
" String letter = getLetterGrade();\n",
495+
" System.out.println(\"Letter Grade: \" + letter);\n",
496+
" System.out.println(\"Status: \" + statusFor(letter));\n",
497+
" }\n",
498+
"\n",
499+
" // === Non-void instance methods (return values) ===\n",
500+
" /** Returns current average as a double; 0.0 if no assignments yet. */\n",
501+
" public double getAverage() {\n",
502+
" if (numAssignments == 0) return 0.0;\n",
503+
" return (double) totalPoints / numAssignments;\n",
504+
" }\n",
505+
"\n",
506+
" /** Returns a letter grade based on the grading scale. */\n",
507+
" public String getLetterGrade() {\n",
508+
" double avg = getAverage();\n",
509+
" if (numAssignments == 0) return \"N/A\";\n",
510+
" if (avg >= 90) return \"A\";\n",
511+
" if (avg >= 80) return \"B\";\n",
512+
" if (avg >= 70) return \"C\";\n",
513+
" if (avg >= 60) return \"D\";\n",
514+
" return \"F\";\n",
515+
" }\n",
516+
"\n",
517+
" // === Helpers (private) ===\n",
518+
" private static String format2(double x) {\n",
519+
" return String.format(\"%.2f\", x);\n",
520+
" }\n",
521+
"\n",
522+
" private static String statusFor(String letter) {\n",
523+
" switch (letter) {\n",
524+
" case \"A\": return \"Excellent work!\";\n",
525+
" case \"B\": return \"Great job!\";\n",
526+
" case \"C\": return \"Keep working hard!\";\n",
527+
" case \"D\": return \"Needs improvement.\";\n",
528+
" case \"F\": return \"See me for help.\";\n",
529+
" default: return \"No grades yet.\";\n",
530+
" }\n",
531+
" }\n",
532+
"\n",
533+
" // === Demo / main ===\n",
534+
" public static void main(String[] args) {\n",
535+
" System.out.println(\"=== Student Grade Tracker System ===\\n\");\n",
536+
"\n",
537+
" // Student 1: Emma\n",
538+
" System.out.println(\"Creating student: Emma Rodriguez\");\n",
539+
" Student emma = new Student(\"Emma Rodriguez\");\n",
540+
" System.out.println(\"Student created successfully!\\n\");\n",
541+
"\n",
542+
" System.out.println(\"--- Adding Grades for Emma ---\");\n",
543+
" emma.addGrade(95);\n",
544+
" emma.addGrade(88);\n",
545+
" emma.addGrade(92);\n",
546+
" emma.addGrade(85);\n",
547+
" emma.printReport();\n",
548+
"\n",
549+
" System.out.println(\"\\n========================================\\n\");\n",
550+
"\n",
551+
" // Student 2: James\n",
552+
" System.out.println(\"Creating student: James Wilson\");\n",
553+
" Student james = new Student(\"James Wilson\");\n",
554+
" System.out.println(\"Student created successfully!\\n\");\n",
555+
"\n",
556+
" System.out.println(\"--- Adding Grades for James ---\");\n",
557+
" james.addGrade(78);\n",
558+
" james.addGrade(82);\n",
559+
" james.addGrade(75);\n",
560+
" james.printReport();\n",
561+
"\n",
562+
" System.out.println(\"\\n========================================\\n\");\n",
563+
"\n",
564+
" // Final summary\n",
565+
" System.out.println(\"Final Summary:\");\n",
566+
" System.out.println(emma.name + \" - Average: \" + format2(emma.getAverage()) + \" (\" + emma.getLetterGrade() + \")\");\n",
567+
" System.out.println(james.name + \" - Average: \" + format2(james.getAverage()) + \" (\" + james.getLetterGrade() + \")\");\n",
568+
" }\n",
569+
"}\n",
570+
"Student.main(null);"
571+
]
572+
},
573+
{
574+
"cell_type": "markdown",
575+
"id": "4a0062ae",
576+
"metadata": {},
577+
"source": [
578+
"| **Criteria** | **Percent Weight** | **Description** | **Self-Grade** | **Comments** |\n",
579+
"| ------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------- | -------------- | --------------------------------------------------------------------------------------- |\n",
580+
"| **Functionality** | 40% | Program runs without errors, creates multiple Student objects, correctly adds grades, calculates averages, and assigns letter grades | **40/40** | Code compiles cleanly; tested with multiple students; outputs match expected results. |\n",
581+
"| **Method Implementation** | 30% |Includes all required methods (addGrade, getAverage, getLetterGrade, printReport) that properly access/modify instance variables | **30/30** | All methods work as intended, returning accurate averages and letter grades. |\n",
582+
"| **Code Quality** | 20% | Clean code with meaningful variable names, proper constructor, and helpful comments explaining method purposes | **20/20** | Code is clear and well-commented; minor improvement possible in formatting consistency. |\n",
583+
"| **Output & Presentation** | 10% | Clear, well-formatted output showing multiple students with different grades and formatted reports | **10/10** | Output mirrors sample with spacing, dividers, and clear structure. |\n"
584+
]
388585
}
389586
],
390587
"metadata": {

0 commit comments

Comments
 (0)