Computer System Project1
Background. Nowadays, search engines have been an essential part of our lives, e.g., Google and
Bing, which have significantly improved our productiveness. There are various types of searching
services, among which keyword search is the dominant one, namely searching by keywords. While
keyword search works well for documents, pages and websites, it faces a big challenge when searching
for images. This is because linking images with keywords is typically difficult for computers as it
requires understanding on the semantic of images. For this purpose, tagging images with keywords
is one of the most effective ways to help computers understand images’ semantic, and this is
also the first step to help machines learn (by telling them which is correct and which is wrong).
Unfortunately, tagging a large number of images is boring and requires a substantial amount of
human power. In this project, you will make the boring tagging process more funny by implementing
a network game server that tags images as people play. (The idea was invented by the inventor
of re-Captcha and Duo-lingo; Google bought the company and shut down the game.)
The Rules of the Game. The game consists of two players and one server, where each of the
players can only communicate with the server (but the other player). At the beginning, when the
two players log on to the server, the server sends both of them a same image. The game then
starts; the players submit words or phrases to the server, one at a time, without being told what
the other player has inputed. The goal for both the players is to enter a word or a phrase that has
been submitted by the other as soon as possible. Obviously, in order to maximise the chance of
getting a match, the two players would better to enter words that describe the image well, since it
is the only information shared by both of the two. (The image is, therefore, tagged.) Once the goal
is achieved, the game ends; the server sends a web page indicating that the game is completed and
prompting the players to play again. If both the players agree to play again, the process repeats
with a new image.
Project Basic Functionalities. In this project, you are asked to write a program to implement
(by socket programming in C) the aforementioned game server supporting two players from
two different browsers over HTTP. The program should allow users to configure both the server IP
address and the port number. Specifically, you need to implement the following basic functionalities
of the server, where the html source files of all the pages will be provided.