EE122 Project 1. Fall Version 0.4. Part A due at 11:50pm on Monday, October 11, 2010 Part B due at 11:50pm on Wednesday, October 27, 2010

Size: px
Start display at page:

Download "EE122 Project 1. Fall Version 0.4. Part A due at 11:50pm on Monday, October 11, 2010 Part B due at 11:50pm on Wednesday, October 27, 2010"

Transcription

1 EE122 Project 1 Fall 2010 Version 0.4 Part A due at 11:50pm on Monday, October 11, 2010 Part B due at 11:50pm on Wednesday, October 27, 2010 Change History: 01 -> 02: Added clarifications to server requirements: must support 20 clients, must call on_client_disconnection, must send one JOB_ASSIGNED at a time. 02 -> 03: Added FAQ section, fixed inconsistency - 2 is a valid number in to be assigned. 03 -> 04: Updated the due date for part A. Introduction The galaxy is in great distress. Aliens have attacked the Earth and captured most of the Jedis. Surviving Jedis have gathered at the UC campus and are preparing the plans for a final strike back. However, to maximize the effectiveness of the defining battle they ask you to crack the alien encryption codes. Luckily, alien encryption, similarly to ours, is based on prime numbers and can be cracked if one has a large database of prime numbers. Your original plan was to employ the great millennium cluster, but after Jedi Arnold depleted UC s mineral reserves the cluster is under a constant risk of being shut down. Therefore, you decide to design a distributed system and employ whatever minerals are left throughout the Earth. Your approach is similar to SETI@Home project. You will write two programs: a client and a server. The server program will run at UC and you will distribute the client program to all the surviving human colonies that can contribute computational power. When the client program is started, it will connect to the server and send a LOGIN message containing the name of the colony. (You figured that if Earth survives, future generations would be interested in knowing how contributed to the victory.) When the server receives a LOGIN message from a client, it starts assigning jobs to it. A job is to check whether a large number is prime or not. Server assigns a job by sending a JOB_ASSIGNED message. When the job is done, client communicates the result back with a JOB_COMPLETED message. Usually, the server will respond with another JOB_ASSIGNED message, but sometimes it can be busy and respond later. To maximize its efficiency, the server can also send multiple JOB_ASSIGNED messages at once. Finally, you feel that more colonies will join the effort if you allow participants to communicate with each other. To enable the exchange of messages, you decide to add a SPEAK message. After the client logs

2 in, it can send SPEAK messages to the server containing its name and whatever message it wants. The server simply broadcasts the message to all connected clients (including back to the sender). In part A and B, you will implement the client and the server, respectively. The following sections describe the messages and the requirements in more details. Client/Worker Before going into details of client s operation, we describe the starter files available from the class web page. Starter Files --- messages.h --- We will be testing you client binary by looking at the message it sends and receives and at what it prints to stdout. To avoid the situation where you program is correct by you lost 20 points because you forgot a comma in your printf() call, we provided a number of functions that you should use to make sure your output is formatted correctly. Besides the printing functions, this file also contains two utility functions that you can use to check that the chat message and the name are well-formed. --- protocol.h --- This file contains the definitions of the structures that can be used to access message fields. Below is a usage example (without any checks): char buf[1024]; struct ee122_hdr *header; recv(sock, buf, 1024, 0); header = (struct ee122_hdr *) buf; printf( Message: ver=%d, type=%d, length=%d\n, header->version_, header->type_, ntohs(header->length_)); Message format is fixed. If you prefer not to use these structures, you must make sure that you messages look exactly as specified. --- constants.h --- This file contains some basic constants used throughout the project. --- client.c --- This file contains some basic setup for the client. You don t have to use this skeleton. It is provided only to help you get started. If you decide to start from the provided skeleton, you will essentially need to fill the places marked with TODO:. Note that the required code is substantial, so you will probably need to define and implement a good number of functions. For reference, our client implementation is around 450 lines (including extensive comments and blank lines). --- server.c --- This file contains some basic setup for the server.

3 --- server --- This is a binary of a reference server implementation. We provide it to ease your client development for part A. It can be started with./server -p <listening-port-number> -v where <listening-port-number> is the port number you want your server to listen on. Note that on many systems the lower 1023 numbers are reserved to programs that have root privileges. So, you should pick your port somewhere between 1024 and The -v flag enables verbose output. It can be useful for debugging. If you want, you can start the server without this flag. --- Makefile --- This is a make file that you can use to build your client and server binaries. If you are not familiar with make, check or any one of many make tutorial. To build the client, you can execute: make client To build the server, you can execute: make server To delete the generated binary files, you can execute: make clean --- a_client_test.py --- This is a testing script similar to the one that will will use to grade your submission. You can use this script to gain some confidence in your implementation. It should be placed in the directory containing the client binary named client. You can start it with:./a_client_test.py It will run 20 tests, print the progress as it goes, and the total number of points you got at the end. When a test fails, it will print output similar to: Running test_server_closes_connection - FAILED: Traceback (most recent call last): File "./a_client_test.py", line 575, in call_and_catch fun() File "./a_client_test.py", line 450, in test_server_closes_connection assert(clnt.start_client()) AssertionError From the output, you can see that start_client() failed in test_server_closes_connection(). If you want, you can look in to the testing script, but we won t support it. If you suspect that there is a problem with the script, think twice (or maybe thrice) before contacting your TA. Note that the script expects to receive certain output in certain time. We chose the timeout values with a lot of slack. If you think some timeout value is too short, contact your TA (after thinking twice :)). Client Requirement Because in the project, we will have another type of client, we will refer to the clients doing prime checks as workers. The connection between each worker and the server must be over TCP. The worker must be startable with the following command line:

4 ./client -p <server-port> -s <server-ip> -n <name> -v Where <server-port> is a port number that server is listening on, <server-ip> is the IP address in the dotted decimal representation (e.g special ip for the same machine ), <name> is the name of the client (that must contain at most 11 character, each either a letter or a number), and -v specifies that client should print out verbose output. When the client is started, it must attempt to connect to the server. If connection succeeds it must print Connected to server. to stdout (see on_connect_to_server()). Its first message must be the LOGIN message. This message must be sent only once during a run of the client. For each received JOB_ASSIGNED message, the client must respond with exactly one JOB_COMPLETED message containing mathematically correct result. If the client was started with -v option, before sending JOB_COMPLETED, it must print the result to stdout using the on_job_assigned() function. Note also that JOB_COMPLETED messages must be in the same order as the received JOB_ASSIGNED messages. The user must be able to input a chat message on stdin. The message is considered over when the user hits the enter key. The client is not required to read the input and send out a SPEAK message immediately. It is OK for the client to be blocked in recv() until the server sends some message. When recv() returns, the client must send out the SPEAK message (if user has entered a chat message on stdin) before sending any other message. Note that this implies that the client can be implemented using blocking sockets. You are obviously free to implement I/O multiplexing if you want. Whenever a client receives a well-formed SPEAK message from the server (including the message that it originally sent to the server), it must print it to stdout using the on_speak() function. A warning about implementing message receiving functionality. The recv() function returns as soon as some data is available and you don t know in what granularity the data will become available. You might receive a single byte or you might receive 10 messages at once. Your program must handle all these cases correctly. Client Error Handling Most of the functions in messages.h are related to different error cases. In this section, we detail what error cases we require you to handle. The cases are organized by the function you should call. on_client_connect_failure(): This function must be called if the client fails to establish a connection with the server. on_disconnection_from_server(): This function must be called when connection to the server is broken (not when the client closes the connection itself). This can happen for a number of reasons including the server crashing, closing the socket, sending a bad packet (violating TCP/IP spec), etc. on_malformed_message_from_server(): This function must be called server sends a malformed message. There are many possible ways a message can be malformed. These ways include: Server sends a LOGIN or a JOB_COMPLETED message. Server sends a message of an unknown type (different from LOGIN, JOB_ASSIGNED, JOB_COMPLETED, SPEAK)

