Este un curs foarte interesant (parerea mea) care a fost dezvoltat de Noam Nisan and Shimon Schocken profesori la o universitate din Israel. Pe scurt cursul isi propune construirea "teoretica" a unei platforme (denumita in curs "Hack") de la cele mai simple elemente (porti logice construite in intregime pornind de la operatia booleana Nand, procesor, memorie) pana la ultimul nivel (o aplicatie pentru respectiva platforma intru-un limbaj dezvoltat in curs - Jack - de ex jocul Tetris), trecand prin toti pasii intermediari care i-ar implica dezvoltarea unei astfel de platforme de unde si denumirea cursului "From NAND to Tetris". Nu se intra in detalii (cum ar fi error handling la nivel hardware, optimizari, etc), care oricum se studiaza in detaliu la materii dedicate pe subiectul respectiv.

Cursul, mi s-a parut interesant, pentru ca desi nu contine informatii noi despre niciunul dintre subiectele abordate este foarte interesant pentru cei care vor sa-si faca o imagine mai clara a tuturor layer-elor de abstractizare din care este compus un computer modern si modul cum lucreaza impreuna. Toate disciplinele sunt studiate in detaliu in materii de specialitate la facultati de specialitate, dar avantajul este aici ca se aduna toate disciplinele impreuna, (hardware, software) porneste de la porti logice, trece prin simulari hardware, concepte de mapari hardware, assembler, compilator, parser, masini virtuale, sistem de operare si aplicatii (simplizate si abstractizate pentru a nu se intinde la nesfarsit - pierzandu-se in detalii), motiv pentru care a fost adoptat de multe facultati din strainatate in variante mai mult sau mai putin modificate.

Pentru mai multe detalii si explicatii mai bune puteti merge la nand2tetris.org. Mai exista si un TED talk in care explica de unde a pornit ideea.

Aici se gaseste suportul de curs si proiectele pentru fiecare capitol in varianta originala.

A fost fun de trecut prin el (am facut pana la capitolul 6 temele de la fiecare capitol pana acum, o sa mai continui cand mai imi gasesc timp si chef) si il recomand oricui vrea sa isi imbunatateasca cunostiintele printr-o viziune generala unitara asupra modului de functionare al unui calculator modern.

Pentru a trece prin curs pana la capat ai nevoie sa stii cel putin un limbaj de programare (nu prea conteaza care) si cunostiinte de baza despre hardware si software.

Enjoy!