Programarea Calculatoarelor

Anul I, Semestrul I, Seria CA

Obiectivele cursului

Cursul introduce studenţilor principalele noţiuni, tehnici şi unelte necesare realizării programelor pe calculator, de la cele mai simple, la aplicaţiile complexe, într-o prezentare axată pe limbajul C. Materialul principal al cursului este reprezentat de cartea lui Brian Kernighan şi Dennis Ritchie - “The ANSI C Programming Language”.

În urma parcurgerii tuturor activităţilor oferite de cursul Programare, studenţii vor fi capabili să:

  • descrie procedura tipică de dezvoltare a unui program pe calculator, în particular modul de compilare, legare şi execuţie a unui program în C;
  • folosească tipurile de date de bază pentru declararea şi iniţializarea variabilelor;
  • folosească instrucţiunile oferite de limbajul C pentru atribuiri, structuri decizionale sau ciclice;
  • definească funcţii, să le apeleze şi să modularizeze organizarea programului folosindu-se de acestea;
  • lucreze cu tablouri şi pointeri, şi să fie deprinşi cu operaţiile de bază asupra acestora;
  • declare şiruri de caractere şi să folosească funcţiile oferite de biblioteca standard pentru manipularea acestora;
  • aloce dinamic memorie și să o foloseasca eficient;
  • declare şi să foloseasca structuri și uniuni;
  • opereze cu fişiere: deschidere, închidere şi operaţii de intrare/ieşire;
  • lucreze cu parametrii liniei de comandă pasaţi programului prin funcţia main().

Cunoştinţe necesare

Pentru a putea urmări, înţelege şi aplica cunoştinţele dobândite în cadrul cursului de programare, studentului îi sunt recomandate cunoştinţe anterioare legate de operarea unui PC şi utilizarea de bază a unui sistem de operare (de preferinţă Linux). Aceste cunoştinţe sunt introduse şi aprofundate şi separat în cadrul cursului de Utilizarea Sistemelor de Operare, astfel că pe parcursul semestrului, studentul va deveni mai familiar cu mediul de lucru. Cunoştinţele anterioare legate de programare (în special limbajul C), dobândite în liceu sau prin studiu individual, vor uşura învăţarea şi munca de rezolvare a problemelor, însă conţinutul cursului nu va presupune cunoscută în prealabil nici o noţiune din acest domeniu, oferind şanse egale tuturor studenţilor. Cunoașterea unor elemente de bază de algebră și analiză matematică constituie un avantaj pentru participanții la curs.

Notarea

Activitățile cu notare pentru cursul de Programarea calculatoarelor sunt următoarele: Examen, Examen parțial, Teme de casă, Teste de laborator. Se va acorda câte o notă (pe o scară de la 0 la 10) pentru fiecare activitate în parte. Nota finală pentru materia Programarea Calculatoarelor se calculează în felul următor:

NotaFinală = minim(10, 0.40 * NotaExamen + 0.20 * NotaPartial + 0.30 * NotaTemeCasa + 0.10 * NotaTesteLaborator)

Pentru a promova, vor fi îndeplinite simultan condiţiile:

  • NotaExamen >= 5 (din 10)
  • 0.20 * NotaParţial + 0.30 * NotaTemeCasă + 0.10 * NotaTesteLaborator >= 3 (din 6)

Toate notele din condiții/formule sunt considerate având un maxim de 10.

În continuare sunt prezentate detalii despre fiecare activitate în parte.

Examenul final

Examenul final se va susţine scris cu toată seria în aceeaşi zi a sesiunii, sau pe baza unei planificări prealabile. Data examenului se va stabili de către studenţi de comun acord cu titularul de curs. Examenul va consta în rezolvarea a două probleme de programare cu grad mediu de dificultate și nu va conține elemente de teorie.

Examenul parţial

Examenul parţial se va susţine cu toată seria în acelaşi timp, până în vacanţa de iarnă, în jurul săptămânii a noua. Data exactă a acestuia se va stabili la curs cu profesorul titular. Examenul parțial se poate reface doar în toamnă.

Forma de evaluare a examenului parțial și a examenului final poate fi decisă / schimbată de către titularul de curs, în funcție de un context specific. Forma de evaluare poate fi: scris, oral sau practic.

Temele de casă

General

