Un curs no s'acaba quan s'acaben les lliçons, sinó quan saps continuar aprenent sense ell. En aquesta lliçó tens una biblioteca seleccionada i comentada: documentació oficial, llibres, plataformes de pràctica, visualitzadors i els temes que continuen de manera natural el que hem vist. No és una llista per llegir-la sencera, sinó un mapa: de cada recurs et dic què aporta i quan fer-lo servir, perquè acudeixis a l'adequat segons el moment. Tanca la lliçó un apartat sobre com estudiar amb tot això, que importa més que el material en si.

Contingut

  1. Documentació oficial de Python
  2. Llibres: de l'accessible al de referència
  3. Plataformes de pràctica (i com començar sense frustrar-se)
  4. Visualitzadors
  5. Temes següents naturals
  6. Continuar practicant amb TaskFlow
  7. Com estudiar amb aquests recursos

Documentació oficial de Python

La documentació de Python és de les millors del sector i hauria de ser la teva primera parada, no l'última.

Recurs Què aporta Quan fer-lo servir
Tutorial oficial, capítol "Data Structures" (docs.python.org/es/3/tutorial/datastructures.html) Repàs concís de list, dict, set, tuples i comprensions, amb el segell de "així es fa en Python idiomàtic" Com a repàs ràpid després del curs; disponible en castellà
Referència de collections (docs.python.org/3/library/collections.html) deque, Counter, defaultdict, OrderedDict, namedtuple amb tots els seus mètodes i costos Cada cop que facis servir el mòdul: sempre hi ha un mètode que no coneixies (p. ex. deque.rotate)
Referència de heapq (docs.python.org/3/library/heapq.html) API del monticle, nlargest/nsmallest, i unes notes de teoria sorprenentment bones, inclòs el patró d'entrades obsoletes que vam fer servir a NucliTaskFlow En implementar qualsevol cua de prioritat real
Referència de bisect (docs.python.org/3/library/bisect.html) Cerca binària i inserció sobre llistes ordenades, amb exemples d'ús Quan una llista ordenada + bisect et pugui estalviar un arbre sencer (ho vam veure a l'autocompletar de 08-01)
Referència d'array (docs.python.org/3/library/array.html) Arrays homogenis compactes: l'"array de debò" del mòdul 1, amb tipus C Quan manegis milions de números i la memòria importi
Wiki TimeComplexity (wiki.python.org/moin/TimeComplexity) La taula oficial de costos de les operacions de list, dict, set i deque a CPython Com a àrbitre: quan dubtis del Big O d'una operació concreta, aquí hi ha la resposta canònica

Consell: guarda TimeComplexity als marcadors. És la versió oficial i sempre actualitzada de la taula de costos que vam construir al mòdul 1.

Llibres: de l'accessible al de referència

No els llegeixis en paral·lel; cadascun té el seu moment.

  • Grokking Algorithms (Aditya Bhargava; en castellà, Algoritmos: guía ilustrada para programadores). El més accessible que existeix: explica amb dibuixos cerca binària, hash, BFS, Dijkstra, grafs... Exemples en Python. Quan: just ara, en acabar aquest curs — et servirà de repàs des d'un altre angle i t'introduirà amb suavitat la programació dinàmica i els problemes NP, que aquí no hem tocat. Es llegeix en un parell de setmanes.
  • Problem Solving with Algorithms and Data Structures using Python (Miller i Ranum; gratuït online a runestone.academy). Cobreix gairebé el mateix temari que aquest curs, amb implementacions completes en Python i exercicis interactius executables al navegador. Quan: com a segona passada del temari; llegir una altra implementació d'una TaulaHash o d'un AVL diferent de la teva consolida moltíssim. És la referència natural per "veure el curs explicat per una altra persona".
  • Introduction to Algorithms (Cormen, Leiserson, Rivest, Stein — "CLRS"). La referència acadèmica: demostracions formals, anàlisi rigorosa, pseudocodi. Més de 1 300 pàgines. Quan: NO per llegir-lo de cap a cap ara. Fes-lo servir com a enciclopèdia: quan necessitis entendre a fons un algorisme concret (per què Dijkstra falla amb pesos negatius, l'anàlisi amortitzada de l'array dinàmic), el seu capítol serà l'explicació definitiva. Comprar-lo o consultar-lo en biblioteca; intimida, però cada capítol és autocontingut.
Llibre Nivell Idioma Preu Paper en la teva formació
Grokking Algorithms Introductori es/en De pagament (assequible) Repàs amè + primers temes nous
Problem Solving with A&DS using Python Introductori-mitjà en Gratuït online Segona implementació de tot el temari
CLRS Avançat es/en De pagament Enciclopèdia de consulta puntual

Plataformes de pràctica (i com començar sense frustrar-se)

