Lucas Chaufournier

Educational IDE

Educational IDE: When students learn to program one of the tools they often use is a full featured Integrated Development Environment (IDE) such as Eclipse. These IDE’s can be useful for a more skilled developer but are often too much for a beginner and can hamper them as they progress through their studies. Things like syntax correction, auto generation of classes, and other automated features can fool students into thinking they know a programming yet when it comes to programming from scratch they got lost. My educational IDE will be an editor that will evolve with the student as they progress through their curriculum. It will start as just a simple text editor with even the simplest of features such as copy and paste disabled. As the student programs and proves they know the basics of a language the students will level up and unlock more and more advanced features of the editor. The editor will also learn about a students programming and learning needs and adapt to the student as they learn to program.

The main technical/algorithmic challenges will be in deciding how to pace students and determining when they are ready to move on to the next level. As students learn at different paces, it will be hard to determine if a student has truly learned the concept. Another algorithmic challenge will be in implementing the system that learns about the students skills and learning potential. This will involve techniques in static analysis to properly profile each student. Developing precautions to make sure students don’t try to cheat themselves out of learning programming, in a classroom setting will also be a difficult task to accomplish.

The educational IDE takes form as a cloud application that is hosted on a server that the student can access through a remote browser. The benefit of a cloud application is that interfaces can be designed to track student progress for instructors. In addition, new students can get right to work without having to figure out how to configure confusing development environments like they have to with current IDEs. On the server, each student is placed in their own docker instance, so that they each have their own isolated development environment.

As students program in their editors, their program is analyzed each time they compile. The algorithm examines the amount of programming constructs along with number of functions used in order form a judgement of what a student knows. Once a programmer has used a certain amount of each construct, the editor will unlock a feature that assists with that construct. The editor also trains student in properly compiling programs from the command line by forcing them to use the terminal before they have access to push button features. The same is true for git commands, once a student has used git long enough a git menu will appear for use. The editor also has an instructor interface to allow instructors to monitor students performance and see which features they have unlocked.

Bio: I am a Senior in Computer Science at the George Washington University. My area of focus is a cross between Security and Virtualization Systems, though my interests are not limited to just these areas. I like to study all aspects of computer science and how they interact with the world. I currently work as a Junior Information Security and Compliance Officer for the George Washington University School of Engineering and Applied Sciences Computing Facility. I respond to security threats on the network and am also responsible for Unix Systems Administration for our servers. I was also the president of the George Washington University chapter of The Association for Computing Machinery (ACM). We are a small group but are working hard to bring computer science to the George Washington University community. We also act as a support group and community for fellow computer scientists. In my free time I like to write, especially stories of fiction, although many remain unfinished. On my study abroad trip to London, I discovered the sport of darts, and have loved it ever since. After Graduation, I am moving on to pursue my Ph.D in Computer Science at The University of Massachusetts Amherst. I plan to have a focus on virtualization and systems.

Project Video:

Documentation: