Introduction
The purpose of this project is to make sure that you understand and are familiar with the concepts covered in the lectures, including distributed computing, multithreading, thread definition, creation, management, synchronization, cooperation, event-driven programming, client and server architecture, service execution model of creating a new thread for each request, the performance of parallel computing, and the impact of multi-core processors to multithreading programs with complex coordination and cooperation. Furthermore, you are able to apply these concepts in a programming project.
You can choose to do this project as an individual project or as a team project of two or three members. In the case of the team project, a declaration must be given at the end of the assignment, which identifies the parts of individual contributions and team efforts. An overall percentage of contribution of each member (e.g., 50% and 50%, or 30%, 35% and 35%) must be given, which will be used as a reference of assigning (scaling) grades. Only one copy of the project should be submitted by one of the team members. For this project, we do not need a formal team building process. For a team project, one copy should be submitted by one team member. For an individual project, each one just submit one’s own project. If one submits an individual project, one may not work with anyone else. Any similarity between two individual projects can lead to a cheating case investigation.
Not for this project, but for the following projects 3 and 5, a formal team-building process is required and a document is given separately. We need to know the teams in advance before we can start project 3, because we need to create a server site for each team.
Section I Preparation and Practice Exercises (No submission required)
No submission is required for this section of exercises. However, doing these exercises can help you better understand the concepts and thus help you in quizzes, exams, as well as the assignment questions.
1. Reading: Textbook Chapter 2.
2. Answer the multiple choice questions in text section 2.8. Studying the material covered in these questions can help you prepare for the lecture exercises, quizzes, and the exams.
3. Study for the questions 2 through 20 in text section 2.8. Make sure that you understand these questions and can briefly answer these questions. Study the material covered in these questions can help you prepare for the exams and understand the homework assignment.
4. Test the programs given in questions 24 and 25 in text section 2.8. Identify the problems in the program and give correct versions of the programs.
5. If you want solve a more challenging problem in multithreading, you can do question 26 in text section 2.8.
6. Tutorial. To help you complete the project in Section II, you may want go through the tutorial given in the textbook chapter 2, which consists of
6.1 Reading the case study in text section 2.6.3.
6.2 Implementing and testing the program given in the case study. The program can be used as the starting point for your project in Section II.
6.3 Extending the program based on the requirement in Section II.
DescriptionIn this final assignment, the students will demonstrate their ability to apply two ma
Path finding involves finding a path from A to B. Typically we want the path to have certain properties,such as being the shortest or to avoid going t
Develop a program to emulate a purchase transaction at a retail store. Thisprogram will have two classes, a LineItem class and a Transaction class. Th
1 Project 1 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of
1 Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of