Data Structures 2016-2017

Publicare note finale

Publicarea notelor finale la Structuri de Date are loc exclusiv pe pagina personala a studentilor pe baza notelor descarcate in catalog.

Studentii care nu pot vizualiza nota finala in pagina personala sunt rugati sa se adreseze secretariatului facultatii CSIE.

Planificare examene

Repartizarea studentilor pe zile in vederea sustinerii examenului:

Accesul in sala de examen se face EXCLUSIV pe baza cartii de identitate.

Programarea va fi detaliata pe ore la inceputul sesiunii de examene.

Studentii sunt rugati sa semnaleze eventuale neconcordante din planificare.

Lista structuri de date pentru examen:

  • Masive: vectori, matrice
  • Structuri pe biti
  • Uniuni
  • Liste simple
  • Liste duble
  • Stive si cozi
  • Tabele de dispersie
  • Structura heap. Coada de prioritati
  • Arbori oarecare
  • Arbori binari de cautare
  • Arbori AVL
  • Arbori B
  • Grafuri

Planificare evaluari proiecte (Mihai Doinea)

Repartizarea studentilor pe zile in vederea evaluarii proiectelor la seminar:

  • Joi, 25 Mai 2017, ora 07:30, 2001D, Anul 3 + AS, toti studentii alocati
  • Joi, 25 Mai 2017, ora 10:30, 2001D, Anul 2 EN, grupa 1054, toti studentii
  • Joi, 25 Mai 2017, ora 13:30, 2320, Anul 2 EN, grupa 1051, toti studentii
  • Joi, 25 Mai 2017, ora 15:30, 2320, Anul 2 RO, grupa 1042, toti studentii
  • Joi, 25 Mai 2017, ora 16:30, 2320, Anul 2 RO, grupa 1043, toti studentii

Parola de acces la disciplina CURS STRUCTURI DE DATE - EN, 2017 - DOINEA MIHAI, din platforma online.ase.ro

pentru incarcarea proiectului este: 2406, termen 24.05.2017, 23:55

Planificare evaluari seminar

Repartizarea studentilor pe zile in vederea evaluarii cunostintelor la seminar:

Studentii sunt rugati sa consulte listele publicate si sa semnaleze eventuale erori

Lista structuri de date pentru evaluare seminar:

  • Masive: vectori, matrice
  • Liste simple
  • Liste duble
  • Stive si cozi
  • Tabele de dispersie
  • Arbori binari de cautare
  • Heap. Coada de prioritati

Planificare evaluari proiecte (Marius Popa)

Repartizarea studentilor pe zile in vederea evaluarii proiectelor la seminar:

  • Miercuri, 24 Mai 2017, grupa 1050, ora 9:00, 2016: Anul 2
  • Miercuri, 24 Mai 2017, grupa 1053,ora 10:30, 2320: Anul 2
  • Joi, 25 Mai 2017, grupa 1049, ora 16:30, 2016: Anul 2
  • Vineri, 26 Mai 2017, grupa 1041, ora 9:00, 2320: Anul 2
  • Vineri, 26 Mai 2017, grupa 1048, ora 10:30, 2320: Anul 2
  • Miercuri, 31 Mai 2017, grupa 1050, ora 9:00, 2016: Restante
  • Miercuri, 31 Mai 2017, grupa 1053, ora 10:30, 2320: Restante
  • Miercuri, 31 Mai 2017, grupele 1049, 1041, 1048, ora 18:00, 2316: Restante

Categoria Restante este asimilata studentilor din anii 3 si 3S inscrisi pe listele de seminar la grupele de mai sus.

Datele de 1 si 2 Iunie 2017 sunt reprogramate pe 31 Mai 2017, ora 18:00.

Specificatii proiect

Specificatiile de proiect pot fi descarcate AICI.

Profesorii coordonatori de seminar stabilesc datele pentru sustinerea proiectului si modul de evaluare a acestuia.

Recuperare seminar - Repartizare pe grupe studenti anul 3 si an suplimentar

