Teaching Programming Tools – Virtual Proctor

WhyLive proctors aren’t enough

As we’ve taught kids to program around the world, we found that having a live proctor for each 10 kids (or 5 pairs, as we have the kids pair program while learning), was essential to keeping the hands-on coding activities on track and on pace.  Despite our best efforts to keep the pairs coding though, we found ourselves as teachers having to ‘go around’ to see where the kids were at during our live events.  This resulted in a slow-down of the rate we could teach.

To correct this, we came up with idea of a additional, virtual proctor.  The concept was to be able to see what was on each pair’s screen at all times from one central location in the classroom.

What  – Enter the Virtual Proctor

Using the extensibility of SmallBasic, we wrote the capability to capture the screen on each successful ‘Run’ (as to a screenshot) to a central location.  This location is simply a shared folder on the classroom network. 

Using the Windows Explorer folder ‘Extra Large icon view’, we can then see the latest execute output, each time the pair presses F5.  Because this is just the view of the contents of a shared folder, multiple viewing machines can be used in larger classes.  In addition to helping the teachers to see where the students are at, these central viewing stations also can help the proctors to see which pairs need help.  You can see from the screenshot below that each screen shows the network name of the computer initially.

Teaching Tip: Use post-its to label the network computer name on the front and back of each pair’s monitor.  That way teachers and proctors can quickly see where the pair physically is after they notice that a pair is ‘behind’ or ‘off track’ on the virtual proctor screen.

Pentagon Crazy Recipe Progress

Also we wrote the extension to rename the output from unique Computer Name to a new name on second execute from each machine.  The name becomes a generated time-stamp file name. The last screenshot is moved to a folder named ‘Archive’.  Path information for the Archive folder is below in the “Set it Up’ section of this blog post. In this way we can view the last execute result in one window, but we can also look at the history of executes as screenshots. 

Below is a screenshot showing history from a class.  We can see the progress in the variation from the SQUARE recipe to the variation. 

Virtual Proctor output - variations

HowHow to set it up

To use the Virtual Proctor in your classroom, you’ll need to perform the following configurations steps:

1) Download and install our SmallBasic extensions from CodePlex onto each pair’s machine (or you can just run SmallBasic including the extensions from a USB drive)

2) Create a shared folder on the classroom network.  Set the permissions on the share to be ‘Everyone Read/Write’.

3) Edit the path on the Proctor.txt file (from the extensions) to reflect the path to the shared folder location for your classroom.  For example, change ‘c:\stuff.{0}.png’ to something like ‘\\myMachineName\myShareName\{0}.png’.  The edited ‘Proctor.txt’ file must be in the ‘lib’ folder of each pair’s SmallBasic installation as shown in the screenshot below. 

Teaching Tip: Remember to change the path information on EACH student’s machine in the Proctor.txt file.

Virtual Proctor setup

4) The Virtual Proctor currently works with SmallBasic code that uses the ProgramWindow or GraphicsWindow.  All of our recipes (except HiLow) use of these windows.  For more information about how we wrote the ProgramWindow object (which is part of our SmallBasic Extensions – see the CodePlex documentation – here).

5) **Update**The Virtual Proctor is now (as of v.21 of our Extensions on CodePlex) enabled to work AUTOMATICALLY on ProgramWindow.closing.  There is no more need for kids to add any lines of code.  This also requires the latest version of SmallBasic (v 0.9).,

OtherUnintended Benefits

In addition to helping us to teach kids to program better, the virtual proctor has resulted in several unanticipated benefits to kids learning to program.  These include the following:

1) More concepts taught – keeping better control of the classroom pace via the central monitoring results in better general efficiency around teaching.

1) More Variations attempted – seeing their work, pairs ‘get inspired’ to try to code more variety during the variation period of each recipe.  Sometimes we’ve even projected the Virtual Proctor results so that all kids can see them. This usually causes a competition between the pairs to ‘code that one!’

Check out our cool SmallBasic Variation!

2) Pride in coding – after seeing the Virtual proctor, kids asked us for color (paper) print outs of their work.  Kids LOVE taking home a printed piece of paper to show-off their work.

3) Fixing recipes / teaching better – we can ‘see’ where kids get stuck and/or go wrong as they try to code our recipes.  The history capture feature is particularly helpful for teachers to understand the path the kids take to get the recipes completed.  We have re-written recipes and also changed the way or order we have taught some recipes because of what we have seen by reviewing the Virtual Proctor output history. 

The screen below shows output from the Virtual Proctor around one of our quizzes.  Notice how the feedback (shape) changes after the kids translate (and run) each question.  Also notice what happens when things go wrong (i.e. failed question) in the middle of the series.  Note also that I’ve highlighted the Folder View icon in the upper right and set it to show ‘Extra Large Icons.’

Quiz output from Virtual Proctor

Future directionsThere’s more to do

We love the Virtual Proctor and use it when we teach nearly all of the time.  To that end we are considering some improvements to its functionality.  These include the following:

1) Including the SmallBasic source code on the capture.  This will help the kids to remember HOW they coded up a particular result.  This is particularly important when they work with variations.  These variations may be from us, but just as often they come from the kid’s own creativity and talent.

2) Including the SmallBasic program ID on the capture.  We encourage kids to publish their work.  When they do the must remember to write down the Program ID, because that information is currently not searchable.  It’s easy to forget to record that ID, so putting it on the Virtual Proctor capture would help kids to re-use and to share their code.

SmallBasic Publish Dialog Box Example

3) In including the SmallBasic skills on the capture. Create a ‘Certificate of Completion’ using the Virtual Proctor capture at various knowledge points in our course library.  Some thing like, ‘You’ve coded the following skills, such as Loops, Conditionals, Arrays, etc…’ included with the picture, source code and ID.

4) Improve the Virtual Proctor integration with SmallBasic.  We envision automatically running the Virtual Proctor for all executing SmallBasic programs.  That is we’d like to raise the level where we ‘hook into’ SmallBasic, so that kid’s don’t have to manually add ‘Tortoise.Approve()’ at the end of each recipe and/or quiz to have their content added to the Virtual Proctor output.

Try It OutGive us feedback

Are you using our Virtual Proctor when you teach kids to program?  How is it working out?  What do like best? least?  Let us know.

Happy Programming!

Comments (1)

  1. William Munn says:

    Not that you could tell from my website, but I'm a lead software engineer for a Utah-based company. I've been thinking of ways to teach my kids to program and thought about different ways to get involved in helping to train the next generation of engineers for a while now (my oldest child is 11). I spent many hours debating with myself about what it would take to get something set up and if I should approach my local schools. I was so happy to find teachingkidsprogramming.org! You've done a fantastic job so far and I've already taught the first couple lessons to my kids AND THEY LOVED IT! Having been a web guy from the beginning I can't believe it never dawned on me to use the web as a platform for this sort of thing. Anyway. great work! I'm also interested in contributing in small ways if possible and if you are looking for it. I'm employed full-time and am not looking for a job or money, just interested in helping with this great work. There is contact info on my website.