CS113 Open Coding Society Contributions and Retrospective
My blog on CS113 objectives
Overview
This is a retrospective for my CS113 trimester work. Every claim below points to evidence in the commit history so the post is auditable and easy to expand later.
Primary focus this trimester: implementing the site-wide nodcursor accessibility feature, integrating head-tracking into gamification (nod-driven games), and helping with the calendar issue integration.
What I worked on (short table)
| Workstream | Short description |
|---|---|
| NodCursor & Preferences | Site-wide head-tracking cursor, calibration manager, persistence, Theme/Preferences integration |
| Gamification (Nod Games) | Maze & Empathy player integration using head-tracking as input |
| Calendar issue integration | Assisted calendar issue/Kanban integration |
CS113 Objective Matrix
Below I map course objectives to what I implemented and point to commits that demonstrate each objective. These links cite commits authored by aadibhat09 in the local pages-fork repo (Mar–May 2026).
| Objective | What I demonstrated | Evidence (commit links in pages-fork) |
|---|---|---|
| Data Structures | Modeled calibration objects, preferences objects, and game state (walls, levels) as structured objects rather than scattered primitives. | 36aed05c (head-tracking prefs persist), 6e7dcee6 (nod game initial) |
| Collections | Stored calibration captures, theme presets, and game-level wall lists; used arrays and maps to manage these collections. | 568d8a36 (head tracking beta), 7e0cb65d (NOD game complete) |
| Lists / Queues | Ordered calibration capture flow and level progression in games (L1→L3). | 7301db2e (calibration POST working), 6e7dcee6 (nod game initial) |
| OOP / MVC | Single-responsibility classes for theme, translation, TTS, nodcursor calibration/controller, and game objects. | 36aed05c (cross-page prefs), 568d8a36 (dashboard beta) |
| Algorithms | Head raw→viewport mapping, smoothing filter, blink-as-click detection, collision detection for maze, and exit detection. | 8e27b109 (blink-to-click), 6e7dcee6 (game movement & collision) |
| Version Control | Kept work in small, traceable commits during Mar–May 2026 for pages-fork development. |
05d19bf6 (merge nod-game), 0722aea4 (merge PR) |
| Testing | Added small test commits and stabilization (modal fixes, gameplay tests). | b9e4e266 (modal fix), 7207e175 (test) |
| Build Tools | Kept the site runnable locally and merged feature branches into main so previews worked. | 0722aea4, 05d19bf6 |
| Debugging | Iterated through cross-page integration issues and UI toggle bugs. | 4c161d0a (fixes), a4b313cc (improve toggle) |
| API Development | Implemented calibration POST/GET endpoints and wired frontend calls for calibration persistence. | 7301db2e (POST working), 2e92c853 (GET works) |
| Database Integration | Saved calibration payloads and preferences server-side when available. | 7301db2e, 36aed05c |
| Deployment / Local Preview | Merged feature branches and PRs to keep the preview environment up-to-date. | 26693214, 0722aea4 |
| Documentation | Wrote docs and README updates describing preferences and calibration flows. | 12cc35d4 (documentation changes) |
| Blog Portfolio | Added infographics and portfolio notes showing progress on nodcursor and gamification. | f7274adc (NodCursor Infograph), 1e1a35da (gamify 2019 4) |
| Project Impact | Brought accessibility and gamification together so authored calendar items can launch playable nod-driven experiences. | 6e7dcee6 (nod game initial), 8e27b109 (blink-to-click) |
| Ethical Considerations | Calibration & preferences saved locally by default; backend saving requires login and explicit save operations. | 7301db2e, 36aed05c |
Main Project Highlights
1) NodCursor: Accessibility built as system
What: A site-wide head-tracking cursor implemented as a small, SRP-driven module. The system includes calibration capture, smoothing, blink-to-click detection, an injected cursor UI element, persistence (local + optional backend), and an API surface via window.SitePreferences.
Why it matters: This turns head movement into a first-class input method across the site without invasive changes to individual pages. The calibration manager keeps personalized mappings safe and reloadable per user.
Key files and code (in this repo): userpreferences.js, preferences.js: search for NodCursor, NodCursorController, and NodCursorCalibrationManager.
Representative commits and notes: pages-fork commits in Mar–May 2026 cited above (blink, calibration, preferences, merges).
2) Gamification: Nod-driven games
What: I built GameLevelNod (maze) and adapted EmpathyEpicPlayer to work with head/mouse input. The maze uses wall arrays, collision detection, level progression, and a HUD with restart/score logic.
Why it matters: It demonstrates a real gameplay loop that can be controlled by the accessibility feature: opening learning-by-play opportunities for students who rely on alternative input.
Key files: GameLevelNod (MazeRenderer, MazePlayer, GameHUD), EmpathyEpicPlayer.
3) Calendar integration support
What: Integrated GitHub Issues and Kanban board tracking with the OCS calendar, and debugged errors that arose from the integration.
Representative commits: calendar and UI progress across Apr–May 2026: referenced above in the table.
4) Ethics & privacy
Approach: Calibration and personal preferences default to local storage; backend save/load is optional and gated by login checks; the reset flow clears local storage keys. This minimizes inadvertent sharing of calibration metadata.