COMP90015: Distributed Systems Assignment 1 Multi-threaded Dictionary Server (15 marks)

Similar documents
: Distributed Systems Principles and Paradigms Assignment 1 Multithreaded Dictionary Server

Assignment 2 Team Project: Distributed System and Application

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1, 2, and 3, Spring 2018

Introduction to computer networking

EECE.2160: ECE Application Programming Spring 2019

Homework 1. Hadachi&Lind October 25, Deadline for doing homework is 3 weeks starting from now due date is:

CS 344/444 Spring 2008 Project 2 A simple P2P file sharing system April 3, 2008 V0.2

CMN310A Advanced Office: Word and Excel or concurrent enrollment

Android App Development for Beginners

BSc Computing CSY2026 Modern Networks

Course and Contact Information. Course Description. Course Objectives

Course and Contact Information. Course Description. Course Objectives

Assignment I: Concentration

OpenSpace provides some important benefits to you. These include:

INF 315E Introduction to Databases School of Information Fall 2015

Software Engineering Large Practical (Android version) 2013/2014

CSE115 Lab 9 Fall 2016

COMP 3331/9331: Computer Networks & Applications. Programming Assignment 2: Link State Routing

CSc 2310 Principles of Programming (Java) Jyoti Islam

EECE.2160: ECE Application Programming Spring 2017

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1,2 and 3, Spring 2017

Assignment Tutorial.

Office Hours Time: Monday/Wednesday 12:45PM-1:45PM (SB237D) More Information: Office Hours Time: Monday/Thursday 3PM-4PM (SB002)

Lab 2: Threads and Processes

CS 3270 Mobile Development for Android Syllabus

Department of Computer Science. COS 122 Operating Systems. Practical 3. Due: 22:00 PM

ASSIGNMENT TWO: PHONE BOOK

Faculty Training. Blackboard I Workshop Bobbi Dubins

CS 118 Project Phase 2 P2P Networking

Data Structures and Algorithms

Blackboard 9 Instructor Manual

IBM Integration Bus v9.0 Application Development I: Course Content By Yuvaraj C Panneerselvam

San Jose State University College of Science Department of Computer Science CS185C, Introduction to NoSQL databases, Spring 2017

Send me up to 5 good questions in your opinion, I ll use top ones Via direct message at slack. Can be a group effort. Try to add some explanation.

Course Syllabus - CNT 4703 Design and Implementation of Computer Communication Networks Fall 2011

Setting up a Turnitin Dropbox

Canvas: Interface & Modules

Reliable File Transfer

Syllabus Revised 03/05/2015

CS 578 Software Architectures Fall 2014 Homework Assignment #1 Due: Wednesday, September 24, 2014 see course website for submission details

P2P Multimedia File Sharing Application using Socket Programming

ELEC/TELE/PHTN Networked Communications Design Topic. Networked Communications Elective Topic, S Context and Objectives

COMP 3331/9331: Computer Networks & Applications Programming Assignment 2 for Session 1, 2016

Tutor Portal - Help Guide for Tutors. WEA s Tutor Portal. Help Guide for Tutors. July 2016

How to Build Your Course in Moodle

Distributed Systems Architecture

J2EE Development. Course Detail: Audience. Duration. Course Abstract. Course Objectives. Course Topics. Class Format.

CS 455 / Computer Networks Fall Using an Echo Application to Measure TCP Performance Due: THURSDAY, October 2, 2014 (1pm)

ecampus SP 14 Known Issues

Academic Editor Tutorial

CourseWorks Syllabus Guide for Instructors

CS 200, Section 1, Programming I, Fall 2017 College of Arts & Sciences Syllabus

DESIRED FUNCTIONALITY: The page loads, including comment box.

Advanced Systems Lab

CS 677 Distributed Operating Systems. Programming Assignment 3: Angry birds : Replication, Fault Tolerance and Cache Consistency

ICSI 516 Fall 2018 Project 1 Due October 26th at 11:59PM via Blackboard

CMSC433 - Programming Language Technologies and Paradigms. Introduction

IBM Integration Bus v9.0 System Administration: Course Content By Yuvaraj C Panneerselvam

Lecture 1. Course Mechanics. Administrative Items. Grading. Programming Assignments. Homework Assignments

Homework 2: Programming Component SCALABLE SERVER DESIGN: USING THREAD POOLS TO MANAGE AND LOAD BALANCE ACTIVE NETWORK

Data Structures and OO Development II

Object-Oriented Programming for Managers

Programming Assignment 0

Messaging/ ing students and others through the LMS

Important Project Dates

CMPS 182: Introduction to Database Management Systems. Instructor: David Martin TA: Avi Kaushik. Syllabus

