Mobility is rapidly evolving as an important issue within many fields of computer science. In many respects, mobile systems can be viewed as complex, distributed systems, but is precisely these complexities that warrant its independent study. Low and variable bandwidth, abrupt disconnection, and disconnected operation, and new parameters such as location are just a few of the key characteristics driving current research efforts.
This course will study the challenges of mobility through a project-oriented approach. We will begin with a brief systems-oriented introduction to general distributed systems, moving rapidly into physically mobile systems. The last part of the course will address logical mobility, loosely defined as moving pieces of code and state around a physically distributed (possibly mobile) network.
This course will be roughly divided into three sections.
General Distributed Computing First, we will define distributed computing and get our feet wet with a distributed computing assignment. The purpose of this is to bring everyone up to speed with the technology which underlies all of mobile computing - distribution! This section will be short, but vital to your success in the rest of the course. There will be one small project in this section.
Physical Mobility We will them move into topics of mobile computing which involve the movement of computing elements through space. In other words, carrying your laptop/pda/smartWatch around with you. First, we will look at attaching these components to the fixed network with technologies such as Mobile IP, then we will consider removing the infrastructure of the Internet and looking only at point to point communication among groups of mobile components in ad hoc networks. These topics will cover at least one half of the course and will involve at least one significant programming project or two minor projects (still to be determined).
Logical MobilityAfter this foray into physical mobility, we will turn to logical mobility, or moving code and data around on a network of fixed (or possibly mobile) stations. We will look at why people use Java for mobile code/agent systems, what other options are available, and what kinds of systems we can build with this paradigm. Again, there will be one to two projects in this area (still to be determined).
Projects will account for 75% of your grade in this course. There will be three small projects and one large project during the semester (exact percentages to be determined later). The three small projects will include one on standard distributed computing, one on physical mobility, and one on logical mobility. The final project will be due at the end of the semester. The subject and scope of the project will be decided between you and the professor. You will be expected to present a brief, written project proposal prior to beginning, and the final project will include a brief in class presentation as well as a write-up of the project. (Note: these written assignments are not significant enough to count toward a writing credit.)
While the exact projects have yet to be determied, there is a fair
likelihood that we will be using Lime, a middleware that I have worked on for
building applications in mobile environments. Check out the details of this
system at lime.sourceforge.net
.
Another good place to look for information on logical mobility is a nicely built mobile code system muCode.
There will be two exams, a midterm (10%) and a comprehensive final (15%).
The lecture notes for this class are available online after the lectures. This page also doubles as the schedule for the class, including assignment due dates.