Spring 2022 IS496 Course Mini-Project
Total Points: 120 points
Proposal Due: April 4, 2022, by the end of the day (11:59 pm CST).
Project Due: May 6, 2022, by the end of the day (11:59 pm CST).
Grouping: To be completed by a group.
Note: This project is for graduate students only.
Overview
The project in this course will be open-ended.
The goal of this assignment is to provide you with an opportunity to apply what you have learned from the previous programming assignments (PGs) and the course to a network application you are excited about.
You will propose, design, implement, and report upon a project in groups of two or three students. (Please let the TA know if your group for this project is different from your PG group.)
The project needs to be implemented using Socket programming learned in this class. However, it cannot be a simple integration of existing projects/codes (e.g., PGs, GitHub repositories).
You are welcome to seek out and exploit external manuals, books, websites, and other documentation that can help you to complete your project, provided that you indicate what sources you have used in your project proposal, project report, source codes, and README file (please refer to Submissions section for the details).
However, the core functions of the application must be designed and implemented solely by you and your project partner(s).
Note: If you have any questions about the project ideas or requirements, you can always check with the instructor or the TA.
Project Ideas
The following are some ideas for possible projects. These are just some examples to help you get started. You can choose from these examples or come up with your own ideas!
- Online Pong Game. The Pong game is played by two competitors. A ball bounces between the two sides of the court, and each player controls a paddle to deflect the ball when it reaches their side. The goal is to score points by getting the ball past the opponent's paddle.
An online Pong game is designed to be played by two players (i.e., a server hosting the game and a client joining the game) over the network where the game state (i.e., paddle/ball positions, scores, etc.) is synchronized over the network. A few challenges need to be addressed to develop a networked Pong game: 1) game state synchronization, such as whether to synchronize at a fixed rate or only when an event happens (e.g., a paddle moves, a point is scored); 2) score discrepancy resolution, namely how to resolve the score discrepancy when the ball and paddle move at about the same time but a point is scored on one side of the game but is not scored on the other side due to the network delay.
A starter code of the local Pong game (i.e., the game that can be played locally) can be downloaded here: Python and C/C++.
- Online Reservation Management System. An online reservation management system can help businesses (e.g., restaurants, hotels, etc.) with scheduling and managing online bookings. The reservation database dynamically changes and the reservation management system should guarantee that there are no conflict bookings. Conflict bookings indicate that the number of reservations for the same date and time exceeds the number of available resources (e.g., restaurant tables at the same time slots, hotel rooms on the same day).
The system (i.e., server) should handle the requests (e.g., make a new booking, modify/cancel existing bookings) simultaneously from multiple users (i.e., client). The system can also be designed to manage the reservations for multiple businesses.
- COVID-19 Vaccine Availability Checking System. The availability of the COVID-19 vaccine is limited due to the strict storage conditions and handling requirements of the vaccines. The COVID-19 vaccine availability checking system can help people find pharmacies and other locations that offer COVID-19 vaccines by different vaccine manufacturers. The system (i.e., server) is expected to handle the requests from two types of clients: 1) patients: the eligible patients who are looking for the nearest locations for available COVID-19 vaccine; 2) vaccine providers: the pharmacies or other locations that periodically update the vaccine availability.
The server should handle the requests (e.g., checking vaccine eligibility/availability, updating vaccine availability information) simultaneously from multiple patients/vaccine providers (i.e., client).
You may use a list of pharmacies in Champaign county (link) to set up your initial database and expand it to other locations if you want.
- Movie Recommendation/Search Application: IMDb is an online database of information related to films, television series, home videos, video games, and streaming content online.
Examples of the functions of the movie recommendation/search server include: 1) retrieving a list of relevant movies from the IMDb database based on the user's (i.e., client) searching criteria (e.g., movie name, genre, cast, rating, runtimes, etc.);
2) displaying essential information (e.g., director, cast members, company, year, etc.) of a retrieved movie that is selected by the user;
3) allowing the user to register for/login to an account and save/view their favorite movie list.
The server is also expected to interact with different clients simultaneously.
The IMDb database API can be accessed with the Python library IMDbPY.
- Come Up with Your Own. The above examples are only ideas to get you thinking! You are encouraged to come up with your own idea or modify one of those above!
Submissions
- Project Proposal (Due: April 4, 2022, by the end of the day)
Submit a one-page proposal of your proposed project to Canvas. One submission per group is sufficient. Your proposal must:
- Explain the high-level idea of the computer networks application your group proposes to develop and the key challenges to be addressed and/or key functions to be implemented in your application. Feel free to include system diagrams, illustrative figures, or mock-up interfaces that will be helpful to understand your idea.
- Justify how you will apply Socket programming to develop the key networking functions of the application you propose. Specify which protocol (i.e., UDP, TCP, or both) you plan to use and why.
- [Optional] Identify any external sources (e.g., starter code, database) that you plan to use in the project and how you will use them. You will also need to explicitly justify what is your group's contribution to the project if you choose to use external sources.
- Propose a timeline and milestones to finish the project on time.
- Indicate the main responsibility of each team member, such as application design, implementation, report write-up, demo preparation, etc.
Note: the feedback of the proposal will be sent to each group within one week of the proposal due date. The feedback will include the assessment of the challenging level of the proposed project and any suggestions/comments of the proposed project.
- Final Project (Due: May 6, 2022, by the end of the day)
Submit a gzipped tar file of your entire assignment package to the corresponding assignment on Canvas. One submission per group is sufficient. The submission must include the following:
- Project Report
- A 3-5 pages report that describes the design of your application, including the goal of the application, the target groups/users who will benefit from the application, the workflow and key functions of your application and how you implement them, any external sources used, any technical challenges you have encountered and how you resolve them. In addition, you will need to indicate the contribution of each team member.
- A demo video (in .mp4 or .mov) that shows how your application works. You may record your video with the narrative using Zoom or other screen recording apps.
- Working Code
- Source code file(s) with proper comments for the network application.
- The name and netid of each team member (that are added at the beginning of each source code file).
- README: Listing of the included file names and example commands to run your code in the submission.
Note: If your work contains the codes from external sources, you will also need to be clear about which portion of your codes is borrowed from which source in the README file and proper comments in the source codes.
Grading Rubric
Total: 120 points
- Project Proposal (20 pts total)
- [20 pts] A clear description of the proposed network application (please refer to the detailed requirements above)
- Project Report (40 pts total)
- [30 pts] A project report meets the requirements discussed above.
- [10 pts] An informative demo video
- Project Code (60 pts total)
- [5 pts] Code compiles without warnings or errors
- [5 pts] Reasonable code performance (runs without errors)
- [30 pts] Functions of the application that meet the description in the project report
- [20 pts] The challenging level of the project