Homework 1: Collaborative Text Editor

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

Lab 08. Command Line and Git

Agenda. - Final Project Info. - All things Git. - Make sure to come to lab for Python next week

FAQ Q: Where/in which branch do I create new code/modify existing code? A: Q: How do I commit new changes? A:

Software Development I

Version Control Systems

Lecture 3: Processing Language Data, Git/GitHub. LING 1340/2340: Data Science for Linguists Na-Rae Han

Review Version Control Concepts

Working with EGL and Subversion Using RDi with RBD

INST Database Design and Modeling - Section 0101 Spring Tentative Syllabus

Task 2: TCP Communication

AUTHOR S GUIDELINES FOR MANUSCRIPT SUBMISSION

BSc Computing CSY2026 Modern Networks

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

SELF- TAPE PACKAGE BAJILLIONAIRES ROLE: NOODLES

Technology Background Development environment, Skeleton and Libraries

Branching and Merging

Assignment 2 Team Project: Distributed System and Application

Handout 4: Version Control Reference

Lab Exercise Test First using JUnit

Intro to Github. Jessica Young

CSE 331 Software Design & Implementation

Multiprocessor scheduling

Technology Background Development environment, Skeleton and Libraries

Assignment Tutorial.


Revision Control. How can 4. Slides #4 CMPT 276 Dr. B. Fraser. Local Topology Simplified. Git Basics. Revision Control:

Git and GitHub. Dan Wysocki. February 12, Dan Wysocki Git and GitHub February 12, / 48

Introduction to Embedded Systems. Lab Logistics

Version control CSE 403

Using GitHub for scientific research

CSC 634: Networks Programming

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

BlackBerry Enterprise Server for Microsoft Exchange Version: 5.0. Feature and Technical Overview

Hands-On Lab. Getting Started with Git using Team Foundation Server Lab version: Last updated: 12/30/2013

Tutorial 2 GitHub Tutorial

While waiting for the lecture to begin, please complete. the initial course questionnaire.

Code Check TM Software Requirements Specification

Lecture 2: Data in Linguistics, Git/GitHub, Jupyter Notebook. LING 1340/2340: Data Science for Linguists Na-Rae Han

DOWNLOAD PDF FUNDAMENTALS OF DATABASE SYSTEMS

CS 447 : Networks and Data Communications Programming Assignment #02 Total Points: 150

API RI. Application Programming Interface Reference Implementation. Policies and Procedures Discussion

CS 375 UNIX System Programming Spring 2014 Syllabus

CS Homework 8. Deadline. Purpose. Problem 1. Problem 2. CS Homework 8 p. 1

COMP 321: Introduction to Computer Systems

Version control CSE 403

Are you Really Helped by Upstream Kernel Code?

Project 3 Students Choice of Native Apps. each milestone s deadline is noon see cs164.net/expectations for each milestone s expectations

CSSE 304 Assignment #13 (interpreter milestone #1) Updated for Fall, 2018

University of Manchester School of Computer Science. Content Management System for Module Webpages

KTH Royal Institute of Technology SEMINAR 2-29 March Simone Stefani -

Git Introduction CS 400. February 11, 2018

Getting the files for the first time...2. Making Changes, Commiting them and Pull Requests:...5. Update your repository from the upstream master...

Why Git and GitHub? Ming Chow Senior Lecturer, Tufts University Department of Computer Science SIGCSE 2018

Nick Rozanski Andy Longshaw Eoin Woods. Sold! How to Describe, Explain and Justify your Architecture

CSE 410: Systems Programming

Design Proposal: Outline

MP 1: HTTP Client + Server Due: Friday, Feb 9th, 11:59pm

CS2630: Computer Organization Project 2, part 1 Register file and ALU for MIPS processor

BlackBerry Enterprise Server for IBM Lotus Domino Version: 5.0. Feature and Technical Overview

Last updated: 27 July 2015 Changes & New Features in VLE 2015/16 v1.0

Revision control systems (RCS) and. Subversion

in 6 Easy Steps Step 1 Create a New Enhanced Eco-Cast Revised: November 21, 2016 Open the Eco Cast menu, and then Start New.

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

1. WHAT AREAS OF LEARNING DOES THIS ASSESSMENT ADDRESS? 2. WHY IS THE COMPLETION OF THIS ASSESSMENT IMPORTANT?

I m an egotistical bastard, and I name all my projects after myself. First Linux, now git. Linus Torvalds, creator of Linux and Git

Working with GIT. Florido Paganelli Lund University MNXB Florido Paganelli MNXB Working with git 1/47

CSE 333 Lecture 1 - Systems programming

Becoming a KROME developer

COMMUNITIES USER MANUAL. Satori Team