5 Server sends a too long message (Our message are limited to 255 bytes including our packet header). Server sends a message of right type but of bad length (all messages but SPEAK have fixed lengths). Server sends a message with bad payload: 0 or 1 as the number in JOB_ASSIGNED. Non-printable character in name or msg of SPEAK. Non-null-terminated name or msg of SPEAK. Note that we provide functions check_message() and check_worker_name() to help with this case. After calling the appropriate on_*() function, the client must exit (wtih any return value). We don t attempt to fix the error in any way. There are many other error cases that we don t require you to handle. These include: Message is not 4 bytes aligned. Bad input from stdin: message too long, contains a null bytes somewhere in the middle. Bad command-line arguments. Server Requirements 1. The server program runs with the following program argument../server -p <listening-port-number> -r <first-num> where <first-num> is the first number that the server must assign to the client. Then, the server must assign the following consecutive numbers. If the server assigns a number and the client disconnects, the server does not have to keep track of this and reassign the number. In this project, we don t worry about storing the numbers and making sure that we have all of them. 2. The server must support at least 20 simultaneous clients. 3. When a client disconnects (whether itself or the server disconnects the client), server must call on_client_disconnection() with the name of the client. If the disconnecting client does not have a valid name (i.e. it did not login yet or the name in the login message is invalid), the server must call on_client_disconnection( invalid-name ). 4. The server must send one JOB_ASSIGNED message at a time. In other words, to be able to send n th JOB_ASSIGNED to a client, the server must have received (n-1) JOB_COMPLETED from this client. 5. The server must be able to bind the port and must not be affected by the TCP's 2*MSL constraint. In other words, the server must not give an error if restarted immediately after a crash. If bind() fails, the server must call on_server_port_bind_failure(). 6. After binding the port, the server waits for client connections without wasting CPU cycles (e.g. use select()). The server must never block - neither in recv() nor in send() nor in accept(). 7. Clients can log in using the LOGIN message. Other messages from the client prior to the LOGIN message must be ignored by the server. We assume that all clients will have different names (the server can behave arbitrarily if this assumption is violated). 8. Once logged in, if the client sends a LOGIN message, the server must ignore it. 9. The server must ignore JOB_ASSIGNED messages from clients. 10. The server must handle malformed messages from clients. A malformed message means any message that is normally handled by the server but that has a bad length of contains an invalid value. One exception to this rule is the JOB_COMPLETED message. The server does not need to check the mathematical validity of the result (it must check that the length is valid, is_prime is 0 or 1, and number is greater than 1). When server receives a malformed message, it must call

6 on_malformed_message_from_client() and close the client s connection. The server must handle all of the packets from the client up to the malformed one. There is one special case. If the server receives a LOGIN message with invalid name, it should call the on_malformed_message_from_client() function with parameter name set to invalidname. 11. The server must handle disconnection from clients. Clients can arbitrarily join and leave, and the server must not crash. 12. The server must not experience deadlocks and it must not block on a single client. 13. When the server receives a well-formed LOGIN message, it must call on_login() function. 14. When the server receives a well-formed JOB_COMPLETED message, it must call on_job_completed() function. The server does not need to check that the number it received was the last number it sent to the client. 15. When the server receives a well-formed SPEAK message, it must call on_speak() function and broadcast this message to all other connected clients. The server must not block in send() while broadcasting the messages. Server Implementation Hint Because you can never block, when select returns, you will call some recv() (and send()) but you don t know how much data it will accept. Thus, you might receive just one byte or 1.5 messages or 10 messages. If you don t receive a complete message, you will need to store the data you received somewhere and enter select() again. Next time, when there is more data available on the same input source, you need to recv() whatever is available and append it to the data you already had. When you get at least one complete message in this buffer you can handle it. The same also applies to send(). When you have a message to send out, you cannot just call send repeatedly until all the data is sent. You can only call send() once (if select() sets the corresponding socket as writable) and whatever data was not accepted you must buffer it and attempt transmission the next time this socket becomes writable. recv() when socket is readable > buffer > If there is a full message in buffer, handle it. Have a message to send > buffer > Drain (portion of) the buffer when socket is writable. Message Format As you know from the lecture about sockets, TCP sockets treat all messages as a continuous stream of data. To differentiate one of our messages from another, we define a message format. Each of our messages starts with a header. Our header is 32 bits in length and look like this: version (8 bits) length (16 bits) length (cont d) type (8 bits) version is the version of our protocol. It must always be set to EE122_VALID_VERSION, which is currently 4. length is the total length of the message in bytes including the header. type is the type of this message. Must be one of LOGIN, JOB_ASSIGNED, JOB_COMPLETED, or SPEAK.

7 All other messages start with this header and are padded to be 4-byte aligned where needed. Note that all numbers in the format are in network bytes order. LOGIN: version (8 bits) length (16 bits) length (cont d) type (8 bits) name (11 bytes) name (cont d) name (cont d) name (cont d) name (cont d) name (cont d) name (cont d) name (cont d) name (cont d) name (cont d) name (cont d) 0 (null termination) name is the name of the worker. If name is shorter than 11 bytes, unoccupied bytes must be set to 0. JOB_ASSIGNED: version (8 bits) length (16 bits) length (cont d) type (8 bits) number (4 bytes) number (cont d) number (cont d) number (cont d) number is the number whose primeness must be checked. Must be interpreted as unsigned 32 bit integer (you can use uint32_t type). Must be greater than 1. JOB_COMPLETED: version (8 bits) length (16 bits) length (cont d) type (8 bits) number (4 bytes) number (cont d) number (cont d) number (cont d) factor (4 bytes) factor (cont d) factor (cont d) factor (cont d) is_prime (1 byte) padding padding padding number is the number whose primeness was checked. Must be interpreted as unsigned 32 bit integer (you can use uint32_t type). Must be greater than 1.