Studentii care doresc recuperarea seminarului de structuri de date, varianta din planul curent de invatamant, cu examen in semestrul al doilea, sunt obligati sa urmeze activitatile de evaluare la seminar conform Repartizare pe grupe. Cei care nu s-au inregistrat pot completa in continuare formularul de la adresa Recuperare Seminar.

Structuri de date - evaluare seminar + examen Anul Suplimentar (forma veche a planului de invatamant)

Studentii promoțiilor anterioare care au avut disciplina Structuri de date în semestrul I vor susține examenul în sesiunea din februarie 2017, conform programării de la avizier.

Pe parcursul semestrului I stundeții trebuie să:

  • lucreze temele propuse pentru studiul individual
  • să participe la un test grilă (opțional) care să evalueze o parte din cunoștințele teoretice și practice; testul va fi programat în ultimele 2 săptămâni din semestrul I, joi 19 ianuarie 2017, ora 18:00, sala 2319; testul este optional insa punctajul obtinut va luat in considerare pentru calculul notei finale; testul va dura intre 30 si 40 de minute iar studentii care doresc sa participe sunt rugati sa se inregistreze prin completarea formularului urmator

Evaluare finala, examen

  • examenul va avea loc pe 3 februarie, ora 9:00, sala 2001A si consta in sustinerea unei probe practice la calculator - realizare unei solutii C/C++ care sa implementeze lucru cu diferite structuri de date, conform subiectului
  • cunostinte minime necesare: tipuri primitive de date in C/C++, lucrul cu siruri de caractere (definite ca char* si char nume[50]), lucrul cu vectori (definiti dinamic sau static), definirea de structuri de date - articole (ce contin tipuri primitive si pointeri), citirea datelor unei structuri de la consola, afisarea datelor unei structuri la consola, lista simplu inlantuita (definire, creare, parcurgere, inserare, stergere), tipuri particulare de liste simple (stiva si coada)

Pentru pregatirea examenului si a testului, studentii sunt rugati:

  • sa parcurga prezentarea de la curs
  • sa parcurga bibliografia (in special Structuri de Date volumul I) - a se vedea alocarea pe capitole de la subsolul acestei pagini
  • sa lucreze temele propuse pentru studiu individual in aceasta pagina
  • sa lucreze teme propuse vectori si teme propuse functii

Informatii actualizate pe 30 decembrie 2016

Evaluare seminar - lista structurilor de date

Cerintele de evaluare a seminarului vizeaza urmatoarele tipologii de structuri de date.

  • Gestionarea memoriei prin utilizarea pointerilor.
  • Structuri de date liniare: vectori (alocare la compilare si la executie), liste simple si duble, inclusiv stive si cozi.
  • Tabele de dispersie cu mecanismele de evitare a coliziunilor prezentate in suportul de curs.
  • Structuri arborescente: arbore oarecare, arbore binar, arbore binar de cautare, arbori echilibrati.

Structuri de date - evaluare seminar Anul III si Anul Suplimentar

Studentii cu restanta la Structuri de date inscrisi in anul 3 si anul suplimentar trebuie sa parcurga aceleasi etape de evaluare aferente anului 2. Evaluarile de seminar sunt efectuate la aceeasi grupa sau coordonator de seminar. In acest sens, studentii cu restanta sunt rugati sa se adreseze coordonatorilor de seminar pentru a fi luati in evidenta pentru evaluari.

Evaluare Structuri de date

      • Examen: 60%, din care:
        • 10% test cunostinte.
        • 50% test aplicativ la calculator.
      • Criteriu minim promovare: 30%.
      • Seminar: 40%, din care:
        • 10% proiect realizat si sustinut individual.
        • 30% teste cunostinte calculator/scris/oral.

Nota: procentele sunt exprimate relativ la nota finala.

Teme studiu individual

Pentru a asigura o pregatire serioasa a acestui curs si a examenului, studentii trebuie sa fie capabili sa scrie cu usurinta solutii C/C++ corecte (sintactic si functional) pentru urmatoarele module:

