Inspiration
Being from ECE and having gone through entry and advanced level programming courses, we noticed something. Students who have never written a line of code before college find code intimidating. Tools like gdb, valgrind, gcc are 'scary' and have a ton of technical verbiage associated with them. Moreover, using these tools while learning and applying the basic and advanced concepts of a language like C in the classroom makes it hard for students to enjoy coding and really develop a passion for it. It doesn't help that ECE labs are usually full in the evenings with students from various courses.
We set out to solve this problem and introduce a change in the way coding IS or CAN be taught everywhere.
What it does
ACCESS is an educational IDE of sorts. It helps students hit the ground running while learning or writing code. We give them a text editor to write their code and a basic file system on a profile page to manage projects. All students have to do is write code and press buttons to compile, run, test or edit their code.
Our project simplifies coding for entry level students in three major ways
GDB and Valgrind: With the press of a button, students can compile and test their code. The ton of verbiage with these two tools to check code correctness and memory leaks is no more. We give a simplified, directed, easy-to-read output for students to read and then fix their code accordingly.
Version Control: With the click of a 'commit' button, students can create different versions of their code without any git commands and can see these versions as separate tabs in our front-end interface.
Function Replacement - Lets say my project contains 10 functions. Well what if want to test my code without actually completing each one? what If i want to check an error in my code but cant pinpoint which function its in? I simply have to click the 'Test' tab, turn any functions i dont want to be compiled from my code 'OFF' and those functions will be replaced by a function in the answer key securely stored in our back end.
With this we hope to introduce three major changes in the classroom:
- More focus on coding tools like debugging, version control and memory checks.
- Partial grading or partial analysis of code.
- Analysis of code failures, function failures provided as statistical data to the teacher, to provide a better guide as to the content for the next lecture.
How I built it
Our project is essentially a Django web application. We use a Bootstrap framework for a front end - which uses Django views to talk to a database through an API. The Database then talks to a Back end which uses Docker as a virtual machine. For a diagram of how our project is built refer to http://s22.postimg.org/8z9r71rdd/arch.png
Challenges I ran into
The main challenges we ran into were
- Function Replacement - How to make django and the database recognize the answer key to a project and replace those functions when needed.
- Writing scripts to simplify Valgrind and GDB output
- BUGS - Mainly among the user-interface (in Bootstrap) talking to Django using Javascript and Jquery.
- Statistical Analysis - Due to a time constraint, we could not complete the statistical analysis part of our project. Ideally we would record each failure, each success, each time a particular functions is 'on' or 'off' among many other types of data where we analyze HOW students code. This information in the hands of professors would ultimately help guide the content and flow of coding lectures. However, we decided to use the time we had left in making our application as stable as possible before attempting to put new features in it.
What I learned
I think the team really got into the spirit of coding and learned what developing something (trying to) from start to finish feels like. As a whole we learnt a lot about web development, with its various tricks and challenges. Each of us had a role, from front-end development, to database management, to back-end scripting. And we constantly shifted roles among one another to help our fellow teammates. Coding as a team, fostering both teamwork and friendship and building something to be hopefully used one day in the real world, reminded us of why we got into coding in the first place.
What's next for ACCESS
Our next step would be to further stabilize our platform and add the statistical analysis feature to it. We can then start to add languages other than C. And maybe sometime in the far future, we can turn this into a collaboration space for code, like Google Docs. We can also start talking to various professors in entry level programming classes at Purdue to see whether they would be interested in sponsoring or helping us test this tool on a live classroom. Thanks to the networking skills of one of our teammates, we are already in discussion with a few professors in the ECE department, thanks to which we got an ECN machine to develop on. As a whole, we really want to be able to implement something that will help students in the future.
Log in or sign up for Devpost to join the conversation.