Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.


This spec discusses the creation of "PyStart", an application to help programming teachers teach the basics of logic and python coding in the class room. In addition it will also be able to test students on basic python code in a unified way.


Python is a beautiful and powerful language. What makes it very unique is that even with its power, it is still easy to learn and a wonderful way for students of programming to delve into programming quickly. But it would be nice to have a program to test the students' results and provide challenges that are fun and changing that will help the student learn the basics of programming. Many people on Ubuntuforums have been recommended Python as their first language to learn programming. Sources...

All these people want something to take them into that first step. This program can help them practice and learn each step of the way.

Use cases

  • Mrs. Brower wants to teach her students about programming and working with strings. So she asks the students to start PyStart and start lesson 4 "Variables: Strings"

  • Ashfaq is volunteering his time at a free programming basics workshop. His students want to practice their programming with a continually progressing and more challenging environment. Ashfaq recommends to the students to use PyStart to learn basics that are taught in the class.

  • Mr. Vuori wants the students to take a test that automatically grades the students on how many programs they can complete in that time. He submits his "test.pyStart" file to the students and they then take the test and send the file back to Mr. Vuori. He then can grade and review the tests.


String comparisons The output of the user's program could be checked for correctness. This could be done in various ways of parsing and searching the resulting output. Additionally uses may have to code the program to output the code to a string which is read from PyStart.

Code analyses Code will be analyzed if needed to make sure that the code has what it needs to meet the programming requirements. For example: PyStart can make sure that the student used the new command and didn't use inside of a quote to cheet. :P

Importing more examples PyStart will have the ability to let people submit more questions and challenges to be used. This list could also be added to a collected list of tests, chapters and assignments that could be downloaded or simply included with each release.

Coinciding Book with PyStart I will find a book that will work along with this program as a way for the teacher to work with the students better. This will provide not only a good teaching experience for the student, but from a programmer's perspective the quality of the program with it's Documentation will be much better. The book will probably be an open document that will be modified along with the program according the CC licensing.


Not only is PyStart great for people to learn beginner's python, but is built on python itself. I will use PyGtk with the obvious Python. I threw together a quick glade file to show the basic design layout to be presented. A basic design screenshot can be found here... if my server is still running :S


There are programs that help teach programming, but this will be for students that need to learn the logic basics of python programming in a unified environment for teachers and students. For example teachers can easily create tests and quizes to quickly analyze the student's code and progress.


Code will be entirely Python Programming. Created using the Python Plugin for Eclipse. Python python python!

Data preservation and migration

Data will be stored in the CVS of Bazaar. Code will also be backed-up (Backuped?) on a main server run by Jason Brower and will always have a personal copy of the software on his Programming Laptop.

BoF agenda and discussion


GoogleSoC2007/python-trainer (last edited 2008-08-06 16:17:59 by localhost)