專利名稱:用于編碼競賽的系統和方法
技術領域:
這個發明涉及到用于競賽的基于計算機的方法和系統,且更具體而言涉及到提供編碼競賽的方法和系統。
背景信息在美國和其它別的地方,計算機在工作場所和個人努力中已經成為人們日常生活的一部分。這是因為通用計算機可以被編程來運行各種軟件程序,每個軟件程序提供不同的處理和連網功能。計算機程序設計員開發計算機代碼。一些公司雇傭大量計算機程序設計員來代表公司開發代碼。
像許多其它活動一樣,進行編碼需要多種技能。例如,一些編碼員具有極高的技能,且例如,非常精確且高效。專業鑒定提供由個人所擁有的有關基本技能的信息,但總體上并不存在方便地區分高技能編碼員與普通編碼員的客觀方法。客觀測量的這一缺乏意味著高技能的編碼員可能并沒有得到其真實的價值的補償。此外,在美國和其它別的地方,被認為“專業人員”的勞動者,如律師、會計師、醫生及管理人員比一般人士得到更高的工資。而典型地具有良好教育、顯著的責任心及相對獨特能力的高技能程序設計員卻被視為生產和行政管理人員,而未被視為專業人員。在其它學科(例如硬件設計、及其它工程學科)中對于計算機編碼員也是如此。
在雇傭過程中,公司典型地讓編碼員經受可甚至包括對候選者編碼技能的一些實際測試的面試過程。但是對于公司而言即便進行了一些技能測試,但很難最后識別出具有最佳技能、最準確且最高效等的那些程序設計員。這使得想要雇傭杰出編碼員的公司難以識別且雇傭他們,并且對于杰出編碼員而言更難以其可應得的補償水平被雇傭。
發明概述因此存在對這樣的機制的需求,所述機制為技能編碼員建立市場性并提高其收入,以反映其工作產品所產生的價值。總體上,在本發明的一個方面中,用于提供編碼競賽的系統和方法致力于這些及其它目的。通過提供基于計算機的編碼競賽,成功的編碼競賽參加者可以從其它編碼員中被區分出來,這既有助于編碼員又有助于其雇主。可識別出的較好編碼員可以得到更高的工資,且雇主具有客觀手段來比較候選者且找到好的編碼員。在一些實施例中,因為競賽提供一種或多種娛樂、獎勵及未來雇傭機會,所以好的編碼員具有參加的動機。
在一些實施例中,希望獲得對有技能編碼員的接觸機會的實體贊助編碼競賽。在一些實施例中,采用等級系統來提供一種可以用來評估程序設計員的被證實的技能、知識及能力的量度。
在各種實施例中,從利用通過網絡進行通信的計算機而提供編碼競賽的意義上講,編碼競賽被“在線”加以提供。編碼競賽的參加者,也被稱為競賽者,使用與競賽服務器進行通信的客戶計算機。如果(例如)網絡為全球網絡如因特網,則所述競賽者可以位于世界上任何地方,或者如果(例如)網絡為局域網,則編碼競賽的參加者可位于附近,甚至可位于同一房間內。
在一些實施例中,作為編碼競賽的一部分,服務器計算機為一個或多個競賽者提供一個要求每個競賽者開發計算機代碼的計算機編碼問題(例如測試問題)。所述計算機代碼可例如是一個完整的計算機應用程序或計算機應用程序的大部分或一小部分(例如子程序或子系統、一個或多個對象等)。所述代碼可以用專門的編程語言(例如C++、Java、C#、Fortran、perl等)來寫,或可按照編程語言或編碼格式的選擇之一來進行編碼。
除了進行編碼以外,編碼問題可還要求對問題的設計和或分析。計算機代碼還可用于除計算機應用程序以外的其它事情;例如,它可是計算機程序的設計,或者它可是電子電路的設計或實施,或者用于另一工程設計和/或實施。計算機代碼可是這樣的模型,其將被前向工程為機器可讀格式用于檢測目的。由競賽者開發的代碼總體上被稱為計算機代碼,而無論它是應用程序的全部或一部分或是其它別的。
在一些實施例中,部分編碼競賽在其中兩個或多個競賽者進行競賽的虛擬“房間”中進行。在虛擬房間中的每個競賽者接收到一個編碼問題或多個編碼問題,所述問題可具有變化的難度。競賽者響應于一個或多個所呈現的編碼問題寫下計算機代碼。當競賽者的代碼已經準備好時,相應的客戶計算機將競賽者的計算機代碼傳遞到服務器進行評估。競賽者完成計算機代碼所占用的時間可被加以記錄。
在一些實施例中,服務器評估所述計算機代碼,且為競賽者的提交內容授予若干分數。在一些實施例中,競賽包括多輪次,其中服務器評估每輪次中競賽者的計算機代碼。服務器還可確定競賽者的技能水平等級。競賽者技能水平的確定可例如導致為競賽者授予獎勵、為競賽者引見就業機會、吸引對競賽的贊助并為競賽的贊助商引見雇傭機會。
在一些實施例中,競賽者提交在競賽的第一階段所要求的響應于計算機編碼問題的計算機代碼,并且競賽者的響應時間被加以記錄。在競賽的第一階段期間由競賽者所寫的計算機代碼在競賽的下一階段被加以驗證。通過將預先設定的測試數據作為輸入,所提交的代碼可被加以驗證。此外,每個競賽者可有機會回顧由其它競賽者所提交的計算機代碼,并且提交測試數據,此測試數據作為對其它競賽者計算機代碼的輸入而提供用于對那個代碼加以驗證。通過這個方法,競賽者可以對其它競賽者的工作提出挑戰。
在一個實施例中,類似于吸引許多觀眾的體育競賽,一人或多個競賽在論壇環境下在程序設計員當中展開。競賽者彼此相鄰而座,且觀眾可觀察到競賽,且觀看活動當中的程序設計員。還有顯示器及其它輔助設施來加強觀眾對競賽的頎賞。在其中競賽是通過全球計算機網絡如因特網而進行的另一實施例中,競賽是在“虛擬的論壇”環境中進行的,其中觀眾可以通過計算機網絡觀察到在虛擬房間內的活動。在一些實施例中,觀眾(即可是在實地或通過網絡)不僅可以觀察到編碼競賽,而且可以通過提交將作為競賽者提交內容的輸入的測試數據來參加。
在本發明的一個方面,一種用于提供編碼競賽的方法包括下述步驟通過通信網絡向競賽者傳遞編碼問題以及接收由一個或多個競賽者響應于通過通信網絡所傳遞的編碼問題而建立的計算機代碼。所述方法還包括這樣的步驟,即確定所接收的計算機代碼對由非競賽者一方所提交的測試數據的響應,并且評估所確定的響應,其中所述方可例如是系統管理員或服務器、裁判、另一競賽者、競賽觀眾等等。
在一個實施例中,所述方法包括這樣的步驟,即提供作為對參考代碼的輸入的測試數據,并且將參考代碼的輸出與所接收的計算機代碼的輸出相比較。在一個實施例中,所接收的計算機代碼可基于這樣的因數,如所確定的響應的正確性、所確定的響應的精確性及所確定的響應的速度被加以評估。基于對所確定的計算機代碼對測試數據的響應的評估,可授予競賽者分數。還可基于所授予的分數以及基于從前的競賽表現給競賽者賦予一等級。在一個實施例中,基于競賽者的等級,競賽者被分配到一個分區。例如競賽者可被分配到下述分區之一,其中第一分區是針對從前已經獲得了第一等級或更高等級的競賽者,且第二分區是針對具有等級基本上等于零或低于預定設定分區等級的競賽者。取決于競賽者的數量及技能水平的擴展范圍還可存在第三、第四分區等。分區的使用使競賽者保持對競賽的興趣。
在另一方面,用于評估競賽者技能水平的方法包括下述步驟,即在競賽期間電子性地將編碼問題通信到競賽者,以及在競賽期間電子性地接收來自競賽者之一的響應于編碼問題的計算機代碼。所述方法還包括這樣的步驟,即自動地評估所接收的計算機代碼且基于所接收的計算機代碼給競賽者授予分數。所述方法額外地還包括基于授予競賽者的分數值來確定競賽者的競賽等級。
在一些實施例中,所述方法包括基于從前的競賽等級和接收到編碼問題的競賽者總數量來確定競賽的平均等級。所述方法還可以包括基于競賽者從前的等級、接收到編碼問題的競賽者總數量及競賽者等級的變動性(volatility)來確定競賽的競賽因數。在另一實施例中,所述方法包括確定競賽者的最大等級增加。在另外一個實施例中,所述方法包括估算給一個競賽者授予比競賽中其它競賽者高的分數的概率。對競賽者等級的確定還可包括當競賽者已經被評級的頻率增加時,以更小的增量調節等級。
在本發明的另外一個方面中,一種用于向潛在雇主提供競賽者信息的方法包括下述步驟接收來自競賽者的競賽者信息,以輸入到在線編碼競賽中,以及提供競賽者之間的在線編碼競賽。所述方法還包括基于在在線編碼競賽中的表現向每個競賽者賦予一等級,以及向競賽者的潛在雇主提供一些或全部競賽者信息及一個或多個競賽者被賦予的等級。在一個實施例中,所述方法還包括基于在在線競賽中的表現,為競賽者授予分數。競賽者信息可包括這樣的信息如競賽者的家庭地址、電話號碼、工作地址、電子郵件地址、專業經驗、工作經歷及某些人口統計信息。在另一實施例中,基于給競賽者授予的分數賦予給競賽者一等級。
在另一方面,一種用于向競賽者授予獎勵的方法包括提供競賽者之間的在線編碼競賽,以及基于在競賽中的表現給每個競賽者授予一個分數值。所述方法還包括向已經被授予分數值高于預先設定獎勵分數值的競賽者子集合授予獎勵。所授予的獎勵取決于相對于預先設定分數值的被授予的分數。獎勵可以包括,但可并不局限于金錢獎勵、與有前景雇主的面試、有形物品、工作開價或一些組合。
在另一方面,一種用于在編碼競賽中做廣告的方法包括接收來自競賽者的競賽者信息,以輸入到在線編碼競賽中。所述方法還包括下述步驟即提供一個或多個競賽者之間的在線編碼競賽,并且在競賽期間為每個競賽者提供一個或多個用于觀看的廣告。所述方法額外地還包括跟蹤每個競賽者觀看每個廣告的時間,并且向廣告商提供競賽者信息及所跟蹤的廣告觀看時間。
在一些實施例中,競賽者信息被以總計形式提供給廣告商。例如,服務器提供出這樣的信息,即具有等級高出預定值的20個編碼員總計觀看了三十分鐘廣告。在另外的實施例中,服務器基于競賽者信息向競賽者提供廣告。例如,服務器可向具有Java編程經驗的競賽者提供一個廣告,而向具有C++編程經驗的競賽者提供另一廣告。
在一個方面,一種用于提供編碼競賽的裝置包括與網瀏覽器通信的網服務器。網瀏覽器被競賽者所使用以接收競賽請求并且使競賽者能夠利用客戶軟件進入到編碼競賽中。所述裝置還包括與客戶軟件通信的客戶接口服務器。客戶接口服務器使編碼問題能夠傳輸到客戶軟件且能夠接收響應于編碼問題的計算機代碼。所述裝置還額外地包括與網服務器和客戶接口服務器通信的應用服務器。應用服務器解釋客戶請求、競賽請求、以及/或計算機代碼。所述裝置還包括與應用服務器通信的競賽服務器。競賽服務器對由競賽者提交的計算機代碼進行編譯、執行計算機代碼、測試計算機代碼、以及/或計算競賽者的等級。
附圖的簡要說明在附圖中,從不同的角度上相似的參考符號總體上指相同的部件。同樣,附圖沒有必要依照比例,而是將重點總體上放在對本發明原理的示例上。
圖1是根據本發明的編碼競賽系統的一個實施例的方框圖。
圖2是在圖1編碼競賽系統中的服務器的一個實施例的方框圖。
圖3是圖2中服務器的一個實施例的更詳細方框圖。
圖4是用于編碼競賽的服務器一個實施例的操作流程圖。
圖5是用于編碼競賽的服務器的一個實施例的更詳細操作流程圖。
圖6是由服務器所完成的計算機代碼對測試數據的響應評估的一個圖7是在圖4的編碼競賽之前用于資格檢定測試的服務器的一個實施例的操作流程圖。
圖8是用于完成圖7中資格檢定測試的服務器的一個實施例的操作流程圖。
圖9是用于在編碼競賽中賦予等級的服務器的一個實施例的操作流程圖。
圖10是用于吸引編碼競賽贊助商的服務器的一個實施例的操作流程圖。
圖11是用于在編碼競賽中授予獎勵的服務器的一個實施例的操作流程圖。
圖12是參加者通過競賽淘汰輪次至全國輪次編碼競賽的進程的一個圖13是在編碼競賽期間所顯示的網頁的一個實施例的實例性屏幕照片。
圖14是在編碼競賽期間所顯示的編碼問題選擇屏幕的一個實施例的實例性屏幕照片。
圖15是在編碼競賽期間所顯示的編碼窗的一個實施例的實例性屏幕照片。
圖16是在編碼競賽期間所顯示的挑戰窗的一個實施例的實例性屏幕照片。
詳細說明參考圖1,在一個實施例中,編碼競賽系統100包括至少一個服務器104、以及至少一個客戶108、108′、108″(總體上為108)。如所示,編碼競賽系統100包括三個客戶108、108′、108″,但是這僅是作為示范性的目的,并且其意味著可以存在任何數量的客戶。優選地客戶108作為運行在個人計算機(例如具有INTEL處理器或APPLE MACINTOSH的PC)上的軟件而被實施,所述個人計算機能夠運行這樣的操作系統,如來自Redmond,Washington的Microsoft Corporation的MICROSOFTWINDOWS系列操作系統、來自Cupertino,California的Apple Computer的MACINTOSH操作系統、及各種種類的Unix,如來自SUN MICROSYSTEMS的SUN SOLARIS以及來自Durham,North Carolina的RED HAT,INC的GNU/Linux(及其它)。客戶108還可以在這樣的硬件如智能或遲鈍終端設備、網絡計算機、無線設備、信息器件、工作站、小型計算機、大型計算機或其它計算設備上被實施,所述硬件作為通用目的的計算機或僅用作為競賽系統100中的客戶108而服務的專用目的硬件設備而工作。
總體上,客戶108由競賽者來操作且由競賽者來使用,以參加編碼競賽。在各種實施例中,客戶計算機108包括網瀏覽器116、客戶軟件120或兩者。網瀏覽器116允許客戶108請求一具有網頁請求的網頁(例如來自服務器104)。網頁的實例是一包括計算機可執行的或可解釋的信息、圖表、聲音、文本以及/或視頻的數據文件,其可以被顯示、執行、播放、處理、流涌(stream)或存儲且其可以包含到其它網頁的鏈接、或指示器。在一個實施例中,客戶108的用戶人工地請求來自服務器104的網頁。作為另一選擇地,客戶108自動地向網瀏覽器116做出請求。市場上可購買到的網瀏覽器軟件116的實例是由Redmond,Washington的Microsoft Corporation所提供的INTERNET EXPLORER,以及由MountainView,California的Netscape Communications Corporation所提供的NETSCAPE NAVIGATOR。
在一些實施例中,客戶108還包括客戶軟件120。客戶軟件120為客戶108提供允許競賽者參加編碼競賽的功能性。客戶軟件120可以各種形式被實施,例如,它可以被下載到客戶108且與網瀏覽器116聯合運行的Java applet形式,或者客戶軟件120可采用以多平臺語言如Java或以本機處理器可執行碼來實施的獨立應用形式。在一個實施例中,如果客戶軟件120在客戶108上執行,則其通過通信網絡112打開到服務器104的網絡連接,并且經由那個連接進行到服務器104的通信。客戶軟件120和網瀏覽器116可是單客戶-服務器接口124的一部分;例如,客戶軟件可作為到網瀏覽器116的“插件程序”而被實施。
通信網絡112將客戶108與服務器104相連接。通信是經由任何媒體如標準電話線、LAN或WAN鏈接(例如T1、T3、56kb、X.25)、寬帶連接(ISDN、Frame Relay、ATM)、無線鏈接等進行的。優選地,網絡112可以傳送TCP/IP協議通信以及由網瀏覽器116所要求的HPPT/HTTPS請求,并且客戶軟件120和服務器104之間的連接可以通過這樣的TCP/IP網絡來進行通信。然而,網絡的類型并不是局限性的,可采用任何適合的網絡。可用作通信網絡112的典型網絡實例包括無線或有線基于以太網的內聯網(intranet)、局域或寬域網(LAN或WAN)、以及/或被公知為因特網(Internet)的全球通信網絡,其可容納許多不同的通信媒體和協議。
計算機編碼競賽提供者操縱與客戶108相互作用的競賽服務器104。優選地,服務器104在一個或多個服務器類計算機上被實施,所述計算機具有足夠的存儲器、數據存儲及處理能力并且其運行服務器類的操作系統(例如,SUN Solaris、GNU/Linux、MICROSOFT WINDOWS NT)。取決于設備能力和競賽者數量以及競賽者庫和競賽的規模,也可以使用非上述的其它類型系統硬件和軟件。例如,服務器104可是服務器場(serverfarm)或服務器網絡的一部分,所述服務器場或服務器網絡是一個或多個服務器的邏輯組。作為另一個實例,可存在彼此之間可聯系或連接的多個服務器,或多個服務器可以單獨地操作,但具有共享數據。正如在大規模系統中典型的那樣,應用軟件可以在部件中被實施,其中不同的部件運行在不同的服務器計算機上、運行在同一服務器上或一些組合上。
參考圖2,在一個實施例中,服務器104包括作為與客戶108進行通信的接口的客戶通信模塊206。所述客戶通信模塊206可以作為運行在一個或多個服務器上的軟件而被實施,或者可作為獨立的服務器而被實施。在一些實施例中,客戶通信模塊206可以提供到客戶軟件102及到客戶網瀏覽器116兩者的接口,以便于例如,網瀏覽器116可以被競賽者使用以訪問表現信息,或者觀察其它競賽者的進程等,而客戶軟件120可以用于參加編碼競賽。到每個客戶軟件120及客戶網瀏覽器116的接口可以單獨地或以組合形式被加以實施。在其它實施例中,客戶通信模塊206還可以利用其它協議或機理來通信。
客戶通信模塊206與應用服務器212通信,所述應用服務器212提供系統操作的主編程邏輯。在一個實施例中,應用服務器212作為一個或多個運行在服務器類計算機上的應用程序而被實施,所述服務器類計算機可是與客戶通信模塊206相同或不同的計算機。應用服務器212經由客戶通信模塊206接收來自競賽者的詢問。應用服務器212還提供編碼競賽。例如,應用服務器212跟蹤在編碼競賽虛擬房間內的活動,并且提供競賽的編碼問題。作為另一實例,在一些實施例中應用服務器212可提供資格檢定測試,所述資格檢定測試是對競賽者參加編碼競賽的初步要求。
服務器104還包括競賽服務器216。競賽服務器216通過計算處理與編碼競賽相聯系的密集任務,例如編譯且測試由競賽者提交的響應于編碼問題的代碼。在一個實施例中,競賽服務器216還給競賽者賦予等級。總體上,應用服務器212和競賽服務器216之間的接口被這樣加以設計,以使從計算上密集的任務被隊列等待在競賽服務器216上進行處理,由此甚至當應用服務器212裝載有一個或多個活動的編碼競賽時,允許其做出響應。
服務器104還包括數據庫服務器220,所述數據庫服務器220在一個或多個數據庫中存儲有關編碼競賽的數據。例如,數據庫服務器220存儲競賽信息、有關競賽者的統計、競賽者信息、服務器可用性、以及網通信量信息。數據庫服務器202向應用服務器212提供數據。數據庫服務器220的一個實例是由Armonk,NY.的NTERNATIONAL BUSINESSMACHINES所提供的INFORMIX DYNAMIC SERVER。
參考圖3,在一個實施例中,客戶通信模塊206(圖2)包括接口服務器204,所述接口服務器204提供用于與客戶軟件120通信用的接口。在一個實施例中,客戶接口服務器204是在服務器計算機104上執行的軟件模塊。在另一個實施例中,客戶接口服務器是與服務器104,如應用服務器212的其它部件通信的獨立服務器計算機。在一個實施例中,客戶接口服務器204通過采用用于在客戶軟件120和客戶接口服務器204之間通信的信息傳遞協議與客戶軟件120通信,所述信息傳遞協議經過Transmission Control Protocol/Internet Protocol(TCP/IP)運行。客戶接口服務器204被設計成維持與大量客戶108的客戶軟件120的通信。
客戶接口服務器204包括一個提供到客戶軟件120的實際接口的接口連接304。所述接口連接304接收來自客戶軟件120的消息并且將它們提供到接口管理器308和接口服務器處理312。同樣,接口管理器接收來自接口服務器管理器308和接口服務器處理312的消息并且將那些消息通信到客戶軟件120。
接口服務器管理器308管理接口連接304和接口服務器處理312到每個客戶軟件120的分配。每次當客戶108(經由客戶軟件120)連接到服務器104(經由客戶接口服務器204)時,被指定單獨的處理,它在客戶連接的工作時間過程中存在。接口服務器管理器308處理這個指定的處理。接口服務器管理器308還存儲有關每個客戶連接的數量和性質的任何信息。
接口服務器處理312是從客戶接口服務器204到應用服務器212的接口。接口服務器處理312在比接口連接304較高的水平上與客戶軟件120進行通信。接口服務器處理312還與接口服務器管理器308進行通信。例如,接口服務器管理器308可命令接口服務器處理312從應用服務器212荻取特定的應用,用于在編碼競賽中使用。
因此,當競賽者想要向服務器104傳遞一個請求時,客戶軟件120通過通信網絡112傳遞此請求。客戶軟件120與接口連接304進行通信,以使能夠與接口服務器處理312進行通信。接口服務器處理312接收來自接口連接304的請求,并且確定為了處理此請求需要發生什么。接口連接304還按需要將此請求通信到接口服務器管理器308,來適當地管理且分配客戶接口服務器204的資源以處理此請求。
然后接口服務器處理312將此請求傳遞到應用服務器212。應用服務器212包括處理此請求的事務對象(business object)316。每個事務對象316管理一個或多個客戶108。事務對象316經由接口服務器處理312與客戶軟件102進行通信。事務對象316處理來自客戶軟件120的請求。實施事務對象316的實例包括,例如Component Object Model(COM)對象和Enterprise Java Bean(EJB)對象。
如果一請求要求數據訪問,則事務對象316經由數據訪問層320向數據庫服務器220做出請求。如果此請求要求由競賽服務器216來處理,則此請求被傳遞到消息隊列處理器324,所述消息隊列處理器324將請求進行隊列用于由競賽服務器216進行操作,并且經由接口服務器處理312將結果發送回到客戶軟件102。
在一些實施例中,客戶108(圖1)還可以經由網瀏覽器與服務器104通信。在這樣的實施例中,通信模塊206(圖2)還包括網服務器208。網服務器208將網頁傳送到客戶108且提供一個用于在網瀏覽器116與服務器104之間通信的接口。優選地,網服務器208是一個運行在一個或多個服務器類計算機上的企業類網服務器,如來自APACHE FOUNDATION的APACHE、來自MICROSOFT CORPORATION的INTERNET INFORMATIONSERVER、或來自NETSCAPE COMMUNICATIONS CORPORATION的NETSCAPEENTERPRISE SERVER,所述服務器類計算機可是與客戶接口服務器204相同或不同的計算機。網服務器208可作為能夠通過通信網絡112向客戶網瀏覽器116提供網內容服務、并且與服務器104的其它部分進行通信的任何通信設備如個人計算機、網器具等而被實施。網服務器208和客戶接口服務器204中的每個與應用服務器212進行通信。網服務器208為網瀏覽器116提供接口,以與服務器104進行通信。網服務器208包括一個從網瀏覽器116接收HTTP請求且向瀏覽器116傳遞HTTP應答的HTTP收聽器328。HTTP收聽器328經由servlet引擎332與應用服務器212進行通信。
應用服務器212經由servlet引擎332與網瀏覽器116進行通信。響應于網頁請求servlet引擎332使用Java servlet來產生網頁。XSL處理器336解釋由servlet engine 332所使用以產生HTML文件的XSL式樣文件。由servlet engine 332向事務對象316做出數據請求,若必要的話,則其經由數據訪問層320向數據庫服務器220做出數據請求。servlet引擎332將XML對象與XSL式樣的文件加以組合以產生HTML文件,然后所述HTML文件經由網服務器208被通信到客戶的瀏覽器116。
數據庫服務器220包括一個或多個數據庫340。數據訪問層320與數據庫340進行通信以檢索數據。數據庫340可通過使用商業上可獲得的數據庫軟件,利用標準接口被實施。在數據庫340中的各種類型信息可以被存儲在相同的數據庫或不同的數據庫中。
在一個實施例中,競賽服務器216包括代碼編譯引擎344。此代碼編譯引擎344對競賽者的計算機代碼進行編譯。在此,術語編譯按其最廣義被加以使用,且包括不只僅將源代碼翻譯成目標代碼。例如,如果競賽系統被用于硬件設計,則編譯器可以將包括工具以將代碼翻譯成適合于仿真的電路設計格式。代碼編譯引擎344可以包括任何編譯器。然而,代碼編譯引擎344的選擇影響到編碼競賽,這樣編譯器應該支持競賽編碼語言及測試環境。因此,在一個實施例中,利用來自Cambridge,Massachusetts的FREE SOFTWARE FOUNDATION的GNU C編譯器(GCC),服務器104可讓代碼編譯引擎344對C或C++代碼進行編譯。在一個實施例中,服務器104讓代碼編譯引擎344利用從Mountain View,California的SUN MICROSYSTEMS可得到的編譯器來編譯JAVA代碼。在另一個實施例中,JAVA代碼被解釋而不被編譯。在一些實施例中,代碼編譯引擎344包括或具有到編譯器的入口,用于在編碼競賽中將要用到的各種編碼語言或格式。
在一個實施例中,競賽服務器216還包括代碼測試引擎352,所述代碼測試引擎352根據測試數據,如預先設定的一套測試程序來測試競賽者計算機代碼的結果。測試輸入可來自各種源。總體上競賽服務器216運行、解釋、或模擬測試環境,以便于測試數據可以作為輸入被提供并且獲得結果。優選地,由編譯引擎344所使用的編譯器對代碼進行編譯,以便于代碼可以由代碼測試引擎352來執行。在一個實施例中,競賽服務器216額外地包括等級引擎349來計算和管理競賽者的等級。等級引擎348可實施精確地表示競賽者相對于其它競賽者的技能水平的任何算法,如基于統計的算法。代碼編譯、代碼測試和等級產生這些任務中的每個任務均是計算密集型的任務。這些操作請求由消息隊列處理器324進行隊列,并且按照接收的次序被提供到引擎344-352。這允許事務對象316來完成請求,而不需要阻塞或等待引擎344-352。
將競賽服務器216中的這些密集型計算任務從其它服務器的操作中分離(de-coupling)允許競賽系統的可伸縮性。服務器、處理器或引擎(例如,網服務器208、應用服務器212、消息隊列處理器324、等級引擎348)的任何組合可以在相對于其它服務器、處理器或引擎相同或獨立的處理器或計算機上加以實施。競賽服務器216的幾個例子可以并行地(在相同或不同的計算機上)執行,以對來自消息隊列處理器324的請求做出響應。正如在競賽期間可能會出現的那樣,如果系統出現大量負載,則可以快速地添加額外的處理能力。因此,服務器104這個實施例有用的特性是它可以可靠地支持具有大量競賽者的計算密集型的編碼競賽。
參考圖4,在一個實施例中,競賽者與服務器104(經由客戶108)的相互作用可以總體上被概括為四個步驟。競賽者任選地向服務器104登記(步驟404)。優選地,競賽者提供有關其本人在登記過程中的信息。競賽者信息的實例可以包括如競賽者姓名、聯系信息(即電子郵件地址、電話號碼、電子郵件地址)、在現場使用的用戶名或“化名”、工作經歷、教育程度、某些人口統計信息、技術特長、競賽者是否目前正在尋找工作、以及/或競賽者受雇的地理偏好等信息。化名是競賽者將如何在系統上讓其它競賽者和觀眾知道。登記還可包括,例如正如下面更詳細討論的那樣,每個競賽者完成資格檢定測試、或資格檢定輪次。
登記之后,競賽者可以參加競賽。在一個實施例中,競賽在服務器104上進行且連續地進行。在另一個實施例中,競賽是在規定時間、或者由競賽管理員宣布進行。為了贏得一些編碼者的注意力和參加,例如可最好在正常的上班時間之后周期性地進行競賽。在一個實施例中,競賽者在任何時間進入競賽。例如,如果存在可進行競賽的其它適合競賽者,則競賽者可連接到服務器104且可在任何時間進入競賽。在一個實施例中,這種類型的競賽被稱為“搭便車”競賽,因為競賽者可以在存在其它競賽者的任何時間進入競賽。競賽可被排定時間,以便于服務器104自動地在規定時間(或在預先設定時間之后的一些預先設定延遲)開始競賽。
競賽首先涉及到編碼問題的通信(步驟406)。在競賽中服務器104經由客戶108將一個或多個計算機編碼問題傳遞到每個競賽者。競賽者回顧所述一個或多個編碼問題,且開發作為對編碼問題的解的計算機代碼(步驟408)。競賽者可選擇一個或多個所傳遞的編碼問題來解答。競賽者可選擇第一問題來解答,且隨后選擇另一個問題來解答。為了簡便起見,可以說明一個編碼問題,但是它旨在所述原理可以被擴展到不只一個編碼問題。
在一個實施例中,在競賽者提交作為編碼問題最終答案的計算機代碼之前,競賽者可以提交此代碼用來由服務器104進行編譯,且利用由競賽者所提供的測試數據來執行。通過這種方法,競賽者可以編譯和/或運行計算機代碼,以確定例如計算機代碼操作情況的好壞、其操作的速度、以及計算機代碼的精確度。競賽者額外地可以觀看,例如編譯的結果及利用由競賽者提交的測試輸入所執行的結果。
在一個實施例中,服務器104記錄在編碼階段由競賽者所占用的流逝時間。服務器104在傳遞計算機問題至競賽者(經由客戶108)時起動編碼計時器,并且當競賽者提交解時,或當編碼計時器到達預先設定的編碼階段時間(即超時)時便結束編碼階段。此外,取決于計算機問題的難度,服務器104可調節預先設定的編碼時間。
在一些實施例中,在提交代碼之后,競賽的挑戰部分緊接其后(步驟412)。在挑戰周期期間,挑戰方可以對競賽者的計算機編碼進行挑戰。在各種實施例中,挑戰方可以是一個或多個另一個競賽者、編碼競賽的觀眾、裁判或具有被賦予的提交測驗數據任務以驗證編碼提交內容的另一方、或服務器104。在一個實施例中,挑戰方通過向服務器104提交作為被執行的計算機代碼的輸入的測試數據來挑戰計算機代碼。服務器104使用測試數據來確定計算機代碼的正確性。利用測試數據,挑戰方試圖誘發計算機代碼的不正確執行,例如產生不正確的輸出,或因錯誤而中斷執行。基于計算機代碼對測試數據的響應,服務器104可以確定計算機代碼的執行是否可接受。在一些實施例中,當挑戰計時器到達預先設定的挑戰時間時,服務器104終止挑戰。雖然所述計時器被說明成獨立的計時器,但是計時器如挑戰計時器和編碼計時器可以利用單個計時器或多個計時器來實施。
服務器104還可進行對所提交代碼的自動測試(步驟416),其中所述代碼被提交到一個或多個來自一套預先設定檢驗程序的自動測試。在一個實施例中,服務器104將所有被提交的計算機代碼提交到一個或多個自動測試中。服務器104可隨機地從一套預先設定檢驗程序中選擇一個測試,或者可基于,例如預先設定順序或有關先前挑戰中計算機代碼的表現而選擇測試。在另一個實施例中,挑戰階段包括自動測試。在另一個實施例中,自動測試先于挑戰階段。
在一個實施例中,競賽包括競賽者登記以及隨后參加兩個或多個競賽輪次,其中每個輪次由問題通信(步驟406)、編碼(步驟408)、挑戰(步驟412)、以及測試(步驟416)組成。作為另一選擇地,競賽輪次可包括問題通信(步驟406)、挑戰(步驟412)、以及測試(步驟416)的子集。在一些實施例中,挑戰(步驟412)及自動測試(步驟416)的順序被顛倒,且在其它實施例中,這些步驟相重疊或并行地發生。在一個實施例中,編碼競賽由預定設定數量的輪次組成,其中所述數量隨競賽到競賽而變化。因此,競賽可僅由一個輪次組成。具有眾多輪次的競賽還可被稱為錦標賽。如下面所討論的那樣,服務器104可以在整個競賽完成之后(例如在競賽的輪次完成之后)額外地賦予或調節每個競賽者的等級。一個輪次可以包括兩個或多個問題的通信,帶有重疊的問題通信、挑戰以及自動測試。
參考圖5,在一個實施例中,服務器從客戶(如果它是競賽者的第一競賽)或數據庫接收競賽信息(步驟504)。在一些實施例中,直到所要求的競賽者信息被服務器104接收到,服務器104才能夠使競賽者移向下一步驟。在一些實施例中,服務器104在適當的時候,如在編碼競賽的間歇期間請求來自客戶108的額外競賽者信息。在其它實施例中,如果競賽者已經在服務器104被登記,但還從未在競賽中進行過競賽,則競賽者在進行競賽之前可不必完成額外的信息。因此,在一個實施例中,所有的競賽者在競賽之前提供最小量的登記信息。
在另一實施例中,服務器104主持一個實習房間。實習房間是其中一個或多個參賽者可以使自己熟悉競賽格式(例如,回答編碼問題的格式)的房間。在一個實施例中,在實習房間內,服務器104向一個或多個競賽者提供簡單的編碼問題。競賽者試圖響應于這些問題開發出代碼,這可有助于它們熟悉競賽系統。
在一個實施例中,服務器104確定是否有足夠的競賽者來開始編碼競賽(步驟508)。如果沒有,則服務器104進行等待,直至預先設定數量的競賽者連接(經由客戶108)到服務器104來參加編碼競賽。在一些實施例中,在建立與兩個競賽者(經由客戶108)的連接之后,服務器104可等待預先設定的時間,然后才開始競賽。例如,如果服務器104排定了編碼競賽的時間以在特定的日期和時間開始,只要不只一個競賽者將要參加競賽,則在開始競賽之前服務器104可僅等待一段預先設定的時間(例如10分鐘)待排定的時間過去。如果沒有競賽者或只有一個競賽者在排定的時間提交了競賽信息,則服務器104可自動地刪除編碼競賽或將其推遲到隨后的日期或時間。
當有與已經登記的、合格的競賽者相聯系的預先設定數量的客戶108參加時,服務器104經由客戶108將編碼問題傳遞到每個競賽者(步驟512)。在一個實施例中,編碼問題要求競賽者建立一個或多個計算機程序、子程序、以及/或任務。在一個實施例中,編碼問題涉及到以一種或多種專用語言或格式來開發代碼。
服務器104還可以將時間限制強加到其對編碼問題響應的接收上。在一個實施例中,當服務器傳遞編碼問題時,服務器104在客戶108上顯示出一個響應計時器。服務器104將響應計時器設置到一個預先設定的響應時間,以其中服務器104接收響應于編碼問題的計算機代碼的時間限制。當響應計時器期滿時,競賽者可以不再提交計算機代碼。
在一些實施例中,競賽者從幾個被傳遞的編碼問題中選擇一個編碼問題。服務器104將幾個編碼問題傳遞到客戶108,其中每個編碼問題相對于其它的編碼問題具有不同的難度。如果競賽者提交了具有較高難度編碼問題的正確解,則相對于具有較低難度編碼問題的正確解而言,更難的選擇可以導致賦予更高的分數。在競賽者響應于一個問題提交代碼之后,競賽者方能夠解決另一個編碼問題。在另一個實施例中,在競賽中所提供的編碼問題具有相同的難度,且因此具有相同的得分數值。在另一個實施例中,僅有一個必須響應的問題,而別無選擇。
競賽者在向服務器104提交作為最終響應的代碼之前可編譯(若有必要)且測試她的代碼。因此競賽者可以在提交代碼之前證實其代碼。通過編譯和/或測試計算機代碼,競賽者可能夠例如改善計算機代碼、確定計算機代碼中的錯誤、確定計算機代碼的精確度、以及確定計算機代碼的效能。當代碼準備好時,然后競賽者向服務器104提交其計算機代碼。服務器104從競賽者接收計算機代碼(步驟516)。若有必要,服務器104對所述代碼進行編譯(步驟520)。如果服務器104從競賽者接收到可執行的或解釋的計算機代碼(例如JAVA程序),則可不需要編譯步驟。
在一個實施例中,服務器104等待一段預先設定的時間,以從每個競賽者接收計算機代碼。一旦這個預先設定的編碼時間已經過后,則服務器104并不接收代碼的提交。在其它實施例中,服務器104繼續接收代碼的提交,但是提交內容可得的分數隨著時間減小。
服務器104驗證所提交的計算機代碼的正確執行(例如,它產生了正確的輸出并在所有的情況下無誤差地執行了嗎等)。服務器通過獲取可來自各種源的測試數據(步驟524)而做到這點。在一個實施例中,服務器具有作為所提交編碼問題的輸入而提供的預先設定測試數據。這樣的測試數據隨著編碼問題被提供到服務器上。在另一個實施例中,利用可以提供到計算機代碼的有關輸入類型的信息,服務器可產生測試數據(步驟524)。正如上面所述,測試數據還可被作為挑戰由其它競賽者或者在一些實施例中,由觀眾或裁判來提供(圖4,步驟412)。基于一個或多個因數,例如,向服務器104提交計算機代碼的順序、提供到服務器104的測試數據的順序、提交競賽者的目前排名、在這個競賽中競賽者被賦予的目前分數值,服務器104可隨機地或按照預先設定順序來選擇競賽者的計算機代碼進行驗證。在一個實施例中,為了使計算機代碼響應的這個自動驗證能夠進行,當測試問題被提供到服務器以用于到編碼競賽時,參考計算機代碼636和預先設定的測試數據連同測試問題一道被提供到服務器104。參考程序636和測試數據被存儲有測試問題以在這種方式下使用。
服務器104通過將測試數據作為輸入來執行所述代碼,并且確定計算機代碼的響應(步驟528)。在一個實施例中,服務器104可以顯示通過利用測試數據作為到競賽者和觀眾的輸入來執行此計算機代碼的結果。在另一個實施例中,所使用的測試數據和所獲得的結果被存儲在數據庫中,以用于日后觀看和驗證。
在一個實施例中,作為自動測試階段的一部分,服務器104產生測試數據且使代碼經受服務器的數據。即使當服務器104從前提供了或產生了作為挑戰的測試數據,但是在一個實施例中服務器104向計算機代碼中輸入一個或多個額外的測試數據。
服務器104評估計算機代碼的響應(步驟532)。在一個實施例中,通過將此響應與可接受的響應或一系列可接受的響應相比較,服務器104對所述響應加以評估。此外,當使測試數據作為輸入來執行計算機代碼時,如果競賽者的計算機代碼失敗或產生錯誤,則服務器104可從提交競賽者身上扣分數。此外,如果計算機代碼利用測試數據正確地執行,則服務器104可給提交競賽者賦予分數。在一些實施例中,如果被挑戰的計算機代碼響應于測試數據被正確地執行,則服務器104還可給為特定計算機代碼提交挑戰測試數據的競賽者加分或扣分。換句話說,系統將為對競賽者計算機代碼的成功挑戰加分且為不成功的挑戰扣分。
在一個其中通信網絡112是因特網的實施例中,競賽在“虛擬論壇”環境中進行,其中觀眾可以經由計算機網絡觀察虛擬競賽房間內的活動。觀眾可是已經在服務器104登記但未參加特定的編碼競賽的客戶108的用戶,或者可是還未在服務器104上登記的觀察者。在這樣一些實施例中,除了參加編碼競賽的服務器104和其它競賽者以外,觀眾(既可是當地的或經過網絡的)也可以通過向服務器104提交測試數據來參加競賽,用作競賽者提交內容的輸入。因此,觀眾可以幫助判別提交內容的價值。
同樣參考圖6,在一個實施例中,服務器104使用參考代碼636來驗證競賽者的計算機代碼640的操作。優選地,參考程序636是預先設定的對編碼問題的解。測試數據639作為參考程序636和競賽者代碼640兩者的輸入而被提供。測試數據可是由服務器104所存儲的預先設定數據、由服務器104所產生的數據、由另一競賽者所提供的數據、或由另一方如觀眾、裁判、管理員等所提供的數據。在利用作為輸入的測試數據來執行期間(或之后)參考程序636產生參考響應638。當利用作為輸入的測試數據執行競賽者的計算機代碼640時,其還產生響應644。然后服務器104比較這兩個響應638和644,以確定計算機代碼響應644的正確性。服務器104還可測量參考程序636和競賽者計算機代碼640產生相聯系的響應638、644所占用的時間,以確定競賽者計算機代碼640的效能。這個比較可針對各種輸入測試數據而重復,使每個測試輸入來自相同或不同的源。
再次參考圖5,在對競賽者的計算機代碼加以評估之后,服務器104給競賽者授予分數(步驟536)。在一個實施例中,每個編碼問題具有與其相聯系的最高分數值。在一個實施例中,服務器104授予編碼問題所值的小于最高分數的分數。具體地,基于例如競賽者代碼響應的正確性(例如與參考響應638做比較)、競賽者的計算機代碼響應644的精確性、計算機代碼640產生計算機代碼響應644的速度、以及/或所記錄的其中服務器104從競賽者接收計算機代碼640的時間中的一些或全部,服務器104給競賽者授予分數。
在一個實施例中,所授予的分數值取決于編碼問題的難度。通過與服務器104提供編碼問題的時間相比較,服務器104還可基于服務器104接收競賽者的計算機代碼640的時間來調節給競賽者授予的分數值。在一個實施例中,授予競賽者的總分數值在方程式1中被示出所授予的總分數=MP*((0.3+(.7*TT2))/(10* PT2+TT2)方程式1在方程式1中,PT是競賽者對問題進行編碼(即產生計算機代碼)所花費的時間、TT是在這部分競賽中分配用于對所有計算機問題進行編碼的總時間、以及MP是計算機編碼問題可得到的最高分數。在一個實施例中,可得到的最高分數值是競賽者實際上不可獲得的服務器104的參照系。更具體地說,對于待被授予最高分數的競賽者,競賽者將必須花費幾乎零秒來讀編碼問題、對計算機代碼640進行編碼、以及向服務器104提交計算機代碼640。例如,如果存在一個被分配有600秒(10min)的問題,且它花去競賽者300秒(5min)來對問題進行編碼,則TT=600、PT=300,而且如果代碼正確執行的話則將授予總分數MP的大約52%。
在一個實施例中,如果利用所有的測試數據計算機代碼正確地加以執行,則競賽者接收此計算機代碼的這個分數(例如可得到的總分的52%),并且如果利用所有的測試數據代碼沒有正確地加以執行,則競賽者得不到分數。在其它的實施例中,部分得分是針對部分正確的代碼而給的。例如,在一個實施例中,代碼基于測試數據的百分比來接收分數。在另一實施例中,所接收的分數基于利用其代碼得以正確執行的測試數據的百分比而被比例縮放。在一些實施例中,如當競賽是由多輪次組成的錦標賽時,服務器104跟蹤每輪次中授予每個競賽者的分數。服務器104還可計算每個競賽者的累計,即將在競賽的每個完成輪次中所授予的分數相加。這個累計可以用來淘汰低分競賽者。
在一個實施例中,在完成一個或多輪次競賽之后,服務器104給競賽者賦予一等級(步驟540)。典型地當競賽或錦標賽完成時才發生等級的賦予。例如,如上面圖4所說明競賽可由一個輪次組成,或可由多輪次組成,如在錦標賽中。因此,在其中競賽由問題通信、編碼、挑戰及測試步驟的一個迭代,或不只一輪次組成時,服務器104在向每個競賽者授予總分之后給每個競賽者賦予一個等級。在其中競賽包括多輪次(例如錦標賽)的一個實施例中,服務器104在競賽者完成錦標賽之后給每個競賽者賦予一個等級。
所述等級提供了可以用來繪制程序設計員技能、知識、以及能力圖表的量度。正如下面更詳細地說明的那樣,在一個實施例中服務器104以在競賽中(例如具有一個或多個輪次)被授予競賽者的總分數作為競賽者等級的基礎。所述等級可以是分數、級別或任何其它類型的等級技術。
參考圖7,在一個實施例中,競賽者經歷作為登記過程一部分的資格檢定測試。資格檢定測試可以在登記時間或隨后的時間進行。在資格檢定測試期間,服務器104將一個或多個資格檢定測試問題傳遞到競賽者(步驟704)。在一個實施例中,競賽者必須在預先設定的資格檢定時間內完成資格檢定測試,服務器104將所述時間顯示在客戶108上。在一個實施例中,預先設定的資格檢定時間是整個資格檢定測試的時間。作為選擇地,預先設定的資格檢定時間是一個資格檢定測試問題的時間要求。在一個實施例中,如果預先設定的資格檢定時間已流逝,則服務器104傳遞資格檢定測試中的下一個問題。在另一個實施例中,服務器104結束資格檢定測試。服務器104還可對整個資格檢定測試和對每個資格檢定測試問題的回答均進行計時。
所述問題可例如是多項選擇問題、要求一個字答案的問題、或要求競賽者寫計算機代碼的問題。優選地,所述問題是與計算機相關的,并且正確的響應表明技能的基本水平。然而,問題可涉及到任何學科、如例如數學、科學、文學、歷史或邏輯。此外,在一個實施例中,資格檢定測試問題具有變化的難度。此外,服務器104可向競賽者顯示或不顯示這些難度,并且競賽者在觀看資格檢定測試問題之前可基于其難度來選擇要回答哪個資格檢定測試問題。
競賽者(經由客戶108)回答每個資格檢定測試問題,且然后將所述答案提交到服務器104。服務器104從客戶108接收此答案(步驟708)。在一個實施例中,服務器104評估所接收到的答案(步驟712)。在另一個實施例中,一旦競賽者回答了測試問題,則客戶108(例如網瀏覽器116或客戶軟件120)自動地將此答案傳遞到服務器104并且服務器104提供給客戶108下一個資格檢定測試問題(步驟704)。
在所接收到的答案的評估期間,服務器104可例如基于預先設定的正確答案集及競賽者對資格檢定測試問題的響應速度來確定所接收答案的價值。基于從前的測定(例如所接收答案的正確性),服務器104可額外地確定授予競賽者關于資格檢定測試問題的答案的分數值,或資格檢定測試問題得分。此評估之后,在一個實施例中,服務器104通知競賽者有關競賽者答案的評估結果,如例如,競賽者答案的正確性或資格檢定測試問題的得分。在一個實施例中,作為資格檢定測試的進程,服務器104經由顯示在客戶108上的資格檢定結果窗通知競賽者。在另一個實施例中,服務器104僅在資格檢定測試評估完成時通知競賽者資格檢定測試的評估結果。
服務器104確定是否資格檢定已完成(步驟720)。服務器104確立基于例如當預先設定的用于資格檢定測試的資格檢定時間已過、當服務器104接收到最終資格檢定測試問題的答案時、或當最終資格檢定測試問題的預先設定時間已過時,資格檢定測試便完成。如果服務器104確定在接收到競賽者對當前資格檢定測試問題的答案之后資格檢定測試未完成,則服務器104緊接著在步驟704中傳遞下一個資格檢定測試問題。然而,如果服務器104確定在接收到競賽者對當前資格檢定測試問題的答案后資格檢定測試已完成,則服務器104確定這個競賽者是否具有編碼競賽的資格。
因此,在確定資格檢定測試完成之后,于是服務器可評估由競賽者所提交的答案(步驟724)。在這個實施例中,于是服務器104可以通知競賽者評估的結果(步驟728)。這個通知可是關于每個問題的正確性、回答每個問題所花的時間、完成資格檢定測試所花的時間、每個測試問題的難度、資格檢定測試問題得分、資格檢定測試所授予的總分、或資格檢定測試得分、以及/或具有編碼競賽資格所需要的最低分數的通知。每個問題被授予的分數可取決于答案是否正確、接收被提交答案所花的時間、以及問題的難度。在一個實施例中,如果參加者想要盡力改善其得分以增加其合格的機會,則參加者具有第二次參加資格檢定測試的選擇權。
在一個實施例中,在確定資格檢定測試完成之后,服務器104允許用戶進入編碼競賽。在這個實施例中,資格檢定測試對于新競賽者來說是在編碼競賽開始之前熟悉競賽環境且進行實踐的一個機會。
參考圖8,在確定是否競賽者可以參加編碼競賽時,服務器104要看競賽者的資格檢定測試得分、以及已經參加的競賽者的數量。
服務器104首先確定資格檢定測試得分是否高于預先設定的資格檢定測試閾值分數(步驟804)。競賽者不可以參加編碼競賽(步驟808)。
如果資格檢定得分大于預先設定的資格檢定測試得分,則服務器104使表示已經取得編碼競賽資格的競賽者數量的競賽者計數器遞增(步驟812)。然而,如果服務器104確定競賽者計數器小于或等于預先設定的最大競賽者計數器(步驟816),則競賽者被允許競賽(步驟824)。
在一個實施例中,登記過程包括服務器104將每個競賽者播種到(SEED)到分區中。在一個這樣的實施例中,服務器104分配兩個分區,第一分區用于從前已經取得了等級高于預先設定分區等級的競賽者,且第二分區用于沒有獲取等級(即此前從未進行過競賽或沒有與競賽相關的數據)的或者是具有等級低于預先設定分區等級的競賽者。在一個實施例中,服務器104向第二分區提供相對于向第一分區所提供問題較低難度的編碼問題。
例如,服務器104可以使用預先設定的分區等級值1200。因此,服務器104將具有等級小于1200的所有競賽者按照種子選手分配到第二分區中,且將具有等級高于1200的所有競賽者分配到第一分區內。此外,在一個實施例中,服務器104在完成競賽后再次分配所有的競賽者。因此,在競賽后,如果從前在第一分區中的競賽者在競賽后具有低于1200的等級,則服務器104將此競賽者放入到第二分區中。此外,根據競賽者進行競賽所在的分區,服務器104可以選擇競賽者正在為此競賽的獎勵。
服務器104可進一步將分區劃分成一個或多個“房間”或房間組。例如,服務器104可以將第二分區劃分成未評定等級的房間以及已經評定等級的房間,所述未評定等級的房間僅擁有從未被賦予等級的競賽者且已經評定等級的房間擁有已經被賦予等級低于預先設定分區等級的競賽者。
參考圖9,通過對競賽者進行等級鑒定,在一些或全部競賽完成之后,服務器104對競賽者的編碼能力進行了量化。在一個實施例中,服務器104基于在競賽中授予競賽者的總分數來確定等級。
如上所述,服務器104電子地將編碼問題通信給每個競賽者(步驟904)。然后服務器接收競賽者響應于所述問題的計算機代碼(步驟908)。然后服務器104對所接收的代碼進行評估(步驟912)。
基于對代碼的這些評估,然后服務器104給競賽者授予分數(步驟916)。一旦一些或全部競賽完成(例如一輪次或多輪次),則服務器104便確定每個競賽者的等級(步驟920)。在一個實施例中,為了確定競賽者的等級,若競賽者從前已經被評定等級,則服務器104首先確定競賽者從前的等級。優選地,服務器104從例如數據庫服務器220檢索競賽者的等級。所述等級包括等級值及變動性(volatility)值。變動性值表明競賽者的等級隨時間的一致性。
在一個實施例中,服務器104利用方程式2計算參加競賽的競賽者的平均等級
AveRating=Σi=1NumCodersRatinggiNumCoders]]>方程式2服務器104還利用方程式3計算競賽系數CF=Σi=1NumCodersVolatilityi2NumCoders+Σi=1NumCoders(Ratingi-AveRating)2NumCoders-1]]>方程式3在方程式2和3中,NumCoders是競賽中的競賽者數量且Ratingi是競賽中第i個競賽者在競賽之前無變動性的等級。此外,Volatilityi是競賽中第i個競賽者在競賽之前的變動性。
其次,如下面方程式4所示,服務器104確定競賽者的技能。
Skill=Rating-12001200]]>方程式4所述等級是競賽者在競賽之前的等級,或從前的等級。在一個實施例中,如果服務器104確定競賽者從前從未被評定等級,則服務器104并不計算技能。在另一個實施例中,服務器給競賽者賦予一個預先設定的技能水平(例如1)。服務器利用方程式5計算一競賽者與其它競賽者的偏差,其中Volatility(變動性)是在競賽之前競賽者的變動性Deviation=Volatility1200]]>方程式5然后服務器104估算4相對于競賽中的其它競賽者服務器104授予一競賽者較高得分的概率(對于從1至NumCoders中的i為WPi)。在一個實施例中,通過使用競賽者在從好到差日子范圍內預計的表現等級,服務器104估算這個概率。服務器104將每個競賽者的表現作為帶有平均值(等級)和標準偏差(變動性)的正態分布制成模型。通過使用這個模型,服務器104利用正態分布將競賽者的表現轉化成百分比,這樣50%表示所期待的表現且25%表示四天當中三天較好等。然后,為了估算所述競賽者擊敗競賽者i的概率,服務器104將從0%至100%的范圍劃分成1%的塊,并且服務器104選取每個塊的中點且計算相應的表現。獲勝的概率是其中中點偏向競賽者i的塊的數量。如果兩個競賽者具有相同的塊數量(即平局),且其中中點偏向一個競賽者,則服務器104將所述塊在兩個競賽者之間分割。
特別地,估算競賽者A擊敗競賽者B的概率的偽碼功能被所示如下,其中f是標準正態函數的倒數<pre listing-type="program-listing"><![CDATA[WinProbability(SkillA,DeviationA,SkillB,DeviationB) Set count,a,b to O.Set fa=SkillA+d((a+.5)/100)*DeviationA. Set fb=SkillB+f((b+.5)/100)*DeviationB. While(a<100) If fa<fb Add 100-b to count,Increment a, Set fa=SkillA+f((a+.5)/100)*DeviationA, If fa=fb Add 100-b-.5 to count,Increment a,Increment b, Set fa=SkillA+f((a+.5)/100)*DeviationA, Set fb=SkillB+f((b+.5)/100)*DeviationB If fa>fb Increment b Set fb=SkillB+f((b+.5)/100)*DeviationB Return count,where count is the win probability.]]></pre>然后服務器104利用方程式6計算競賽者所期望的名次ERank=Σi=1NumCodersWPi]]>方程式6其中Wpi是一編碼者贏得每位其它編碼者的概率。服務器104還利用方程式7計算競賽者預計的表現EPerf=-Φ(ERank-.5NumCoders)]]>方程式7在方程式7中,Φ是標準正態函數的倒數。然后服務器確定每個競賽者的實際表現APerf=-Φ(ARank-.5NumCoders)]]>方程式8在方程式8中,ARank是在競賽中基于得分的競賽者實際名次(對于第一名為1,對于最后一名為NumCoders)。如果競賽者的得分等于另一名競賽者的得分,則名次為由戰成平局的競賽者所覆蓋位置的平均。然后服務器利用方程式9計算競賽者的“表現(performed as)”等級PorfAs=OldRating+CF*(APerf-EPerf) 方程式9服務器104還在方程式10中確定競賽者的競賽加權,以及在方程式11中確定競賽者的“帽(cap)”Weight=TimesPlayed+1.75*TimesPlayed+.4-1]]>方程式10Cap=150+15001+TimesPlayed]]>方程式11在方程式10中,TimesPlayed是競賽者從前已經被評定等級的次數。在一個實施例中,為了穩定被評定較高等級的競賽者,其等級在2000和2500之間的競賽者的加權被減少10%,且等級超出2500的競賽者的加權被減少20%。然后服務器利用方程式12確定競賽者新的變動性且利用方程式13確定競賽者新的等級
NewVolatility=Volatility2+Weight*(CF*(APerf-EPerf))21+weight]]>方程式12NewRating=Rating+Weight*PerfAs1+Weight]]>方程式13在一個實施例中,如果|NewRating-Rating|>Cap,則服務器104調節NewRating,這樣至多Cap不同于Rating。此外,在一些實施例中,服務器104存儲任何上述提到的值,如等級、變動性、及從前被評定等級的次數。此外,在一實施例中,新競賽者在進行編碼競賽之前其等級是暫定的。
因此,在剛剛說明的實施例中,如果競賽者已經在許多其它編碼競賽中或在編碼競賽的許多其它輪次中加以表現并且被評定等級,則服務器104并不根據編碼競賽中的一次表現急劇地調節競賽者的等級。服務器104還可確定每個競賽者的最高等級增加,以有助于穩定競賽者從一個編碼競賽到另一編碼競賽的等級。在一個實施例中,服務器104在編碼競賽的網址上顯示每個競賽者的等級。然而,在另一實施例中,服務器104僅使已登記的競賽者和贊助人能夠觀看競賽者的等級。
TABLE 1(表1)示例出由服務器104傳遞到競賽者的編碼問題的三個實例。如在三個實例中所示,編碼問題可包括幫助競賽者寫問題解的注釋。同樣,編碼問題可提供一個或多個解答所述問題的計算機代碼正確輸出的實例。
表1在表1中所示的編碼問題具有不同的難度。每個編碼問題的這些難度被描繪成不同的分數值。例如,一競賽者可以選擇一個250分的編碼問題以在正確解答時贏得最高250分。然而,另一競賽者可選擇相對于250分問題具有較高難度的1000分編碼問題,以在正確解答時贏得最高1000分。因此,在一個實施例中,通過選擇具有較高分數值(以及因此較高難度)的編碼問題,具有較高技能水平的競賽者可以比具有較低技能水平的競賽者更快速地積累分數。在一個實施例中,服務器104給積累較高總分數值的競賽者賦予較高等級。
在一個示范性實施例中,在一個虛擬房間內有多個編碼問題可供所有的競賽者。競賽者具有解決哪個問題的選擇權。一旦競賽者觀看了問題,則對那個問題的計時便開始。當競賽者完成了響應于一個問題的代碼、并將它提交到服務器上時,取決于問題的數量及分配到競賽編碼的時間量,競賽者可以開始解決第二個問題,以及隨后第三個問題等。在一些實施例中,競賽者并看不到問題,只看到分數值,并且競賽者僅基于問題的分數值來選擇要解決的問題。因此,每個競賽者在決定首先解決哪個編碼問題時對其能力做出判斷。
參考圖10,服務器104可將等級用于多種目的,包括用于將贊助商吸引到編碼競賽。等級提供了一種有形的、客觀的且可量化的方法,用于公司來確定競賽者的技能水平。如上所述,服務器104執行登記步驟,在此服務器104接收競賽者信息(步驟1004)。然后服務器運行至少一個編碼競賽(步驟1008)且將等級賦予每個競賽者(步驟1012)。
然后競賽管理員可以利用這些競賽來吸引贊助。特別地,服務器向第一贊助商提供有關一個或多個競賽者的競賽者信息,以換來贊助(步驟1016)。贊助可以包括許多東西,但是總體上包括提供對競賽或以及/或競賽的管理員的財務支持。例如,在一個實施例中,贊助商將提供獎金,所述獎金授予相對于預先設定的其它競賽者數量已經得到較高分數值的競賽者。雖然下面所說明的是對整個編碼競賽進行贊助,但是一個公司還可以贊助競賽的一部分(例如一輪次編碼競賽)。在一個實施例中,服務器104促成客戶在競賽者的網瀏覽器116(圖1)上或客戶軟件102(圖1)上來顯示與編碼競賽的贊助商相關聯的徽標及其它推銷信息。此外,服務器104可以向贊助商提供經選擇的競賽者信息及等級。
在一個實施例中,競賽管理員定制有關服務器104提供到贊助商的競賽者信息。在這個實施例中,服務器104僅傳遞部分競賽信息(步驟1020)。在這個實施例中,標準可是雇傭的地理偏愛、工作經驗年限、編碼語言專長或其它具體的技能、以及競賽者當前雇傭的狀況(例如主動求職、被動求職)。
所述標準還可是贊助商將考慮用于雇傭機會的等級范圍。如果競賽者的等級被評定成低于那個贊助商的最低等級,則服務器104并不將那個競賽者的信息提供給贊助商。在其它的實施例中,當公司決定贊助編碼競賽時,服務器104從贊助商處接收標準。因此,雖然標準的接受被示于在服務器104向贊助商提供競賽者信息之后的步驟1020中,但是服務器可另外在信息傳遞到贊助商之前的步驟1016中接收所述標準。
在服務器104向贊助商傳遞特定競賽者的競賽者信息之后,然后贊助商可聯系競賽者有關雇傭機會。在一個實施例中,贊助商與競賽管理員通信來獲取競賽者的信息用于潛在的雇傭。此外,就有關所要求的信息及雇傭機會,贊助商與競賽管理員通信且然后競賽管理員與競賽者通信。因此,競賽管理員為競賽者充當尋找就業的代理。
在一個實施例中,服務器104向贊助商提供有關一個或多個競賽者的信息且隨后贊助商與競賽者聯系。在一個實施例中,贊助商通過由服務器104所提供的通信服務(例如電子信息傳遞)與競賽者聯系。通過這個方式,可以向有前景的雇主隱瞞競賽者的實際身份,并且競賽者可以確定是否對贊助商所做的詢問做出響應。此外,當與有前景的雇主談判起始工資和或利益時,相對于其它競賽者具有高等級的競賽者可使用那個等級來助長競賽者的談判力量。
在一個實施例中,競賽者管理員向每個競賽者提供一個或多個廣告供競賽期間進行觀看。廣告可被顯示在網瀏覽器、客戶軟件、或一些組合上。一個或多個廣告商向競賽管理員提供這些廣告。一個廣告商可是編碼競賽的贊助商且可進一步是雇傭編碼員、開發軟件和/或硬件、以及/或涉及到技術的公司或商行。廣告商還可是競賽的管理員。在一個實施例中,服務器104在客戶軟件120上顯示一個或多個廣告。廣告可包括,但不受局限于徽標、引用語、詞、一段文字、圖片、或聲音或視頻剪輯。然后服務器104跟蹤每個競賽者的廣告觀看時間。例如,服務器可以確定客戶軟件顯示特定廣告的時間量。然后服務器104向廣告商提供有關觀看廣告競賽者的競賽者信息及廣告被跟蹤的時間等。
在一個實施例中,服務器104每個競賽者提供相同的廣告。然后服務器104向廣告商提供競賽者的總計信息。競賽者的信息可包括,例如觀看廣告的競賽者的經歷、每個競賽者的等級、以及/或每個競賽者的地理偏愛。例如,服務器104可提供具有高于或等于2000等級的十個極高技能的競賽者觀看了總共30分鐘的廣告,具有高于或等于1800但低于2000等級的十二名高技能的程序設計員觀看了27分鐘的廣告,以及二十名具有高于或等于1500但低于1800等級的有技能的程序設計員觀看了31分鐘的廣告。服務器還可提供每個競賽者觀看廣告的時間清單。在一些實施例中,服務器提供有關每個上述提到的競賽者的其它信息,如他們具有對Chicago,Illinois的地理偏愛。
在另一實施例中,服務器基于競賽者的信息向不同的競賽者提供不同的廣告。例如,如果廣告商是僅位于紐約且使用Java編程語言開發軟件的計算機機構,則服務器104向具有與上述信息相匹配的競賽者信息(即,對紐約的地理偏愛、在Java編程語言上的知識)的競賽者顯示這個廣告商的廣告。在一個實施例中,廣告商向競賽管理員(或服務器104)規定服務器104應該僅向具有作為其競賽者信息一部分的特定信息的編碼員提供他們的廣告。在另一實施例中,基于服務器104所存儲的有關特定廣告商的信息,服務器增加某些廣告觀看機會的頻率。
參考圖11,在一輪次或多輪次錦標賽中相對于其它競賽者贏得較多分數的競賽者除了有權得到雇傭機會外,還可被授予一個或多個獎勵。如上,服務器104提供編碼競賽(步驟1104)且在競賽期間(例如每輪次后贏得的分數)以及競賽以后(例如總分數)給每個競賽者授予分數(步驟1108)。服務器104確定是否得到特定分數的競賽者應該接受獎勵。服務器104基于所授予的分數是否高于預先設定的獎勵分數值(步驟1112)或所述分數是否高于房間內、分區內等其它競賽者所接收的分數來做出這項決定。
如果競賽者將接受一項獎勵,則服務器104通知競賽者。在一個實施例中,基于競賽者被授予的分數及預先設定的獎勵分數值之差,向競賽者授予不同的獎勵(步驟1120)。獎勵可是有形或無形的物品。例如,獎勵可包括,但不局限于獎金、汽車、計算機、度假以及與潛在雇主的面試。在另一個實施例中,獎勵以獲獎者的名義被授予慈善機構。獎勵可以各種方式被遞送到競賽者,如將獎勵郵寄到競賽者或讓競賽者在預先確定的地受獎。在另一個實施例中,編碼競賽管理員為一個或多個獎勵提供資金。
在一個示范性實施例中,一單輪次競賽的獎勵分配以分區和房間為基礎。基于競賽者的等級,競賽者被按種子選手分配到房間內。在較高(即具有小編號)分區和房間內的競賽者被示于表II中。每個分區及房間內從第一至第三名的獎勵金額如下所示分區1房間競賽者1st2nd3rd19635 537 45629382 323 27439293 248 21149249 211 179510 249 211 179610 227 192 163710 211 179 152810 196 166 141910 183 155 13210 10 172 145 12311 10 165 140 11912 10 158 133 113分區2房間競賽者1st2nd3rd110 9177 65210 8673 62310 8169 58410 7362 52510 6958 49610 6656 48710 6353 45810 6051 43911 6252 4510 11 5950 4311 11 5143 36未評定等級的房間競賽者1st2nd3rd1 10100 002 110003 11000表II服務器還可以提供“搭便車”競賽,其中競賽者可在任何時間與服務器進行通信,且每個競賽者為進行競賽支付競賽費。然后競賽管理員可以將所收取到總額的一部分(例如,收取的總額減去管理費用)分配給搭便車競賽的優勝者。
在一些實施例中,一系列編碼競賽被用來識別杰出的編碼員。競賽者參加輪次賽,使每輪次的高分得主參加下一輪次。這使大量競賽者能夠參加初級競賽,實現從大量競賽者中識別出杰出編碼員的目的。
在一個示范性實施例中,國家錦標賽在美國舉行。在這個實施例中,競賽的早期輪次賽在因特網上舉行,使每個競賽者在家鄉參加競賽。地區輪次賽在那個地區的中心物理位置舉行,且國家輪次賽在大型度假類型環境如Ledyard,CT的Foxwoods、Las Vegas,NV或Orlando,FL主辦。在較高輪次的競賽期間,編碼競賽的贊助商通過聯系信息、用餐、會議及服務請求/表現(例如編程、宣傳等)可得到與競賽者的親自接觸。
參考圖12,在一個實施例中,競賽者可以從第一淘汰輪次1204向前進展以通過系列競賽的國家冠軍賽1220。基于等級以及/或其它因數,預先設定數量的競賽者被邀請參加第一淘汰輪次1204。在每輪次中,服務器將競賽者分組,每組具有預先設定數量的競賽者。在分組中的每個競賽者與那個組中的其它競賽者在虛擬房間內展開競賽。在另一個實施例中,服務器104將具有相似等級的預先設定數量的競賽者集中在一個房間。例如,第一虛擬房間可擁有十個具有最高等級的競賽者,而另一個虛擬房間可擁有從前從未參加過編碼競賽的十個競賽者。這類房間播種使競賽者之間能夠得到更公平的競賽。此外,在一個實施例中,獎金被授予每個虛擬房間中例如累積有那個房間中最高分數值的一個或多個競賽者。在一些實施例中,努力根據其地理位置將競賽者分配到虛擬房間中,這樣他們可以同來自同一地區的其它人參加地區競賽。
在這個實施例中,隨著獎金(例如被授予的獎金額)從第一初級輪次1208到國家輪次1220的增加,競賽的水平也在增加。每輪次競賽涉及到編碼、挑戰以及/或測試。在第一初級輪次1208中的一些競賽者在第一初級輪次1208期間被淘汰,因此較小數競賽者參加第二初級輪次1212。同樣,隨著進程繼續到地區輪次1216,仍然是大多數競賽者被淘汰,其中在一實施例中,客戶108和服務器104位于那個地區的一個中心物理位置。最終,在地區輪次1216中具有最高分數的預先設定數量的競賽者進入國家輪次1220。優選地,國家輪次1220在一個物理位置(例如度假型的環境、或在大型計算機會議處)舉行。旨在這個實施例是示范性的,并且其它實施例可包括不同數量的輪次、競賽者及位置。
參考圖13,虛擬“大廳”區域1300實施例的屏幕照片實例被示出。在一個實施例中,大廳1300是在編碼競賽期間顯示在客戶108上的主網頁。大廳1330包括狀況面板1304,所述狀況面板1304包含例如,競賽者的登錄名稱、等級及狀況(即,競賽者是正在編碼還是正在挑戰)。大廳1300還包括一主菜單1308,所述主菜單提供隨時可以被使用的功能,如用來搜索一特定競賽者的搜索功能。大廳1300進一步包括選項區域1310,其提供選項來定制大廳1300的顯示。有效的競賽區域1312是一個顯示當前有效競賽(例如,實踐競賽、實際競賽)的區域。大廳1300還包括用于用戶檢索有關特定項目幫助的幫助區域1316以及顯示與編碼競賽有關的相關時間的競賽計時器顯示器1320。例如,競賽計時器顯示器1320可以顯示倒計時到下一競賽開始的起始計時器。圖例鍵1322顯示參加下一編碼競賽的競賽者。大廳1330還包括使虛擬房間中的競賽者彼此之間能夠進行通信的聊天區域1324。大廳1330還使一個競賽者經由搜索箱1328能夠搜索另一競賽者。此外,競賽者信息窗1332使競賽者能夠發現有關另一競賽者的某些信息。
參考圖14,在圖13的實施例中,在編碼競賽中進行競賽的競賽者從服務器104傳遞到每個客戶108的幾個編碼問題中選擇出一個編碼問題。示范性的編碼問題選擇屏幕1400包括一個所有有效進行的虛擬房間的列表1404。所述屏幕1400還包括工具窗1408。編碼問題選擇屏幕1400額外地包括一個選擇窗1412,在此選擇窗1412處競賽者基于所顯示的那個編碼問題的分數值來選擇編碼問題。一旦競賽者選擇了編碼問題,則服務器104顯示編碼窗,以使競賽者能夠建立解決編碼問題的計算機代碼。
參考圖15,編碼窗1500的示范性實施例包括問題信息窗1504,用于顯示有關編碼問題的信息,如方法名稱、種類名稱、返回類型、以及爭論類型。編碼窗1500還包括用來顯示編碼問題的問題陳述窗1508。編碼窗1500額外地包括編碼區域1512,在此編碼區域1512處競賽者寫下試圖來解決編碼問題的計算機代碼。此外,編碼窗1500包括動作條1516,在此動作條1516使競賽者能夠完成計算機代碼的各種動作,如測試計算機代碼、保存計算機代碼、以及向服務器104提交計算機代碼。
參考圖16,在一個示范性實施例中,在完成編碼階段之后,服務器104執行挑戰階段且顯示挑戰窗1600。挑戰窗1600包括使競賽者能夠觀看其它競賽者的計算機代碼的觀看窗1604。挑戰窗1600還包括用來使測試數據能夠提交的挑戰提交窗。
在一個實施例中,服務器104分配用于團隊競賽的團隊。這種分配可例如發生在競賽開始之前、競賽中預先設定數量的輪次之后、或一個競賽結束之后且用于未來競賽。在進一步的實施例中,基于從前的等級、或基于一個或多個競賽者所接收到的從前分數,服務器104隨機地分配團隊。在另外的實施例中,競賽者構成團隊。在另外一個其它的實施例中,服務器104選舉至少兩個競賽者充當團隊長且所述團隊長選擇即將成為其團隊中隊員的競賽者。此外,服務器104可以允許競賽者從一個團隊被交易到另一個團隊。一個團隊(例如團隊長)就一個競賽者可以進行交易的實例包括,但不局限于另一個團隊的隊員、分數及獎勵。
團隊競賽可以涉及到季節,其中團隊在預先設定的時間周期內為贏得最佳記錄或總分數而進行競賽。此外,服務器104可包括團隊的單獨分區。在這個實施例中,具有平均等級高于預先設定團隊等級的團隊,例如被放置到一個較高的分區內。服務器104還可基于平均等級優勢提供一團隊的“不利條件”(handicap)。在一個實施例中,通過在競賽者開始之前或在競賽期間而未等競賽者對編碼問題進行回答便賦予團隊中的競賽者不利條件分數,服務器104提供這種不利條件。
在一些實施例中,服務器104使同一團隊中競賽者之間能夠合作(collaboration),以便于團隊中的每個競賽者可以觀看其它團隊員的工作和/或進展。在另一實施例中,服務器104將各種隊員的得分進行合計(即不準合作)以得到團隊的得分。在一個實施例中,服務器104提供團隊競賽,其中一些或全部團隊員必須使用由團隊中其它隊員所建立的計算機代碼來建立用于提交的最終計算機代碼。
在另一個實施例中,競賽者進行有關硬件邏輯設計的競賽。服務器104提供一編碼問題,其要求每個競賽者設計電子電路且當完成時提供此電路設計的計算機代碼。然后利用測試數據作為對電路仿真的輸入,所編碼的電路可以被加以挑戰。那么,代碼的執行是對由代碼所規定的電路仿真的執行。然后基于,例如電路的有效性(例如部件的數量、所設計的實施成本、最大的輸入和響應速度等)、其響應相對于預先設定解的正確性、以及相對于測試數據的成功,服務器104可以給競賽者授予分數。電路編碼問題的簡單實例將是利用數字硬件域中規定的邏輯門進行八位乘法電路(即將兩個數相乘的電路)的設計、或進行模擬域中低通濾波器的設計。同樣,本發明的系統和方法可以被應用到其它計算機和非計算機學科的編碼中。如果結果可以被編碼,則被執行的或被仿真的代碼以及上述所說明的原理是適用的。例如,在土木工程中領域,借助于合適的工具,橋梁設計的一部分(例如支撐構架)可以被加以編碼且在仿真期間利用測試應力可以測試被編碼的設計。在航空工程領域,飛機機翼升降舵的設計可以被編碼且在模擬期間結果經受各種輸入(例如機翼的移動、角度等)。因此,利用適合的編碼工具、編譯器以及執行環境,所說明的方法和系統可以被擴展到各種學科的編碼中。
本領域中的那些普通技術人員將想到在此所說明內容的變動、修改及其它實施,而不偏離所提出權利保護的本發明的實質及范圍。因而,本發明并不由先前的示例性說明而是由下述權利要求的實質及范圍來定義。
權利要求
1.一種用于提供編碼競賽的方法包括(a)通過通信網絡向競賽者傳遞編碼問題;(b)接收響應于通過通信網絡所傳遞的編碼問題由至少競賽者之一所開發的計算機代碼;(c)確定所接收的計算機代碼對由非所述競賽者一方提交的測試數據的響應;(d)評估所確定的計算機代碼對測試數據的響應。
2.根據權利要求1的方法,其中步驟(b)進一步包括從多個競賽者接收計算機代碼。
3.根據權利要求1的方法,其中所述的評估步驟(d)包括確定參考代碼對測試數據的參考響應;以及將已確定的所接收計算機代碼對測試數據的響應與已確定的參考代碼對測試數據的參考響應相比較。
4.根據權利要求1的方法,其中評估步驟(d)包括評估至少所確定響應的正確性、所確定響應的精確性、以及所確定響應的速度中的一個。
5.根據權利要求1的方法進一步包括這樣的步驟,即基于所述對已確定的計算機代碼對測試數據響應的評估給至少競賽者之一授予分數。
6.根據權利要求5的方法進一步包括基于授予競賽者的分數向至少競賽者之一賦予等級。
7.根據權利要求1的方法進一步包括在傳遞計算機編碼問題的步驟之前,要求競賽者參加資格檢定測試。
8.根據權利要求7的方法,其中要求完成資格檢定測試的步驟包括被確定的競賽者資格檢定測試得分高于預先設定值。
9.根據權利要求8的方法進一步包括在傳遞步驟之前,為已經獲得了被確定高于預先設定值的資格檢定測試得分的每個競賽者遞增競賽計數器。
10.根據權利要求9的方法進一步包括當編碼競賽的競賽計數器到達了預先設定值時,即使其它競賽者已經獲得了高于預先設定值的所確定的資格檢定測試得分,也對其它競賽者關閉編碼競賽。
11.根據權利要求1的方法進一步包括在傳遞計算機編碼問題的步驟之前,將競賽者分配到一個分區的這一步驟。
12.根據權利要求11的方法,其中將競賽者分配到一個分區的步驟進一步包括將競賽者分配到下述之一(i)第一分區,用于從前已經獲得等級高于第一預先設定分區等級的競賽者;以及(ii)第二分區,用于具有等級基本上等于零或低于第二預先設定分區等級的競賽者。
13.根據權利要求12的方法,其中所述第一預先設定等級和所述第二預先設定等級是相同的等級。
14.根據權利要求12的方法,所述方法進一步包括將競賽者分配到所述第一分區、所述第二分區、以及第三分區中的一個,所述第三分區是針對具有等級高于所述第二預先設定等級但低于所述第一預先設定等級的競賽者。
15.根據權利要求12的方法,其中所述步驟(a)傳遞計算機編碼問題進一步包括相對于被分配到所述第一分區的競賽者,向被分配到所述第二分區的競賽者傳遞難度較小的編碼問題。
16.根據權利要求1的方法,其中所述步驟(c)確定所接收的計算機代碼對由非所述競賽者的一挑戰方提交的測試數據的響應進一步包括從競賽者之一接收測試數據。
17.根據權利要求1的方法,其中所述步驟(c)確定所接收的計算機代碼對由非所述競賽者的一挑戰方提交的測試數據的響應進一步包括從觀眾接收測試數據。
18.根據權利要求1的方法,其中所述步驟(c)確定所接收的計算機代碼對由非所述競賽者的一挑戰方提交的測試數據的響應進一步包括產生測試數據。
19.根據權利要求1的方法,其中所述步驟(c)確定所接收的計算機代碼對由非所述競賽者的一挑戰方提交的測試數據的響應進一步包括確定計算機代碼對預先設定的測試數據的響應。
20.根據權利要求1的方法,其中所述通信網絡是因特網。
21.根據權利要求1的方法,其中所述通信網絡是內聯網。
22.根據權利要求1的方法,其中所述通信網絡是局域網。
23.根據權利要求1的方法,其中所述通信網絡是寬域網。
24.根據權利要求1的方法,其中計算機代碼是源代碼,且其中所述方法進一步包括在步驟(c)之前對源代碼進行編譯由此產生可執行的代碼的步驟;以及其中步驟(d)包括確定被編譯的可執行代碼對測試數據的響應。
25.根據權利要求1的方法,其中步驟(b)進一步包括接收用C++編程語言所寫的計算機代碼。
26.根據權利要求1的方法,其中步驟(b)進一步包括接收用C#編程語言所寫的計算機代碼。
27.根據權利要求1的方法,其中步驟(b)包括接收作為模型的計算機代碼,所述模型可以被前向工程為機器可讀格式用于檢測目的,以及其中步驟(c)包括測試所述模型的機器可讀格式。
28.根據權利要求1的方法,其中步驟(b)進一步包括接收作為被解釋代碼的計算機代碼。
29.根據權利要求28的方法,其中步驟(b)進一步包括接收以Java編程語言所寫的計算機代碼。
30.根據權利要求1的方法,其中步驟(b)進一步包括接收包括工程設計的計算機代碼,以及其中步驟(c)包括仿真所述工程設計。
31.根據權利要求30的方法,其中所述工程設計包括一電子電路設計。
32.根據權利要求1的方法,所述方法步驟(a)-(d)首先在實際會話內且其次在競賽中被重復。
33.根據權利要求1的方法,其中步驟(a)包括將編碼問題傳遞到至少兩個競賽者團隊;步驟(b)包括接收由至少所述競賽者團隊之一所開發的計算機代碼;以及步驟(c)包括確定所接收的計算機代碼對從一方所接收到的測試數據的響應,所述方不是開發所述計算機代碼的團隊的一部分。
34.根據權利要求1的方法,其中傳遞步驟(a)在兩個或多個存在的競賽者的請求下而發生。
35.根據權利要求1的方法,其中步驟(a)在一預先設定的時間發生。
36.一種用于評估競賽者技能水平的方法包括(a)在競賽期間電子地將編碼問題通信到競賽者;(b)在競賽期間從競賽者之一電子地接收響應于編碼問題的計算機代碼;(c)自動地評估所接收的計算機代碼;(d)基于所接收的計算機代碼給競賽者授予分數;以及(e)基于授予競賽者的分數值確定競賽者的等級。
37.根據權利要求36的方法,其中步驟(e)進一步包括基于競賽者從前的等級及接收到編碼問題的競賽者總數量來確定競賽的平均等級。
38.根據權利要求37的方法,其中步驟(e)進一步包括基于競賽者從前的等級、接收到編碼問題的競賽者總數量、以及競賽者等級的變動性當中至少之一,確定所述競賽的競賽因數。
39.根據權利要求38的方法,其中步驟(e)進一步包括基于競賽者從前的等級確定競賽者的技能。
40.根據權利要求39的方法,其中步驟(e)進一步包括基于競賽者等級的變動性確定一競賽者相對于其它競賽者的偏差值。
41.根據權利要求40的方法,其中步驟(e)進一步包括估算在競賽中較其它競賽者授予一競賽者較高分數的概率。
42.根據權利要求41的方法,其中步驟(e)進一步包括計算至少競賽者的預計性能、預計名次、以及實際表現中的一個。
43.根據權利要求42方法,其中步驟(e)進一步包括計算至少競賽者的新變動性及新等級中的一個。
44.根據權利要求43的方法進一步包括確定競賽者的最大等級增加。
45.根據權利要求44的方法進一步包括確定競賽者的競賽加權效果。
46.根據權利要求36的方法,其中確定競賽者等級的這個步驟進一步包括隨著競賽者已經被評定等級的頻率在增加以更小的增量來調節等級。
47.一種用于向潛在雇主提供競賽者信息的方法包括從競賽者接收競賽者信息用于輸入到在線編碼競賽中;(a)提供競賽者之間的在線編碼競賽;(b)基于在在線編碼競賽中的表現給每個競賽者賦予等級;以及(c)向競賽者的潛在雇主提供至少一些競賽者信息及至少一個競賽者被賦予的等級。
48.根據權利要求47的方法,其中步驟(c)進一步包括基于在在線競賽中的表現給競賽者授予分數。
49.根據權利要求47的方法,其中競賽者信息進一步包括至少競賽者的家族地址、電話號碼、工作地址、電子信箱地址、職業經歷、工作歷史、及某些人口統計信息中的一個。
50.一種用于向競賽者授予獎勵的方法包括(a)提供在競賽者之間的在線編碼競賽;(b)基于在在線編碼競賽中的表現給每個競賽者授予分數值;以及(c)響應于所授予的分數值向至少一個競賽者授予至少一個獎勵。
51.根據權利要求50的方法,其中所述方法包括向已經被授予分數值高于預先設定獎勵分數值的競賽者授予獎勵,其中所述被授予的獎勵取決于相對于預先設定獎勵分數值的被授予分數。
52.根據權利要求50的方法,其中所述被授予的獎勵是至少金錢獎勵、有形的物品、與有前景的雇主的面試、及雇傭開價中的一個。
53.一種用于在編碼競賽中做廣告的方法包括(a)從競賽者接收競賽者信息用于輸入到在線編碼競賽中;(b)提供競賽者之間的至少一個在線編碼競賽;(c)在至少一個競賽中提供給每個競賽者至少一個用于觀看的廣告;(d)跟蹤每個競賽者對至少一個廣告的觀看時間;以及(e)向廣告商提供至少一些競賽者信息及至少一個廣告的觀看時間。
54.根據權利要求53的方法進一步包括這樣的步驟,即基于在在線編碼競賽中的表現賦予給每個競賽者等級。
55.根據權利要求54的方法,其中競賽者信息提供步驟(e)進一步包括提供競賽者的等級。
56.根據權利要求53的方法,其中所述競賽者信息在競賽者信息提供步驟(e)中以總計形式被提供。
57.根據權利要求53的方法,其中在至少一個競賽期間給每個競賽者提供至少一個用于觀看的廣告的步驟包括響應于競賽者信息選擇由至少一個競賽者觀看的廣告。
58.一種用于提供編碼競賽的裝置,所述裝置包括(a)一個由競賽者所使用、用于與網瀏覽器通信的網服務器,以提供有關編碼競賽的信息;(b)一個由競賽者所使用、與客戶軟件通信的客戶接口服務器,所述客戶接口服務器使編碼問題能夠傳遞到客戶軟件且能夠接收到至少客戶請求及響應于編碼問題的計算機代碼中的一個;(c)一個與網服務器和客戶接口服務器通信的應用服務器,以解釋至少客戶請求、競賽請求、及計算機代碼當中的一個;以及(d)一個與應用服務器通信的競賽服務器,以至少進行編譯計算機代碼、執行計算機代碼、測試計算機代碼、以及計算競賽者的等級中的一個。
59.根據權利要求58的裝置進一步包括與應用服務器通信的一個數據庫服務器,以響應于至少客戶請求、競賽請求、及計算機代碼中的一個來檢索數據。
60.一種用于確定編碼競賽者的編碼技能水平的裝置,所述裝置包括(a)一個用于向競賽者提供競賽通信的客戶-服務器接口,用于輸入到具有多個競賽者的編碼競賽中;(b)一個用于從競賽者接收請求的接收器;以及(c)一個與所述接收器通信的競賽服務器層,通過至少證實所述請求和確定所述競賽者相對于多個競賽者的等級中的一個來確定競賽者的編碼技能水平。
61.根據權利要求60的裝置進一步包括一個與所述接收器通信的應用服務器層,以解釋響應。
62.根據權利要求61的裝置,其中所述應用服務器層進一步包括一個與所述接收器通信的消息隊列處理器,以將請求進行排隊用于由競賽服務器層來操作。
63.根據權利要求62的裝置,其中所述消息隊列處理器與競賽服務器層通信,以將請求傳遞到競賽服務器層。
64.根據權利要求60的裝置,其中所述接收器進一步包括一個網服務器層。
65.根據權利要求60的裝置,其中所述接收器進一步包括一個客戶接口服務器層。
66.根據權利要求65的裝置,其中所述客戶接口服務器層進一步包括一個用于向客戶-服務器接口提供接口的接口連接。
67.根據權利要求60的裝置,其中所述客戶-服務器接口進一步包括至少網瀏覽器和客戶軟件中的一個。
68.根據權利要求60的裝置,其中所述客戶接口服務器層進一步包括一個與所述接口連接通信的接口服務器管理器,以管理至少與接口連接通信的分配和操作中的一個。
69.根據權利要求60的裝置,其中所述客戶接口服務器層進一步包括一個與接口連接通信的接口服務器處理,以提供與應用服務器層的通信。
70.根據權利要求60的裝置,其中所述競賽通信進一步包括一個編碼問題。
71.根據權利要求60的裝置,其中所述請求進一步包括對所述編碼問題的響應。
72.根據權利要求60的裝置,其中所述應用服務器層進一步包括一個與網服務器層通信的servlet引擎。
73.根據權利要求72的裝置進一步包括一個與應用服務器層通信的數據庫服務器層。
74.根據權利要求72的裝置,其中所述應用服務器層進一步包括一個數據訪問層,以響應于至少所述請求和對所述請求的解釋中的一個來訪問數據。
75.根據權利要求74的裝置,其中所述數據庫服務器層與所述數據訪問層通信。
76.根據權利要求60的裝置,其中所述競賽服務器層進一步包括至少等級引擎、代碼編譯引擎、及代碼測試引擎中的一個。
77.根據權利要求76的裝置,其中所述競賽服務器層與所述消息隊列處理器通信。
全文摘要
本發明涉及到一種用于提供編碼競賽的方法和裝置。在一個實施例中,一種用于提供編碼競賽的方法包括向競賽者傳遞編碼問題、接收由競賽者所建立的計算機代碼、確定計算機代碼對測試數據的響應、以及評估計算機代碼對測試數據的響應。在另一個實施例中,一種評估競賽者技能水平的方法包括電子地將編碼問題通信到競賽者、電子地接收來自競賽者之一的響應于編碼問題的軟件程序、評估所接收的軟件程序、基于所接收的軟件程序向競賽者授予分數、以及基于授予競賽者的分數值確定競賽者的競賽等級。
文檔編號G06F17/00GK1503951SQ02806239
公開日2004年6月9日 申請日期2002年1月8日 優先權日2001年1月9日
發明者M·利頓, J·M·胡赫斯, M 利頓, 胡赫斯 申請人:托普科德公司