Versioning with git. Moritz August Git/Bash/Python-Course for MPE. Moritz August Versioning with Git

Ingegneria del Software Corso di Laurea in Informatica per il Management (D)VCS. Davide Rossi Dipartimento di Informatica Università di Bologna

CSE 444: Database Internals. Section 9: 2-Phase Commit and Replication

CVS Application. William Jiang

Version control CSE 403

CS514: Intermediate Course in Computer Systems

CVS. Computer Science and Engineering College of Engineering The Ohio State University. Lecture 21

CS2630: Computer Organization Project 2, part 1 Register file and ALU for MIPS processor Due July 25, 2017, 11:59pm

Software Tools Subversion

The Web Service Sample

CIS 505: Software Systems

CMSC 417 Project Implementation of ATM Network Layer and Reliable ATM Adaptation Layer

LINUX OPERATING SYSTEM Submitted in partial fulfillment of the requirement for the award of degree of Bachelor of Technology in Computer Science

The Rock branching strategy is based on the Git Branching Model documented by Vincent Driessen.

S18 Modern Version Control with Git

CSCE 315 Fall Team Project 3

Systems Software. Recitation 1: Intro & Revision Control. Quite different from 213. Our Philosophy. Partly-free lunch

EMC RecoverPoint. EMC RecoverPoint Support

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

A L A TEX-oriented intro to Git

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 11, 2017

Working in Teams CS 520 Theory and Practice of Software Engineering Fall 2018

HW/Lab 3: SSL/TLS. CS 336/536: Computer Network Security DUE 11am on Nov 10 (Monday)

Database Management Systems

CS122 Lecture 1 Winter Term,

Getting Started with Team Coding Applicable to Toad for Oracle Suite 2016 (v12.9) and higher

GIT TUTORIAL. Creative Software Architectures for Collaborative Projects CS 130 Donald J. Patterson

San José State University Department of Computer Science CS151, Section 04 Object Oriented Design Spring 2018

Revision control. INF5750/ Lecture 2 (Part I)

Human-Computer Interaction Design

Transcription:

UNIVERSITY OF TARTU, INSTITUTE OF COMPUTER SCIENCE Homework 1: Collaborative Text Editor Hadachi&Lind November 28, 2016 Must Read: 1. Deadline for doing homework is 4 weeks starting from now 2016.10.26 a) due date is: 2016.11.23 23:59:59 EET 2. For any delay in submitting the homework they be will a penalty (-2% of the grade for every day delay) 3. You can work in groups of maximum 4 people 4. Python 2.7 only 5. You should create a public git repository for your project and share it. 6. Be aware that the git should contain a time line progress of your implementation in case there is only one big commit at the end you will be penalized 7. You are allowed to use any fancy open source library that will help you in your design and development. a) Except for network handling. This means, you have to provide your own implementation of the application layer protocol based on transport layer of your choice (UDP, TCP, or Both) 8. Be aware that in case you use any ready product or source code of any existing collaborative editor it will be considered as plagiarism. 1

1 INTRODUCTION One of challenges when you are working in team is to collaborate in an efficient way. Moreover, working from distance with a team is a nightmare especially when you are creating a report or you are brainstorming ideas. From this perspective, the idea of creating a real-time collaborative text editor was born. The collaborative text editor permits multiple users to work on a single document simultaneously via the network. To create such application involves many challenges like handling concurrency, dealing with network connections, and building the GUI. After all it is also a fun homework because you will be building a tool that you can use with your friends and teammates. 2 MOTIVATION The main motivation behind this homework is give you the opportunity to practice all the knowledge acquired from the course in creating a useful real world application. During, the process of creating your collaborative editor you have to apply some fundamental design and implementation techniques (sequence diagram, object models, etc). In addition, the Homework will lead you to apply variety of technologies related to socket programming, networking and I/O. Besides, this assignment will deepen your learning about queue based treatments of concurrency, threads programming, shared state aspect, modeling and designing and interface development. Finally, you will have this experience of working in team with all its benefits and challenges. 3 SPECIFICATION In this homework, you have significant freedom in designing your editor as it please you. Not only in the implementation but also in the behavioral aspect. However, we suggest you that you implement first the minimal implementation at beginning till you have a stable version then you can add all other functionalities or features. Your freedom can be resumed to the following decisions that you have to make: What set of features the editor includes It is not necessary to make looking like MSOffice of LibreOffice, it can be just simple ASCII based editor like Notepad or even simpler. The most important feature is of course the collaborative editing, therefore all the corresponding features are obligatory ( share document, invite editor, remove editor, etc.). The exact features here depend on the strategy you chose for collaborative editing. Some primitive routines like Save File, Open File, Undo, Redo etc. are optional, but nice to have. 2

