A resource to help novice programmers learn data structures

This project’s resources were developed by Nasser Giacaman from the Faculty of Engineering (Electrical and Computer Engineering) to address the challenges of engineering and computer science undergraduate students getting their heads around the complex topic of data structures. The upgraded resource, a software called InteractiveDS that Nasser developed together with his team (Mark Aziz and Ogen Odisho, and later Elliot Varoy), was trialed in 2017.

These resources might be useful to teachers of basic programming (data structures) across STEM disciplines.

The project was supported by the SEED Fund grants for 2017 and was featured on the Faculty of Education and Social Work‘s news.

For similar projects, see: Introducing students to writing elegant computer code.

Project background

Nasser explains: “Programming (i.e. “writing code”) is a difficult subject to learn. One of the most fundamental topics is data structures, which is also one of the most difficult topics in programming due to its high level of abstraction.

The ACM and IEEE Computer Science Curricula (CS2013) is a guideline for Computer Science and Software Engineering undergraduate degree curriculum design. In the guide, data structures has been identified as a Core Tier-1 topic (i.e., very important). However, the data structures unit is also one of the most cognitively difficult topics in programming. At the University of Auckland, this topic is not only taught to Computer Science (COMPSCI 105) and Software Engineering (SOFTENG 250) students, but also to students taking Computer Systems Engineering (COMPSYS 202), Electrical and Electronics Engineering (COMPSYS 202), and Mechatronics Engineering (MECHENG 270).

To alleviate the challenges of learning data structures, InteractiveDS was developed in 2015 (by Mark Aziz and Ogen Odisho), available on Windows, Android, iPhone, and most web browsers. It was released to students in COMPSYS 202 and MECHENG 270, and highly utilised by them. It has since been re-used in the same courses for 2016, and continues to get positive reviews from students. While InteractiveDS continues to be useful as a teaching and learning aid, it was limited to pre-defined exercises; there was no ability for students to explore concepts more freely. Due to this limitation, many data structure concepts were taught in lectures using traditional and primitive technologies, namely hand-drawing diagrams projected on the document camera. Not only is this limitation a disadvantage for the teacher in explaining the concepts, but it means students cannot have an active learning experience of experimenting with the concepts in their own time under the application’s guidance.”

Project reflection

A screenshot from InteractiveDS showing an Array activity

 

Objectives

With the support of the SEED grant, a software developer (Elliot Varoy) was employed. The objectives were to add two new core features to InteractiveDS:

  1. “Sandbox” mode: allowing the creation of any arbitrary singly or doubly linked list.
  2. “Show Code”: allowing students to export their visual interactions into “code” at any time.

How did it go, and where to from here?

When it comes to developing software applications, having a very well-defined priority list of features is essential. If not, a very common danger is likely to occur, known as “feature creep”. This is when the wish list of features constantly changes and increases as the software is developed. Not only does this diminish development productivity, but it confuses the users because of the application’s complexity.

While we got excited during the application’s development and identified additional features we would like to incorporate, our focus remained on the initial objectives stated above. ‘Quality over quantity’ was our motto. In its current form, the application will be useful for students and teachers for many years to come.

 

A screenshot from InteractiveDS showing a Queues activity

 

Did students learn?

Both of the above objectives were achieved, and the features were successfully incorporated into the application. It was an important design decision to ensure the new features fit into the original application, as the original application had been used and evaluated by students in 2015 and 2016. While the feedback was overwhelmingly positive from students at the time, they also commonly requested the above new features to improve the application’s flexibility to support a wider range of exercises. On the Android platform alone, the app has been installed over 800 times.

To ensure learning was prioritised, the application design made use of Visual Kinesthetic Pseudocode (VKP). This is a strategy devised by the team that scaffolds novice programming students when learning abstract programming topics. The goal is to provide a stepping stone in understanding the concept (i.e. the thought process), as this is a prerequisite to actually writing code (i.e. practical application of the concepts). In evaluating the impact of the application on students learning, students were asked to complete anonymous questionnaires about their interaction with the app. Some comments include:

I found this easy to learn because I was able to interact with the data structure, make mistakes,
then see how the order of doing things played a part.”

 

Being visually able to work through linking forward and behind, then deleting the nodes, really
helped concrete the process required to then implement it into my lab and assignment. Also being
able to see pseudocode after completing the task is a real help.”

 

A sample “hard exercise” on InteractiveDS

Skip menu