SCORE Project: CodeCoach
Title: Coaching Best Coding Practices
Sponsor: Claudia Szabo
The first, introductory, programming courses have the highest drop-out rate of all Computer Science courses. They are also notoriously difficult for students with not prior programming experience. This project will focus on researching and implementing a coding coach aimed at teaching beginner programmers about coding best practices.
Project Description
The CodeCoach will function like an assistant, similar to the Microsoft Office PaperClip. Once the beginner programmer finishes a program or a method/class, the CodeCoach will highlight best practices that could be applicable to the code that the beginner has written, and would suggest avenues for improvement of the code. The CodeCoach will also record metrics similar to those included in the Personal Software Process and offer advice at the end of coding sessions. The CodeCoach will not perform code compilation but can notify the user that compile errors are present.
CodeCoach will have two main parts: the CodeCoach UI and CodeCoach Best Practice Repository (BPR).
CodeCoach UI
The UI will function either in the form of pop-ups that will appear at the end of every line, notifying the programmer about the potential nasty practices employed, or similar to the MS Office PaperClip.
Regardless, the UI will show information about the offending lines, the nature of the bad practice, and links to resources describing how this practice can be remedied. The suggested remedy can be generic, e.g., "try not to use variable names that are too long" or specific, e.g., "the variable name dsfkfdsj333jjj3j3j3 is too long – try reducing it to something more concise".
CodeCoach BPR
The team will be responsible for creating and encoding a repository of best practices. The best practices can be code related but also behaviour related. The violation of some of the best practices can be identified at the end of each line, or at the end of the program. Best practices and behavioural metrics must include but will not be limited to:
- Code smells
- Code complexity metrics
- PSP metrics
Project Scope
Your project needs to support all the features described above, but is not limited to them.
The choice of platform is up to you, including whether the code editor should be a standalone IDE or a web-based IDE. Teams are expected to be or become familiar with the main guidelines for developing applications for the chosen platform.
No "fancy" UI is required for CodeCoach. However, teams should conform to the human-interface guidelines of the chosen platform and document this conformance with examples in the project report.
Process Requirements
Teams are free to choose the development process; however, this choice should be motivated and discussed in the project report. The project artifacts should be hosted on a public repository (such as GitHub or Bitbucket), to track the project activity (including bug reports and bug fixes).
Environmental Constraints
The CodeCoach should run on any platform. If a standalone editor is chosen as opposed to web-based editors, then that too should run on any platform.
Level of Sponsor Involvement
The sponsor of this project will accept questions about the project topic during the periods:
- 1 March 2015 to 15 March 2015;
- 1 Jun 2015 to 15 Jun 2015;
- 1 Sep 2015 to 15 Sep 2015.
At least by the end of each of these periods (but possibly sooner), selected questions deemed important by the sponsor will be gathered and answered in a FAQ at the bottom of this page. Questions not appearing on the FAQ will not be answered, and teams will have to make their own assumptions for those questions; assumptions have to be included in the project report.
Sponsor contact: claudia (dot) szabo (at) adelaide (dot) edu (dot) au
Project Restrictions
None.
Project FAQ
Answers to selected questions will appear here.