8 factor is the smallest prime factor of number. Must be interpreted as unsigned 32 bit integer (you can use uint32_t type). If number is prime, factor can contain garbage and should be ignored is_prime is 0 if number is composite and 1 if number is prime. padding is extra space to make the message 4 byte aligned. SPEAK: version (8 bits) length (16 bits) length (cont d) type (8 bits) name (11 bytes) name (cont d) name (cont d) name (cont d) name (cont d) name (cont d) name (cont d) name (cont d) name (cont d) name (cont d) name (cont d) 0 (null termination) msg (variable length) name is the name of the worker. If name is shorter than 11 bytes, unoccupied bytes must be set to 0. msg is a variable length chat message. It must be null-terminated and the whole message must be 4 byte aligned. Getting Started To get started: Install VirtualBox Download the virtual machine from Note that the virtual machine is almost 1GB. So, you should probably download it while on campus. The extraction will take about 30 minutes. (It is this large because I have installed 300MB of security updates, building tools, and networking tools such as wireshark). Uncompress the vm and add it to VirtualBox. Choose New, then select Linux and Ubuntu. Then when asked for hard drive, choose existing and point to the unpacked.vdi file. Start the vm. The username for the vm is stud and password is network (without quotes). To run a command as root use sudo. Download the starter source code from the class s website and place it somewhere in the home folder (say proj1). You can do all of your projects in the vm. If you decide to do them on some other system, it is your responsibility to make sure your code compiles and runs on this vm. Untar the files (tar xzvf project1.tar.gz) and go into the project1 directory. Run make to build the files. You should not see any errors or warnings. Run the test script (./a_client_test.py). Since starter client is almost empty all tests should fail. Start designing and writing code! (You can use gedit, emacs (install with sudo apt-get install emacs23 ), vim (install with sudo apt-get install vim-gnome ), or whatever you want) As you make progress you can check your code either with the test script or by running a reference server binary. You are also welcome to use tools like tcpdump, wireshark, hping3, etc.

9 Hand-in Instructions You must submit a single tar archive through bspace for each of the two parts of the project. If you don t use any additional libraries and place all of you code in client.c and server.c files (let s call this the normal case ), the tar archive for submission can be generated using the following commands: STUD_ID= make handin_1a # for part a STUD_ID= make handin_1b # for part b where must be replaced by your student id. The first (second) command will generate project1a_ tar.gz (project1b_ tar.gz) file that must be uploaded. Besides the source code, the submission archive must contain Makefile and readme.txt files. In the normal case, you don t need to touch the Makefile and the readme.txt must be empty. If, however, you are using a non-standard library you provide instruction in readme.txt on how to install it in the virtual machine. Also, if you have implemented an additional feature, you must describe it in the readme.txt file and provide instructions how we can see the feature in action. After installing any additional libraries (if any), we will run make client to build your client executable for part A. We will run make to build both client and server for part B. If you choose to follow a path different from the normal case, you must make sure that these commands produce the client and server binaries named client and server, respectively. Policies We very strongly encourage you to work on the project with your peers. However, you must adhere to the collaboration policy outlined below. All source code must be written solely by you. You can discuss anything related to a project with anybody. If discussion happens in writing, it must not include code. You must not read other students code, with the exception of helping them debug a problem which they tried to, but could not, figure out themselves. You are welcome to read online tutorials and example code. However, you must not copy-paste significant (>10 lines) portions of code. We strongly encourage you not to use non-standard libraries and build the whole system yourself. It will feel much better :) and you will have learned the fundamental underlying primitives. However, we realize that some students might have had extensive experience in socket programming before and might like to spend their time learning something new. For such cases, you must contact us and ask for permission to use an additional library. In return, we might ask you to implement an additional feature. Be waned that you might use program similarity tests and/or tools like Google code search to identify breaches in collaboration policy. We have all been students and know how tempting it might be especially when the load of other classes is very high. To avoid such situations, and to actually learn a very useful skill, start the project early! Then, if you are stuck and your friends can t help you, come to TA s office hours. You can either bring a laptop, if you have one, or some way to get your files. TAs can put your files in a virtual machine and look at the problem with you. Grading

10 We will grade your submission with an automatic script similar to the one distributed with the source. The testing script will not be the same!!! We will change all the values and add more tests. So, programming just to satisfy the provided script is not a good idea. We reserve the right to change your score (either up or down) based on the manual inspection of the source code. We want you to have fun doing you projects. So, you are free to implement additional interesting features. If you do so, your features must not break any of the specified requirements. In particular, your code should still pass the test script. If you implement an interesting feature, you must describe it in readme.txt. You can earn up to an extra of 10% of the project s score with an additional feature. Project 1 is worth 20% of you final grade. Part A is worth 8% and Part B is worth 12%. An additional feature in Part A can earn you an extra 0.8% and an additional feature in Part B can earn you an extra 1.2%. Thus, the maximum possible score for project 1 is 22% of your final grade. FAQ 1. What should the client do if its command line arguments are bad? Answer: The client is not responsible for checking command line arguments. If arguments are bad, your client can behave arbitrarily. 2. I am running regular Ubuntu on my machine. Do I need to make sure my code compiles and runs on the VM? Answer: If you don t use a non-standard library and you did not modify your Ubuntu in any nontrivial way (changed the libc/gcc/make versions to some old or very new ones and using some new features in your code, patched your kernel, etc) your code should compile on the VM and you should not need to check it. HOWEVER, if you have any reason for doubt, do check it! All you need is install virtual-box, download and unzip the VM. If we will have to go back to you more than once, this can affect your grade. 3. What should the client/server do if send(), recv(), or socket() fail with a negative return value? Answer: Assuming your process behaves well (e.g. does not create thousands of connections), you are passing the right arguments, and your machine is sane, this should not happen. A correct client/server running on the VM will not cause it. If it is happening for you, you have a problem in your code - find and fix it. As a general good practice, if it happens, use perror() and exit your program. 4. Do we have to use the MAX_MESSAGE variable? Answer: You don t have to. It is there for your convenience. 5. When I call send(), it returns immediately. Wasn t it supposed to block? What does that mean? Answer: send() copies your data into a kernel transmit queue. If there is enough space in this buffer when you call send(), your data will be copied to this buffer and send() will return immediately. The kernel networking stack will be sending this data according to TCP rules. From the perspective of your application, once send() returns you don t need to worry about this data anymore - if both sides stay up it will be transmitted at some point. 6. Let s say a client received a JOB_ASSIGNED message from the server. While it was blocked in recv(), user typed a chat message. Should I send the SPEAK or the JOB_COMPLETED first?

11 What if the client typed two messages? Answer: You must send SPEAK first. You can assume that the user typed only a single message (has pressed return key only once).

EE122 Project 1 Fall 2010

EE122 Project 1 Fall 2010 Introduction EE122 Project 1 Fall 2010 Version 0.1 Part A due at 11:50pm on Wednesday, October 6, 2010 Part B due at 11:50pm on Wednesday, October 27, 2010 Change History: The galaxy is in great distress.

More information

CS155: Computer Security Spring Project #1

