What it does

In this project, we propose and build a proof of concept for a project wherein modern state-of-the-art artificial intelligence technology may be used to benefit Computer Science teachers and students alike. The goal of this project is to design, develop, and implement an AI-based educational resource to help students learn to code.

Code Engine Many times, when we first are introduced to a problem, we are lost and don't know where to start. It's most difficult to plan out pseudocode and know the steps to reach your solution, and our automatic Code Engine can help coders get started with their programming. As such, the Code Engine is a program that will take an English prompt (a short description of what the code should accomplish) and automatically generate code to those specifications. To do this, we utilize a billion-parameter autoregressive generative pre-trained language model which employs state-of-the art machine learning / artificial intelligence research. We query the neural network using zero-shot learning, with parameters we’ve found to be the most optimal for our NLP tasks. I sincerely apologize for overusing technical jargon.

Friendly Chatbot It is inevitable that a novice to the realm of Computer Science will run into challenges in their journey to success. In the status quo, despite countless attempts at destigmatizing the act of asking for help, a recent study showed that a large portion of academic students are still under the impression (perhaps even unconsciously so) that asking for help is a weakness. Students fear judgement from peers or teachers when they ask for help, and worry that their question is a “bad question”. Additionally addressing the busy schedules teachers have (especially on the last day of Computer Science, because of procrastinators), we introduce an AI chatbot able to assist individuals, free of judgement.

Inspiration

At our school, Mr Gan is a computer science teacher that teaches all of us in this team (except for Hao). He's not intimidating, but often when people want to ask for help, they are afraid of asking a real human. So sometimes people, especially the introverts of our team, have difficulties succeeding because of this social issue.

Many individuals are uncomfortable asking for help. They feel ashamed for seeking help when they need it, especially if someone around them does not need and is succeeding. One of the most dangerous directions that we can devolve as a community of people who care about one another is the refusal to ask for help.

Instead of scoffing at these people, rolling our eyes and telling them that 'it's not that hard to just talk to somebody', our project takes a passive approach, helping students overcome insecurities about their skills, develop confidence through learning while keeping them engaged and excited about coding. In this project, we introduce an AI chatbot so these people can still get some form of help without any form of judgement from peers or teachers. Sometimes, resources are limited, peers and teachers are not always available to help everyone, and help is not easily accessible.

The followup features are to help you debug, write and grade code. The automatic code engine codes your computer science projects for you, and we also made an automatic grader. This was out of pity for Mr Gan because he marks hundreds of assignments every semester, which is an enormous workload. Moreover, to mark our assignments, he has to copy and paste inputs for each test case for each student. So, out of sympathy, we made a computer judge the technical aspects for him.

How we built it

We built it by sacrificing several hours of sleep, a few hundred brain cells and a goat offering to the gods. At this point in time, our members would've very much liked to just simply die after having to deal with classes and CSS.

Challenges we ran into

With 4 hours left before the deadline, we ran into a merge conflict while git pulling. It was a small but significant obstacle. Even worse, with 40 minutes on the clock, Hao 'accidentally' typed in sudo rm -rf .*, deleting his work, and forcing Oliver to do the finishing touches last minute by himself. Apparently his cat sat on his keyboard while he was busy. There were so many features and parts we wanted to implement, but we weren't able to finish them in time, like dark-mode and sample questions. The hardest part was letting go of some really cool things, and managing our time.

Accomplishments that we're proud of

I’m proud that we were able to create such a polished finished product. Even though Emily thought it was impossible, the code engine and chatbot were a success. With several hours of focus, we were able to make a program that was both functional and aesthetic.

What we learned

Hao had to relearn CSS, so that was a fun learning experience. We learnt that when there’s a strict deadline, we needed to focus, get organized and set a strict schedule for our developments.

What's next for CSEngine

We would love to continue to implement several features that were left behind during the 24hr sprint.

Plagiarism Checker Our priority for the next stages of CSEngine is to make a plagiarism checker to ensure code submitted by students was not written by AI. Plagiarism bars students from learning, undervalue other students' work and is also a form of theft. Teachers have always had a hard time dealing with such, but it's even more difficult for a human spot it if it was written by AI. Even now, AI is doing things beyond our imagination, learning to write essays and create art. Writing code can easily be done by AI, and so that's why we want to include a new feature, using AI to catch AI-written code.

Assessment Engine Manually testing and analyzing programs written by students to see whether they work is a boring and repetitive task. Imagine grading programs written by 100+ students to convert Fahrenheit to Celsius, testing them on a few test cases each. This would take forever by hand. Rather, we propose our automated grading pipeline, which is able to grade each submission in just a fraction of a second. It can differentiate between good and bad code using a plethora of metrics embedded in the grading engine, including but not limited to: code quality (PEP8 violation count), code length (effectiveness), efficiency (compute time and memory usage), and, most importantly, validity (test cases). It accounts for students’ different programming styles and even typos in the output of the interactive program!

Share this project:

Updates