teaching distributed systems to undergraduates an
play

Teaching Distributed Systems to Undergraduates: An Experience Report - PowerPoint PPT Presentation

Teaching Distributed Systems to Undergraduates: An Experience Report Gregory M. Kapfhammer (Geoffrey Arnold and Brian Zorman) Sixth Annual Jini Community Meeting Boston June 17-20, 2002 Presentation Outline Introduction


  1. Teaching Distributed Systems to Undergraduates: An Experience Report Gregory M. Kapfhammer (Geoffrey Arnold and Brian Zorman) Sixth Annual Jini Community Meeting Boston • June 17-20, 2002

  2. Presentation Outline • Introduction • Instructor to Students: “Building distributed systems is hard!” • Course and Performance Objectives • A Sampling of Covered Material • Homework Assignments: Read the literature! • Laboratory Assignments: Jini and JavaSpaces! • “Lessons Learned” from the Laboratories • A Survey of Submitted Final Projects • “The Next Time Around”: Teaching Distributed Systems Again! • Concluding Remarks

  3. Introduction • He turned to the flyleaf of the • He turned to the PowerPoint geography and read what he presentation and read what he had written there: himself, his had written there: himself, his name, and where he was. name, and where he was. Stephen Dedalus, Class of Gregory M. Kapfhammer, Elements, Clongowes Wood Department of Computer College, Sallins, Country Kildare, Science, Allegheny College, Ireland, Europe, the World, the software testing and Universe. engineering community, Jini Community, Meadville, Pennsylvania, United States, the James Joyce, A Portrait of the World, the Universe. Artist as a Young Man

  4. The First Day of Class “ … When I think of formal scientific method an image comes to mind of an enormous juggernaut, a huge bulldozer -- slow, tedious, lumbering, laborious, but invincible. It takes twice as long, five times as long, maybe a dozen times as long as informal mechanic’s techniques, but you know in the end you’re going to get it. … When you’ve hit a really tough one, tried everything, racked your brain and nothing works, you know that this time Nature has really decided to be difficult, you say, ‘Okay, Nature, that’s the end of the nice guy,’ and you crank up the formal scientific method …” Robert M. Pirsig, Zen and the Art of Motorcycle Maintenance

  5. Distributed System Development Challenges • Background Knowledge Required: potentially, you will already need to be familiar with programming languages, operating systems, networks, theory, and algorithms! • It’s Hard to Learn How to Fly: you must overcome the many “accidents” initially associated with configuring your development environment, designing your first distributed system, implementing a few services, and configuring the runtime environment! • Fault Isolation Difficulties: finding simple bugs is hard for novitiates because there are so many new factors to consider! • Does this Ever Get Easier?: simple command-line errors can cause strange behavior and even confuse the Instructor (momentarily, of course)!

  6. Course and Performance Objectives • Course Objectives: • Student Performance Objectives: – Explore the principles and paradigms associated with the – Be aware of the challenges and discipline of distributed systems complexities associated with the design, testing, and – Principles: understand the implementation of distributed basics of naming, systems synchronization, consistency, replication, fault tolerance and – Be familiar with the other topics! fundamental concepts – Paradigms: become very – Develop a toolkit that can be familiar with object-based applied to the creation of distributed systems. distributed systems Specifically, become – Become aware of current comfortable with the Jini research and the open research network technology and the questions JavaSpaces object repository

  7. Instructional Objectives • Make course time much like a Socratic dialogue! • Create exciting laboratories that enable students to explore the Jini network technology and the JavaSpaces object repository • Take a “gloves off” approach: allow students to grapple with all of the challenges that initially face most Jini developers! • Encourage students to keep “laboratory notebooks” that describe the challenges, pitfalls, and solutions that they discover during the completion of a laboratory • Require that students read scholarly and “popular press” articles that talk about the design, implementation, and testing of distributed systems

  8. Selected Reading Material • Theory and Principles: – Albert Y.H. Zomaya (ed.) Parallel and Distributed Computing – Tanenbaum et al. Distributed Handbook Systems: Principles and Paradigms • Java, Jini, and JavaSpaces: – Coulouris et al. Distributed Systems: – David Flanagan Java in a Concepts and Design Nutshell – Doreen L. Galli Distributed Operating Systems – W. Keith Edwards Core Jini – Pankaj Jalote Fault Tolerance in – Freeman, Hupfer, Arnold Distributed Systems JavaSpaces Principles, Patterns, – Claudia Leopold Parallel and and Practice Distributed Computing – Scott Oaks and Henry Wong – Nancy A. Lynch Distributed Jini in a Nutshell Algorithms – Jan Newmarch , Guide to JINI – Tari and Bukhres Fundamentals of Technologies Distributed Object Systems

  9. A Sampling of Covered Material • Principles: – Synchronization: time-based – Basics of Distributed synchronization, Lamport Systems: communication timestamps and logical clocks, protocols (FTP, HTTP, and global state and distributed RMI), objects in distributed snapshots, leader election, systems, message-oriented and distributed transactions loosely-coupled communication – Consistency, Replication, – Processes: green and native Fault Tolerance: availability threads, light-weight processes, and reliability, Byzantine client and server organization, failures, fail-stop and fail-silent process migration and agents failures, TMR and N-version – Names: name resolution and programming, two-army closure, name space problem and Byzantine generals implementation, removing problem, failure recovery unreferenced entities techniques

  10. Homework Assignments • Waldo et al. A Note on • RMI Documentation and Waldo Distributed Computing . The End of Protocols. – How do you define a distributed – What are the differences system? between local and remote objects in Java? – What are the really hard problems that face this – Is language independence an discipline? important facet of a framework that supports the – Is it a “good thing” to always implementation of distributed be aware of the differences systems? between local and distributed computing?

  11. Homework Assignments (continued) • Cukier et al. Fault Injection • Avizienis. The Methodology of Based on a Partial View of the N-version Programming . Global State of a Distributed – How do you develop a software System. system using an N-version programming approach? – What is a fault injector? Why is – What are the differences it difficult to build a fault between an N-version approach injector for distributed systems? and a recovery block approach? – How can you make a fault – How is N-version programming injector that is as non-intrusive related to software fault as possible? tolerance?

  12. Laboratory Assignments • Java Development – Build a distributed StackMachine interpreter Refresher: • Using JavaSpaces for – Re-familiarize yourself with Java Distributed Service compiler, virtual machine, CLASSPATH settings, etc. Communication: – Learn how to use CVS, our – Collaboratively create a simple version control system, “Hello World!” distributed jwhich , and the Log4j logging system that uses JavaSpaces package – Refine the StackMachine so • Building Simple Jini-based that it uses JavaSpaces Distributed Systems: • Benchmarking JavaSpaces – Collaboratively create a simple Implementations: “Hello World!” distributed – Conduct experiments, using system in Jini Tonic, to evaluate the strengths – Understand the hazards and weaknesses of JavaSpaces associated with CLASSPATH contamination

  13. Laboratory Assignments (continued) • Using Federated Name • Using Lookup Service Spaces: Tunnels: – Use the Federate class – Use the TunnelService class written by Edwards to create an written by Edwards to create a association between two name tunnel between two name spaces spaces – Write a Jini client that is able to – Write a Jini client that is able to use federated name spaces to use a name space that is search for a desired Jini service connected to a tunnel – Experiment with the types of services that can be “pushed” through the tunnel

  14. Lessons Learned from the Laboratories • Some students never hurdled the accidental difficulties associated with Jini-based distributed system development – For example, some students always struggled with CLASSPATH settings, HTTP servers and codebase settings, and RMI activation • Once students had experienced the challenges associated with getting Jini “out of the box,” they requested the provision of tools to automate these tasks • Some students forgot material from past laboratories and found it difficult to transfer classroom “head knowledge” into laboratory “development skills” • The laboratory notebook was not mandatory. Thus, the students that needed this tool the most often neglected it!

Recommend


More recommend