The butterfly effect

A big-picture approach to understanding the complex world of computer programming wouldn’t seem to be a revolutionary concept. But in the world of computer science and software engineering, that’s just how a new book authored by York University Professor Hamzeh Roumani is being described. Roumani, who teaches in the Department of Computer Science in York’s Faculty of Science & Engineering, has recently published a new computer science textbook with the intriguing title, Java by Abstraction (2005).

Right: York Professor Hamzeh Roumani

The book adopts a novel approach to teaching programming. Instead of pursuing the usual route to teaching a computer language – starting with the fundamentals and working through the intricacies toward a detailed understanding of the language – Romani has taken the reverse approach. He teaches a big-picture understanding first and then incorporates the details.

He wrote the book with a goal of changing the way Java programming is taught. In putting his method on paper, Roumani says his “simple textbook” is garnering attention of the world’s computer science community. The butterfly effect is a phrase that encapsulates the more technical notion of sensitive dependence on initial conditions in chaos theory. Small variations of the initial condition of a dynamical system may produce large variations in the long-term behaviour of the system. Java by Abstraction is creating its own butterfly effect in how Java programming is taught. “Instead of using the usual bottom-up approach and getting students to write simple programs and then move on to build big systems, I propose that students first learn how to build systems from ready-made components and then look ‘under the hood’ to understand the finer points,” explains Roumani. “You don’t teach a new car driver to build the carburetor and then drive. The same applies to computer programming. This may seem a simple reversing of the order (first learn to use and then learn to implement), but it has paramount pedagogic implications.”

The benefits of his system of teaching, says Roumani, are huge. “Students learn that you don’t have to understand how something works in order to use it. They aren’t defeated before they even begin. This allows them to manage complex systems by viewing them as a whole or assemblies of building blocks. It also prepares them for the real world where often things happen and situations arise where the details are not known or subject to change.”

Roumani has focused on shifting the emphasis of teaching the Java programming language by presenting component usage first. The conventional approach to teaching with the focus on the “how” of Java conveys the impression that the “what” is inferior. Roumani’s method makes architecture, problem solving and specification the central theme and treats clients and implementors as having completely separate roles. “I like to think that I’ve put the fun back into programming,” chuckles Roumani. “Think about it, the ready made components are plentiful – why go about reinventing them? Instead students learn to build the cool stuff and they get excited when it actually works.”

That excitement, says Roumani, then translates into a desire to discover just how the component has worked and as a result, the big-picture appreciation provides a framework and motivation for moving through the more tedious building blocks. His concept achieves the same goal without tedium and confusion.

Since the book has been launched, Roumani has received plenty of feedback from fellow programmers and computer scientists. While traditionalists are reluctant to accept his concept, a growing number of academics are agreeing with his approach and with the balance that his book strikes between big-picture concepts and language details. “It is my belief that a big-picture approach [alone] will produce an individual who may be computer-literate but certainly not a productive computer professional,” he says. “At the other extreme, an individual who masters the intricate details of a particular environment without being able to think abstractly will become obsolete as soon as the environment becomes obsolete. A blend of the two approaches is essential. By understanding how today’s details fit in the general abstract scheme, students should be able to adapt to tomorrow’s technologies.”

By implementing his changes to how Java programming is taught, Roumani is producing a long-term variation in how others teach computer science and in the appreciation York students in particular have for Java.

More about Hamzeh Roumani

Roumani received his PhD in theoretical physics from the University of Illinois at Urban Chapaign in 1980. Since then, he has taught physics and computer science at a number of institutions and has also worked as a consultant in the software development field for the banking and construction industries.

He finds immense enjoyment in teaching and constantly seeks ways to improve his methods. The recipient of numerous awards, Roumani received the Excellence in Teaching Award from York’s Faculty of Pure & Applied Science (now the Faculty of Science & Engineering) in 1995 and 2000. He was awarded York’s University-wide Teaching Award for teaching excellence in 1996 and the Mildred Bishop Award in 2001, 2002 and 2005.