Client/Server Distributed Systems 240-322, Semester 1, 2005-2006 0. Preliminaries Please ask questions Lecturer: Dr. Andrew Davison ad@fivedots.coe.psu.ac.th Info. Eng. Research Lab (rm 101) Objective – to give some background on this course 240-322 Cli/Serv.: Prelim/0 1 Overview 1. 2. 3. 4. 5. 240-322 Cli/Serv.: Prelim/0 Outline of the Course Meeting Times / Locations Workload Course Materials Reading Materials 2 1. Outline of the Course An overview of client/server and distribution models. An emphasis on programming. Examples 240-322 Cli/Serv.: Prelim/0 will use C+UNIX and Java. 3 Details (subject to change) The course is divided into three parts. 1. Client/Server & Distribution Models – client/server models – distributed programming concepts – peer-to-peer 240-322 Cli/Serv.: Prelim/0 continued 4 2. C+UNIX Network Programming – low-level file I/O – processes – networking overview e.g. ISO, TCP, UDP – sockets programming TCP iterative/concurrent servers, TCP clients processor farms UDP clients and servers – RPCs 240-322 Cli/Serv.: Prelim/0 continued 5 3. Java Network Programming I assume you know basic Java. – basic network programming e.g. sockets, Web page retrieval – different styles of client/server programming based around a network chat example – overviews of RMI, CORBA, J2EE, Web Services, JXTA 240-322 Cli/Serv.: Prelim/0 6 Prerequisites Be able to program in C under UNIX – many network functions use pointers to structs – you will not have to create pointer-based data structures like linked lists or trees; but you might have to be able to read code that uses such things – required UNIX skill level: create directories, files, compilation – passing 240-204 CPT is enough 240-322 Cli/Serv.: Prelim/0 continued 7 Be able to program in Java – I assume you know about classes, objects, Swing, threads, etc. – the material covered in 240-321 "Advanced CPT (Java)" 240-322 Cli/Serv.: Prelim/0 8 2. Meeting Times / Locations Tuesday Wednesday Friday These 240-322 Cli/Serv.: Prelim/0 15 -- 15.50 10 -- 10.50 10 -- 10.50 R200 R201 R200 times can change, if you ask me. 9 3. Workload (% of total score) Mid-term exam: 35% – during week 9, 2 hours Final exam: 45% – during weeks 18-19; 3 hours Project: 20% – C, UNIX, sockets – 2 weeks, weeks 15-16 240-322 Cli/Serv.: Prelim/0 10 Non-Attendence Penalty I may take registration at the start of a class. If someone is not there, they lose 1% (unless they have a good excuse). A maximum of 10% can be lost – deducted from final mark 240-322 Cli/Serv.: Prelim/0 11 4. Course Materials I will hand out one copy of my slides – you should make copies of them Online materials: http://fivedots.coe.psu.ac.th/ Software.coe/Cliserv/ includes these slides, code examples (C and Java) Do not use the VCR, the material is not yet finished. 240-322 Cli/Serv.: Prelim/0 12 5. Reading Materials The main texts used in my notes are: – Client/Server Architecture Alex Berson McGraw Hill, 1996, 2nd ed. – Copies of the relevant chapters will be handed out, and you'll be expected to read them! 240-322 Cli/Serv.: Prelim/0 13 – UNIX Distributed Programming Chris Brown Prentice Hall, 1994 I have a copy, and there's a copy in the PSU library – Practical UNIX Programming Robbins and Robbins Prentice Hall 1996 there's 240-322 Cli/Serv.: Prelim/0 a copy in our library (and I have one) 14 Very advanced, but the best sources. There are copies in our library. Two UNIX programming ‘bibles’: – UNIX Network Programming: Networking APIs: Sockets and XTI, Vol 1 W. Richard Stevens Prentice Hall, 1998 (2nd ed.) – UNIX Network Programming: Interprocess Communication, Vol 2 W. Richard Stevens Prentice Hall, 1999 (2nd ed.) 240-322 Cli/Serv.: Prelim/0 15 Good Java Books (in our library) Thinking in Java Bruce Eckel, Prentice Hall, 2003, 3rd ed. – can be downloaded from http://java.coe.psu.ac.th/ FreeOnline.html (it is misnamed as "Think in Java") Beginning Java 2 Ivor Horton, Wrox Press, 1999 240-322 Cli/Serv.: Prelim/0 16 The standard (hard) introduction: – Core Java 1.2., Vol. 1 -- Fundamentals Cay S. Horstmann and Gary Cornell Sun Microsystems Press Prentice Hall, 1999 240-322 Cli/Serv.: Prelim/0 17 A good beginner's Java book: Java: How to Program H.M. Deitel & P.J. Deitel (called D&D) Prentice Hall, 2003 (5th ed.) Web page: http://www.deitel.com There are a lot of editions of this book – the 4th, 5th, or 6th editions are fine – later is better 240-322 Cli/Serv.: Prelim/0 continued 18 An electronic version is at Aj. Somchai's CoE Java site: http://java.coe.psu.ac.th/ ForMember/Books.html#J2SE The CoE Java site has many Java books available for download in the "members" area. 240-322 Cli/Serv.: Prelim/0 19 Killer Game Programming in Java http://fivedots.coe.psu.ac.th/~ad/jg/ – I'll be using the online chapters 29 and 30 for most of the Java network code examples 240-322 Cli/Serv.: Prelim/0 20 Reading Assignments I will be asking you to read chapters from Berson – I will not go through all the material in class – reading assignments are examinable, so do them 240-322 Cli/Serv.: Prelim/0 21