Which structure to adopt for the document Whatever you choose or implement, it must support the concurrent modification and conflict resolution How to name the document and where to store them Dependent of your sharing strategy! Possible strategies: * Server stores all the documents, the clients do create new documents or modify existing. Clients cannot edit the document off-line All the concurrency and editing conflicts are resolved by server Server maintains the ownership/permissions: 1.) what document is allowed to be edited by which clients, 2.) who is the owner of what document. * Client (master) stores the document and exposes it for editing using server, other clients (slaves) can only edit the document when the master is connected to server. Server act as a proxy, and never stores any documents, just redirecting the requests/responses from the slave clients to master client. Server maintains the groups of users: 1.) in each group there is one master client 2.) and one or many slave clients. All the concurrency and editing conflicts are resolved by master client. Slave clients cannot edit the document off-line * Client stores the document, but once it gets shared all the other clients get the copy of it. Clients can modify documents off-line, they synchronize once they get on-line. Server act as a proxy, and never stores any documents, just redirecting the requests/responses between the clients. Client groups are maintained by the clients themselves: 1.) each client knows which other clients to contact in order to sync the document, 2.) server just provides the communication channels between the clients. * Any other sharing strategies with your own design! Just make sure the requirements are fulfilled 3

Irregardless of what you have chosen as a sharing strategy it must be made clear and reflected in your documentation! How and what guarantees are made regarding the concurrent edits effect. Synchronous strategies or change-on-write * Locking strategies Each modification locks entire document Each modification locks the portion of the document... * Change submission strategies: Each time keyboard key is pressed a change gets submitted Each time a full word is entered a change is submitted... Asynchronous or lock-free strategies (using document versions) * Version control is required Nonetheless, you implementation has to meet some requirements and they are as follows: 1. Real-time. The collaborative editor should be capable of providing the real-time response due to editing and viewing the changes. 2. Tenacity. User should be able to edit a document over several sessions: a) user should be able to continue editing from where he left the document b) in case there were changes introduced by other users the document must reflect them once a users is editing the document again 3. Multiple users. The collaborative editor should allow at least three users to work simultaneously. 4. Textual format. Allowing ASCII text and handling the line breaks. 4 TASKS The task can be resumed as follows: 1. Individual preparation: We advice you to complete all the tasks before starting the homework. (Optional) 2. Putting up the Team: Meet up and creating you own team and define your strategy. 4

3. Modeling and designing: You can choose any tool that can help you in creating your object models, sequence diagrams, UML diagram, etc. Make sure you define clearly and carefully what the collaborative text editor is. Please document all your process in modeling and making decision and why; in all the case you will need it for deliverables. (include in the report) 4. Architecture: Design the system architecture with all its component. (Include in the report) 5. Protocol: Design a protocol for the system s components. Express your protocol as a state machine. (Include in the report) 6. GUI: Sketch your user interface and its different screens and dialogs. This step will also allow you to discover the structure and the flow of your interface. (Include in the report) 7. Code Design: at this level you may use object model and model dependency diagram to help you define the pattern, how to handle the concurrency design, and make it easy during testing step. (Include in the report) 8. Testing Strategy: you should adopt a testing strategy (by determining in which order you will test your components, how you will derive test cases, what level of coverage you plan to achieve, how you will test the user interface, etc). Please justify your strategy in the report. (Include in the report) 9. Implementation: write your code following your design. be-careful to update your report in case you made any change in the design during the implementation stage, which is highly probable to happened. 10. Testing: Run your testing strategy and document all the results. (Include in the report) 11. Reflection: Write a brief comment about you experience as a Team by answering the following question, a) what was hard? b) what was confusing? c) what was easy? d) what would you do differently if you had the chance to do it again? (Include in the report) 5 DELIVERABLES AND GRADING 5.1 DELIVERABLES: They will Three major deliverable for this Homework: First: You have to submit your Team members names including you and also the public git repository link via the moodle latest 2nd of November at 12h00. 5

Link: https://moodle.ut.ee/mod/feedback/view.php?id=267842 Second: A report that include the following: Modeling and designs The network architecture and protocol; The code designs and discussion; The GUI design; The testing strategy; Testing results Reflection Third: The source code of your implementation. The implementation, we will consider only the source code from your public git repo provided. Note, any modification done after the due date to the git won t be considered. Concerning the report, it should be compressed and submitted in the course website by one member of the team. Link: https://courses.cs.ut.ee/2016/ds/fall/main/kodutööd 5.2 GRADING: Total points for this Homework is 20 pts, and its breakdowns is as follows: 6 pts: Modeling and designs, the network architecture and protocol, the GUI design; 5pts: The code designs and discussion, the testing strategy, 7pts: The Implementation and testing results 2 pts: Reflection 6