Inspiration

As current CS students at NC State, we know firsthand how overwhelming course planning can be. Every semester we find ourselves cross-referencing the degree audit, the course catalog, and the prerequisite chains just to figure out what we're even allowed to take next. It's easy to forget which GEP requirements you still need, which electives count toward your restricted elective credits, or whether you've actually unlocked CSC 316 yet. We wanted to build something that acts like a knowledgeable advisor available at any hour — one that already knows the NC State CS degree requirements and can give you a personalized recommendation in seconds based on exactly what you've completed.

What it does

ClassTracker is an AI-powered academic advising tool for NC State CS students. You enter the courses you've already completed, ask a question in plain English, and get back a tailored semester plan that respects your prerequisites, credit hour limits, and degree requirements. Whether you're asking "what should I take next semester?" or "can I take CSC 326 yet?" or "how many credits do I have left?", ClassTracker gives you a clear, accurate answer grounded in the official NC State CS BS degree sequence.

How we built it

We built ClassTracker as a serverless application on AWS. The frontend is a React app styled with a clean dark theme, deployed to S3 as a static website. The backend is an AWS Lambda function exposed through API Gateway, which receives the student's completed courses and question, then constructs a detailed prompt that includes the full NC State CS course catalog with prerequisites, the official 4-year semester sequence, and all degree rules around credit hours and grade requirements. That prompt is sent to Amazon Bedrock, which returns a personalized advising response. The entire stack is serverless — no servers to manage, no database needed.

Challenges we ran into

Getting CORS configured correctly between the React frontend and API Gateway took more iteration than expected — we ended up migrating from a REST API to an HTTP API to simplify the setup. Lambda's default 3-second timeout was too short for Bedrock inference calls, so we had to tune that along with the IAM permissions for Bedrock access. Encoding the full degree requirements accurately into the prompt — prerequisites, credit hour constraints, grade minimums, elective categories — required careful attention to make sure the AI advisor was giving genuinely correct recommendations rather than plausible-sounding ones.

Accomplishments that we're proud of

We're proud that ClassTracker gives advice that actually reflects the real NC State CS degree requirements rather than generic suggestions. The system correctly tracks prerequisite chains, respects the 12–18 credit hour range, and flags grade requirements like the C or higher rule for CSC 116, 216, 217, and 226. We went from idea to a fully deployed, publicly accessible app on AWS in one hackathon session, which as a team was a meaningful milestone for all of us.

What we learned

We learned how to design a fully serverless architecture on AWS end-to-end — Lambda, API Gateway, S3, and Bedrock working together. We got hands-on experience with prompt engineering for a real use case, specifically how to inject structured domain knowledge (course catalogs, degree rules, semester sequences) into an LLM prompt to ground its responses in accurate, institution-specific information rather than general training data. We also learned a lot about debugging distributed systems where failures can happen at the network, permissions, or application layer.

What's next for ClassTracker

We want to expand ClassTracker beyond the CS major to support all NC State programs. On the technical side we plan to pull live course data from the NC State API so the catalog stays current each semester, and add a visual degree progress tracker so students can see their 4-year plan laid out on a timeline. Longer term, we'd like to integrate with NC State's MyPack Portal so students can import their transcript automatically instead of manually entering completed courses.

Share this project:

Updates