CS 5150: Software Engineering
Spring 2018

Project Suggestion
Extending the Atom Text Editor in Support of Learning Programming

Client

Kyle Harms
Email: <kyle.harms@cornell.edu>

The client is a lecturer in Information Science at Cornell who teaches INFO/CS 1300 and INFO/CS 2300. The work done by this project will be used to help the students in these courses.

Student contact

Daniel Hirsch, <djh329@cornell.edu>, is the student contact for this project. There is a full team with eight members.

Background

Atom is an open-source text editor built by GitHub. One of the primary goals of Atom is to be hackable, yet approachable. To achieve this goal, its creators have written Atom as a web app using HTML, CSS, and JavaScript. The editor itself runs in Electron, an open-source version of the Chrome web browser (Chromium) with baked in Node.js integration.

The hackable nature of Atom makes it a good choice for helping students learn programming. New programmers are often extremely overwhelmed when having to learn programming in complex integrated development environments (IDEs), like Eclipse. However, plain text editors frequently do not offer sufficient programming assistance to appropriately support new programmers either. Atom fits between these two extremes due to its hackable core. Educators can hack Atom to customize it to their students' exact learning needs.

Project Summary

The goal of this project, is to extend Atom to support students learning to program. Many of the existing feature requests for Atom ( https://github.com/atom/atom/labels/enhancement) would support this goal. For this project, the student team would develop some of these feature requests and also develop some custom classroom support. The developed feature requests will be submitted up stream so that other Atom users can benefit from the students work. The custom classroom support will also be made publicly available as an Atom package so other educators can also benefit the from the student team's work.

Goals

These goals are open to discussion, but at the moment this is the likely direction that the client sees for this project.

  1. Develop per-project/per-directory configuration support: https://github.com/atom/atom/issues/5168 and/or https://github.com/atom/atom/issues/6619
  2. Build a package to support assignment submission to GitHub.
  3. Build a package to support automatically committing students files and syncing these files with their GitHub repository.

The first goal, is the primary goal of this project. This feature request is the most popular request for Atom since 2015. It is a challenging problem to solve and will likely consume the majority of the effort on this project. This portion may require some C or C++ development.