Lucru cu fisiere:

Considerand structura Produs utilizata in problemele cu liste sa se implementeze urmatoarele functii:

              • functie pentru scrierea unui vector de produse intr-un fisier binar cu acces direct (indicatie: fiecare camp dinamic are alocat in fisier un buffer de dimensiune fixa)
              • functie pentru scrierea unui vector de produse intr-un fisier binar secvential in care pentru fiecare camp dinamic se aloca un spatiu de dimensiune egala cu spatiul ocupat de valori in Heap;
              • functie pentru citirea unui vector de produse intr-un fisier binar (pentru ambele variante de stocare); vectorul se aloca dinamic dupa determinarea numarului de produse din fisier;
              • functie pentru scrierea unui vector de produse intr-un fisier text in care descrierea produsului se scrie pe o linie (formatare tip CSV);
              • functie pentru scrierea unui vector de produse intr-un fisier text in care fiecare atribut al produsului se scrie pe o linie;
              • functie pentru citirea vectorului de produse din fisierul text (pt. ambele variante de scriere)

Lucru cu liste:

Toate problemele sunt scrise pentru a gestiona date stocate in structura Produs:

struct Produs{
int id;
float pret;
char* denumire;
int* stocMagazine; //vectorul stocheaza numarul de produse de acest tip din fiecare magazin
};

              • functie pentru citirea unui Produs de la consola (cu validare): Student creareConsola() si void creareConsola(Student* adresaStud)
              • functie pentru afisarea la consola a unui Produs
              • functie pentru calculul stocului total al unui produs; functia intoarce un int
              • functie pentru crearea unui nod dintr-o lista simplu inlantuita si dublu inlantuita ce contine un Produs: nodListaSimpla* creareNodLS(Produs p) si nodListaDubla *creareNodLD(Produs p)
              • functie pentru inserarea unui Produs intr-o lista simplu inlantuita si dublu inlantuita: la inceput si la sfarsit
              • functie pentru afisarea unei liste simplu inlantuite si dublu inlantuite ce contine Produse
              • functie pentru inserarea unui Produs intr-o lista simplu inlantuita astfel incat lista sa se mentina sortata dupa denumirea produselor; lista este circulara;
              • functie pentru stergerea unui Produs dintr-o lista simplu inlantuita si dublu inlantuita (cautare dupa id)
              • functie pentru stergerea totala a unei liste simplu/dublu inlantuita cu eliberarea memoriei
              • functii pentru inserare si stergere produse dintr-o lista considerata STIVA
              • functie pentru crearea unui vector ce contine stocul total pentru fiecare Produs din lista simplu inlantuita: int* raportStoc(nodListaSimpla* capat, int * nrProduse)

Lucru cu masive unidimensionale:

              • functie pentru crearea unui masiv dinamic de la consola (numarul de elemente este dat, iar valorile sunt citite de la consola): int* creareConsola(int nrElemente) si void creareConsola2(int** vector, int nrElemente)
              • functie pentru crearea unui masiv dinamic de la consola (numarul de elemente este citit in functie): int* creareConsola(int* nrElemente) si void creareConsola2(int** vector, int* nrElemente)
              • functie pentru crearea unui masiv dinamic pe baza unui vector existent: int* copiereVector(int* existent, int nrElemente)
              • functie pentru afisarea unui mesiv la consola: void afisareVector(int* vector, int nrElemente)
              • functii pentru prelucrari matematice: suma elementelor, suma elementelor negative, suma elementelor pozitive, media aritmetica si geometrica a elementelor, determinarea minimului, determinarea maximului. Acestea vor avea forma: [tip returnat] numeFunctie(int* vector, int nrElemente); functiile trebuie sa trateze si cazul particular cand vectorul primit nu exista;
              • functii pentru prelucrari matematice pe baza unei valori date: determinarea existentei unei valori in vector, determinarea numarului de valori mai mari/mai mici decat o valoare data, determinarea primei aparitii in vector a unei valori date, determinarea numarului de aparitii pentru o valoare data. Acestea vor avea forma: [tip returnat] numeFunctie(int* vector, int nrElemente int valoare)
              • functii pentru sortare a elementelor: bule, interschimbare si selectie;
              • functie pentru adaugarea unui element nou la un vector existent: int* adauga(int* vector, int* nrElemente, int valoare) si void adauga2(int** vector, int * nrElemente, int valoare)
              • functie pentru dezalocarea unui vector existent: void dezlocare(int* vector)