San Jose State University College of Science Department of Computer Science CS185C, NoSQL Database Systems, Section 1, Spring 2018

Programming Assignment 1

Middleware. Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004

CSSE2002/7023 The University of Queensland

TMA01 Fall 2011 (Cut-off date 8 Dec 2011)

Time Sheet Instructions

CS50 Quiz Review. November 13, 2017

IEMS 5722 Mobile Network Programming and Distributed Server Architecture

Wattle Guide for Lecturers

GMU SWE 443 Software Architecture Spring Lab 2: Implicit-invocation System. Sousa Discuss Feb 23, due March 8

This handbook contains directions on using tools and resources in WebAccess at CSM.

INSTITUTE OF AERONAUTICAL ENGINEERING (Autonomous) Dundigal, Hyderabad

Student Guide INTRODUCTION TO ONLINE RESOURCES

Algorithms for Programming Contests - Week 1

CPS352 Database Systems Syllabus Fall 2012

Homework 1: Collaborative Text Editor

Programming Assignment

CSCI 201L Syllabus Principles of Software Development Spring 2018

Student Guide. By UNICAF University

LIS 2680: Database Design and Applications

C A R I B B E A N E X A M I N A T I O N S C O U N C I L REPORT ON CANDIDATES WORK IN THE SECONDARY EDUCATION CERTIFICATE EXAMINATIONS MAY/JUNE 2010

1. Introduction. 2. Project Submission and Deliverables

Preparing for the Assistant Laboratory Animal Technician (ALAT) Certification Exam. University Laboratory Animal Resources

CS 0449 Intro to Systems Software Fall Term: 2181

You must pass the final exam to pass the course.

New York University Computer Science Department Courant Institute of Mathematical Sciences

TTh 9.25 AM AM Strain 322

EMC Isilon. Cisco UCS Director Support for EMC Isilon

/ Cloud Computing. Recitation 2 January 19 & 21, 2016

COMP 412, Fall 2018 Lab 1: A Front End for ILOC

Q.1. (a) [4 marks] List and briefly explain four reasons why resource sharing is beneficial.

BSc Computing CSY2026 Modern Networks. Module Tutor: Signed:

CSCI 320 Group Project

Australian Informatics Olympiad Thursday 23 August, Information Booklet

Transcription:

COMP90015: Distributed Systems Assignment 1 Multi-threaded Dictionary Server (15 marks) Problem Description Using a client-server architecture, design and implement a multi-threaded server that allows concurrent clients to search the meaning(s) of a word, add a new word, and remove an existing word. This assignment has been designed to demonstrate the use of two fundamental technologies that have been discussed during the lectures: Sockets Threads Hence, the assignment must make an EXPLICIT use of the two above. By explicit, we mean that in your application, sockets and threads must be the lowest level of abstraction for network communication and concurrency. Architecture The system will follow a client-server architecture in which multiple clients can connect to a (single) multi-threaded server and perform operations concurrently. The multi-threaded server may implement a thread-per-request, thread-per-connection, or worker pool architecture. This is a design decision for you to make. Interaction All communication will take place via sockets. These sockets can be either TCP or UDP, however, keep in mind that all communication between clients and server is required to be reliable. You are responsible for designing your own message exchange protocol. Some data formats that you may use include XML, JSON, Java Object Serialization, or you may choose to design your own. Failure Model All communication between components has to be reliable. If you are using TCP, then the reliability guarantees offered by the protocol are sufficient. If you decide to use UDP, then you have to implement an infrastructure that offers reliable communication over UDP. For those of you with previous experience using TCP, using UDP may be a rewarding challenge.

It is expected that, on both the server and the client side, errors (by means of exception handling) are properly managed. The errors include the following: Input from the console for what concerns the parameters passed as command line. Network communication (address not reachable, bad data...). I/O to and from disk (cannot find the dictionary file, error reading the file, etc...). Other errors you might come up with. The application will be tested and validated against all these errors. Functional Requirements Query the meaning(s) of a given word The client should implement a function that is used to query the dictionary with the following minimum (additional input/output parameters can be used as required) input and output: Input: Word to search Output: Meaning(s) of the word Error: The client should clearly indicate if the word was not found or if an error occurred. In case of an error, a suitable description of the error should be given to the user. Add a new word Add a new word and one or more of its meanings to the dictionary. For the word to be added successfully it should not exist already in the dictionary. Also, attempting to add a word without an associated meaning should result in an error. A new word added by one client should be visible to all other clients of the dictionary server. The minimum input and output parameters are as follows: Input: Word to add, meaning(s) Output: Status of the operation (e.g., success, duplicate) Error: The user should be informed if any errors occurred while performing the operation. Remove an existing word Remove a word and all of its associated meanings from the dictionary. A word deleted by one client should not be visible to any of the clients of the dictionary server. If the word does not exist in the dictionary then no action should be taken. The minimum input and output parameters are as follows: Input: Word to remove

