eLearning Innovations and Partnerships in
Science and Engineering (eLIPSE)

With the growing importance of data analysis, basic programming skill is becoming an essential requirement for most professionals. While programming may be an essential skill, many people find it difficult to learn how to program. ShiFoo provides an automated tutorial environment that supports learning core programming skills.

Additionally, most people have difficulty transferring core programming concepts from one programming language to another. They tend to get caught up with the fine details of the syntax and semantics of the language, rather than focussing on programming concepts. We use ShiFoo in second programming courses to help students learn the details of a new language.

How does it work?

ShiFoo is an online tutorial environment that:

  • presents students with programming exercises,
  • allows them to write the code for their solution, and
  • to run their solution to obtain immediate feedback on their attempt.

Feedback is provided through the results of unit tests and static analysis of their code. Unit tests show students the expected result for each test case and their actual result. Static analysis allows the tool to make targeted suggestions about how to solve the problem. It also allows the tool to restrict solutions that might pass test cases but not achieve the expected learning outcome. For example, a student might wite a sequence of statements that could pass test cases but not demonstrate the use of iteration to solve a problem.

Providing students with small, low-stakes, exercises in an environment that gives them immediate feedback encourages students to write programs.  Research has shown that students who write small programs, which focus on a single concept, are more likely to understand the concept and how it is applied in other contexts

The tool also provides an environment where students can easily experiment with ideas.  Once they have solved a problem, they can continue submitting variations on their solution to see how different approaches could be used to achieve the same result.  Their correct answer is recorded in the system, so there is no fear of losing a result through experimentation.  And, as they have an existing solution, it is easier for them to perform experiments as they do not have to write scaffolding code to try out their idea.

Languages currently supported are Python and Java.

Project team/Contacts
Title First Name Last Name Affiliation Role in the project Contact




School of Information
Technology and Electrical Engineering

Lead CI

​+61 7 3365 2429

      eLIPSE Software development team elipse@eait.uq.edu.au
+61 7 334 68018
Project Status

The ShiFoo project extended existing eLIPSE tools (MyPyTutor and MyJavaTutor) to provide students with scaffolded support as they learn to program in different languages.

The initial redesign made MyPyTutor web-based and facilitated collection of learning analytics.  The 2021 upgrade provided a common set of features across both the MyPyTutor and MyJavaTutor tools, improved management of the database of exercises to facilitate using the tools across multiple courses, merged the interfaces of the tools to simplify eLIPSE support requirements in the future and extended the tools to more easily support other programming languages.

The enhanced tool has been renamed named ShiFoo.


The following resources are available for users:

You may request access to a demonstration version of ShiFoo by contacting eLIPSE.

ShiFoo’s architecture makes use of a web server to deliver the tutorial system’s interface and backend code runners that execute tests.  It can be integrated with a learning management system through LTI.

Private GitHub repositories exist for the Python and Java questions used in courses at UQ.  Please contact Richard Thomas or eLIPSE for access to the repositories.

Technologies Used

Full JavaScript technology stack.


The first (desktop) version was developed by Dr Peter Robinson.  Subsequent versions were developed by CSSE1001 tutors.  The final desktop version was developed by Richard Thomas.

The development of the web version of ShiFoo has been funded by two sequential EAIT Teaching and Learning Grants in 2017 and 2020.


Robinson, Peter J. (2011). “MyPyTutor: an interactive tutorial system for Python.” In Proceedings of the Thirteenth Australasian Computing Education Conference - Volume 114 (ACE '11). Australian Computer Society, Inc., AUS, 155–160. (https://dl.acm.org/doi/pdf/10.5555/2459936.2459955)