CS155: Computer Security Spring Project #1 CS155: Computer Security Spring 2018 Project #1 Due: Part 1: Thursday, April 12-11:59pm, Parts 2 and 3: Thursday, April 19-11:59pm. The goal of this assignment is to gain hands-on experience finding vulnerabilities

More information

Project 1. 1 Introduction. October 4, Spec version: 0.1 Due Date: Friday, November 1st, General Instructions

Project 1. 1 Introduction. October 4, Spec version: 0.1 Due Date: Friday, November 1st, General Instructions Project 1 October 4, 2013 Spec version: 0.1 Due Date: Friday, November 1st, 2013 1 Introduction The sliding window protocol (SWP) is one of the most well-known algorithms in computer networking. SWP is

More information

Guide to your Plug Computer

Guide to your Plug Computer This document lives here: http://inst.eecs.berkeley.edu/~ee122/fa11/project3/guide-to-plug.pdf Guide to your Plug Computer UC Berkeley, EE 122, Fall 2011 Version 1 This document is a step-by-step guide

More information

The Specification of Project-1

The Specification of Project-1 The Specification of Project-1 EE122 Introduction to Communication Networks, Fall 2002 Weidong Cui, Karthik Lakshminarayanan, Khian Hao Lim Revision : 1.23 1 Overview In this project, you will build a

More information

Project 2 Reliable Transport

Project 2 Reliable Transport Project 2 Reliable Transport UC Berkeley CS 168, Fall 2014 Version 1.0 Due: 11:59am (noon), November 2nd, 2014 In this project, you will build a simple reliable transport protocol, BEARS TP (BTP). Your

More information

Peer to Peer Instant Messaging

Peer to Peer Instant Messaging Peer to Peer Instant Messaging Assignment in Computer Networks I, Department of Information Technology, Uppsala University. Overview In this assignment you will implement an instant messaging system that

More information

CIS 505: Software Systems

CIS 505: Software Systems CIS 505: Software Systems Fall 2017 Assignment 3: Chat server Due on November 3rd, 2017, at 10:00pm EDT 1 Overview For this assignment, you will implement a simple replicated chat server that uses multicast

More information

CS 1653: Applied Cryptography and Network Security Fall Term Project, Phase 2

CS 1653: Applied Cryptography and Network Security Fall Term Project, Phase 2 CS 1653: Applied Cryptography and Network Security Fall 2017 Term Project, Phase 2 Assigned: Tuesday, September 12 Due: Tuesday, October 3, 11:59 PM 1 Background Over the course of this semester, we will

More information

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

MP 1: HTTP Client + Server Due: Friday, Feb 9th, 11:59pm MP 1: HTTP Client + Server Due: Friday, Feb 9th, 11:59pm Please read all sections of this document before you begin coding. In this assignment, you will implement a simple HTTP client and server. The client

More information

CSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Homework 4 (document version 1.0) Network Programming using C

CSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Homework 4 (document version 1.0) Network Programming using C CSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Homework 4 (document version 1.0) Network Programming using C Overview This homework is due by 11:59:59 PM on Thursday, April 26, 2018.

More information

Program Assignment 2

Program Assignment 2 Program Assignment 2 CMSC 417 Fall 2014 September 16, 2014 1 Deadline September 30, 2014. 2 Objective In this assignment you will write the server program which will communicate using sockets with the

More information

P2P Programming Assignment

P2P Programming Assignment P2P Programming Assignment Overview This project is to implement a Peer-to-Peer (P2P) networking project similar to a simplified Napster. You will provide a centralized server to handle cataloging the

More information

Programming Standards: You must conform to good programming/documentation standards. Some specifics:

Programming Standards: You must conform to good programming/documentation standards. Some specifics: CS3114 (Spring 2011) PROGRAMMING ASSIGNMENT #3 Due Thursday, April 7 @ 11:00 PM for 100 points Early bonus date: Wednesday, April 6 @ 11:00 PM for a 10 point bonus Initial Schedule due Thursday, March

More information

Operating Systems and Networks Project 1: Reliable Transport

Operating Systems and Networks Project 1: Reliable Transport Spring Term 2016 Operating Systems and Networks Project 1: Reliable Transport Assigned on: 22 April 2016 Due by: 13 May 2016 1 Introduction In this project, your task is to implement a reliable sliding

More information

Project Introduction

Project Introduction Project 1 Assigned date: 10/01/2018 Due Date: 6pm, 10/29/2018 1. Introduction The sliding window protocol (SWP) is one of the most well-known algorithms in computer networking. SWP is used to ensure the

More information

Project 2: Part 1: RPC and Locks

Project 2: Part 1: RPC and Locks Project 2: Part 1: RPC and Locks Due: 11:59PM Thursday, October 14, 2010 1 Introduction In this series of labs, you will implement a fully functional distributed file server with the Frangipani architecture

More information

Project 1: Snowcast Due: 11:59 PM, Sep 22, 2016

Project 1: Snowcast Due: 11:59 PM, Sep 22, 2016 CS168 Computer Networks Fonseca Project 1: Snowcast Due: 11:59 PM, Sep 22, 2016 Contents 1 Introduction 2 2 Protocol 2 2.1 Client to Server Commands................................ 2 2.2 Server to Client

More information

CS 361S - Network Security and Privacy Spring Project #2

CS 361S - Network Security and Privacy Spring Project #2 CS 361S - Network Security and Privacy Spring 2017 Project #2 Part 1 due: 11:00, April 3, 2017 Part 2 due: 11:00, April 10, 2017 Submission instructions Follow the submission instructions in the Deliverables

More information

Programming Assignment 1

Programming Assignment 1 CMSC 417 Computer Networks Fall 2017 Programming Assignment 1 Assigned: September 6 Due: September 14, 11:59:59 PM. 1 Description In this assignment, you will write a UDP client and server to run a simplified

More information

Project 4: ATM Design and Implementation

Project 4: ATM Design and Implementation University of Maryland CMSC414 Computer and Network Security (Spring 2017) Instructor: Udaya Shankar (project originally created by Jonathan Katz) Project 4: ATM Design and Implementation Due dates May

More information

COMP 3500 Introduction to Operating Systems Project 5 Virtual Memory Manager

COMP 3500 Introduction to Operating Systems Project 5 Virtual Memory Manager COMP 3500 Introduction to Operating Systems Project 5 Virtual Memory Manager Points Possible: 100 Submission via Canvas No collaboration among groups. Students in one group should NOT share any project

More information

Hands on Assignment 1

Hands on Assignment 1 Hands on Assignment 1 CSci 2021-10, Fall 2018. Released Sept 10, 2018. Due Sept 24, 2018 at 11:55 PM Introduction Your task for this assignment is to build a command-line spell-checking program. You may

More information

CSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Homework 4 (document version 1.1) Sockets and Server Programming using C

CSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Homework 4 (document version 1.1) Sockets and Server Programming using C CSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Homework 4 (document version 1.1) Sockets and Server Programming using C Overview This homework is due by 11:59:59 PM on Monday, December

More information