Temele de casă sunt în număr de 3 şi fiecare este notată cu maxim 100 de puncte (ce se echivalează obținerii punctajului maxim, de 10 din 10). Enunţurile acestora vor fi publicate pe site-ul de curs. De asemenea, fiecare temă va avea termenul de predate precizat în enunţ. Ora limită de trimitere din ultima zi nu poate fi mai târziu de 23.59. În cazul întârzierii trimiterii temelor de casă, se aplică următoarea regulă: pentru fiecare din primele trei zile de întârziere, se vor scădea 10 puncte din nota acordată. Temele nu se mai pot trimite după cele trei zile de întârziere.

În timpul vacanțelor nu se aplică depunctări.

ORICE ALTE REGULI SUPLIMENTARE, SPECIFICE, VOR FI MENTIONATE ÎN ENUNȚUL TEMEI, ACESTEA AVÂND PRIORITATE!

Trimitere teme

Temele se vor trimite pe site-ul cursului curs.upb.ro și pe vmchecker folosind contul de student primit la începutul semestrului pentru platformele UPB. Rubrica de trimitere se va găsi în secţiunea cursului de Programare, la fiecare temă în parte, în săptămâna corespunzătoare. Este obligatoriu ca temele să fie trimise pe ambele platforma pentru a fi notate.

ORICE ALTE REGULI SUPLIMENTARE, SPECIFICE, VOR FI MENTIONATE ÎN ENUNȚUL TEMEI, ACESTEA AVÂND PRIORITATE!

Notarea temelor de casă

Nivelul de dificultate al temelelor de casă impune după sine o pondere diferită a celor trei teme de casă, după cum urmează:

  • Tema 1 (nivel mic de dificultate): 0,5p din cele 3p alocate temelor de casă;
  • Tema 2 (nivel mediu de dificultate): 1,0p din cele 3p alocate temelor de casă;
  • Tema 3 (nivel mediu de dificultate, dar puțin mai elaborată): 1,5p din cele 3p alocate temelor de casă.

Laboratorul

Programul general al laboratorului este cel publicat pe pagina principală a cursului, pe săptămâni. Laboratorul este obligatoriu, întrucât la fiecare şedinţă se discuta noțiuni menite să consolideze subiectele studiate la curs și se vor rezolva și discuta probleme interesante centrate pe obiectivele cursului. Conţinutul laboratoarelor va fi publicat pe site la începutul semestrului. Este recomandat ca fiecare student să parcurgă pe scurt textul acestuia pentru a ușura activitățile din timpul laboratorului și pentru a putea ridica eventuale întrebări de clarificare.

Pentru a facilita interacțiunea între studenți și cadrele didactice, se impune ca fiecare student să participe la activitatea de laborator conform planificării din orar.

Pentru sesiunea de restanţe/măriri din toamnă, notele de la teme şi teste de laborator care vor fi luate în calcul sunt cele obţinute în timpul anului. Nu există posibilitatea măririi lor. Se pot reface doar examenul şi/sau parţialul.

Teste practice

Pentru testarea cunoștințelor practice dobândite în urma laboratoarelor, echipa va organiza teste 2 practice pe platforma HackerRank. Regulamentul general pentru testele practice se găsește la https://ocw.cs.pub.ro/courses/programare/pc-ca-test-practic. Fiecare test valorează 0.5p din nota finală.

Politica de colaborare

Comunicarea joacă un rol important în informarea şi pregătirea fiecăruia, şi echipa cursului de Programare este conştientă de acest lucru. Din acest motiv, site-ul cursului pune la dispoziţia studenţilor un forum în care aceştia pot discuta şi pune întrebari legate de temele de casă date spre rezolvare şi a subiectelor de programare ce se pot dezvolta în jurul acestora.

Asistenţii vor sta la dispoziţia studenţilor pentru a le răspunde la nelămuriri legate de enunţul temelor şi laboratoarelor.

În acelaşi timp, cursul promovează reuşitele personale şi vor fi sancţionate, în concordanţă cu regulamentul facultăţii, orice acţiuni de fraudare sau plagiat. Astfel:

  • temele de casă vor fi realizate individual şi nu vor fi permise publicarea pe forum sau furnizarea sub orice altă formă a porţiuni sau a întregului cod sursă. În cazul încălcării acestor reguli, rezolvările vor fi punctate cu 0 puncte, atât pentru cel care a copiat, cât şi pentru sursa acestuia.
  • în cazul copierii rezolvărilor problemelor de laborator, se va anula punctajul pe laboratorul respectiv. În acest sens, studenţii vor trebui să fie capabili să explice şi să argumenteze modul în care au rezolvat exerciţiile din laborator.
  • de asemenea, nu este permisă colaborarea sub nicio formă sau folosirea de materiale ajutătoare în timpul examenelor sau testelor. Studenţii care nu vor respecta aceste reguli vor avea 0 puncte pentru examenul respectiv şi riscă să fie exmatriculaţi (pentru detalii, consultaţi regulamentul facultăţii).

