1. 程式人生 > >現代軟體工程 作業 1 個人專案

現代軟體工程 作業 1 個人專案

這是現代軟體工程課的個人專案作業

  1. 個人專案 Individual Project: 一個人獨立完成.
  2. 時間: 可以考慮在第一週就給同學們這個專案; 也可以考慮在團隊專案Alpha 階段之後進行, 作為一個緩衝。
  3. 考核內容
    1. 基本原始碼控制的用法
    2. 程式的測,迴歸測試
    3. 效能測試
    4. 網路程式設計
    5. C/C++/C# 等基本語言的運用。 (考慮到有些同學的基礎參差不齊)

Individual Project (example 1)

we had played the “number game” once, now what if you can design an AI algorithm to play with other AI programs?

write a program to play the “number game” in a group setting.

requirement: a game server program, it manages “players”, and keep the score of a “number game tournament”. (we need a volunteer to write such server).

a tournament has many rounds of matches, during one match, each player submits one number, and the server calculates the g-number, decides the winner/loser, and send back the result.

for example, our formal Tournament of Golden Number game will consists of 100 rounds.

a player program: each student will write one. it can do the following:

  1. register itself to the server, get game info (how many rounds per tournament)
  2. submit the “number” upon request from server
  3. get the result of last round

My requirement for server is that it should be able to run at least 10 rounds of matches/minute, and for the client, it needs to send data (your number) to server with no more than 1 sec delay.

the player program can be implemented in any language as long as it can communicate with the server via pre-defined protocols.

rules:

number: a rational number between (100, 0), not equal to 100, or 0.

in each match, the winner (or winners) is the player whose number is closest to the G-number, winner will get 10 points.

the loser (or losers) is the player whose number is furthest away from G-number. loser will get –3 points.

due date: after alpha release, on the 7th week.

Individual Project (example 2)

write a program, to calculate the frequency of english words in a set of text documents.

skills to practice: 

regression test, unit test, performance analysis, performance tuning

check in, check out, and other basic Source Code Control skills