Solutiile nu trebuie sa aiba erori de sintaxa si toate functiile trebuie sa fie testate in main(). Aceste teme nu conteaza la evaluarea finala si reprezinta un mecanism de motivare si autoevaluare a studentului care doreste sa se pregateasca temeinic pentru examen. Copierea acestor solutii genereaza o falsa impresie de cunoastere a conceptelor, lucru care este evidentiat la examen.

Lucrare Structuri de date

Cunostinte evaluate prin proba practica:

Aplicatii suport pentru seminar

Bibliografie

Sursele principale pentru pregatirea examenului sunt resursele bibliografice [IVAN08a] si [IVAN08b]. Minimum se citeste si se implementeaza in programe scrise, compilate si rulate pe calculator urmatoarele capitole:

        • Structuri de date omogene - pg 83-109, vol. 1
        • Functii de prelucrare cu masive - pg 147-184, vol. 1
        • Matrice rare - pg 200-231, vol. 1
        • Liste - pg 351-368, vol. 1
        • Stive si cozi - pg 369-390, vol. 1
        • Tabele de dispersie - pg 572-592, vol. 1
        • Structura Heap - pg 499-518, vol. 1
        • Arbori de cautare - pg 401-415, vol. 1
        • Arbori echilibrati - AVL - pg 452-481, vol. 1
        • Arbori B - pg 416-447, vol. 1
        • Grafuri - pg 519-555, vol. 1
        • STL - Standard Template Library - pg 27-50, vol. 2
        • Conversii structuri de date - pg 51-88, vol. 2
        • Compactare - compresie - pg 122-147, vol. 2
        • Structuri de date in securizarea informatiilor - pg 354-374, vol. 2
        • Gradul de ocupare a zonei de memorie - pg 390-406, vol. 2
        • Modelul de date XML - pg4 94-508, vol. 2
        • [****09] www.itcsolutions.eu
        • [****04] www.structuri-de-date.ase.ro
        • [IVAN08a] Ion IVAN, Marius POPA, Paul POCATILU - Structuri de date volumul 1, Editura ASE, 2008
        • [IVAN08b] Ion IVAN, Marius POPA, Paul POCATILU - Structuri de date volumul 2, Editura ASE, 2008
        • [IVAN92] Ion IVAN, Romica ADAM - Structuri de date - curs litografiat, Lito. ASE, Bucuresti, 1992.
        • [IVAN92] Ion IVAN, Romica ADAM - Structuri de date - culegere de probleme, Lito. ASE, Bucuresti, 1992.
        • [IVAN04] Ion IVAN, Marius POPA, Cristian IONITA, Catalin BOJA, Adrian POCOVNICU, Daniel MILODIN - Practica dezvoltarii software orientata pe structuri de date, Editura ASE, Bucuresti, 2004.
        • [NEGR96] Liviu NEGRESCU - Limbajele C/C++ pentru incepatori, Ed. Microinformatica, Cluj, 1996.
        • [SMEU95] Ion SMEUREANU, Ion IVAN, Marian DARDALA - Limbajul C++ prin exemple, Editura Cison, 1995.
        • [SMEU98] Ion SMEUREANU, Ion IVAN, Marian DARDALA - Structuri si obiecte n C++, Editura Cison, 1998.
        • [SMEU01] Ion SMEUREANU, Marian DARDALA - Programarea in limbajul C/C++, Editura Cison, 2001.
        • [SMEU02] Ion SMEUREANU, Marian DARDALA - Programarea orientata obiect in limbajul C++, Editura Cison, 2002.