Inspiration
Imagine a world where over 60% of computer science students rely on AI to complete coding assignments, not just for help but as a crutch, compromising the foundation of their future careers. This isn't a hypothetical scenario; it's happening now, threatening to undermine the essence of programming education. This crisis of academic integrity and the devaluation of genuine programming skills present a significant challenge for educators and employers alike.
This is where we at codeGuardian step in. We're a VSCode extension and Web Dashboard that is a guardian angel for academic integrity. We track every edit in your code, creating an immutable timeline that exposes any attempts at cheating. Current plagiarism detection implementations only check at the time of submission, making them susceptible to reformatting stolen code; our solution checks code at the time of inception, eliminating any potential use of non-handwritten code.
This helps:
- Students: Master coding fundamentals by actively learning, not copy-pasting, from ChatGPT.
- Educators: Focus on mentoring and nurturing talent, not policing code submissions.
- Employers: Confidently hire graduates with genuine coding skills, not AI-ghostwritten scripts.
The market for CodeGuardian is vast and growing, as coding boot camps, universities, and online learning platforms all face the challenge of maintaining academic integrity in the face of advancing AI. The future of coding education is at a crossroads, and by investing in CodeGuardian, you're not just funding a product but championing a cause. We invite you to join us to build a future where genuine coding talent is nurtured and valued and shines brighter than ever. Invest in CodeGuardian, and let's ensure that academic integrity and genuine skill development remain at the heart of programming education.
What it does
CodeGuardian aims to uphold the integrity of coding practices within academic and learning environments. It addresses the growing concern over using AI and other means to bypass the learning process in coding education. Here's a breakdown of its functionalities:
Activity Logging File Monitoring: It keeps track of all operations on code files, such as creation, modification, and deletion, across supported file types (.cpp, .ts, .js, etc.). This ensures that there's a comprehensive log of how projects evolve.
Edit Tracking: Every edit made to the code files is logged with details, including the timestamp, the nature of the edit, and the content changed. This creates an immutable record of the development process, offering insights into the coding habits of the user.
Integrity Verification:
Digital Signatures: By employing cryptographic digital signatures, the extension verifies the integrity of the activity logs. This method ensures that the recorded data is authentic and has not been altered, providing a trustworthy basis for assessing code originality.
Hashing: It generates hashes of log data to detect unauthorized or malicious modifications. This adds an extra layer of security and integrity to the logs.
Analytics and Insights:
Coding Patterns: Offers insights into common coding habits and potential inefficiencies, enabling users to refine their coding techniques.
Progress Tracking: Allows both instructors and students to monitor progress over time, highlighting areas that need improvement and those where significant advancement has been made.
Suspicious Activity Reports: Generates detailed reports on suspicious activities for further examination by educators, helping to maintain a focus on academic integrity.
How we built it
Landing Page: HTML5 + Bootstrap
Dashboard: NextJS + TailWind CSS + PostgreSQL
VS Code Extension: TypeScript + VS Code API
Challenges we ran into
- Learning Curve for TypeScript: Integrating TypeScript into our stack was a double-edged sword. It enhanced our code's reliability but required us to get up to speed quickly with its static typing system. Ensuring type safety across asynchronous operations and API calls was a particular challenge, pushing us to deepen our understanding of type definitions and generics.
- Version Control: Collaborating through Git presented challenges, especially merging branches and resolving conflicts with multiple people working on the same codebase and sometimes the same exact files. We had to quickly learn and apply best practices in version control to maintain a clean and efficient workflow and minimize our merge conflicts.
- PostgreSQL: Figuring out a proper schema to store our data in our relational database was difficult as we hadn't used PostgreSQL before so setting it up locally and having a database that was consistent across devices was challenging. The default port values for some of the installations were different so that was an annoying bug to find.
- Beginner Team: Our team had a lot of first-time hackers so navigating TreeHacks was a little bit daunting.
- Getting Enough Sleep: Enough said!
Accomplishments that we're proud of
Landing Page: Successfully creating an engaging and informative landing page that effectively communicates the value proposition of CodeGuardian to potential users, including students, educators, and institutions.
Dashboard Prototype: Developed a prototype for a user-friendly dashboard that visualizes the data collected by the extension, offering insights into coding behavior, progress tracking, and potential academic integrity issues.
VS Code Extension: We were able to create a VS Code Extension that is able to detect AI-generated and pasted content. None of us had ever developed an extension before so we are proud that we were able to get this working!
Additionally, we are proud that we came together to develop a tool that addresses a current challenge in the educational sector. Despite the complexity of the task, our team managed to integrate and develop a robust system that tracks and analyses coding activity.
What we learned
We learned a lot from the development process, particularly in embracing new technologies and frameworks. Diving into Next.js was initially daunting as we had zero experience coming into it, but as we worked through it, we honed our web development skills, particularly in server-side rendering and static site generation.
Additionally, we ventured into using Tailwind.CSS for the first time. Its utility-first approach contrasted with the traditional CSS practices we were accustomed to, but it introduced us to a new level of efficiency in styling. Likewise, by integrating Tailwind.CSS, we could rapidly prototype and iterate our design with speed and responsiveness we hadn't experienced before.
Through these challenges, we also sharpened our problem-solving skills and learned the importance of patience and persistence when faced with unfamiliar technology stacks. These tools, together with React, TypeScript, HTML, CSS, Python, and Bootstrap, formed the backbone of our project, and by the end of the hackathon, we felt more comfortable and confident in our ability to build complex, full-stack applications.
This experience taught us the value of being adaptable and the importance of continuous learning in technology. We now feel better prepared to tackle real-world programming challenges and contribute to building innovative and impactful solutions for the future.
What's next for CodeGuardian
Integration with Educational Platforms: Partnering with online learning platforms, universities, and coding boot camps to integrate CodeGuardian directly into their ecosystems. This could simplify the adoption process for educators and students, making it a seamless part of the coding education experience.
Log in or sign up for Devpost to join the conversation.