Les estructures es fixen resolent problemes. Però l'error número u és entrar en una plataforma, obrir un problema "medium" a l'atzar, encallar-se i concloure que "això no és per a mi". Pla concret:

  • LeetCode (leetcode.com). L'estàndard de facto per preparar entrevistes. L'important: els problemes estan etiquetats per estructura (stack, queue, hash-table, heap-priority-queue, binary-search-tree, graph...) i per dificultat. Com començar: filtra per una etiqueta que dominis (p. ex. stack) + dificultat Easy, i resol 5-10 problemes d'aquella etiqueta abans de canviar. Reconeixeràs vells amics: el "Valid Parentheses" és el teu filtre_balancejat; "Min Stack" és la teva PilaAmbMinim; "Course Schedule" és el teu hi_ha_cicle + ordre topològic.
  • HackerRank (hackerrank.com). Semblant, amb rutes guiades (track "Data Structures") que van de fàcil a difícil de manera més progressiva que LeetCode. Bon punt d'entrada si LeetCode et resulta àrid.
  • Exercism (exercism.org). Gratuït, amb mentors humans que revisen el teu codi i un track de Python excel·lent. Menys orientat a algorismes purs i més a escriure Python net. Ideal per polir estil mentre practiques.

Regles per no frustrar-se, vàlides en qualsevol plataforma:

  1. Fàcil primer, i sense vergonya. Deu problemes fàcils resolts ensenyen més que un de difícil abandonat.
  2. Temps límit d'encallament: 30-45 minuts d'intent seriós; després, mira la solució, entén-la, tanca-la i reescriu-la tu de memòria. Mirar solucions no és fer trampa; és trampa mirar-les sense reescriure-les.
  3. Una etiqueta per setmana. La pràctica agrupada per estructura crea el reflex problema→estructura que vam entrenar a 08-01.
  4. Torna als problemes resolts una o dues setmanes després. Si no et surt a la segona, no estava après.

Visualitzadors

Veure una estructura moure's val més que rellegir-ne la descripció:

  • VisuAlgo (visualgo.net). Animacions pas a pas de gairebé tot el curs: llistes enllaçades, piles, cues, taules hash (amb col·lisions i rehashing!), ABC, AVL amb les seves rotacions, monticles, BFS/DFS, Dijkstra, Prim, Kruskal... Quan: en repassar un algorisme que "més o menys" recordes — veure les rotacions AVL animades aclareix en dos minuts el que costa mitja hora sobre paper. Té mode examen per autoavaluar-te.
  • Python Tutor (pythontutor.com). Executa el teu propi codi Python pas a pas dibuixant la memòria: referències, objectes, la pila de crides creixent i encongint-se a cada crida recursiva. Quan: per depurar la teva comprensió, no només el teu codi. Enganxa-hi la teva LlistaEnllacada del mòdul 2 i mira els nodes apuntant-se; enganxa-hi un recorregut recursiu i observa la pila de crides que vam estudiar al mòdul 3 fer-se visible.

Temes següents naturals

El curs et deixa a la frontera de diversos camins. Ordenats per continuïtat amb el que ja saps:

Tema Què és Per què és el pas següent Amb quin recurs
Algorismes d'ordenació en detall Mergesort, quicksort, heapsort, i per què el sort() de Python (Timsort) és com és Has fet servir sort() tot el curs; heapsort és el teu Monticle aplicat CLRS caps. 2, 6-8; VisuAlgo "Sorting"
Programació dinàmica Optimització descomponent en subproblemes que se solapen És la teva memoïtzació del mòdul 5 elevada a mètode general Grokking Algorithms (cap. 9) per a la idea; LeetCode etiqueta dynamic-programming
Tries (arbres de prefixos) Arbre on cada camí lletreja una paraula L'estructura "de debò" de l'autocompletar de 08-01; combina arbres + diccionaris Problem Solving with A&DS; LeetCode trie
Grafs avançats Components fortament connexes, flux màxim, A* Continuació directa del mòdul 7 CLRS caps. 22-26
Estructures probabilístiques Bloom filters, HyperLogLog: responen "probablement hi és?" amb memòria mínima Gir mental sobre la teva taula hash: acceptar error a canvi d'espai Cerca "bloom filter python tutorial"; implementar-lo són ~30 línies
Bases de dades per dins Com un motor real fa servir B+, hash i LSM-trees Vas veure els arbres B al mòdul 6; SQLite és programari lliure i llegible Llibre online gratuït Use The Index, Luke; documentació de SQLite

No intentis abordar-los tots: tria'n un (per a un perfil júnior, ordenació o programació dinàmica són les apostes més rendibles) i dedica-li un mes.

Continuar practicant amb TaskFlow

TaskFlow és teu: el millor camp de pràctiques és estendre'l. Idees ordenades de menys a més esforç, cadascuna lligada al que exercita:

  • Persistència: guardar i carregar les tasques en JSON, mesurant amb timeit quant costa reconstruir els índexs en arrencar (mòduls 1 i 5).
  • Paperera amb caducitat: tasques esborrades recuperables durant N accions — un deque(maxlen=N) de tuples (tasca, acció en què es va esborrar) (mòduls 3 i 4).
  • Etiquetes jeràrquiques: que feina/backend hereti cerques de feina — arbre general + índex invertit col·laborant (mòduls 5 i 6).
  • Recordatoris programats: un monticle per data de venciment que dispara avisos — la teva SafataUrgencies amb el temps com a prioritat (mòduls 4 i 6).
  • Mode multiusuari: graf de col·laboradors (qui ha treballat amb qui) amb suggerir_collaboradors millorat (mòdul 7).
  • Memòria cau LRU real per a les cerques freqüents: implementa el disseny de l'exercici 3 de 08-01 i compara'l amb functools.lru_cache (mòduls 2 i 5).