Penalizare pentru teme copiate

În general, considerăm că măsurile punitive sunt ultimele de luat în considerare. În măsura în care tema este realizată individual, fără aport de cod sursă problematic din exterior, atunci nu este temă copiată.

Noțiunea de temă copiată se referă, fără a fi limitată, la situații precum:

  • două teme care seamănă suficient de mult pentru a putea trage această concluzie;
  • folosirea de cod sursă de pe Internet care este evident soluția la temă;
  • folosirea unor bucăți din codul altui coleg;
  • accesul la codul altui coleg pe durata desfășurării temei;
  • modificarea unei teme existente;
  • urmărirea codului altui coleg;
  • ajutor direct în realizarea temei (altcineva a scris cod sau a dictat codul);
  • altcineva a scris tema (de bună voie, cu plată sau alte beneficii).

În cazul în care două teme sunt considerate copiate, atât sursa cât și destinația se vor depuncta identic, fără discuții relative la cine a copiat de la cine și a cui e vina.

Copierea unei teme atrage după sine eliminarea punctajului pe teme.

Reiterăm faptul că obiectivul nostru nu este și nu va fi penalizarea pentru copiere. Considerăm copierea ca fiind un act neonest care va fi pedepsit dacă are loc. Obiectivul nostru este însă să prevenim copierea; pentru aceasta oferim suportul și resursele echipei în toate formele sale. Vă rugăm să le folosiți cu încredere; credem că o abordare onestă la realizarea temelor va însemna și un câștig de cunoștințe și abilități pentru voi.

Temele de casă

ORICE ALTE REGULI SUPLIMENTARE, SPECIFICE, VOR FI MENTIONATE ÎN ENUNȚUL TEMEI, ACESTEA AVÂND PRIORITATE!

Reguli de notare

Criteriile luate în calcul la notarea temei sunt:

  1. Funcţionarea temei conform cerinţelor
    • Pentru a primi punctaj maxim, soluţia trebuie să treacă cu bine toate testele de corectare (atât cele publicate pe site o dată cu enunţul temei, cât şi cele private pe care le va face asistentul şi care vor fi publicate o dată cu afişarea notelor la tema respectivă).
  2. Claritatea explicaţiilor și a codului
    • Codul trebuie să fie uşor de urmărit: indentare adecvată, nume de variabile sugestive, constante simbolice (nu numere), cod aerisit.
    • Codul sursă trebuie să fie însoțit de un fișier README care trebuie șă conțină informațiile utile pentru înțelegerea funcționalițății, modului de implementare și utilizare a programului. Acesta evaluează, de asemenea, abilitatea voastră de a documenta complet și concis programele pe care le produceți și va fi evaluat de către echipa de asistenți. In funcție de calitatea documentației, se vor aplica depunctări sau bonusuri.

Deprinderea de a scrie cod sursă de calitate, este un obiectiv important al materiei. Sursele greu de înteles, modularizate neadecvat sau care prezintă hardcodări care pot afecta semnificativ mentenabilitatea programului cerut, pot fi depunctate adițional.

Echipa de programare își rezervă dreptul de a depuncta pentru orice încercare frauduloasă (ex. hardcodarea rezultatelor în sursă) sau pentru încălcări ale regulilor stabilite la/în curs/laborator/enunțul temei (ex. variabile globale), chiar dacă nu sunt menționate pe această pagină.

O temă care nu se poate compila sau care face altceva decât era specificat în cerinţe se va nota cu 0 puncte. O temă care nu trece măcăr un test pe vmchecker este automat punctată cu 0 puncte.

Pentru a evita problemele legate de diversele configuraţii de testare a temelor, pentru corectarea şi evaluarea lor se va pune la dispoziţie o maşină virtuală (pe vmchecker) în care se vor corecta temele.

Reguli de trimitere a temelor

Tema trebuie trimisă sub forma unei arhive .zip (NU .rar, .ace, .arj, .exe sau alte formate) şi trebuie să conţină:

  • toate sursele în rădăcina arhivei. La începutul fiecărui fişier sursă trebuie să existe un comentariu care să conţină numele şi grupa celui care a trimis tema.
  • un fişier README în rădăcina arhivei. La începutul fişierului trebuie să apară numele şi grupa celui care a trimis tema.
  • fişierul Makefile, care trebuie sa conțină reguli pentru build și clean.

