The Internet is a large and complex collection of machines. Learning Internet protocols and network characteristics is a challenge for students in part due to the diversity of Internet devices. Seattle makes learning about the Internet easy by providing students with a simple to learn Python-based language and a tool-rich environment that simplifies distributed deployment and monitoring of programs running across Internet hosts. Seattle can help instructors augment lectures with real-world, hands-on assignments across thousands of computers. As of May 2010, Seattle has been used in 11 classes at universities around the world. The Seattle team is dedicated to helping instructors get started with using Seattle in the classroom.
Networking / Distributed Systems
The first take-home assignment (no programming required!)
A Stop and Wait protocol
A Sliding Window protocol
Introduction to Link State Routing
Distributed Hash Table
Building a reference monitor
Attacking a reference monitor
Operating Systems (on the way!)
Q: What are the advantages of using Seattle to teach a course?
A: Seattle has the following features, which we believe make it especially relevant for instructional uses:
A simple to learn programming environment based on Python
A sandbox environment that restricts student code from adversely impacting the host computer
Automated deployment of code to multiple remote hosts
Automated gathering of logged messages and output from multiple remote hosts
A suite of ready-to-use assignments and instructor solutions
Not a simulated environment. A global Internet deployment of hosts with diverse characteristics -- ideal for learning about node/network heterogeneity on the Internet
A dedicated team that can provide technical support
Q: What are the instructor/student requirements for getting started with Seattle?
A: First, get in touch with us -- we track Seattle resources and can help you get started. Second, the only technical requirement is for students to have access to a machine where they can install Seattle. Currently we support various versions of Windows, Linux, BSD, and OS X as well as many mobile platforms.
Q: How difficult is it to learn Repy, the Seattle programming language?
A: For students who have had prior programming experience in a high level language (e.g. Java, C++) it takes a few hours to learn the basic language constructs and a few programming assignments to become proficient in the language. For students who know Python it takes under an hour to understand the differences and to begin using Repy to write complex programs.
Q: Do the assignments have instructor solutions?
A: Yes! Our instructor solutions are well commented and ready for your use. Please get in touch with us (see below) to request these.
Q: I'm an instructor and I'd like to use Seattle, who do I contact?
A: Please contact the Seattle developers list for more information. This isn't required, but we like to know who is using the platform and get feedback.
Q: My question is not answered. Who do I contact?
A: Please contact our team at firstname.lastname@example.org if you have any further questions concerning Seattle in an educational context or otherwise.