La lliçó següent converteix tres d'aquestes línies en projectes complets amb requisits i criteris d'avaluació.

Errors Comuns i Consells

Adaptem la secció habitual: aquí els errors són d'ús dels recursos.

  • Col·leccionar en lloc d'estudiar. Guardar 40 enllaços produeix la mateixa millora que guardar-ne zero. Regla: com a màxim un llibre, una plataforma i un visualitzador actius alhora.
  • El "tutorial infinit". Encadenar cursos i vídeos sense resoldre problemes és la manera més còmoda de no avançar. Proporció sana: per cada hora de lectura/vídeo, almenys una hora de teclat.
  • Pràctica espaiada, no afartaments. Vint minuts diaris durant un mes fixen més que un dissabte de vuit hores. L'oblit és el mecanisme: repassar just quan comences a oblidar (al cap de 2 dies, a la setmana, al mes) és el que consolida.
  • Implementar de memòria. El test definitiu d'una estructura no és llegir-la: és tancar-ho tot i escriure la teva TaulaHash o el teu BFS en un editor buit. Fes-ho amb una estructura diferent cada setmana.
  • Explicar als altres. Escriu un petit article, respon un dubte en un fòrum o explica-li els monticles a un company. Si no ho pots explicar sense mirar, encara no era teu (i explicar és repassar).
  • Mesurar la frustració com a senyal, no com a veredicte. Encallar-se és l'estat normal de l'aprenentatge d'algorismes. La pregunta no és "m'encallo?" sinó "m'encallo en coses més difícils que fa un mes?".

Exercicis

Exercici 1

Elabora el teu pla d'estudi per a les properes 4 setmanes fent servir només recursos d'aquesta lliçó: tria un llibre, una plataforma amb una etiqueta concreta d'inici i un tema "següent natural", i justifica cada tria en una frase segons el teu punt feble detectat al test de 08-02.

Exercici 2

Entra a la wiki TimeComplexity i respon amb ella (no de memòria): (a) quin cost té x in s per a un set en el cas mitjà i en el pitjor cas? (b) quina operació de deque és O(n) malgrat la fama de "tot O(1)" de l'estructura? (c) coincideix el pitjor cas de dict.get amb el que vas aprendre al mòdul 5 sobre col·lisions?

Exercici 3

A VisuAlgo, secció d'AVL, insereix la seqüència 1, 2, 3, 4, 5, 6, 7 i anota quina rotació dispara cada inserció. Després prediu sobre paper què passarà amb la seqüència 7, 6, 5, 4, 3, 2, 1 i verifica-ho al visualitzador.

Solucions

Exercici 1. No hi ha una única resposta; un pla tipus per a un perfil que va fallar les preguntes d'arbres del test: Problem Solving with A&DS (capítols d'arbres, perquè dona una segona implementació completa), LeetCode etiqueta binary-search-tree en dificultat Easy (pràctica agrupada del punt feble), i com a tema següent "ordenació en detall" (rendibilitza el Monticle ja construït via heapsort). L'essencial és que cada tria es justifiqui pel teu diagnòstic, no per popularitat.

Exercici 2. (a) O(1) de mitjana, O(n) en el pitjor cas — el pitjor cas passa quan totes les claus col·lideixen. (b) L'accés per índex en posicions centrals, d[i], és O(n) (i també insert/remove al mig): el deque optimitza extrems, no interior. (c) Sí: l'O(n) del pitjor cas de dict.get és exactament l'escenari de col·lisions massives del mòdul 5 — totes les claus a la mateixa cubeta formen una cadena que cal recórrer; el rehashing i una bona funció hash ho fan improbable, no impossible.

Exercici 3. Amb 1..7 ascendent, cada desequilibri és dreta-dreta i es corregeix amb rotacions simples a l'esquerra (disparen en inserir el 3, el 5 —reequilibri local—, el 6 i el 7, segons l'estat de l'arbre). La predicció per a 7..1: el cas mirall — desequilibris esquerra-esquerra, rotacions simples a la dreta als punts simètrics, i un arbre final amb la mateixa forma equilibrada. Si la teva anotació difereix en quina inserció exacta dispara cada rotació però has encertat el tipus de rotació i la simetria, el concepte està après.

Conclusió

Ja tens la biblioteca: la documentació oficial com a referència diària, Grokking i el llibre de Runestone com a lectures següents, CLRS com a enciclopèdia, LeetCode/HackerRank/Exercism com a gimnàs, VisuAlgo i Python Tutor com a microscopi, i una llista curta de temes per on créixer. Recorda la regla que travessa tota la lliçó: pocs recursos, molta pràctica, espaiada i de memòria. Només queda una cosa per fer en aquest curs, i és la més important: construir. A l'última lliçó t'esperen els tres projectes finals.

© Copyright 2026. Tots els drets reservats