Echipa de la cursul de Proiectarea Algoritmilor este următoarea:
Curs
Laborator
Orar Laborator
Seria | Grupa | | Ziua | Ora | Sala | Asistent |
CA | 321 | 1 | Joi | 14–16 | EG209 | Răzvan Păroiu |
2 | Joi | 12–14 | EG209 | David Iancu |
322 | 1 | Joi | 16–18 | EG209 | Răzvan Păroiu |
2 | Joi | 18–20 | EG209 | Gabriel Bercaru |
323 | 1 | Vineri | 16-18 | EG209 | George Vasilache |
2 | Vineri | 18-20 | EG209 | Ioan Popescu |
324 | 1 | Vineri | 08–10 | EG209 | Traian Enache |
2 | Vineri | 10–12 | EG209 | Radu Nichita |
325 | 1 | Vineri | 08–10 | EG103b | Radu Chivereanu |
2 | Vineri | 10–12 | EG103b | Răzvan Păroiu |
CB | 321 | 1 | Luni | 08–10 | EG207 | Ionut Birsu |
2 | Luni | 10–12 | EG207 | Andreea Dutulescu |
322 | 1 | Joi | 08–10 | EG209 | Ionut Birsu |
2 | Joi | 10–12 | EG209 | David Iancu |
323 | 1 | Luni | 12–14 | EG207 | Theodor-Andrei Pruteanu |
2 | Luni | 12–14 | EG209 | Ioana Dabelea |
324 | 1 | Luni | 08–10 | EG209 | Florin-Claudiu Dorobantu |
2 | Luni | 10–12 | EG209 | Ioana Dabelea |
CC | 321 | 1 | Marți | 10–12 | EG103b | Andy Catruna |
2 | Marti | 10–12 | EG209 | Cătălin Rîpanu |
322 | 1 | Miercuri | 10–12 | EG208 | Claudia Preda |
2 | Marti | 12–14 | EG209 | Cătălin Rîpanu |
323 | 1 | Miercuri | 10–12 | EG209 | David Iancu |
2 | Miercuri | 12–14 | EG209 | David Iancu |
324 | 1 | Marti | 8–10 | EG209 | Darius Neatu |
2 | Marti | 12–14 | EG103b | Andy Catruna |
325 | 1 | Miercuri | 08–10 | EG209 | Claudia Preda |
2 | Marti | 16–18 | EG209 | Theodor-Andrei Pruteanu |
CD | 321 | 1 | Vineri | 18–20 | EG103b | Andrei Paraschiv |
2 | Vineri | 16–18 | EG103b | Cristian Tudorache |
322 | 1 | Vineri | 12–14 | EG209 | Razvan Paroiu |
2 | Vineri | 14–16 | EG209 | Andrei Paraschiv |
323 | 1 | Miercuri | 16–18 | EG209 | Ioan Pop |
2 | Marti | 18–20 | EG103b | Gabriel Bercaru |
324 | 1 | Luni | 16–18 | EG209 | Matei Dudu |
2 | Luni | 18–20 | EG103b | Iulian Birlica |
325 | 1 | Miercuri | 14–16 | EG209 | Gabriel Gutu |
2 | Marti | 18–20 | EG209 | Ioan Pop |
Întrucât la PA avem aceeași programă indiferent de serie, vom avea un singur regulament, un singur rând de teme, un singur fișier cu note, etc. De aceea, vom folosi un singur curs și pe Learning Center (curs.cs.pub.ro, cs.curs.pub.ro). Observație! În mod evident, cursurile nu pot fi predate identic întrucât intervine personalitatea fiecărui cadru didactic. În plus, este posibil ca slide-urile să fie un pic diferite în funcție de serie.
Nota finală este formată din:
Examen final | 4 puncte; |
Laborator | 6 puncte. |
entru a promova materia este necesar să se obțină minimum 50% atât în laborator (minim 3p), cât și în examenul final (minim 2p).
===== Laborator =====
Scopul laboratorului este de a testa abilitățile practice ale studenților și de a fixa cunoștințele predate la curs. Întrucât considerăm că este foarte important ca studenții să se descurce în situații practice, am pus un accent deosebit pe laborator, oferindu-vă posibilitatea de a acumula un bonus de 1 punct peste cele 6 puncte destinate acestei activități.
Astfel, punctajul aferent laboratorului este distribuit astfel:
* teme = 3 puncte;
* tema - proiect = 2 puncte;
* activitate laborator = 2 puncte.
După cum se poate observa, în timpul anului se poate ajunge la o notă maxima de 7 puncte. Deși nota maxima în laborator va fi de 6 puncte, oricine acumulează un punctaj mai mare de 6 puncte, va beneficia de diferența aceasta ca bonus în examen. Totuși, vă atragem atenția că pentru a lua nota 10 la PA, nu este suficient să aveți 7 puncte în laborator și 2,5 puncte în examen, ci este necesar să aveți minim 3 puncte în examen pentru a putea lua nota 10.
==== Teme ====
De-a lungul semestrului vor fi propuse 3 teme. Valoarea temelor va fi egala (1 punct / tema).
Limbajele de programare acceptate pentru rezolvarea acestora sunt: C/C++ sau Java. Dacă doriți să rezolvați tema într-un alt limbaj, vă rog să luați legătura cu Traian Rebedea. Dacă el este de acord cu propunerea voastră, puteți rezolva tema în limbajul dorit.
Responsabilii de teme sunt: Traian Rebedea, Alexandru Damian și Alexandru Agape.
Fiecare temă va avea fixat un termen limită. Temele vor putea fi uploadate pe site și după expirarea acestui termen limită, însă cu o penalizare de 0.5 puncte pe zi (din 10 puncte). Temele trimise cu o întârziere mai mare de 7 zile nu vor fi notate.
Pentru recuperarea/mărirea punctajului aferent activităților din timpul anului se va putea efectua o temă de recuperare în timpul verii. Tema de recuperare va avea valoarea de 1 punct.
Notarea temelor se va face astfel (din 10 puncte):
* 5 puncte dacă se respectă cerințele temei, adică compilare și execuție fără erori astfel încât să se obțină rezultatele cerute;
* 3 puncte pentru o implementare eficientă; se depunctează implementările ineficiente din punct de vedere al complexității algoritmului în timp și spațiu consumat;
* 1 punct pentru comentariile din fișierele sursă, menționarea bibliografiei în README
(dacă este cazul), respectiv conținutul propriu-zis al fișierului README
;
* 1 punct pentru Coding Style. Restrictiile si depunctarile referitoare la Coding Style, dar si cateva recomandari sau exemple se gasesc aici si sunt, pe scurt:
* [-0.2p] linii mai lungi de 80 de caractere (C/C++) sau 100 de caractere (Java)
* [-0.2p] indentare inconsecventa
* [-0.1p] cod duplicat
* [-0.1p] functii kilometrice
* [-0.1p] cod comentat sau mort
* [-0.1p] denumire inadecvata a claselor, a variabilelor sau a functiilor/metodelor
* [-0.1p] folosirea valorilor hard-codate
* [-0.1p] cod inghesuit
Dacă vor exista teme care se vor abate de la acest barem generic, acest lucru va fi specificat în enunțul temei.
Temele copiate se punctează cu -10 puncte (adică se penalizează toți participanții la procesul de fraudare cu minus punctajul maxim pentru tema respectivă).
Pentru a asigura o notare uniformă a temelor, există o singură persoană care este responsabilă de corectarea unei teme la nivelul unei serii. Pentru fiecare temă propusă, se vor specifica responsabilii pentru enunț și corectarea ei, în formularea enunțului de pe site.
Toate temele vor fi corectate folosind același set de teste. Pentru a veni în ajutorul vostru și a testa corectitudinea și eficiența implementării temelor, vom încerca să folosim vmchecker (http://github.com/vmchecker/vmchecker, http://svn.rosedu.org/vmchecker) pentru fiecare temă, astfel încât orice student să poată avea feedback înainte de trimiterea rezolvării temei. Toate temele vor fi testate automat de către noi folosind vmchecker, dar și prin verificarea codului și citirea readme-ului. Atenție! Chiar dacă treceți toate testele de pe vmchecker, nu înseamnă că veți lua nota 10 dacă nu acumulați și cele 2 puncte pentru comentarii, readme, claritate și lizibilitate cod.
Modalitatea de utilizare a vmchecker-ului va fi prezentată într-un document ulterior.
==== Tema - proiect ====
În cadrul proiectului, trebuie să implementați un program care să „conducă” o colonie de furnici spre dominație totală într-o lume în care există mai multe astfel de colonii. Ants este un joc multi-player ce se joacă pe o hartă care conţine teren şi apă pe post de obstacole. Harta conţine şi bucăţi de mâncare care apar în locuri aleatoare şi la momente de timp aleatoare. Fiecare jucător deţine o colonie de furnici, reprezentată prin unul sau mai multe muşuroaie. Obiectivul este ca fiecare jucător să găsească muşuroaiele adverse şi sa le distrugă. Pentru a se înmulţi, este necesar ca fiecare jucător să colecteze mâncare. Dacă toate muşuroaiele sunt distruse, jucătorul este eliminat.
Scopul principal este de a dezvolta un proiect de dimensiuni mai mari în care să implementați algoritmi netriviali, mai complicați, cu aplicabilitate practică evidentă. În plus, vrem să lucrați într-o echipă de maxim 4 persoane și să învățați să vă coordonați, să comunicați și să vă împărțiți sarcinile în funcție de competențele fiecărui membru al echipei. În cele din urma, ne-am gândit că un concurs între voi poate să fie mai provocator decât o temă obișnuită. Sperăm să vă placă și vouă.
Detaliile complete despre desfășurarea proiectului le găsiți într-un document separat [link].
==== Activitate laborator ====
Ne dorim ca activitatea de laborator să vă ofere ocazia să vedeți care este utilitatea algoritmilor discutați în cadrul cursului, experimentând rezolvarea unor probleme mai simple, ce pot fi abordate în cadrul unui laborator.
Pentru ca laboratoarele să se desfășoare cât mai bine pentru voi, este recomandat să citiți materialele de laborator măcar o data înainte de ora de laborator. Dacă aveți întrebări sau observații legate de conținutul vreunui laborator, vă rugăm să îl contactați pe Mihai Dascălu sau/și pe asistentul(a) de la semi-grupa voastră.
In cadrul laboratorului, veți găsi instalat atât Windows XP SP3, cât și Ubuntu 9.04. Sperăm ca pentru fiecare sistem de operare să găsiți editoarele și compilatoarele cu care sunteți obișnuiți (puteți alege între C, C++, Java, C# și Haskell). De asemenea, considerăm că este util să știți că sistemele de operare sunt înghețate (adică la resetare se va șterge tot ce s-a lucrat), nu funcționează CD-ROM-ul și nici USB-urile.
Deoarece în laborator nu sunt decât 13 sisteme funcționale, numărul studenților din fiecare semi-grupă este limitat la 13. Împărțirea studenților dintr-o grupă în semi-grupe se va face alfabetic și vă rugăm să respectați această regulă. Nu se va permite ca la un calculator să lucreze mai mult de 1 student! Prin acest lucru, dorim să stimulăm rezolvarea individuală a problemelor de laborator
, acest lucru fiind util în special pentru voi întrucât veți căpăta experiența care vă va ajuta la rezolvarea temelor, a problemelor de la examen, precum și a altor probleme întâlnite în facultate sau în viața de zi cu zi. Utilizarea laptopurilor pentru rezolvarea problemelor de laborator este permisă doar cu acordul asistenţilor, iar tentativele de fraudare (laboratoare rezolvate de altcineva sau în afara orelor) vor fi pedepsite!**
Daca găsiți colegi din aceeași grupă, dar de la cealaltă semi-grupă cu care să faceți schimb de locuri, acest lucru este permis dacă se întâmplă în primele 3 săptămâni din semestru.