DrPython in undergrad education

2004-10-04
2013-04-26
  • Greg Wilson
    Greg Wilson
    2004-10-04

    Hi.  Over the last couple of years, I've helped the University of Toronto develop a new core second-year undergrad course called CSC207, the aim of which is to introduce students to grown-up tools and working practices.  As part of this, we teach them some Python (they use Java in first year).  We'd like to be able to offer them a simple IDE, comparable to DrJava (which they use in their first courses), for working with Python, and DrPython initially seemed like a good fit.

    I think that having a couple of hundred students using DrPython every term would give its developers lots of useful feedback.  However, before we can introduce it, there's three features that we need:

    * The debugger has to be in the standard release.  I know that downloading and installing plugins is easy, but if even 10% of students get it wrong, we'll have several dozen cries for help every term.

    * The debugger has to support breakpoints --- preferably conditional breakpoints.  Daniel Pozmanter tells me this is on his to-do list; if anyone can help him move it to the front, I'll applaud ;-).

    * There has to be better (some?) integration with PyUnit.  Like many schools, we're now teaching students JUnit in first year, and requiring them to write systematic tests in higher-year courses.  It would be great if DrPython had the same built-in support for this that DrJava has.

    I realize that everyone has their own list of priorities, but I think that making DrPython work as well for undergrad teaching as DrJava would help both its wider adoption, and Python's.  If anyone wants to discuss this further, I'm gvwilson@cs.toronto.edu.

    Thanks,
    Greg Wilson

     
    • Debugger in standard release: 

      I think this can easily be met halfway.  Some kind of install program, which installs drpython and desired plugins, could work well here.  Ideally, this program would be gui (wxPython), and be able to install the plugins (and application) from the .zip files. 

      Alternatively, I could muck with the core to allow for global plugin installation.  Basically you could put the plugin in the drpython program directory (eg. drpython-3.5.5/plugins), and any other plugins you want, and then zip it back up, and distribute that to your students.

      Of course, now, you can simply write a script (or copy bits of the install script) to manually move the plugin files into the user's drpython directory, call it setup-debugger.py, and include it with your distro.

      I am open to other suggestions.

      Breakpoints:  I'm on it.  Breakpoint support should be easy to add (it was in the plugin SimpleDebugger is based on, I just need to fiddle a bit).  Conditional breakpoints would be a bit more work, but can be done.

      unittest(PyUnit) integration:  Yes.  Again, as a plugin.  Here I will need some help, as I am not at all familiar with unit testing!