Programming of Interactive Systems Introduction and overview Fredrik

  • Slides: 30
Download presentation
Programming of Interactive Systems Introduction and overview Fredrik Kilander Spring 2011

Programming of Interactive Systems Introduction and overview Fredrik Kilander Spring 2011

Today’s lecture • Participants • Practical matters • Overview of the course

Today’s lecture • Participants • Practical matters • Overview of the course

Participants • Fredrik Kilander (course admin, lecturer) fki@kth. se

Participants • Fredrik Kilander (course admin, lecturer) fki@kth. se

Practical matters • kth. se/social course: Programmering av interaktiva system • • Daisy: https:

Practical matters • kth. se/social course: Programmering av interaktiva system • • Daisy: https: //daisy. dsv. su. se/login. jspa Web: http: /people. dsv. su. se/~fk/id 2010 Student council Not First Class at DSV

Overview • Lectures: – F 2: Distributed systems and their properties – F 3:

Overview • Lectures: – F 2: Distributed systems and their properties – F 3: Design of distributed systems + asg. TAG – F 4: Introduction to networking, threading and synchronization in Java – F 5: Programming tools and tricks of the trade + asg. CHAT – F 6: Agent programming techniques – F 7: A review of the article collection – F 8: Course wrap and Q&A

Overview • Examination – Assignment examination (groups of two) – Closed literature examination (tenta)

Overview • Examination – Assignment examination (groups of two) – Closed literature examination (tenta)

Overview • Assignment CHAT – Extend a chat system written in Java/Jini – Choose

Overview • Assignment CHAT – Extend a chat system written in Java/Jini – Choose from a menu of tasks • Assignment TAG – Implement the game of Tag for mobile agents – Review, design and extend code samples into a working demonstration

Overview • Assignment 2 (advanced): TAG viewer – Implement the game of Tag for

Overview • Assignment 2 (advanced): TAG viewer – Implement the game of Tag for mobile agents – Implement a viewer that visually portrays the agents and their game state

Game of tag for mobile agents JVM Bailiff Agent Bailiffs and agents are Java

Game of tag for mobile agents JVM Bailiff Agent Bailiffs and agents are Java classes running in their own threads. Each Bailiff is a service, offering object execution. Agents are clients.

Game of tag for mobile agents JVM Bailiff Agent Viewer The viewer graphically displays

Game of tag for mobile agents JVM Bailiff Agent Viewer The viewer graphically displays the presence and state of the agents in the Bailiff. Possible states: ’it’, happy, afraid, bored, sleeping, fleeing, thinking

Overview • Labs are executed in groups of two • Choose your own groups

Overview • Labs are executed in groups of two • Choose your own groups in Daisy • At other times use kth. se/social or email

Examination • Each assignment is presented with: – An oral presentation – A written

Examination • Each assignment is presented with: – An oral presentation – A written report (2 -3 pages) – A working demonstration • Written closed exam on the literature

Overview • Literature and articles: – D. Reilly, M. Reilly (2002): “Java network programming

Overview • Literature and articles: – D. Reilly, M. Reilly (2002): “Java network programming and distributed computing” – Waldo et al (1994): “A note on distributed computing” – Jennings (1999): “On agent-based software engineering” – Jennings (2001): “An agent-based approach for building complex software systems” – Muir (2004): “The seven deadly sins of distributed systems” – …

Java network programming. . . • Chapter 1 - Networking theory – The layered

Java network programming. . . • Chapter 1 - Networking theory – The layered network view – Internet architecture – Internet application protocols – Firewalls and proxies

Java network programming. . . • Chapter 2 - Java overview – Java networking

Java network programming. . . • Chapter 2 - Java overview – Java networking considerations – Applications of Java network programming – Exceptions

Java network programming. . . • Chapter 3 - Internet addressing – Local area

Java network programming. . . • Chapter 3 - Internet addressing – Local area network addresses (MAC) – Internet protocol (IP) addresses – The domain name system

Java network programming. . . • Chapter 4 - Data streams – The java.

Java network programming. . . • Chapter 4 - Data streams – The java. io class – Object persistence – Object serialization

Java network programming. . . • Chapter 5 - User datagram protocol – java.

Java network programming. . . • Chapter 5 - User datagram protocol – java. net. Datagram. Packet – java. net. Datagram. Socket – Building a UDP Client/Server

Java network programming. . . • Chapter 6 - Transmission control protocol – Advantages

Java network programming. . . • Chapter 6 - Transmission control protocol – Advantages of TCP over UDP – TCP and the client/server paradigm – java. net. Socket – java. net. Server. Socket – Creating a TCP client – Creating a TCP server – Exception handling

Java network programming. . . • Chapter 7 - Multi-threaded applications – Multi-threading in

Java network programming. . . • Chapter 7 - Multi-threaded applications – Multi-threading in Java – Synchronization – Interthread communication – Thread priorities

Java network programming. . . • Chapter 8 - Implementing application protocols – Application

Java network programming. . . • Chapter 8 - Implementing application protocols – Application protocol specifications – Application protocol implementation – SMTP – POP 3 – HTTP

Java network programming. . . • Chapter 9 - Hypertext transfer protocol – What

Java network programming. . . • Chapter 9 - Hypertext transfer protocol – What is HTTP? – How does HTTP work? – Web clients – Web servers – Common gateway interface (CGI)

Java network programming. . . • Chapter 10 - Java servlets

Java network programming. . . • Chapter 10 - Java servlets

Java network programming. . . • Chapter 11 - Remote Method Invocation – –

Java network programming. . . • Chapter 11 - Remote Method Invocation – – – – – How does RMI work? Defining an RMI service interface Implementing an RMI service interface Creating stub and skeleton classes Creating an RMI server Creating an RMI client Running the RMI system RMI packages and classes RMI deployment issues RMI for callbacks

Java network programming. . . • Chapter 12 - Java IDL and Corba –

Java network programming. . . • Chapter 12 - Java IDL and Corba – Architectural view of Corba – Interface definition language – From IDL to Java

Java network programming. . . • Chapter 13 - Java. Mail

Java network programming. . . • Chapter 13 - Java. Mail

A note on distributed computing • Waldo, Wyant, Wollrath and Kendall – Programming a

A note on distributed computing • Waldo, Wyant, Wollrath and Kendall – Programming a distributed system is not the same as a single-host system – State is distributed – Failure is partial – How to compensate?

On agent-based software engineeing • Nick Jennings – Distributed systems should be built with

On agent-based software engineeing • Nick Jennings – Distributed systems should be built with cooperating components – Agents are bounded wrt their environment – Agents can be robust, proactive, self-aware – Agents can be mobile – Unexpected (emerging) group behaviours

The seven deadly sins of distributed systems • Steve Muir • • 1. Networks

The seven deadly sins of distributed systems • Steve Muir • • 1. Networks are unreliable in the worst possible way 2. DNS does not make for a good naming system 3. Local clocks are inaccurate and unreliable 4. Large-scale systems always have inconsistencies 5. Improbable events occur frequently in large systems 6. Overutilisation is the steady-state condition 7. Limited system transparency hampers debugging

The end

The end