By Ed Stiles - May 6, 2011, 11:43 am
Smart phone apps are hot today, but 10 years from now the trendiest techno gadget will be something completely different.
That's why the real focus of this semester's software engineering class in electrical and computer engineering, ECE 473/573, isn't so much on developing the next great phone app, but on recognizing how to exploit the latest technologies and trends, said ECE professor Jonathan Sprinkle.
"The most important take-away is that students should be able to teach themselves how to take advantage of new devices out there," Sprinkle said. "The devices you see as being hot on store shelves are always changing. So it's not enough to just learn about the latest device in school. You have to learn about how to learn about new things. That's the most important skill that any of our engineering graduates can learn, and that's really at the forefront of this class."
Sprinkle has a reputation as a demanding instructor, but that didn't prevent enrollment in this elective course from maxing out soon after it was announced. Designing apps that might be marketable at the end of the semester was a big attraction, as was the chance to study in one of today's most trendy techno disciplines.
"We took a class from Dr. Sprinkle last semester, and it was so hard," said Ubaldo Quintero, referring to himself and Arturo Armijo. They are part of a three-student team developing an app that prevents texting while driving. "But we liked the concept of iPhone and Android app development, so we signed up for the class."
"This is pretty much like the last class," Armijo noted. "We were pulling all-nighters every week, but at the end we learned a lot."
The class also is helping with job interviews, he said. "Some of the key terms Dr. Sprinkle has mentioned in class and the processes we use for software engineering have been useful in some interviews. And then when I talk about working on this Android project, the interviewers are really interested. This is one of the classes that's helped me most in my job search."
Sprinkle confirmed that one of the big wow factors for 473/573 is designing something to show off at a job interview. "It has to be something that you can get across to somebody and explain why it's technically interesting."
That's why games that might be great eye candy but are just time wasters don't make the cut. "Students who decide to implement games have to create an app that will encourage people to pursue science and engineering," Sprinkle said. "The game has to have a math reason or some other technical motivator for getting the best answer because I want students to focus on engineering software, not just making a pretty application. We certainly need pretty applications, but I don't want that to be the emphasis in this class."
Many students are designing apps that use the phone's sensors to accomplish tasks, such as PhD student Kun Zhang's program for pinpointing a vehicle's location more accurately than can be done with the phone's GPS alone.
"My project has relation to my research in autonomous vehicles," Zhang said. "Dr. Sprinkle wants me to design the controller for an autonomous vehicle, and the localization app I'm developing for an iPhone is part of the controller."
Zhang's program combines the outputs from the phone's GPS, accelerometer, and internal gyroscope to achieve a position measurement that's accurate to within two meters, whereas the phone's G3 GPS measurement has an accuracy of only 15 meters, and the new 4G phone is accurate to within only five meters.
Like Armijo and Quintero, Zhang said the class is tough. Spending hours troubleshooting code can be frustrating. "But you have to work to learn," he said. "It's a very practical field and you can implement your ideas."
The class is a little harder for graduate students like Zhang because they're required to work alone, while seniors, such as Armijo, Quintero, and their teammate, Tim Lewis, get to work in teams. "That's a way of leveling the playing field," Sprinkle said. "This is a combination graduate and undergraduate course, but, by definition, the graduate-level course should be a little more difficult."
Students submit design documents for their apps, and the emphasis is on rigor here, as well. They have to prove they met the design goals they laid out at the beginning of the semester. "Really bad requirements are 'fun to use,' for instance," Sprinkle said. "Fun is very subjective. But if you write, 'My application will give you this kind of position error when you're walking around in an urban canyon,' that's OK."
The onus is to convince the customer that the device is useful and will do what it says it does, Sprinkle explained.
Understanding the ins and outs of intellectual property and software licensing also is a major part of the course. Students need to understand the implications of using a software module, even if it happens to be free, as part of their design. Some free software comes with a license that states that other software developed around it also has to be open source and free.
"Students also have to understand what rights they're giving up when they sell through an apps store," Sprinkle said. "The course teaches them to really look at the ramifications of selling through some websites."
Most of the students decided to build Android apps because they're written in Java, which the students study as sophomores. Students who know C or Objective-C are more likely to write for iPhones. "The emphasis, again, is not to teach these languages," Sprinkle said. "If you already know the language, that's great. If you don't, that's OK, too, you just have to pick it up. It's really your idea that's important, rather than if you're good at a language.
"The goal is to understand what it takes to engineer something useful and marketable on a new platform."