Arhiva trebuie să conţină doar sursele, fişierul Makefile, README şi eventuale fişiere de test (dacă se cere în enunț). Arhiva NU va conţine fişiere executabile sau obiect.

Tema trebuie trimisă sub forma unei arhive .zip pe site-ul cursului și pe vmchecker.

Numele şi extensiile fişierelor trimise nu trebuie să conţină spaţii sau majuscule, cu excepția fisierului README.

Numele arhivei va fi de forma Grupa_Nume_Prenume_TemaX.zip. Exemplu: 311CA_Popescu_Ion_Tema1.zip

Dacă arhiva nu respectă specificaţiile de mai sus nu va fi acceptată şi astfel tema nu va fi luată în considerare.

Pentru trimiterea si corectarea temelor vom folosi platforma vmchecker.

How to:

  1. Intraţi pe: vmchecker cu user-ul si parola de student.
  2. Alegeţi cursul de Programarea Calculatorelor.
  3. Selectaţi “Tema 1” (2, 3 sau 4 pentru celelalte).
  4. Daţi click pe “Trimitere soluţii”.
  5. Încărcaţi arhiva conform specificaţilor de mai sus.
  6. În acest moment, tema voastră este trimisă în coada de testare. Rezultatul o să îl puteţi vizualiza când daţi click pe “Rezultate”.

Observaţii:

  • Vmchecker nu stie să scadă automat puncte în funcţie de testele care vă pică sau nu.
  • O să vă apară un câmp cu “Date şi depunctări” în care vor fi scăzute automat doar punctele de la penalizări de întârziere.
  • În câmpul “Execuţia testelor” o să vă apară output-ul testelor, iar la sfârşitul acestuia numărul de puncte acumulate.
  • Pe pagina principală aveţi “Rezultate generale”. Dacă vă apare “ok” înseamnă că tema voastră nu a fost corectată încă.
  • Temele vor fi corectate doar după ce va expira deadlineul hard.
  • Dacă aveţi nelămuriri, observaţii sau probleme sunteţi rugaţi să postaţi pe forum.

Dacă aţi trimis deja o temă şi doriţi din diverse motive să o trimiteţi din nou, puteţi face acest lucru respectând întocmai protocolul de mai sus. Ultima versiune ajunsă pe site va fi cea luată în considerare la corectare şi condiţiile de punctare vor fi cele din ziua în care aceasta a fost trimisă.

Temele vor fi trimise OBLIGATORIU și pe site-ul de curs, in sectiunea dedicata temei respective.

Reguli de realizare a temelor

Temele sunt individuale. Copierea integrală sau parţială a unei teme duce la anularea punctajului pentru TOATE temele atât pentru sursă cât şi pentru destinaţie (pentru detalii vezi secţiunea referitoare la politica de colaborare).

Reguli de repetare a materiei

Studenții care repetă materia pot opta pentru păstrarea punctajului pe parcurs sau a punctajului la examen (dupa caz) din anul universitar anterior. Păstrarea punctajului se face doar cu acordul titularului de curs. Studenții vor solicita păstrarea punctajului printr-o cerere scrisă, pe care o vor înmâna titularului de curs în primele două săptămâni de la începerea semestrului (nu vor fi acceptate cereri întârziate sau trimise prin e-mail sau alte mijloace electronice).

Atenție! Păstrarea punctajului pe parcurs nu permite modificarea lui prin acumlarea unor puncte suplimentare în activități pe parcurs din anul universitar curent, dar permite anularea lui dacă se încalcă politica de colaborare.

Alte resurse

  • Pagina de web a cursului de Programarea Calculatoarelor se găseşte pe site-ul de cursuri al catedrei de calculatoare: https://curs.upb.ro/.
  • Folosirea acestei pagini şi conţinutului ei (materiale de curs şi laborator, forum-uri, formulare de evaluare, exemple de subiecte posibile) se va face în scop academic şi cu respectarea normelor de conduită ce decurg din aceasta.

În speranţa că veţi urma acest curs cu aceeaşi plăcere şi entuziasm cu care a fost realizat, echipa cursului de Programare vă urează mult succes! :)

Reproducerea, modificarea, transmiterea, copierea, distribuirea şi republicarea întregului sau a unei părti a site-ului cursului de Programarea Calculatoarelor fără acordul prealabil scris al titularului de curs sunt strict interzise, sub rezerva unor circumstanţe excepţionale prevăzute de legislaţia în vigoare.

programare/regulament-ca.txt · Last modified: 2020/10/05 08:37 by dorinel.filip
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0