Output: Status of the operation (e.g., success, not found) Error: The user should be informed if any errors occurred while performing the operation. User Interface A Graphical User Interface (GUI) is required for this project. You are free to design it and to use any existing tools and libraries for this purpose. Implementation Guidelines These are guidelines only, you are allowed and encouraged to come up with your own design and interfaces. When the server is launched, it loads the dictionary data from a file containing the initial list of words and their meanings. These data is maintained in memory in a structure that enables an efficient word search. When words are added or removed, the data structure is updated to reflect the changes. A sample command to start the server is: > java jar DictionaryServer.jar <port> <dictionary-file> Where <port> is the port number where the server will listen for incoming client connections and <dictionary-file> is the path to the file containing the initial dictionary data. When the client is launched, it creates a TCP socket bound to the server address and port number. This socket remains open for the duration of the client-server interaction. All messages are sent/received through this socket. A sample command to start the client is: > java jar DictionaryClient.jar <server-address> <server-port> Implementation Language The assignment should be implemented in Java. Utilization of technologies such as RMI and JMS are not allowed. Report You should write a report describing your system and discussing your design choices. Your report should include:

The problem context in which the assignment has been given. A brief description of the components of the system. An overall class design and an interaction diagram. A critical analysis of the work done followed by the conclusions. Please mind that the report is a WRITTEN document, do not put only graphs. A report without any descriptive text addressing the problem, architecture, protocols, and the analysis of the work done will not be considered valid. The length of the report is not fixed. A good report is auto-consistent and contains all the required information for understanding and evaluating the work done. Given the level of complexity of the assignment, a report in the range of 4 to 6 pages is reasonable. Please mind that the length of the report is simply a guideline to help you in avoiding writing an extremely long or incomplete report. It is important to put your details (name, surname, student id) in: The head page of the report. As a header in each of the files of the software project. This will help to avoid any mistakes in locating the assignment and its components on both sides. Submission You need to submit the following via LMS: Your report in PDF format only. Two executable jar files (DictionaryClient.jar and DictionaryServer.jar) that will be used to run your system on the day of the demo. Your source files in a.zip or.tar archive only. Submissions will be due on Week 7 Wednesday 6 of September (5 pm). Marking The marking process will be structured by first evaluating whether the assignment (application + report) is compliant with the specification given. This implies the following: Use of TCP/UDP sockets and threads for the application; proper use of concurrency in the server; proper handling of the errors; a report with the requested content and format (PDF); timeliness in submitting the assignment in the proper format (names, directory structure, etc.). All of the above elements will earn you a maximum of 10 (out of 15) marks. The rest of the marks are assigned to two elements:

Excellence (3 marks - 2 for implementation, 1 for report). The assignment has not only been implemented by meeting the minimum requirements but the design has been well thought and a proper interaction with the user has been provided (notification of errors, which really help to understand what went wrong). For what concerns the report excellence, the report is complete and well written with the proper graphs and a discussion and analysis of the system implemented including advantages and disadvantages of your design choices. Creativity and plus (2 marks). Any additional implementation such as a GUI for managing the server or other enhancements to the code introducing advanced features (such as processing of user requests within a server in scalable, reliable, and efficient manner) will be considered a plus. For example, using your own implementation of a thread pool (not Java s) would earn you these marks. NOTE (EXTREMELY IMPORTANT): The excellence and the creativity and plus marks (5 marks) cannot compensate any lack in the first part (the one that scores up to 10 marks). Please concentrate your efforts in getting the first 10 marks done and then proceed with the rest. Demonstration Schedule and Venue You are required to provide a demonstration of the working application and will have the opportunity to discuss with the tutors the design and implementation choices made during the demo. You are free to develop your system where you are more comfortable (at home, on one pc, on your laptop, in the labs...) but keep in mind that the assignment is meant to be a distributed system that works on at least two different machines in order to separate the client from the server. We will announce the demo date, time, and venue closer to the due date. Each tutor will hold 2 demo sessions and you will be required to showcase your system in one of the sessions held by the tutor of the workshop in which you are enrolled. If you need any clarification on the assignment, kindly ask questions during the tutorials or in the LMS forum, so that all students benefit from it. Note: You need to submit a printed copy of your report during the demonstration. Penalties for late submissions of assignments Assignments submitted late will be penalized in the following way: 1 day late: -1 mark 2 days late: -3 marks (-1-2) 3 days late: -6 marks (-3-3) 4 days late: -10 marks (-6-4) etc.