490dp Introduction Robert Grimm
The Computer for the 21 st Century “The most profound technologies are those that disappear. They weave themselves into the fabric of everyday life until they are indistinguishable from it.” Mark Weiser
Pervasive Computing Vision: Shift in focus to users and their tasks –Embodied virtuality Enabled by ubiquitous smart devices –Tabs, pads, boards Required technology –Cheap, low-power computers –Software for ubiquitous applications –Network to tie them all together
Our Focus We assume –Computers –Network We build applications
Attending a Meeting Shared repository –Exchange notes etc. during the meeting –Capture audio and video –Provide archive after meeting Functionality highlights –List of participants based on their devices –Newly added documents sent to repository –Archive distributed to participants
Attending a Meeting Technical issues –Location of repository One location vs. replicated locations In infrastructure vs. on participants’ devices –Routing of documents To repository To all participants
Attending a Meeting Change in focus –During the meeting, functionality counts –After meeting, the artifact counts
490dp – Goals and Objectives Design, build, and evaluate distributed / pervasive applications –Build a working application –Gain experience with complex systems –Work together in groups –Communicate clearly –Consistently work towards a goal
How to get there Two teams –One application per team –Two sub-teams per team One implementation per sub-team –Java, RMI, Jini, JavaSpaces, T Spaces, JDBC –one.world
How to get there Seven lectures –Jump-start application building process Design report and presentation –Your plan Weekly meetings –Your status updates –Q & A Final report and presentation –Your results
Lectures Challenges –Why is it so hard to build distributed or pervasive applications? Java object serialization –How to turn objects into bytes Tuples –How to represent, store, and communicate data
Lectures Synchronous vs. asynchronous invocation –How to get things done Remote invocation –How to get things done on another node Resource control –How to keep track of consumed resources Check-pointing and migration –How to save and move entire applications
Lectures Required readings –You must read them before lecture –We will send out a summary one or two days before lecture Background readings –Additional background or context Reference readings –Useful for actually building applications
Two Platforms Java etc. –Established systems –Fully implemented –Loosely integrated –Lots of outside users one.world –Research system –Incomplete, buggy –Highly integrated –Local experts Common abstractions and services – Tuples – Events – Leases – Transactions – Discovery
Qualitative Evaluation What was easy / hard? What worked / what didn’t work? Why? –Help others learn from you
Quantitative Evaluation Time spent –Track from beginning –Break down by activity Design, implementation, debugging, write-up Code statistics –Source code Total # of lines Non-commenting source statements –Abstractions # of methods; # of classes –Binaries
Quantitative Evaluation Performance –Basic operations –Scalability Over users Over nodes
Rules of Engagement Attendance mandatory By team –Design, write-up By sub-team –Implementation, debugging, demo Help each other with –Set-up –Pointers to technical resources –General questions
Resources People –Robert Grimm, Eric Lemar, Adam Macbeth –Other students Books –Oaks & Wong. Jini in a Nutshell. O’Reilly Internet –java.sun.com – –one.cs.washington.edu
This course is experimental! You have a great opportunity –Use cutting edge system technologies –Build real pervasive applications The ride will not always be smooth –We need your feedback early and often You need to take initiative –Work through tutorials, specs on your own –Help each other
Break
Administrivia Signup Office hours –Monday, Wednesday, Friday –What times work for you? Final
Teams and Applications Introductions Discussion