CS143 Handout 05 Summer 2011 June 22, 2011 Programming Project 1: Lexical Analysis

CS143 Handout 05 Summer 2011 June 22, 2011 Programming Project 1: Lexical Analysis CS143 Handout 05 Summer 2011 June 22, 2011 Programming Project 1: Lexical Analysis Handout written by Julie Zelenski with edits by Keith Schwarz. The Goal In the first programming project, you will get

More information

Assignment 1: Plz Tell Me My Password

Assignment 1: Plz Tell Me My Password Assignment 1: Plz Tell Me My Password Part I Due: 11:59 pm, September 23, 2013 Part II Due : 11:59 pm, September 27, 2013 1 Introduction The objective of this assignment is to gain experience in: socket

More information

The print queue was too long. The print queue is always too long shortly before assignments are due. Print your documentation

The print queue was too long. The print queue is always too long shortly before assignments are due. Print your documentation Chapter 1 CS488/688 F17 Assignment Format I take off marks for anything... A CS488 TA Assignments are due at the beginning of lecture on the due date specified. More precisely, all the files in your assignment

More information

CS 1803 Pair Homework 4 Greedy Scheduler (Part I) Due: Wednesday, September 29th, before 6 PM Out of 100 points

CS 1803 Pair Homework 4 Greedy Scheduler (Part I) Due: Wednesday, September 29th, before 6 PM Out of 100 points CS 1803 Pair Homework 4 Greedy Scheduler (Part I) Due: Wednesday, September 29th, before 6 PM Out of 100 points Files to submit: 1. HW4.py This is a PAIR PROGRAMMING Assignment: Work with your partner!

More information

Assignment 3 ITCS-6010/8010: Cloud Computing for Data Analysis

Assignment 3 ITCS-6010/8010: Cloud Computing for Data Analysis Assignment 3 ITCS-6010/8010: Cloud Computing for Data Analysis Due by 11:59:59pm on Tuesday, March 16, 2010 This assignment is based on a similar assignment developed at the University of Washington. Running

More information

Fall CSEE W4119 Computer Networks Programming Assignment 1 - Simple Online Bidding System

Fall CSEE W4119 Computer Networks Programming Assignment 1 - Simple Online Bidding System Fall 2012 - CSEE W4119 Computer Networks Programming Assignment 1 - Simple Online Bidding System Prof. Gil Zussman due: Wed. 10/24/2012, 23:55 EST 1 Introduction In this programming assignment, you are

More information

Programming Project #1

Programming Project #1 CS255: Cryptography and Computer Security Winter 2008 Due: Friday, February 8th, 2008. Programming Project #1 1 Overview For the first programming assignment you will be implementing a password manager,

More information

Lab 03 - x86-64: atoi

Lab 03 - x86-64: atoi CSCI0330 Intro Computer Systems Doeppner Lab 03 - x86-64: atoi Due: October 1, 2017 at 4pm 1 Introduction 1 2 Assignment 1 2.1 Algorithm 2 3 Assembling and Testing 3 3.1 A Text Editor, Makefile, and gdb

More information

Lab 1: Space Invaders. The Introduction

Lab 1: Space Invaders. The Introduction Lab 1: Space Invaders The Introduction Welcome to Lab! Feel free to get started until we start talking! The lab document is located on course website: https://users.wpi.edu/~sjarvis/ece2049_smj/ Be sure

More information

Project 5 - The Meta-Circular Evaluator

Project 5 - The Meta-Circular Evaluator MASSACHVSETTS INSTITVTE OF TECHNOLOGY Department of Electrical Engineering and Computer Science 6.001 Structure and Interpretation of Computer Programs Fall Semester, 2005 Project 5 - The Meta-Circular

More information

CS 1550 Project 3: File Systems Directories Due: Sunday, July 22, 2012, 11:59pm Completed Due: Sunday, July 29, 2012, 11:59pm

