
Implementacija i upravljanje jednostruko spregnutim listama
Inquiry Framework
Question Framework
Driving Question
The overarching question that guides the entire project.Kako možemo dizajnirati i implementirati fleksibilan sistem za upravljanje dinamičkim podacima (poput pametne liste pesama ili sistema za upravljanje zadacima) koji prevazilazi ograničenja statičke memorije, a pritom osigurava bezbednost i integritet svakog elementa pri svakoj izmeni?Essential Questions
Supporting questions that break down major concepts.- Kako se jednostruko spregnuta lista razlikuje od statičkog niza u pogledu upravljanja memorijom i fleksibilnosti?
- Na koji način 'pokazivači' (ili reference) omogućavaju povezivanje elemenata koji nisu fizički susedi u memoriji?
- Koji su kritični koraci (i kojim redosledom se moraju izvršiti) da bi se novi čvor bezbedno umetnuo na specifičnu poziciju bez gubitka ostatka liste?
- Zašto je 'curenje memorije' ili 'izgubljeni pokazivač' (dangling pointer) rizik prilikom brisanja elemenata iz liste i kako to možemo sprečiti?
- Kako iteracija kroz listu (ispis) demonstrira linearan pristup podacima i koje su prednosti i mane ovakvog pristupa u odnosu na direktan pristup?
- U kojim realnim aplikacijama (poput muzičkih plejera ili 'undo' funkcija) je struktura liste efikasnija od klasičnog niza?
Standards & Learning Goals
Learning Goals
By the end of this project, students will be able to:- Učenici će moći da objasne strukturu čvora jednostruko spregnute liste i ulogu pokazivača u povezivanju dinamičkih podataka.
- Učenici će uspešno implementirati algoritme za dodavanje elemenata na početak, kraj i proizvoljno mesto u listi bez gubitka integriteta podataka.
- Učenici će razviti funkciju za brisanje elemenata sa specifične pozicije uz pravilno upravljanje memorijom (sprečavanje curenja memorije).
- Učenici će analizirati i uporediti efikasnost (vremensku i prostornu složenost) operacija nad listama u odnosu na statičke nizove.
- Učenici će kreirati funkcionalni prototip aplikacije (npr. muzička lista ili task menadžer) koji koristi povezane liste za dinamičko upravljanje podacima.
Program nastave i učenja za gimnaziju (Srbija)
CSTA K-12 Computer Science Standards
Entry Events
Events that will be used to introduce the project to studentsThe Human Data Stream Challenge
Students participate in a physical simulation where they represent 'nodes' holding pieces of a secret code. To add a new student into the middle of the 'line' without moving anyone else's physical position, they must creatively use strings (pointers) to redirect the flow, highlighting the efficiency of linked lists over arrays.Portfolio Activities
Portfolio Activities
These activities progressively build towards your learning goals, with each submission contributing to the student's final portfolio.Nacrt Čvora: Temelji u C-u (Konstrukcija Čvora)
Pre nego što pređu na izgradnju cele liste, učenici moraju razumeti anatomiju jednog „Čvora” (Node) u jeziku C. U ovoj aktivnosti, učenici definišu strukturu (struct) koja sadrži podatak (npr. ceo broj) i pokazivač na sledeći element istog tipa. Vežbaće dinamičku alokaciju memorije na „heap-u” koristeći funkciju malloc i naučiće kako da pristupe poljima strukture preko pokazivača.Steps
Here is some basic scaffolding to help students complete the activity.Final Product
What students will submit as the final product of the activityIzvorni fajl u programskom jeziku C (.c) koji sadrži definiciju strukture 'Cvor', upotrebu funkcije 'malloc' za kreiranje dva čvora i njihovo ručno povezivanje, uz priloženu skicu (dijagram) memorije.Alignment
How this activity aligns with the learning objectives & standardsAktivnost je direktno usklađena sa standardom 2.RI.2.2.4: „Učenik upravlja memorijom koristeći pokazivače i dinamičku alokaciju memorije u odabranom programskom jeziku”. Fokus je na C sintaksi i funkciji malloc.Lančana reakcija: Širenje liste (Dodavanje na početak i kraj)
Učenici će implementirati dve osnovne operacije za rad sa listom: dodavanje elementa na sam početak (glava - Head) i na sam kraj (rep - Tail). Ova vežba je ključna za razumevanje kako se pokazivači preusmeravaju i kako se vrši iteracija (prolazak) kroz listu kako bi se pronašao poslednji element koji pokazuje na NULL.Steps
Here is some basic scaffolding to help students complete the activity.Final Product
What students will submit as the final product of the activityBiblioteka koda (izvorni fajl .c) koja sadrži definisane funkcije 'dodajNaPocetak', 'dodajNaKraj' i 'prikaziListu', uz dokaz o uspešnom testiranju (ispis u konzoli).Alignment
How this activity aligns with the learning objectives & standardsAktivnost je direktno usklađena sa standardom 2.RI.2.2.3: „Učenik dizajnira i implementira algoritme koristeći dinamičke strukture podataka (liste, stekovi, redovi)”. Fokus je na logici proširivanja liste sa oba kraja i razumevanju mehanizma pokazivača pri promeni strukture.Hirurška preciznost: Umetanje na željeno mesto
Umetanje u sredinu liste je poput „secanja” fizičkog lanca da bi se dodala nova karika. Učenici će naučiti kako da navigiraju kroz listu do pozicije „n-1”, povežu novi čvor sa čvorom koji je trenutno na poziciji „n”, a zatim preusmere pokazivač sa pozicije „n-1” na novi čvor. Poseban akcenat je na rukovanju graničnim slučajevima, kao što su umetanje na početak (indeks 0) ili pokušaj umetanja na poziciju koja ne postoji.Steps
Here is some basic scaffolding to help students complete the activity.Final Product
What students will submit as the final product of the activityAžurirani izvorni kod (.c fajl) koji sadrži funkciju „dodajNaPoziciju” i tabelu ručnog praćenja koda (trace table) koja prikazuje promene vrednosti pokazivača u svakom koraku iteracije.Alignment
How this activity aligns with the learning objectives & standardsAktivnost je direktno usklađena sa standardom 2.RI.2.2.3: „Učenik dizajnira i implementira algoritme koristeći dinamičke strukture podataka”. Fokus je na složenoj manipulaciji pokazivačima na specifičnoj poziciji, što zahteva precizan logički redosled kako bi se očuvao integritet ostatka liste.Ekipa za čišćenje: Brisanje sa pozicije i oslobađanje memorije
U ovoj aktivnosti učenici će implementirati logiku za uklanjanje člana liste sa specifične pozicije. Glavni izazov je pravilno „premošćavanje“ čvora koji se uklanja: učenici moraju da preusmere pokazivač prethodnog čvora na čvor koji sledi nakon onog koji se briše, a zatim da eksplicitno oslobode memoriju koju je zauzimao obrisani čvor. Ovo je ključna veština za pisanje stabilnih i efikasnih programa koji ne troše nepotrebno resurse sistema.Steps
Here is some basic scaffolding to help students complete the activity.Final Product
What students will submit as the final product of the activityAžuriran izvorni kod (.c fajl) koji sadrži funkcionalnu proceduru „obrisiSaPozicije“ i kratak tekstualni ili vizuelni dokaz (npr. screenshot ili komentar u kodu) da je memorija pravilno oslobođena korišćenjem funkcije free().Alignment
How this activity aligns with the learning objectives & standardsAktivnost je direktno usklađena sa standardima 2.RI.2.2.4 (Upravljanje memorijom koristeći pokazivače i dinamičku alokaciju) i 2.RI.2.2.3 (Dizajniranje i implementacija algoritama koristeći dinamičke strukture). Fokus je na razumevanju životnog ciklusa podataka u memoriji i sprečavanju „curenja memorije“ (memory leak).Digitalna Melodija: Dinamička lista pesama (Finalni projekat)
U ovoj završnoj aktivnosti, učenici će primeniti svoje znanje o jednostruko spregnutim listama na realan scenario: kreiranje „Dinamičke muzičke liste” ili „Menadžera zadataka”. Učenici će integrisati sve prethodno razvijene funkcije (dodavanje, brisanje, ispis) u jednu interaktivnu aplikaciju kojom se upravlja putem korisničkog menija. Pored programiranja, fokus je na kritičkom razmišljanju i poređenju efikasnosti liste u odnosu na statičke nizove u kontekstu čestih izmena podataka.Steps
Here is some basic scaffolding to help students complete the activity.Final Product
What students will submit as the final product of the activityFunkcionalna konzolna aplikacija sa interaktivnim menijem (Dodaj pesmu, Obriši pesmu, Prikaži listu) i kratka pisana analiza (esej) sa uporednom tabelom vremenske složenosti operacija za liste i nizove.Alignment
How this activity aligns with the learning objectives & standardsAktivnost je direktno usklađena sa standardom 2.RI.2.2.1: „Učenik analizira efikasnost algoritama i bira odgovarajuće strukture podataka za rešavanje konkretnih problema”. Takođe podržava CSTA 3A-AP-14 standard kroz primenu kolekcija podataka za predstavljanje fenomena iz stvarnog sveta.Rubric & Reflection
Portfolio Rubric
Grading criteria for assessing the overall project portfolioRubrika za procenu portfolija: Jednostruko spregnute liste u C-u
Tehnička implementacija i memorijska arhitektura
Ovaj domen ocenjuje tehničku preciznost u pisanju C koda i razumevanje fizičke organizacije podataka u memoriji.Struktura podataka i upravljanje memorijom (2.RI.2.2.4)
Ocenjuje sposobnost učenika da ispravno definiše 'Cvor', koristi dinamičku alokaciju memorije (malloc/free) i vizuelno predstavi stanje memorije (stack i heap).
Exemplary
4 PointsUčenik besprekorno definiše strukturu čvora, koristi malloc/free bez grešaka, i kreira precizan memorijski dijagram koji jasno razdvaja stack i heap. Nema curenja memorije.
Proficient
3 PointsUčenik ispravno definiše strukturu i koristi dinamičku alokaciju, ali memorijski dijagram sadrži sitne nepreciznosti ili nedostaje jedan aspekt oslobađanja memorije.
Developing
2 PointsUčenik delimično uspešno koristi malloc, ali ima poteškoća sa sintaksom pokazivača ili dijagram ne prikazuje jasno vezu između stack-a i heap-a.
Beginning
1 PointsStruktura čvora je pogrešno definisana ili nedostaje upotreba funkcije malloc. Memorijski dijagram je nejasan ili nedostaje.
Algoritmi manipulacije listom (2.RI.2.2.3)
Fokusira se na logiku povezivanja čvorova pri dodavanju na različite pozicije, osiguravajući da se 'lanac' ne prekine i da se pravilno rukuje pokazivačima.
Exemplary
4 PointsAlgoritmi su robusni, rukuju svim graničnim slučajevima (prazna lista, jedan element, nepostojeća pozicija). Kod je čitljiv i optimalno napisan.
Proficient
3 PointsFunkcije dodavanja i brisanja rade ispravno za standardne slučajeve, ali se javljaju greške pri specifičnim graničnim situacijama (npr. brisanje glave liste).
Developing
2 PointsUčenik uspešno implementira dodavanje na početak, ali greši u logici iteracije (pronalaženja pozicije) ili gubi referencu na ostatak liste.
Beginning
1 PointsAlgoritmi su nepotpuni; dodavanje ili brisanje dovodi do 'segmentation fault' grešaka ili potpunog gubitka podataka.
Analitičko razmišljanje i praktična primena
Ovaj domen meri sposobnost učenika da primeni apstraktno znanje na realne probleme i da kritički vrednuje svoja rešenja.Sinteza aplikacije i analiza efikasnosti (2.RI.2.2.1)
Ocenjuje kvalitet završne aplikacije (muzika lista) i dubinu pisane analize u kojoj se porede liste i nizovi.
Exemplary
4 PointsAplikacija je potpuno funkcionalna sa intuitivnim menijem. Analiza duboko razmatra vremensku složenost O(1) naspram O(n) i pruža ubedljive argumente za izbor strukture.
Proficient
3 PointsAplikacija radi, ali meni ima manje logičke propuste. Analiza tačno poredi liste i nizove, ali bez detaljnog osvrta na specifičnu vremensku složenost.
Developing
2 PointsAplikacija nudi osnovne funkcije, ali nedostaju provere validnosti. Analiza je površna i ne objašnjava jasno prednosti liste u dinamičkim sistemima.
Beginning
1 PointsAplikacija nije funkcionalna ili nedostaje pisana analiza. Poređenje struktura podataka je netačno.
Komunikacija i proces rešavanja problema
Fokusira se na komunikaciju logičkog procesa kroz kod i prateću dokumentaciju, što je ključno za timski rad i debagovanje.Dokumentacija i logička vizuelizacija (Trace Table)
Ocenjuje jasnoću koda, upotrebu komentara za objašnjenje pokazivačke aritmetike i preciznost Trace tabele za umetanje elemenata.
Exemplary
4 PointsKod je uzoran, komentari detaljno objašnjavaju svaki korak preusmeravanja pokazivača. Trace tabela je bez greške i prati svaku promenu adrese.
Proficient
3 PointsKod je uredan, ali komentari su šturi. Trace tabela ispravno prikazuje ključne promene, ali nedostaju međukoraci.
Developing
2 PointsKod je teško čitljiv, a komentari ne objašnjavaju logiku pokazivača. Trace tabela je nepotpuna ili sadrži logičke greške.
Beginning
1 PointsNedostaju komentari i dokumentacija. Trace tabela nije dostavljena ili je potpuno netačna.