This shows you the differences between two versions of the page.
pa:regulament-proiect-2020 [2020/02/22 23:36] stefan.ruseti [Etapa 5] |
pa:regulament-proiect-2020 [2020/05/01 14:42] (current) dragos.corlatescu [Etapa 3] |
||
---|---|---|---|
Line 11: | Line 11: | ||
Tema proiectului de anul acesta din cadrul materiei Proiectarea Algoritmilor va fi realizarea unei inteligențe artificiale capabile să joace șah[1]. Proiectul se va realiza în echipe de câte 2-3 studenți (minim 2, maxim 3 studenți pe echipă) și se va desfășura pe parcursul a 4 etape. | Tema proiectului de anul acesta din cadrul materiei Proiectarea Algoritmilor va fi realizarea unei inteligențe artificiale capabile să joace șah[1]. Proiectul se va realiza în echipe de câte 2-3 studenți (minim 2, maxim 3 studenți pe echipă) și se va desfășura pe parcursul a 4 etape. | ||
Se va folosi platforma [[https://www.gnu.org/software/xboard/|XBoard 4.8]] pentru a interfața, vizualiza, înregistra și reda partidele jucate între aplicațiile realizate în cadrul proiectului. Dacă vreți să testați pe Windows, puteți folosi varianta WinBoard, pe care o puteți descărca de [[http://www.open-aurec.com/wbforum/viewtopic.php?t=51528|aici]]. | Se va folosi platforma [[https://www.gnu.org/software/xboard/|XBoard 4.8]] pentru a interfața, vizualiza, înregistra și reda partidele jucate între aplicațiile realizate în cadrul proiectului. Dacă vreți să testați pe Windows, puteți folosi varianta WinBoard, pe care o puteți descărca de [[http://www.open-aurec.com/wbforum/viewtopic.php?t=51528|aici]]. | ||
+ | |||
+ | <note> | ||
+ | **In cazuri deosebite** acceptam ca proiectul sa fie realizat individual. Pentru asta, va trebui sa trimiteti un mail echipei de proiect in care sa motivati decizia. **Nu recomandam acest lucru**, avand in vedere ca volumul de lucru este gandit pentru 2-3 studenti! | ||
+ | </note> | ||
**Reguli de upload**: La fiecare etapă (în afară de etapa 0) veți salva în repository-ul vostru (cel specificat la înscriere) o arhivă zip, numită "EtapaX.zip" (unde X reprezintă numărul etapei: e.g. "Etapa1.zip") | **Reguli de upload**: La fiecare etapă (în afară de etapa 0) veți salva în repository-ul vostru (cel specificat la înscriere) o arhivă zip, numită "EtapaX.zip" (unde X reprezintă numărul etapei: e.g. "Etapa1.zip") | ||
Line 23: | Line 27: | ||
**Makefile**: | **Makefile**: | ||
- | Boții vor fi evaluați pe un sistem Linux/GNU pe 64 biți, deci **este foarte important să verificați că aveți un makefile care funcționează corect** pe Linux, chiar dacă lucrați pe Windows sau MacOS. Scriptul de testare va apela "cmake ." (dacă ați trimis un fișier CMakeLists.txt), respectiv "make". | + | Boții vor fi evaluați pe un sistem Linux/GNU pe 64 biți, deci **este foarte important să verificați că aveți un makefile care funcționează corect** pe Linux, chiar dacă lucrați pe Windows sau MacOS. Scriptul de testare va apela "cmake ." (dacă ați trimis un fișier CMakeLists.txt), "make build" pentru compilare, apoi "make run" pentru rulare. |
Asigurați-vă că fișierul Makefile nu conține path-uri absolute (să poată fi rulat și pe alt sistem). | Asigurați-vă că fișierul Makefile nu conține path-uri absolute (să poată fi rulat și pe alt sistem). | ||
- | Este util sa aveti o regula "clean", pentru a sterge executabilul si fișierele obiect/log-urile generate (dacă este cazul). | + | Este util să avțti o regula "clean", pentru a șterge executabilul și fișierele obiect/log-urile generate (dacă este cazul). |
Fișierul **Readme** va respecta următoarea structură: | Fișierul **Readme** va respecta următoarea structură: | ||
Line 44: | Line 48: | ||
Fiecare echipă va desemna un membru al acesteia cu rolul de căpitan. Căpitanul va avea, printre altele, sarcina de a trimite în numele echipei sale soluțiile pentru fiecare din etapele rămase. Ceilalţi membri ai echipei nu vor trimite soluții, decât in cazul in care căpitanul nu poate face acest lucru din motive obiective. | Fiecare echipă va desemna un membru al acesteia cu rolul de căpitan. Căpitanul va avea, printre altele, sarcina de a trimite în numele echipei sale soluțiile pentru fiecare din etapele rămase. Ceilalţi membri ai echipei nu vor trimite soluții, decât in cazul in care căpitanul nu poate face acest lucru din motive obiective. | ||
- | |||
- | Un obiectiv al acestui proiect este lucrul in echipă. Recomandăm să citiți cu atenție regulile jocului și să vă alegeți fiecare rolul in echipă, rol pe care să îl mentionați în momentul inscrierii. De exemplu, o echipă de 3 studenți poate fi formată dintr-o persoană care să scrie codul, 0 persoană care să facă cercetare (tactici, algoritmi, optimizări) și un tester. Rolurile se pot schimba pe parcurs. | ||
Pentru a ajuta colaborarea în echipă, veți folosi un sistem de versionare a surselor numit **git**. Mai multe indicații [[https://ocw.cs.pub.ro/courses/pa/folosire-gitlab|aici]]. | Pentru a ajuta colaborarea în echipă, veți folosi un sistem de versionare a surselor numit **git**. Mai multe indicații [[https://ocw.cs.pub.ro/courses/pa/folosire-gitlab|aici]]. | ||
- | Pentru înscriere, accesați acest [[https://goo.gl/forms/gI9dbkXpNPb5hvom2|link]]. | + | Pentru înscriere, accesați acest [[https://docs.google.com/forms/d/e/1FAIpQLSeCLuFg0dQ3bwjTBWlv4zR00qore8R--3Me6jV5r8P6dJU1QA/viewform|link]]. |
Această etapă va avea **1 săptămână**. Punctajul alocat acestei etape este de 0 puncte. | Această etapă va avea **1 săptămână**. Punctajul alocat acestei etape este de 0 puncte. | ||
Line 67: | Line 69: | ||
Această etapă va avea **2 săptămâni**. Punctajul alocat acestei etape este de **0.4 puncte**. | Această etapă va avea **2 săptămâni**. Punctajul alocat acestei etape este de **0.4 puncte**. | ||
- | Deadline-ul acestei etape este **TBD**. | + | Deadline-ul acestei etape este **17 martie 2020, 23:55**. |
===== Etapa 2 ===== | ===== Etapa 2 ===== | ||
Line 74: | Line 76: | ||
Această etapă va avea **4 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**. | Această etapă va avea **4 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**. | ||
- | Deadline-ul acestei etape este **TBD**. | + | Deadline-ul acestei etape este **21 aprilie 2020, ora 23:55**. |
+ | |||
+ | ==== Testare ==== | ||
+ | Pentru testare ne vom folosi de engine-ul FairyMax care vine preinstalat cu xboard/winboard. Acesta va fi limitat să vadă doar 2 mutări în față (depth=2), deci nu va juca foarte bine. | ||
+ | |||
+ | |||
+ | Comanda care va fi rulată pentru testare va arăta (foarte) asemănător cu comanda de mai jos: | ||
+ | <note important>xboard -fcp "make run" -scp "fairymax" -secondInitString "new\nrandom\nsd 2\n" -tc 5 -inc 2 -autoCallFlag true -mg 10 -sgf partide.txt -reuseFirst false</note> | ||
+ | |||
+ | Explicarea parametrilor: | ||
+ | * **xboard** - aplicația pe care o folosim :-D poate fi atât xboard cât și winboard, dar checkerul va rula cel mai probabil pe linux deci vom folosi xboard. | ||
+ | * **-fcp "make run"** - setează primul engine ca fiind engine-ul vostru. Vă reamintim că "make run" ar trebui doar să vă pornească engine-ul, nu și xboard-ul. | ||
+ | * **-scp "fairymax"** - setează al doilea engine ca fiind engine-ul FairyMax. | ||
+ | * **-secondInitString "new\nrandom\nsd 2\n"** - string de inițializare pentru FairyMax care îi limitează adâncimea de căutare (depth) la 2. | ||
+ | * **-tc 5 -inc 2** - setează timpul de joc la 5 minute (timpul de start pentru fiecare jucător), iar la fiecare mutare jucătorul care a efectuat-o va primi încă 2 secunde. //Observație:// Nu este neapărat nevoie să implementați gestionarea timpului (deși probabil v-ar ajuta). Acest timp, împreună cu următorul parametru(-autoCallFlag true) previne situația în care voi ați da un depth prea mare engine-ului vostru și acesta ar sta foarte mult să se gândească și situația în care engine-ul vostru intră într-o buclă infinită și nu mai mută. | ||
+ | * **-autoCallFlag true** - setează xboard-ul ca atunci când i se termină timpul unuia din jucători să atribuie victoria celuilalt. | ||
+ | * **-mg 10** - numărul de partide jucate va fi 10 pentru teste. Automat se vor juca 5 cu albul și 5 cu negru. Voi puteți modifica parametrul sau chiar să îl scoateți pentru teste mai mici. | ||
+ | * **-sgf partide.txt** - în acest fișier se vor salva partidele jucate. | ||
+ | * **-reuseFirst false** - acest parametru îi specifică lui xboard să reîncarce engine-ul vostru după fiecare partidă. Dacă nu este prezent se va da "new game". Puteți să-l vedeți ca pe o plasă de siguranță: dacă cumva engine-ul vostru se "strică" în timpul unei partide, el se va reseta la următoarea deci teoretic eroarea nu se va propaga. | ||
+ | |||
+ | <note important>Pentru fi siguri că primiți de la xboard/winboard mutările în formatul de coordonate (g1f3, care mută piesa de la g1 la f3) în momentul în care primiți "protover" de la xboard răspundeți cu "feature san=0". Dacă ați implementat mutările in formatul "piesă la câmp" (ex: Nf3, care mută calul la f3) atunci nu mai este nevoie să trimiteți acest "feature". | ||
+ | |||
+ | "feature"-ul puteți să-l trimiteți pe tot odată: foarte mulți dintre voi ați implementat în etapa 1 să răspundeți cu "feature sigterm=0". Acum puteți trimite "feature sigterm=0 san=0"</note> | ||
+ | |||
+ | Mai multe detalii pentru configurarea xboard-ului din linie de comandă puteți găsi aici [[https://www.gnu.org/software/xboard/manual/xboard.html#|documentație xboard]]. | ||
+ | |||
+ | ==== Punctare ==== | ||
+ | Punctajul de **0.5 puncte** se va acorda în felul următor: | ||
+ | * **0.2 puncte** implementarea corectă a tuturor detaliilor ce țin de jocul de șah | ||
+ | * **0.3 puncte** implementarea algoritmului minimax/negamax. Acest punctaj va fi și el divizat după cum urmează: | ||
+ | * //0.2 puncte// implementarea unui algoritm minimax/negamax mediocru | ||
+ | * //0.1 puncte// implementarea unui algoritm minimax/negamax bun | ||
+ | |||
+ | |||
+ | Punctele se vor acorda după următoarea formulă: | ||
+ | |||
+ | <code> | ||
+ | punctaj_etapă = 0.2 * (număr_de_partide_terminate_corect / 10) + | ||
+ | 0.2 * (număr_de_partide_terminate_după_mutarea_20 / 10) + | ||
+ | min(0.1, 0.1 * (număr_de_puncte_din_meci / 5))</code> | ||
+ | | ||
+ | Clarificări: | ||
+ | * număr_de_partide_terminate_corect - număr de partide în care engine-ul vostru nu face illegal moves și termină partida. Evident că vom scădea dacă nu sunt implementate toate mișcările tuturor pieselor și așa mai departe. Adică nu veți primi punctaj dacă veți muta doar un pion și avoi veți ceda ca în etapa 1. | ||
+ | * număr_de_partide_terminate_după_mutarea_20 - numărul de partide în care partida se termină după mutarea 20 (mutarea 20 înseamnă că atât albul, cât și negrul au făcut 20 de mutări) cu orice rezultat **sau** dacă partida se termină înainte de mutarea 20, dar cu victoria voastră. //Observație:// În mod normal, un minimax cât de slab cu un depth > 2 ar trebui să îi reziste lui FairyMax mai mult de 20 de mutari. | ||
+ | * min(0.1, 0.1 * (număr_de_puncte_din_meci / 5)) - pe scurt, pentru a obține toate punctele la această secțiune va trebui să obțineți minim 5 puncte din cele 10 posibile în orice combinație (adică 5 victorii, sau 4 victorii și 2 remize, etc.) | ||
===== Etapa 3 ===== | ===== Etapa 3 ===== | ||
- | Această etapă este dedicată implementării unor algoritmi avansați pentru a crește calitatea jocului prestat de program. Punctajul pe această etapă poate fi obținut în urma unor meciuri cu boți puși la dispoziție de noi. | + | Această etapă este dedicată implementării unor algoritmi avansați pentru a crește calitatea jocului prestat de program. Punctajul pe această etapă poate fi obținut în urma unor meciuri cu boți puși la dispoziție de către noi. |
Recomandăm implementarea algoritmului alpha-beta și a cel putin două tehnici avansate/euristici pentru a putea calcula cât mai multe mutări în față. Administrarea timpului rămas este o componentă foarte importantă acestei etape. | Recomandăm implementarea algoritmului alpha-beta și a cel putin două tehnici avansate/euristici pentru a putea calcula cât mai multe mutări în față. Administrarea timpului rămas este o componentă foarte importantă acestei etape. | ||
- | Detalii despre boții puși la dispoziție, reguile de punctare și formatul meciurilor vor fi anunțate ulterior. | + | Detalii despre boții puși la dispoziție, regulile de punctare și formatul meciurilor vor fi anunțate ulterior. |
Această etapă va avea **4 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**. | Această etapă va avea **4 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**. | ||
- | Deadline-ul acestei etape este **TBD**. | + | Deadline-ul acestei etape este **19 mai 2020, ora 23:55**. |
+ | |||
+ | ==== Testare ==== | ||
+ | Pentru testare ne vom folosi de engine-ul FairyMax care vine preinstalat cu xboard/winboard. În funcție de caz, acesta va fi limitat ori la depth=3 ori la depth=4. Acest lucru îl va face să joace mai bine decât la etapa precedentă. | ||
+ | |||
+ | Comenzile care vor fi rulate pentru testare vor arăta (foarte) asemănător cu comenzile de mai jos. Diferența constantă în string-ul de inițializare pentru FairyMax (depth 3 vs depth 4): | ||
+ | <note important>xboard -fcp "make run" -scp "fairymax" -secondInitString "new\nrandom\nsd 3\n" -tc 5 -inc 2 -autoCallFlag true -mg 4 -sgf partide.txt -reuseFirst false</note> | ||
+ | <note important>xboard -fcp "make run" -scp "fairymax" -secondInitString "new\nrandom\nsd 4\n" -tc 5 -inc 2 -autoCallFlag true -mg 4 -sgf partide.txt -reuseFirst false</note> | ||
+ | |||
+ | Pentru detalii legate de parametrii comenzilor analizați instrucțiunile de la etapa precedentă. | ||
+ | |||
+ | |||
+ | ==== Punctare ==== | ||
+ | Punctajul de **0.5 puncte** se va acorda în felul următor: | ||
+ | * **0.35 puncte** obținerea a 2 puncte (orice combinație de remize + victorii) din 4 partide vs FairyMax cu depth-ul 3 | ||
+ | * **0.15 puncte** obținerea a 2 puncte (orice combinație de remize + victorii) din 4 partide vs FairyMax cu depth-ul 4 | ||
+ | |||
+ | |||
+ | Punctele se vor acorda după următoarea formulă: | ||
+ | |||
+ | <code> | ||
+ | punctaj_etapă = min(0.35, 0.35 * (număr_puncte_din_meci_vs_fm3 / 2)) + | ||
+ | min(0.15, 0.15 * (număr_puncte_din_meci_vs_fm4 / 2))</code> | ||
===== Etapa 4 ===== | ===== Etapa 4 ===== | ||
Line 92: | Line 161: | ||
* Locul 3 va primi 0.4 puncte | * Locul 3 va primi 0.4 puncte | ||
* Restul proiectelor vor primi în funcție de locul în clasament între 0 și 0.35 puncte, marja între două proiecte consecutive fiind de 0.35/(numar_proiecte_finaliste-3) | * Restul proiectelor vor primi în funcție de locul în clasament între 0 și 0.35 puncte, marja între două proiecte consecutive fiind de 0.35/(numar_proiecte_finaliste-3) | ||
- | |||
- | * Fiecare partida intre doua proiecte se va desfasura dupa urmatorul format: | ||
- | * Fiecare aplicatie va avea 40 de miscari posibil efectuabile in 10 minute. | ||
- | * Dupa efectuarea unui set de 40 de miscari proiectul respectiv va mai primi inca 5 minute, care se vor fi adaugate la timpul ramas. \\ **ATENTIE: Daca un program ramane fara timp, dar nu a efectuat inca 40 de miscari, acesta va pierde partida, adversarul fiind declarat castigator.** | ||
- | * Partida ia sfarsit cand oricare din urmatoarele conditii sunt indeplinite: | ||
- | - Ordered List Item Unul dintre proiecte castiga dand sah mat. | ||
- | - Unul dintre proiecte comite o miscare ilegala, adversarul fiind declarat castigator. | ||
- | - Se constata o stare de repetitie (draw by repetition), o stare de imposibilitate de castig (lack of material for either side), prin regula de 50 de miscari (50 move rule) sau daca unul dintre progarme nu dispune de nici o miscare legala, insa nu este in sah (pat). In aceste cazuri se declara partida ca remiza. | ||
- | * Daca dupa 15 minute nu s-a indeplinit nici o conditie de sfarsit de partida (dupa cum sunt mentionate la punctual anterior) va fi declarat **invins** programul care intra in criza de timp primul, adeversarul fiind declarat invingator. | ||
===== FAQs ===== | ===== FAQs ===== | ||
- | ===De ce sah? Nu s-a mai dat pana acum?=== | + | ===De ce șah?=== |
- | Ba da, dar ultima oara a fost acum 4 ani. Atunci proiectul a fost unul de succes, competitia finala fiind una palpitanta. | + | Didactic, este o idee de proiect bună din mai multe puncte de vedere (provocări de implementare, înțelegerea unor concepte de algoritmi avansați, provocări de time management, abilitatea de autodocumentare, abilitatea de a lucra în echipă, etc). Șahul a fost ales datorită rezonanței sale ca joc. Din experientă vă spunem că un motor de șah decent făcut dă bine la un interviu. |
- | Didactic este o idee de proiect buna din mai multe puncte de vedere (provocari de implementare, intelegerea unor concepte de algoritmi avansati, provocari de time management, abilitatea de autodocumentare, abilitatea de a lucre in echipa etc). Sahul a fost ales datorita rezonantei sale ca joc. Din experienta va spunem ca un motor de sah decent facut da bine la un interviu. | + | ===De ce Xboard? Nu pierdem timp stând să implementam nu știu ce protocol în loc să implementam algoritmi?=== |
- | ===De ce Winboard? Nu pierdem timp stand sa implementam nu stiu ce protocol in loc sa implementam algoritmi?=== | + | Winboard/Xboard a devenit un program standard de interfațare între diferitele motoare existente în momentul de față. Fiecare motor minimalist existent știe să lucreze cu acest program. Ușurarea lucrului de mediere a unui joc justifică implementarea sa, precum și faptul că proiectul realizat va putea juca cu orice alt motor cât de cât performant de pe net. Cât despre timpul pierdut, interfațarea minimalistă cerută in etapa 1 se poate realiza în aproximativ o oră. La ce chestii vor fi de implementat la protocoale de comunicații, asta vi se va părea floare la ureche :-). |
- | Winboard/Xboard a devenit un program standard de interfatare intre diferitele motoare existente in momentul de fata. Fiecare motor minimalist existent stie sa lucreze cu acest program. Usurarea lucrului de mediere a unui joc justifica implementarea sa, precum si faptul ca proiectul realizat va putea juca cu orice alt motor cat de cat performant de pe net. Cat despre timpul pierdut, interfatarea minimalista ceruta in etapa 1. se poate realiza in aproximativ o ora. La ce chestii vor fi de implementat la protocoale de comunicatii, asta vi se va parea floare la ureche :-). | + | ===Nu exista deja o droaie de algoritmi pe net despre sah? Dar proiectele din anii precedenți?=== |
- | ===Nu exista deja o droaie de algoritmi pe net despre sah? Dar proiectele de anul trecut?=== | + | Da, exista multe surse de documentație pe net despre cum să implementezi un joc de șah. Dar de la vorbe la fapte e cale lungă. Doar pentru că există mulți algoritmi nu inseamnă că oricine va ști să-i implementeze și să o facă și bine. Implementarea corectă și eficientă presupune mai mult decât copy paste de pe net. Cât despre proiectele de anii trecuți, ele există in posesia echipei de PA, și cele de anul acesta vor fi verificate contra celor precedente pentru a nu avea cazuri de fraudă. De asemenea, codul fiecarui proiect va fi făcut public inainte de etapa 4 pentru a putea fi inspectat de fiecare echipă ce dorește să se asigure ca nu a fost comis vreun act de fraudă din partea concurenței. Dacă se constată o tentativă de fraudă din partea oricărei echipe, toți membrii echipei vor avea restanță la Proiectarea Algoritmilor și vor pierde punctajul aferent proiectului. |
- | Da, exista multe surse de documentatie pe net despre cum sa implementezi un joc de sah. Dar de la vorbe la fapte e cale lunga. Doar pentru ca exista multi algoritmi nu inseamna ca oricine va sti sa-i implementeze si sa o faca si bine. Implementarea corecta si eficienta presupune mai mult decat copy paste de pe net. Cat despre proiectele de anul trecut, ele exista in posesia echipei de PA, si cele de anul acesta vor fi verificate contra celor precedente pentru a nu avea cazuri de frauda. De asemenea codul fiecarui proiect va fi facut public inainte de etapa 5. pentru a putea fi inspectat de fiecare echipa ce doreste sa se asigure ca nu a fost comis vreun act de frauda din partea concurentei. Daca se constata o tentativa de frauda din partea oricarei echipe, toti membrii echipei vor avea restanta la Proiectarea Algoritmilor si vor pierde punctajul aferent proiectului. | + | |
- | ===Echipele se pot forma intre colegi din grupe diferite? Dar din serii diferite?=== | + | |
- | Da. Nu. | + | |
===Cum imi aleg coechipierii?=== | ===Cum imi aleg coechipierii?=== | ||
- | Cum vrei, pe baza oricaror criterii crezi tu ca sunt importante. | + | Cum vrei, pe baza oricăror criterii crezi tu că sunt importante. |
- | ===Nu toti membrii echipei lucreaza la fel de mult. What’s up with that?=== | + | ===Nu toți membrii echipei lucrează la fel de mult. What’s up with that?=== |
- | Din experienta anilor trecuti, niciodata nu se intampla ca toti membrii echipei sa lucreze la fel de mult. Acest fapt se intampla din varii motive: fie nu toti pot, fie unul sau doi acapareaza toata munca si nu le dau celorlalti o sansa (nu radeti, s-a intamplat :P), fie <insert another reason here>. Fiecare echipa va avea un capitan care va avea, printre altele, datoria de a comunica echipei de PA (asistentului de laborator, titularului de curs etc) orice neregula din cadrul propriei echipe. In afara de asta si de a vorbi putin individual cu membrii fiecarei echipe nu exista alta solutie. Depinde de prioritatile fiecarui membru de echipa si a echipei per ansamblu. | + | Din experiența anilor trecuți, niciodată nu se intamplă ca toți membrii echipei să lucreze la fel de mult. Acest fapt se intamplă din varii motive: fie nu toți pot, fie unul sau doi acaparează toata munca și nu le dau celorlalți o șansă (nu râdeți, s-a intamplat :P), fie <insert another reason here>. Fiecare echipă va avea un căpitan care va avea, printre altele, datoria de a comunica echipei de PA (asistentului de laborator, titularului de curs etc) orice neregulă din cadrul propriei echipe. In afară de asta și de a vorbi puțin individual cu membrii fiecarei echipe nu există altă soluție. Depinde de prioritățile fiecărui membru de echipă și a echipei per ansamblu. |
- | ===Ce alte responsabilitati ar mai avea capitanul de echipa?=== | + | |
- | Depinde…in mod normal responsabilitatile de bun simt ar fi de a imparti eficient munca intre coechipieri, de a face un time management bun, de a lega o strategie de joc etc. Dar mai pot fi si altele, precum PR pe forum :-). | + | |
- | ===Cum se vor trimite proiectele pentru evaluare?=== | + | |
- | Pe pagina web a cursului de PA va exista o rubrica de incarcare a codului sursa pentru fiecare etapa dedicata proiectului. Codul sursa, un fisier readme, precum si alte eventuale fisiere aditionale (ex: baze de date pentru deschideri) vor trebui sa vina sub forma unei arhive .zip de forma NumeleEchipei_EtapaX.zip (unde X este numarul etapei curente {1,2,3,4,5}). Fisierul readme va trebui sa contina descrierea succinta a functionalitatilor implementate. Marimea maxima a unei arhive va fi de 5Mb. | + | |
===In ce limbaj de programare avem voie sa realizam proiectul?=== | ===In ce limbaj de programare avem voie sa realizam proiectul?=== | ||
- | In oricare limbaj de programare cu care va intelegeti mai bine. De remarcat este faptul ca pentru acest proiect timpul de executie este critic. | + | In oricare limbaj de programare cu care vă înțelegeți mai bine, atât timp cât va putea rula pe linux. De remarcat este faptul că pentru acest proiect timpul de execuție este critic. |
=== Avem voie sa folosim fire de executie (thread-uri) in program?=== | === Avem voie sa folosim fire de executie (thread-uri) in program?=== | ||
- | Nu. S-a pus problema si anul trecut. Motivul este ca nu toti stiu sa lucreze cu thread-uri, iar un astfel de avantaj ar fi incorect fata de ceilalti. NU postati in legatura cu asta pe forum…it’s final and that’s that. | + | Nu. S-a pus problema și în alți ani. Motivul este că nu toți știu să lucreze cu thread-uri, iar un astfel de avantaj ar fi incorect față de ceilalți. NU postați în legătură cu asta pe forum…it’s final and that’s that. |
- | ===Avem voie sa folosim baze de date pentru deschidere sau alte scopuri?=== | + | ===Avem voie să folosim baze de date pentru deschidere sau alte scopuri?=== |
- | Da, atat timp cat toata arhiva este pana in 5Mb. | + | Da, atât timp cât toata arhiva este până în 5Mb. |
- | ===Putem comunica cu un calculator la distanta prin TCP/IP sau alte mijloace pentru a avea acces la o baza de date suplimentara sau alte resurse?=== | + | ===Putem comunica cu un calculator la distanță prin TCP/IP sau alte mijloace pentru a avea acces la o bază de date suplimentară sau alte resurse?=== |
- | Categoric NU. Proiectul trebuie sa fie stand-alone. Nu se admit conexiuni de genul celor mentionate mai sus. | + | Categoric NU. Proiectul trebuie să fie stand-alone. Nu se admit conexiuni de genul celor menționate mai sus. |
===Putem trimite programe executabile?=== | ===Putem trimite programe executabile?=== | ||
- | Nu. Doar cod sursa (si eventuale aditionale precum opening data bases). Codul se va compila si link-edita dupa regulile prezente in makefile-ul, ant file-ul, script-ul etc-ul vostru de build. | + | Nu. Doar cod sursă (și eventuale adiționale precum opening data bases). Codul se va compila și link-edita dupa regulile prezente în makefile-ul, ant file-ul, script-ul etc-ul vostru de build. |
- | ===Echipa mea a realizat proiectul in Microsoft Visual Studio. Ce trimit?=== | + | |
- | Trimite codul sursa si fisierul de proiect (*.vcproj in caz ca este realizat cu Visual C/C++). | + | |
===Unde putem cere lamuriri suplimentare in legatura cu desfasurarea proiectului?=== | ===Unde putem cere lamuriri suplimentare in legatura cu desfasurarea proiectului?=== | ||
Pe forum-ul dedicat proiectului de pe pagina web a cursului de PA. | Pe forum-ul dedicat proiectului de pe pagina web a cursului de PA. | ||
===== Referințe ===== | ===== Referințe ===== | ||
[1] - http://en.wikipedia.org/wiki/Rules_of_chess \\ | [1] - http://en.wikipedia.org/wiki/Rules_of_chess \\ |