CS 1550 Project 3: File Systems Directories Due: Sunday, July 22, 2012, 11:59pm Completed Due: Sunday, July 29, 2012, 11:59pm CS 1550 Project 3: File Systems Directories Due: Sunday, July 22, 2012, 11:59pm Completed Due: Sunday, July 29, 2012, 11:59pm Description FUSE (http://fuse.sourceforge.net/) is a Linux kernel extension

More information

CS Programming Languages Fall Homework #2

CS Programming Languages Fall Homework #2 CS 345 - Programming Languages Fall 2010 Homework #2 Due: 2pm CDT (in class), September 30, 2010 Collaboration policy This assignment can be done in teams at most two students. Any cheating (e.g., submitting

More information

CS 118 Project Phase 2 P2P Networking

CS 118 Project Phase 2 P2P Networking CS 118 Project Phase 2 P2P Networking Due Monday, March 15 th at 11:59pm Boelter Hall 4428, Box D3/C4 and via Electronic Submission Overview In this phase you will extend your work from Phase 1 to create

More information

EE516: Embedded Software Project 1. Setting Up Environment for Projects

EE516: Embedded Software Project 1. Setting Up Environment for Projects EE516: Embedded Software Project 1. Setting Up Environment for Projects By Dong Jae Shin 2015. 09. 01. Contents Introduction to Projects of EE516 Tasks Setting Up Environment Virtual Machine Environment

More information

Important Project Dates

Important Project Dates Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2002 Handout 4 Project Overview Wednesday, September 4 This is an overview of the course project

More information

CMSC 201 Spring 2017 Project 1 Number Classifier

CMSC 201 Spring 2017 Project 1 Number Classifier CMSC 201 Spring 2017 Project 1 Number Classifier Assignment: Project 1 Number Classifier Due Date: Design Document: Saturday, March 11th, 2017 by 8:59:59 PM Project: Friday, March 17th, 2017 by 8:59:59

More information

Section 1 Short Answer Questions

Section 1 Short Answer Questions CPSC 3600 section 002 HW #1 Fall 2017 Last revision: 9/7/2017 You must work on this homework individually!! Submission: You are to submit your written answers to turnitin. Also, you are to submit your

More information

1. Introduction. 2. Project Submission and Deliverables

1. Introduction. 2. Project Submission and Deliverables Spring 2018 Programming Project 2 Due 11:59 PM, Wednesday, 3/21/18 (3/21 is the Wednesday after Spring Break, so if you don t want to work on the program over break or save all the work for those last

More information

CS3114 (Fall 2013) PROGRAMMING ASSIGNMENT #2 Due Tuesday, October 11:00 PM for 100 points Due Monday, October 11:00 PM for 10 point bonus

CS3114 (Fall 2013) PROGRAMMING ASSIGNMENT #2 Due Tuesday, October 11:00 PM for 100 points Due Monday, October 11:00 PM for 10 point bonus CS3114 (Fall 2013) PROGRAMMING ASSIGNMENT #2 Due Tuesday, October 15 @ 11:00 PM for 100 points Due Monday, October 14 @ 11:00 PM for 10 point bonus Updated: 10/10/2013 Assignment: This project continues

More information

(Refer Slide Time: 1:26)

(Refer Slide Time: 1:26) Information Security-3 Prof. V Kamakoti Department of Computer science and Engineering Indian Institute of Technology Madras Basics of Unix and Network Administration Operating Systems Introduction Mod01,

More information

Project #1: Tracing, System Calls, and Processes

Project #1: Tracing, System Calls, and Processes Project #1: Tracing, System Calls, and Processes Objectives In this project, you will learn about system calls, process control and several different techniques for tracing and instrumenting process behaviors.

More information

CMPSCI 187 / Spring 2015 Hanoi

CMPSCI 187 / Spring 2015 Hanoi Due on Thursday, March 12, 2015, 8:30 a.m. Marc Liberatore and John Ridgway Morrill I N375 Section 01 @ 10:00 Section 02 @ 08:30 1 Contents Overview 3 Learning Goals.................................................

More information

CSC D84 Assignment 2 Game Trees and Mini-Max

CSC D84 Assignment 2 Game Trees and Mini-Max 0 The Cats Strike Back Due date: Wednesday, Feb. 21, 9am (electronic submission on Mathlab) This assignment can be completed individually, or by a team of 2 students This assignment is worth 10 units toward

More information

COP Spring 2011 Assignment 4 Working with Servers Due Monday, 28th February in class (17H15)

COP Spring 2011 Assignment 4 Working with Servers Due Monday, 28th February in class (17H15) COP3502 - Spring 2011 Assignment 4 Working with Servers Due Monday, 28th February in class (17H15) February 2, 2011 1 Objective In this assignment you will be asked to use a virtual machine. You will configure

More information

CS 2316 Individual Homework 4 Greedy Scheduler (Part I) Due: Wednesday, September 18th, before 11:55 PM Out of 100 points

CS 2316 Individual Homework 4 Greedy Scheduler (Part I) Due: Wednesday, September 18th, before 11:55 PM Out of 100 points CS 2316 Individual Homework 4 Greedy Scheduler (Part I) Due: Wednesday, September 18th, before 11:55 PM Out of 100 points Files to submit: 1. HW4.py This is an INDIVIDUAL assignment! Collaboration at a

More information

CMSC 201 Fall 2016 Homework 6 Functions

CMSC 201 Fall 2016 Homework 6 Functions CMSC 201 Fall 2016 Homework 6 Functions Assignment: Homework 6 Functions Due Date: Wednesday, October 26th, 2016 by 8:59:59 PM Value: 40 points Collaboration: For Homework 6, collaboration is not allowed

More information

Project 4: ATM Design and Implementation

Project 4: ATM Design and Implementation University of Maryland CMSC414 Computer and Network Security (Spring 2015) Instructor: Dave Levin (project originally created by Jonathan Katz) Updated April 30, 9:00am: Valid user names are now at most

More information

Programming Assignment Multi-Threading and Debugging 2

Programming Assignment Multi-Threading and Debugging 2 Programming Assignment Multi-Threading and Debugging 2 Due Date: Friday, June 1 @ 11:59 pm PAMT2 Assignment Overview The purpose of this mini-assignment is to continue your introduction to parallel programming

More information

Operating Systems 2013/14 Assignment 1. Submission Deadline: Monday, November 18th, :30 a.m.

Operating Systems 2013/14 Assignment 1. Submission Deadline: Monday, November 18th, :30 a.m. Name Matriculation no. Tutorial no. Operating Systems 2013/14 Assignment 1 Prof. Dr. Frank Bellosa Dipl.-Inform. Marius Hillenbrand Dipl.-Inform. Marc Rittinghaus Submission Deadline: Monday, November

More information

CS Fundamentals of Programming II Fall Very Basic UNIX

CS Fundamentals of Programming II Fall Very Basic UNIX CS 215 - Fundamentals of Programming II Fall 2012 - Very Basic UNIX This handout very briefly describes how to use Unix and how to use the Linux server and client machines in the CS (Project) Lab (KC-265)

More information

Operating Systems (234123) Spring (Homework 3 Wet) Homework 3 Wet

Operating Systems (234123) Spring (Homework 3 Wet) Homework 3 Wet Due date: Monday, 4/06/2012 12:30 noon Teaching assistants in charge: Operating Systems (234123) Spring-2012 Homework 3 Wet Anastasia Braginsky All emails regarding this assignment should be sent only

More information

ECE 650 Systems Programming & Engineering. Spring 2018

ECE 650 Systems Programming & Engineering. Spring 2018 ECE 650 Systems Programming & Engineering Spring 2018 Networking Transport Layer Tyler Bletsch Duke University Slides are adapted from Brian Rogers (Duke) TCP/IP Model 2 Transport Layer Problem solved:

More information

: Principles of Imperative Computation. Fall Assignment 5: Interfaces, Backtracking Search, Hash Tables

: Principles of Imperative Computation. Fall Assignment 5: Interfaces, Backtracking Search, Hash Tables 15-122 Assignment 3 Page 1 of 12 15-122 : Principles of Imperative Computation Fall 2012 Assignment 5: Interfaces, Backtracking Search, Hash Tables (Programming Part) Due: Monday, October 29, 2012 by 23:59

More information

Operating Systems (234123) Spring 2017 (Homework Wet 1) Homework 1 Wet

Operating Systems (234123) Spring 2017 (Homework Wet 1) Homework 1 Wet Homework 1 Wet Due Date: 30/4/2017 23:00 Teaching assistant in charge: Yehonatan Buchnik Important: the Q&A for the exercise will take place at a public forum Piazza only. Critical updates about the HW

More information

CpSc 1111 Lab 4 Part a Flow Control, Branching, and Formatting

CpSc 1111 Lab 4 Part a Flow Control, Branching, and Formatting CpSc 1111 Lab 4 Part a Flow Control, Branching, and Formatting Your factors.c and multtable.c files are due by Wednesday, 11:59 pm, to be submitted on the SoC handin page at http://handin.cs.clemson.edu.

More information

Final Project: LC-3 Simulator

Final Project: LC-3 Simulator Final Project: LC-3 Simulator Due Date: Friday 4/27/2018 11:59PM; No late handins This is the final project for this course. It is a simulator for LC-3 computer from the Patt and Patel book. As you work

More information

Programming Assignment 1

Programming Assignment 1 CMSC 417 Computer Networks Spring 2017 Programming Assignment 1 Assigned: February 3 Due: February 10, 11:59:59 PM. 1 Description In this assignment, you will write a UDP client and server to run a simplified

More information

This homework is due by 11:59:59 PM on Thursday, October 12, 2017.

This homework is due by 11:59:59 PM on Thursday, October 12, 2017. CSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Homework 2 (document version 1.3) Process Creation and Inter-Process Communication (IPC) in C Overview This homework is due by 11:59:59

More information

EE382M 15: Assignment 2

EE382M 15: Assignment 2 EE382M 15: Assignment 2 Professor: Lizy K. John TA: Jee Ho Ryoo Department of Electrical and Computer Engineering University of Texas, Austin Due: 11:59PM September 28, 2014 1. Introduction The goal of

More information

CS 450 Introduction to Networking Spring 2014 Homework Assignment 1 File Transfer and Data Bandwidth Analysis Tool

CS 450 Introduction to Networking Spring 2014 Homework Assignment 1 File Transfer and Data Bandwidth Analysis Tool CS 450 Introduction to Networking Spring 2014 Homework Assignment 1 File Transfer and Data Bandwidth Analysis Tool Due: Monday 17 February. Electronic copy due at 10:30 A.M., Optional paper copy may be

More information

CSE 361 Fall 2017 Lab Assignment L2: Defusing a Binary Bomb Assigned: Wednesday Sept. 20 Due: Wednesday Oct. 04 at 11:59 pm

CSE 361 Fall 2017 Lab Assignment L2: Defusing a Binary Bomb Assigned: Wednesday Sept. 20 Due: Wednesday Oct. 04 at 11:59 pm CSE 361 Fall 2017 Lab Assignment L2: Defusing a Binary Bomb Assigned: Wednesday Sept. 20 Due: Wednesday Oct. 04 at 11:59 pm 1 Introduction NOTE: You will want to read this entire document carefully before

More information

Project 2 - Kernel Memory Allocation

Project 2 - Kernel Memory Allocation Project 2 - Kernel Memory Allocation EECS 343 - Fall 2014 Important Dates Out: Monday October 13, 2014 Due: Tuesday October 28, 2014 (11:59:59 PM CST) Project Overview The kernel generates and destroys

More information

CS 051 Homework Laboratory #2

CS 051 Homework Laboratory #2 CS 051 Homework Laboratory #2 Dirty Laundry Objective: To gain experience using conditionals. The Scenario. One thing many students have to figure out for the first time when they come to college is how

More information

CS 215 Fundamentals of Programming II Spring 2019 Very Basic UNIX

CS 215 Fundamentals of Programming II Spring 2019 Very Basic UNIX CS 215 Fundamentals of Programming II Spring 2019 Very Basic UNIX This handout very briefly describes how to use Unix and how to use the Linux server and client machines in the EECS labs that dual boot

More information

It is academic misconduct to share your work with others in any form including posting it on publicly accessible web sites, such as GitHub.

It is academic misconduct to share your work with others in any form including posting it on publicly accessible web sites, such as GitHub. p4: Cache Simulator 1. Logistics 1. This project must be done individually. It is academic misconduct to share your work with others in any form including posting it on publicly accessible web sites, such

More information

Lab 1 Implementing a Simon Says Game

Lab 1 Implementing a Simon Says Game ECE2049 Embedded Computing in Engineering Design Lab 1 Implementing a Simon Says Game In the late 1970s and early 1980s, one of the first and most popular electronic games was Simon by Milton Bradley.

More information

3COM0271 Computer Network Protocols & Architectures A

3COM0271 Computer Network Protocols & Architectures A 3COM0271 Computer Network Protocols & Architectures A Week 4: Bit Stuffing and Un-stuffing Practical You should be familiar with the idea of framing from Chapter 2 of Peterson and Davie and also from the

More information

Practical 2: Ray Tracing

Practical 2: Ray Tracing 2017/2018, 4th quarter INFOGR: Graphics Practical 2: Ray Tracing Author: Jacco Bikker The assignment: The purpose of this assignment is to create a small Whitted-style ray tracer. The renderer should be

More information

MP 3 A Lexer for MiniJava

MP 3 A Lexer for MiniJava MP 3 A Lexer for MiniJava CS 421 Spring 2012 Revision 1.0 Assigned Wednesday, February 1, 2012 Due Tuesday, February 7, at 09:30 Extension 48 hours (penalty 20% of total points possible) Total points 43

More information

CMPSCI 187 / Spring 2015 Postfix Expression Evaluator

CMPSCI 187 / Spring 2015 Postfix Expression Evaluator CMPSCI 187 / Spring 2015 Postfix Expression Evaluator Due on Thursday, 05 March, 8:30 a.m. Marc Liberatore and John Ridgway Morrill I N375 Section 01 @ 10:00 Section 02 @ 08:30 1 CMPSCI 187 / Spring 2015

More information

Lab 1: Simon. The Introduction

Lab 1: Simon. The Introduction Lab 1: Simon The Introduction Welcome to Lab! Feel free to get started until we start talking! The lab document is located on the course website: http://users.wpi.edu/~ndemarinis/ece2049/ You do not need

More information

Reliable File Transfer

Reliable File Transfer Due date Wednesday, Mar 14, 11:59pm Reliable File Transfer CS 5565 Spring 2012, Project 2 This project is worth 100 points. You may form teams of up to two students for this project. You are not required

More information

Homework 1 CS161 Computer Security, Spring 2008 Assigned 2/4/08 Due 2/13/08

Homework 1 CS161 Computer Security, Spring 2008 Assigned 2/4/08 Due 2/13/08 Homework 1 CS161 Computer Security, Spring 2008 Assigned 2/4/08 Due 2/13/08 This homework assignment is due Wednesday, February 13 at the beginning of lecture. Please bring a hard copy to class; either

More information

1. Introduction EE108A. Lab 1: Combinational Logic: Extension of the Tic Tac Toe Game

1. Introduction EE108A. Lab 1: Combinational Logic: Extension of the Tic Tac Toe Game EE108A Lab 1: Combinational Logic: Extension of the Tic Tac Toe Game 1. Introduction Objective This lab is designed to familiarize you with the process of designing, verifying, and implementing a combinational

More information

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

CS 447 : Networks and Data Communications Programming Assignment #02 Total Points: 150 CS 447 : Networks and Data Communications Programming Assignment #02 Total Points: 150 Assigned Date : Tuesday, October 23, 2018 Due Date : Tuesday, November 06, 2018 @ 12:29:59 p.m. Overview Your second

More information

A Tutorial on using Code::Blocks with Catalina 3.0.3

A Tutorial on using Code::Blocks with Catalina 3.0.3 A Tutorial on using Code::Blocks with Catalina 3.0.3 BASIC CONCEPTS...2 PREREQUISITES...2 INSTALLING AND CONFIGURING CODE::BLOCKS...3 STEP 1 EXTRACT THE COMPONENTS...3 STEP 2 INSTALL CODE::BLOCKS...3 Windows

More information

Lab 1 Implementing a Simon Says Game

Lab 1 Implementing a Simon Says Game ECE2049 Embedded Computing in Engineering Design Lab 1 Implementing a Simon Says Game In the late 1970s and early 1980s, one of the first and most popular electronic games was Simon by Milton Bradley.

More information

CS 361S - Network Security and Privacy Spring Project #2

CS 361S - Network Security and Privacy Spring Project #2 CS 361S - Network Security and Privacy Spring 2014 Project #2 Part 1 due: 11am CDT, March 25, 2014 Part 2 due: 11am CDT, April 3, 2014 Submission instructions Follow the submission instructions in the

More information

************ THIS PROGRAM IS NOT ELIGIBLE FOR LATE SUBMISSION. ALL SUBMISSIONS MUST BE RECEIVED BY THE DUE DATE/TIME INDICATED ABOVE HERE

************ THIS PROGRAM IS NOT ELIGIBLE FOR LATE SUBMISSION. ALL SUBMISSIONS MUST BE RECEIVED BY THE DUE DATE/TIME INDICATED ABOVE HERE Program 10: 40 points: Due Tuesday, May 12, 2015 : 11:59 p.m. ************ THIS PROGRAM IS NOT ELIGIBLE FOR LATE SUBMISSION. ALL SUBMISSIONS MUST BE RECEIVED BY THE DUE DATE/TIME INDICATED ABOVE HERE *************

More information

A heap, a stack, a bottle and a rack. Johan Montelius HT2017

A heap, a stack, a bottle and a rack. Johan Montelius HT2017 Introduction A heap, a stack, a bottle and a rack. Johan Montelius HT2017 In this assignment you re going to investigate the layout of a process; where are the different areas located and which data structures

More information

CS 385 Operating Systems Fall 2011 Homework Assignment 5 Process Synchronization and Communications

CS 385 Operating Systems Fall 2011 Homework Assignment 5 Process Synchronization and Communications CS 385 Operating Systems Fall 2011 Homework Assignment 5 Process Synchronization and Communications Due: Friday December 2 at 8:00 P.M. via Blackboard Overall Assignment Man Pages For this assignment,

More information

Cloud Machine Manager Quick Start Guide. Blueberry Software Ltd

Cloud Machine Manager Quick Start Guide. Blueberry Software Ltd Blueberry Software Ltd Table of Contents 1. How to organise Amazon servers into groups for different roles or projects.......................... 1 1.1. Getting started.....................................................................

More information

CS 211 Programming Practicum Fall 2018

CS 211 Programming Practicum Fall 2018 Due: Wednesday, 11/7/18 at 11:59 pm Infix Expression Evaluator Programming Project 5 For this lab, write a C++ program that will evaluate an infix expression. The algorithm REQUIRED for this program will

More information

Lab 2: Implementing a Reliable Transport Protocol (30 points)

Lab 2: Implementing a Reliable Transport Protocol (30 points) Lab 2: Implementing a Reliable Transport Protocol (30 points) Overview In this laboratory programming assignment, you will be writing the sending and receiving transport-level code for implementing a simple

More information

CS447-Network and Data Communication Project #2 Specification, Fall 2017 Due December 5, 2017

CS447-Network and Data Communication Project #2 Specification, Fall 2017 Due December 5, 2017 CS447-Network and Data Communication Project #2 Specification, Fall 2017 Due December 5, 2017 1. Introduction In this project, we will develop a Sliding-Window flow-control (SWFC) simulator using C/C++

More information

Programming Project 1: Lexical Analyzer (Scanner)

Programming Project 1: Lexical Analyzer (Scanner) CS 331 Compilers Fall 2017 Programming Project 1: Lexical Analyzer (Scanner) Prof. Szajda Due Thursday, September 21, 11:59:59 pm 1 Overview of the Programming Project Programming projects I IV will direct

More information

UNIVERSITY OF NEBRASKA AT OMAHA Computer Science 4500/8506 Operating Systems Summer 2016 Programming Assignment 1 Introduction The purpose of this

UNIVERSITY OF NEBRASKA AT OMAHA Computer Science 4500/8506 Operating Systems Summer 2016 Programming Assignment 1 Introduction The purpose of this UNIVERSITY OF NEBRASKA AT OMAHA Computer Science 4500/8506 Operating Systems Summer 2016 Programming Assignment 1 Introduction The purpose of this programming assignment is to give you some experience

More information

UNIVERSITY OF NEBRASKA AT OMAHA Computer Science 4500/8506 Operating Systems Fall Programming Assignment 1 (updated 9/16/2017)

UNIVERSITY OF NEBRASKA AT OMAHA Computer Science 4500/8506 Operating Systems Fall Programming Assignment 1 (updated 9/16/2017) UNIVERSITY OF NEBRASKA AT OMAHA Computer Science 4500/8506 Operating Systems Fall 2017 Programming Assignment 1 (updated 9/16/2017) Introduction The purpose of this programming assignment is to give you

More information

CS ) PROGRAMMING ASSIGNMENT 11:00 PM 11:00 PM

CS ) PROGRAMMING ASSIGNMENT 11:00 PM 11:00 PM CS3114 (Fall 2017) PROGRAMMING ASSIGNMENT #4 Due Thursday, December 7 th @ 11:00 PM for 100 points Due Tuesday, December 5 th @ 11:00 PM for 10 point bonus Last updated: 11/13/2017 Assignment: Update:

