Inspiration
Several of the group members are Classroom Assistants for CS100, by far the biggest computing course on our campus at NJIT. After all having worked with this class for over a year, we all noticed that students often struggle to keep up despite the extensive support system in place. The course does its best to aid these students by offering tutoring at all hours of the day and offering close guidance, but some students still do not find this to be enough. In some cases they may have trouble following along with the lecture; others may work during the day and are unable to attend any of the tutoring sessions; others yet simply need more practice before the concepts finally sink in. There are some materials online that may satisfy this demand , but all of these contain inconsistencies with the curriculum of the CS100 class, and students who learn things a different way than what the course requires consistently run into problems down the road. The aim of pyLearner is to provide an all-in-one stop for addressing these issues - not only does pyLearner offer a comprehensive guide to each lecture, each topic comes with practice questions that have hidden test cases and are formatted specifically to prepare students to succeed in CS100.
What it does
pyLearner aims to split up the entire curriculum of CS100 into lectures, and further again into more digestible lessons. Each lesson comes with a key concept of python explained in an articulate and brief blurb, followed by a small coding challenge that has the user utilize the skill they just picked up. These coding challenges come with hidden test cases, informing the user how many of the cases they passed out of the possible pool but not revealing any information about what exactly went wrong, forcing the user to think critically and also fostering a desire to get it right. The code itself is typed using an in-browser code editor directly in the site, and submitted and graded automatically with the click of a button. In addition to lessons based off the curriculum directly, pyLearner also offers slightly broader coding challenges similar to the sort of questions asked on class exams, to help students better prepare with the ease of mind that they're on the right track.
How we built it
After discussing how we wanted the layout of the site, we split into front end, middle end and back end teams. Front end was responsible for building the site, creating the content of the curriculum and challenges, and facilitating user submissions for grading later. Back end took care of the server along with the process of grading the generated submission file. Middle end handled tying the front and back together and ensuring that the site as a whole was functional.
Challenges we ran into
We initially decided to try and use Azure, after garnering interest from their advertisements before the event. This cost us about 7 hours of trying to get it to work, as the original goal was to have a VM run on it that could compile and run code for us, as well as host our web page. After trying tutorial after tutorial and this and that, we decided that hosting our web app on Azure was not possible within the time frame, and we abandoned that. Instead, we settled for having full functionality on localhost, which at least showed proof of concept.
Accomplishments that we're proud of
We have a clean and intuitive front-end that doesn't get in the way of our core functionality. Furthermore, our web app works perfectly fine on a localhost, which in the future would easily be put on a domain for others to use. Our application is able to take in python code, compile it, run it, run test cases on it, and determine if the code is correct. Also, we believe that with further development, the tool could be extremely powerful and useful to the CS department at NJIT. An online tool for learning python with in-depth instructions and examples is invaluable, especially when it is tailored for the CS100 course here at NJIT.
What we learned
We were lax with some of the communication we had, so when we went our own way and built code, when we reconvened, we had different expectations for what was built. Now we know to make sure that before independent work is carried out, we should agree on exactly what the protocol is, relevant deliverables, how it fits in the scope of the project, etc.
What's next for PyLearner
Once the rest of the curriculum is written as lessons with built-in testcases and examples, this tool could nearly substitute CS100, if not provide extremely valuable supplement. On top of that, several practice midterm problems could be added to make preparation for exams much more targeted and efficient for students. Finally, deploying the app on a web service would allow any student to access this tool according to their needs.
Log in or sign up for Devpost to join the conversation.