Yesterday, July 19, marked the start of the Fall term here at IITB, so it is as good a time as any to offer a view into some of the technical content of the course over the past three weeks as we prepare to shift to covering practical deployment issues in the few remaining technical lectures we have left.
As most of our students have had previous exposure to programming either C++ or Python, week one began fast and furious with a look into the basic development of user interfaces in Android, as well as a little bit about version control, unit tests, and accessing the web from Java. Although the Java syntax was perhaps a bit of a difficult hurdle for many students who had not actually seen Java before, a review/overview session on Saturday which provided a short crash-course in object-oriented syntax in Java and Python gave many of the students the confidence they needed to start tackling the labs and team projects the following week. Students greatly enjoyed the opportunity to really get to work with Java and Python and I think it really motivated them to start experimenting on their own.
AITI students at IITB hard at work on a technical exercise.
Week two shifted the focus away from Android and towards the Django web application framework. Each day (Monday through Wednesday) focused on a different major component of Django: Models, Views, and finally Templates, while Thursday was reserved for some discussion about administration and tips about designing user interfaces (such as through the use of paper mockups) so that students would be ready to break ground on their team's programs that Saturday, when we held our first Hackathon to encourage groups to get help with starting and working on their projects. Although only about half of the groups showed up, I think those that came got started on the right foot and are now moving in the right direction with their projects.
Week three (this week) saw a return to Android, as we covered more advanced topics based on the needs of the different groups. We started on Monday with the topic of Multithreading on Android, as the topic had come up when several students had turned in their Lab 2 (which required network access) and reported that their labs had crashed because Android 4 requires network code to run in a different thread. Tuesday saw a lecture on Android's location services, as several teams are working on ideas that make use of the current location of a user to either filter results or control their app's behavior. Finally, Wednesday's lecture included a discussion of security concerns in both Android apps and web apps to motivate the teams to be thinking about data security issues when they deploy their applications to the public.
The students seem to be enjoying the material (particularly the exercises we've added to the lectures to help give hands-on experience) and I've been consistently impressed by their level of achievement so far. I am eagerly awaiting our next hackathon next week (July 28) to see how far the teams have come in realizing their ideas in such a short amount of time. I can only hope I can keep up myself! For now though, it's time to start grading labs!