Welcome to Ubiquitious Computing - Fall 2013

Thank you for joining the Ubiquitious Computing course!

The Ubiquitous Computing (UC) course was one of the first of its kind when it was created back in 2003. Its goal is to train students in software development for mobile devices. Initially, the course used the Windows mobile platform; programming included not only smartphones, but also custom-made sensors, such as 3D accelerometers that were Bluetooth enabled. With the introduction of the iPhone in 2008, the UC course was one of the first nationwide to switch platforms. The iPhone brought a revolution in mobile computing by redefining the user-interface and incorporating a number of sensors, such as 3D accelerometer and GPS, in the device itself.

Mobile computing is a subset of ubiquitous computing, which also includes ambient intelligence and embedded processors (e.g., in the car). However, it is the most important subset and thanks to the iPhone platform, programmers have to deal with just a single piece of hardware, laden with sensors, which they can program via a unified software development kit.

In the wake of the iPhone's introduction, other companies scrambled to catch up with Apple by developing equivalent platforms, such as the Android platform. Naturally, all these platforms have common elements but also some differences. It is difficult to teach all the little details that differ among platforms within a single semester and it will distract from the main message. If one is proficient in one mobile platform, it is not very difficult to become proficient in a competing platform through self-study. For this reason we stick with the iPhone/iPad platform throughout this course.

The course uses iPhone as a medium in order to teach:

a) Software development methods for mobile platforms. These methods are different than those applicable to desktop platforms due to issues related to limited hardware resources, capricious sensor communication, and unreliable wireless connection.

b) User interface methods for mobile platforms. These methods are different than those applicable to desktop platforms due to issues related to small screen factor, on-the-go use, and modality of interaction (i.e., finger).

c) Software development in small teams following the pair-programming paradigm. This includes learning to work as one (entrainment) with 2-3 other people, managing interpersonal relations, honoring milestones, and presenting your work effectively. Two time-scales are targeted: small (program something simple within a couple of hours) and large (program a big project within a few months). Both of these time scales arise in industry practice.

Teaching Philosophy

This is an advanced programming course and thus, time-consuming by its nature. If you do not have the necessary time you are advised not to take this course. Given the direction the software industry has taken, this is also one of the most important courses for your professional career and thus, one that needs special attention.

The course has no formal lectures. We believe that in an advanced programming course having a formal lecture series is the equivalent of reading a tedious manual from A to Z. It can be done, but it is neither smart nor cool. The best way for someone to become a good programmer is by doing things.

Students need to read the designated online material before each class and come ready to implement an exercise that will be given at the top of the hour. The instructors will provide the students some hints and offer help along the way, but the students themselves at the group level will do most of the exercise. Four times during the course of the semester these exercises will be done without any help (in-class assignments).

Hours & Date and Classroom

Thursday 1:00-4:00 pm @ 315-HBSC

Office Hours

Ioannis Pavlidis (ipavlidis@uh.edu); Thursday 12:00-01:00 pm @ 306-HBSC

Ilyas Uyanik (iuyanik@uh.edu); Thursday & Friday 12:00-1:00 pm @ 305-HBSC

Karl Kyeongan Kwon (kyeongan@cs.uh.edu); Tuesday & Wednesday 9:00-10:00 am @ 305-HBSC


3 x 15 % in-class programming assignments (group mode)

10% in-class interactive programming exercises (group mode)

45% for developing an iPhone or iPad app (group mode)

Comments From Past Students - Fall 2012

"Less presentation, more time in class for projects. Hands on Q&A with professor and TA's about project."

"The course itself is very nicely designed. It was not very tough nor very easy and used all sort of knowledge."

"Working as a team is a great plus. The interactive style of teaching is good."

"Working with team was fun because we had a great team."

"The instruction team was very helpful and always available; and they are nice as well. The course is extremely fun and rewarding. I like the hands-on programming part the best because I learn best this way. The only complaint is a lack of formal information on same concepts in Obj-C, however that is easily remedied with some homework or questions. Very valuable experience."

"I think it improved my skill of how to present visual information in a better way."

"A lot of self learning was required from the students' side, which I think made us stronger and confident about the work. I take pride in taking this course."

"Assistants/Professor were always helpful and responded quickly to inquiries."

"Teaching different concepts by using small apps and games was great."

"The course was well organized and made us learn greatly."

"It gave me a deep understanding of fundementals of iPhone applications. Now I can develop a small iPhone application."

"No other course that I have done in UH is as practical as this. The course almost has a professional look to it and prepares you for the real world."


Again, welcome, and we hope that you enjoy this course!

- Prof. Ioannis Pavlidis

- Ilyas Uyanik

- Karl Kyeongan Kwon


Back to top