More information

COMP/ELEC 429/556 Project 2: Reliable File Transfer Protocol

COMP/ELEC 429/556 Project 2: Reliable File Transfer Protocol COMP/ELEC 429/556 Project 2: Reliable File Transfer Protocol Assigned: Thu, 28 September Due: 11:55pm, Tue, 24 October 1 Description The objective of this project is to give you hands-on experience with

More information

Lab 5: SDC Virtual Machine

Lab 5: SDC Virtual Machine Lab 5: SDC Virtual Machine Due Date: Thursday 3/9/2017 11:59PM This lab covers the material in lectures 10-12. You will be creating a virtual (software-based) implementation of a basic, decimal-based Von

More information

CS 0449 Project 4: /dev/rps Due: Friday, December 8, 2017, at 11:59pm

CS 0449 Project 4: /dev/rps Due: Friday, December 8, 2017, at 11:59pm CS 0449 Project 4: /dev/rps Due: Friday, December 8, 2017, at 11:59pm Project Description Standard UNIX and Linux systems come with a few special files like /dev/zero, which returns nothing but zeros when

More information

CS 167 Final Exam Solutions

CS 167 Final Exam Solutions CS 167 Final Exam Solutions Spring 2018 Do all questions. 1. [20%] This question concerns a system employing a single (single-core) processor running a Unix-like operating system, in which interrupts are

More information

SoupBinTCP for Nasdaq Nordic. Version August 21, 2015

SoupBinTCP for Nasdaq Nordic. Version August 21, 2015 SoupBinTCP for Nasdaq Nordic Version 3.00.2 August 21, 2015 Overview Confidentiality/Disclaimer Confidentiality/Disclaimer This specification is being forwarded to you strictly for informational purposes

More information

1 Installation (briefly)

1 Installation (briefly) Jumpstart Linux Bo Waggoner Updated: 2014-09-15 Abstract A basic, rapid tutorial on Linux and its command line for the absolute beginner. Prerequisites: a computer on which to install, a DVD and/or USB

More information

Lab 2: Threads and Processes

Lab 2: Threads and Processes CS333: Operating Systems Lab Lab 2: Threads and Processes Goal The goal of this lab is to get you comfortable with writing basic multi-process / multi-threaded applications, and understanding their performance.

More information