Glimmer Labs
#research, #education, #ushahidi, #curriculumBuilding, #android, #handsOnI the summer of 2013, I conducted research with professor Samuel Rebelsky to reconstruct the third and last course in the multi-paradigm introductory sequence for computer science by incorporating project-based Android Development, and adding an engaging overarching theme of Computing for Social Good.

What is CS2 for Grinnell?
Grinnell’s version of CS2 is CSC 207. It’s the third course in the computer science introductory sequence. The course's objective is to teach object-oriented programming, data structures, and algorithms. The course was previously taught in Java through the Eclipse IDE.
Why change it?
- The course (last revised in 2005) used antiquated tools and materials, outdated definitions and usage samples, and failed to include newer technologies and practices that every computer science student is expected to know today
- It had a high dropout rate
- The students didn’t find it very interesting as it was entirely console-based
Our hypothesis
If we refresh and rewrite the course materials, incorporate a modern technology and give the course an overarching theme, we will offer a better computer science foundation in object-oriented programming, decrease the dropout rate and encourage more students interest in computer science.
In May 2013, I conducted several preliminary user studies and interviews with past and future students to discover what best motivates and interest students in their pursuit of computer science knowledge and what, if any, issues they had with the course. I wanted to make sure that the students’ preferences will be taken into account during our research.
It soon became clear that the biggest issue was a disconnect between what the students were learning, and how to apply that knowledge for something interesting and productive. On top of that, the students couldn’t even imagine what they could create, because they had no foundation of practical examples to build upon.
Through further user studies and research we evaluated and tested a broad range of themes and technologies we could incorporate. In the end we decided to include Android as the technology, and Computing for Social Good as the overarching theme.
Deliverables
The final outcome of our research was building an Ushahidi server that serves as the data source for the students to use and manipulate to develop simple Android apps.
We wrote and re-wrote many the course materials (from 2005) to fit modern standards, and included new topics like Version Control, GitHub, JavaDocs, Debugging, Unit Testing, Ushahidi, and Android. We wrote an API that parses JSON data we get from the Ushahidi server into more human-readable form, that the students can then manipulate.
We presented our research at SIGCSE 2014 and GHC 2014.


Outcomes
In Fall 2013, right after our research, I mentored CS 207, and helped prof. Rebelsky further iterate on the course readings, labs, homeworks and tests.
We quickly realized that the overhead of Android development on top of object-oriented programming concepts was overwhelming. Especially because setting up an Android development environment on a Ubuntu computer was pretty finicky at the time. With learnings from the Fall 2013 course we iterated on and simplified the course for Spring 2014.
Regardless, the improvements weren’t enough. The course was still too challenging, and more importantly, the Android development component detracted many students from successfully mastering fundamental OOP topics. In order to ensure the best possible learning outcome, we decided to take the Android component out of the course.
All of our work and research was not in vain, though, because many parts of our research still remain in the course. Particularly, the overarching theme of Social Good, using the Ushahidi server as the primary data feed and the modern additions to the course covering version control, debugging, documentation and JSON parsing.