Tri 1 Final Review
Overview of Tri 1 Progress
Tri 2 Sprint 1 - CSA Reflection
Growth Journey: Then vs Now
Beginning of Year (Tri 1 Start)
Technical Skills:
- Minimal JavaScript exposure
- No Spring backend experience
Now (Tri 1 End)
Technical Skills:
- Full-stack development (Spring + Flask backends, frontend integration)
- Advanced OOP implementation
- API integration (Gemini AI) in co-op with APIs
- Database management
- Complex Git workflows (branching, PR management)
Key Learning Milestones
Sprint 1: Tools & Setup
- Configured VS Code for full-stack development (Spring and Flask)
Sprint 2: JavaScript/Python Fundamentals
- Built interactive frontend components
- Learned how to gamfiy boring lessons
Sprint 3: Profile & LinkedIn Quest
- Made analytics page
- Incorporated AI into page which helps users
Technical Accomplishments
1. Admin/Analytics Platform Development
Module 3 Frontend Page
Features Implemented:
- Interactive dropdown table for question navigation
- Dynamic data loading from backend
- CSV download functionality for analytics export
- Responsive design for multiple screen sizes
Technical Stack:
- JavaScript
- Fetch API for backend communication
Personality Type: Intrascoper - Independent feature development requiring self-directed problem-solving
IMAGE PLACEHOLDER 2: Module 3 interactive dropdown table interface
IMAGE PLACEHOLDER 3: CSV download functionality demonstration
Gemini AI Integration
Active Feedback System:
- Real-time response analysis
- Context-aware suggestions
- Error detection and correction prompts
2 Gemini Guidebots:
- Bot 1: Student question assistance
- Bot 2: Homework help and concept clarification
- Custom prompt engineering for educational context
Grading Backend Development:
- Collaborated on Spring backend endpoints
- Implemented question type detection (MCQ vs FRQ)
- Created prompt templates for consistent grading
- Built error handling for API failures
Technical Challenges Solved:
- API rate limiting management
- Response parsing and formatting
- Integration with existing database schema
- Concatenating prompts
Personality Type: Closer - Ensured features were complete and production-ready
IMAGE PLACEHOLDER 4: Gemini chatbot interface with sample conversation
IMAGE PLACEHOLDER 5: Grading backend flow diagram showing submission → AI → grade process
2. Brick Breaker Game Development
Powerup System (Advanced OOP)
Implementation:
- Inheritance hierarchy for different powerup types
- Encapsulation of powerup behaviors
- Polymorphic collision detection
Code Structure:
Powerup (abstract base class)
├── SpeedBoost
├── ExtraLife
├── MultiBall
└── PaddleExtend
OOP Principles Applied:
- Encapsulation: Private state management for each powerup
- Inheritance: Base class defines common behavior
- Polymorphism: Different powerups with unified interface
Bar System (Progress Tracking)
Features:
- Real-time score updates
- More Complex OOP Game
- Gamify Lesson
- Increased Difficulties
Personality Type: Intrascoper - Self-directed technical deep dive into game mechanics
IMAGE PLACEHOLDER 6: Brick Breaker game showing powerups active
IMAGE PLACEHOLDER 7: Bar system UI elements - score, lives, level indicators
3. Advanced OOP Lesson Creation
Content Developed:
- 4 comprehensive lesson modules
- Interactive code examples
- Practice exercises with solutions
Topics Covered:
- Abstract classes and interfaces
- Design patterns (Factory, Observer)
- Composition vs Inheritance
- SOLID principles introduction
Personality Type: Planner - Structured content organization and curriculum alignment
There is more but I didn’t want it to be unreadable.
4. Lesson Organization & Curriculum Management
Content Migration:
- Consolidated Units 1-10 into streamlined Units 1-4
- Aligned with AP CSA exam topics
- Removed redundant material
- Added missing concept coverage
Game-Hack Integration:
- Linked 8 games to corresponding unit hacks
- Created documentation explaining connections
- Added demo videos for each integration
- Ensured accessibility from main CSA page
Personality Type: Scrummer - Collaboration focus, making resources useful for entire team
Night at the Museum Experience
What We Demonstrated
Live Admin Dashboard:
- Real-time analytics display
- Interactive question table with filtering
- CSV export demonstration
- Student submission tracking
Gemini AI Guidebots:
- Live Q&A with visitors asking questions
- Showed autograding capabilities
- Demonstrated feedback generation
- Explained prompt engineering approach
We didn’t have any good pictures of our group. But we did get feedback:
Memorable Comments & Feedback
- Somebody told us that ai integration was popular in bigger companies
- the grading system was cool and that it could be incorporated into real classrooms
What Went Well
- Live demo with no major bugs
- Clear explanations for non-technical audience
- Smooth team coordination
- High visitor engagement with follow-up questions
Key Takeaway
When a teacher asked about actual classroom implementation - validation that we built something genuinely useful, not just a class project.
Analytics & Contribution Metrics
GitHub Activity
Overall GitHub Stats (Past Year):
- Total Commits: 463
- Total PRs: 21
- Total Issues: 94
- Repositories Contributed To: 10
- Stars Earned: 5
This Sprint (Tri 2 Sprint 1):
- Commits: 77
- Pull Requests: 13 (merged)
- Issues Created: 93
- Peak Activity: October-November 2024
- Average per Week: ~6-7 commits
Pull Requests:
- This Sprint: 13 merged
- Total (Past Year): 21
Issues:
- This Sprint: 93 created, 67 closed
- Total (Past Year): 94
- Open: 26
- Categories: Features (45), Documentation (28), Bugs (12), Maintenance (8)
Personality Types: Closer (consistent contributions) + Planner (systematic task tracking)
Image: fa4bca35-d225-4f45-bbb0-12a79429733a
Image: 2f6927c8-c49e-4634-88c8-2ce251cf5dc6
Branch Management
Active Branches (3):
- Spring Backend: Gemini grading API endpoints, database schema updates, authentication
- Flask Backend: Analytics data processing, CSV generation, question management routes
- Pages Frontend: Module 3 UI components, dashboard improvements, responsive design
Merge Strategy: Feature branches → Dev → Main
Code Review: Required for all merges
Time Investment - Curators
Estimated Hours: 45-50 hours total
Breakdown:
- Coding: 60% (27-30 hrs)
- Documentation: 20% (9-10 hrs)
- Meetings/Planning: 10% (4-5 hrs)
- Testing/Debugging: 10% (4-5 hrs)
MCQ Review & Corrections
Score Overview
Final Score: 22/42 (52.4%)
Corrections
| Question | Topic | Your Answer | Correct Answer | Why You Were Wrong | Key Concept | What to Remember |
|---|---|---|---|---|---|---|
| Q4 | Arithmetic Operations | A (37) | C (26) | Forgot order of operations - multiplication happens before addition in first line, modulus happens before addition in second line | Operator precedence: * and % before + |
first = 5 + 10 * 2 = 25 (not 30), then second = 25 + 25 % 2 = 26 (not 37) |
| Q7 | String Methods - substring | A | B | Didn’t correctly calculate substring indices | substring(start, end) goes from index start to end-1 |
substring(4) = “HI” (index 4 to end), substring(0,2) = “DE” (index 0-1). Result: “HI” + “DE” = “HIDE” |
| Q8 | Type Casting & Division | B (0.0, 0.4) | C (0.4, 0.0) | Mixed up which operation casts first | Casting happens BEFORE the operation when using (type) |
y = (int) w / x → casts w to 2, then divides: 2.0/5.0 = 0.4. z = (int)(w/x) → divides first (0.4), then casts to 0 |
| Q10 | Conditional Logic - if/else | B | A | Incorrectly traced through nested if-else logic | Else-if chain evaluation order | Score 250: first if is false (250 ≤ 250), goes to else-if which is true (250 ≤ 500), assigns “Try again” |
| Q11 | Dot Operator & Methods | B | A | Confused method call syntax with object | Dot operator calls instance methods on objects | Correct: myPair.getX() - call method on object. Wrong: myPair.getX(x) or myPair.x |
| Q15 | String Methods in Loops | B | A | Didn’t trace loop correctly with substring operations | substring(j) returns from index j to end, indexOf() finds first occurrence |
Loop prints each occurrence of “o” with following characters: “ookout okout out” |
| Q21 | Nested For Loops | C | B | Got inner loop bounds wrong | Inner loop must iterate based on outer loop variable | Need k = 0; k <= j; k++ so that iteration 0 prints 1 value, iteration 1 prints 2 values, etc. |
| Q24 | ArrayList add/set Methods | D | B | Confused add(index, value) with set(index, value) behavior |
add(index, value) inserts at index, set(index, value) replaces |
add(0, 300) inserts at beginning. set(2, 400) replaces index 2. Result: [300, 100, 400, 500] |
| Q26 | While Loop Logic | B | A | Didn’t correctly identify loop termination condition | Loop continues while condition is TRUE | Current code uses n > 0 but should use n / 10 > 0 to stop when leftmost digit is reached |
| Q30 | Nested Conditionals | A | D | Didn’t properly trace nested if-else with multiple conditions | Use && for compound conditions, trace each branch carefully |
Need (a <= b && a <= c) to check if a is minimum, then nested check for b vs c |
| Q32 | 2D Array Traversal | A | B | Got loop iteration direction backwards | Traverse 2D arrays right-to-left, top-to-bottom for this pattern | Outer loop: rows 0→1 (forward). Inner loop: columns from mat[0].length - 1 down to 0 (backward) |
| Q34 | ArrayList vs Enhanced For Loop | D | B | Used wrong method to build ArrayList from iteration | Enhanced for-each loops can’t modify/build collections easily | Need traditional for loop with index to add elements: for (String s : oldList) { newList.add(s); } |
| Q35 | Array Sorting Logic | C | D | Misread return value logic | Method returns boolean based on sorted order check | Returns true if sorted from greatest to least (each element ≤ previous), false otherwise |
| Q36 | 2D Array Traversal & Assignment | D | B | Confused row/column traversal order | Outer loop controls rows, inner loop controls columns | Code traverses rows forward (r = 0→0), columns backward (c from length-1 down), checks diagonal |
| Q38 | Scanner & ArrayList Building | B | C | Didn’t use correct Scanner method to split strings | split() is a String method, Scanner uses next() |
Use String temp = sc.next().split(",") to read and split each line, then add temp[0] to first list and temp[1] to second |
| Q41 | Array Traversal & String Comparison | C (4) | D (5) | Off-by-one error in loop logic | Loop iterates through colors array comparing lengths | The loop finds the first pair of adjacent strings with equal length. “black” and “yellow” both have length 6, at indices 3 and 4, so k=4 which is returned as result=5 |
| Q42 | While to For Loop Conversion | A | D | Didn’t account for when loop variable is incremented | While loop increments j twice per iteration; for loop only increments once in header |
While loop: j++ (in body) then sum += j, so adds 1,3,5. For loop equivalent: start at 1, increment by 2: for (int j = 1; j <= 6; j+=2) with just sum += j |
Study Plan Moving Forward
Immediate Focus (Next 2 Weeks):
- Daily: 5 MCQ practice questions from weak units
- 3x/week: Code one problem from each weak area
- Weekly: Full practice exam under timed conditions
- Weekly: Review all mistakes with corrections
Resources:
- CollegeBoard question bank
- CodingBat practice problems
- AP CSA review videos
- Team study sessions (Fridays)
Reflection on Approach
What Worked:
- Immediate corrections while material was fresh
- Coding similar problems reinforced concepts
- Pattern identification focused study on actual weaknesses
What Didn’t Work:
- Rushing through exam without checking work
- Skipping “easy” review led to careless errors
- Not enough AP-specific practice questions
Adjusted Strategy:
- Time management: 2 minutes per question, flag uncertainties
- Double-check: Review flagged questions if time permits
- Read carefully: Many errors from misreading questions
- Eliminate answers: Use process of elimination systematically
Future Goals & Vision
Next Sprint Project Goals
1. Time-Based Grading Implementation
Features:
- Add deadline tracking with countdown timers
- Late submission penalties
- Timezone handling for accurate timestamps
Technical Approach:
- Backend: Add timestamp fields to submission schema
- Frontend: Display countdown timers on assignments
- Logic: Calculate grade reduction based on lateness rules
2. Question Type Standardization
Goal: Uniform format for MCQ and FRQ questions to reduce multiple Gemini prompts
Technical Approach:
- Design JSON schema for all question types
- Create migration script for existing questions
- Update frontend to handle unified format
- Refactor Gemini prompts for consistency
Challenges:
- Backward compatibility with existing questions
- Maintaining flexibility for different question styles
- Testing across all question variations
3. Enhanced Analytics Visualization
Features:
- Line charts for grade trends over time
- Bar charts for question difficulty analysis
- Heatmaps for topic mastery
- Exportable reports (PDF/CSV)
Libraries to Learn:
- Chart.js or D3.js for visualizations
- jsPDF for report generation
Learning Goals in Computer Science
School System Integration
Inspiration: Bathroom pass QR code system that scans Synergy to check students in/out
Vision: Extend autograding platform to interface with school infrastructure
Specific Ideas:
- Synergy Integration: Pull student rosters automatically
- Grade Export: Push grades to gradebook systems
- SSO Authentication: Use school login credentials
- API Development: Build endpoints for other tools to connect
Why This Excites Me:
Turning a class project into actual school infrastructure. Building something that could be used by thousands of students daily.
Learning Required:
- OAuth 2.0 and SSO protocols
- Enterprise API design patterns
- Database scaling for large user bases
- Security best practices for student data (FERPA compliance)
Physical Computing Integration
Inspiration: Bathroom pass hardware device with QR scanner
Vision: Create tangible objects that connect to digital systems
Project Ideas:
- Smart Assignment Tracker: Physical device showing pending work
- Grade Display Board: LED board updating with class statistics
- Check-In System: RFID/QR scanner for attendance integrated with analytics
- Progress Tokens: Physical badges earned through platform achievements
Hardware to Explore:
- Raspberry Pi for main computing
- Arduino for simple sensors/displays
- RFID/NFC readers for student ID scanning
- E-ink displays for battery efficiency
- LED matrices for visual feedback
Why This Excites Me:
Bridging digital and physical worlds. Making abstract data (grades, progress) into something you can touch and see. Similar to bathroom pass concept but for educational tracking.
Advanced AI/ML Applications
Building on Gemini Experience:
What I Want to Learn:
- Fine-tuning models: Train custom AI for educational context
- Prompt engineering at scale: Optimize for consistency across thousands of grading operations
- Bias detection: Ensure fair grading across demographics
- Model evaluation: Quantify AI grading accuracy vs human graders
Potential Projects:
- Custom model trained on AP CSA FRQs
- Automated rubric generation from sample answers
- Student writing style analysis for plagiarism detection
- Personalized learning path recommendations based on performance
Why This Matters:
AI is revolutionizing education. Want to be building these tools, not just using them.
If We Had More Time This Sprint
Features I Wanted to Implement:
- Time-Based Grading - Deadline tracking with automatic late penalties
- Uniform Question Format - Standardize MCQ/FRQ to reduce Gemini prompt complexity
- Plagiarism Detection - Compare submissions against each other and online sources
- Collaborative Grading - Multiple graders with consensus-based final grades
- Student Analytics Dashboard - Personal progress tracking with study recommendations
- Mobile App - Native iOS/Android apps with push notifications
- I also have a bit of experience with making mobile apps
Key Takeaways
What This Sprint Taught Me
Technical Growth:
- full-stack development with AI integration
Collaboration:
- admin/analytics required coordination
- Code reviews improved quality
Next Sprint Goal
Time-based grading and standardized question formats.