Principles of Computers (NSWI120)

 

Informace o předmětu

Semestr zimní 2017/2018
Přednášející Pavel Ježek
Informace v SISu SIS/Předměty/NSWI120
Rozvrh Po 12:20 + Čt 14:00 v S3 (1. paralelka)
Čt 10:40 + Pá 10:40 v S3 (2. paralelka)
Po 15:40 + Út 12:20 v S8 (3. paralelka v anglickém jazyce)

Detailní rozpis jednotlivých přednášek (PDF)
(aktualizováno 13.11.2017 [11. a 13. hodina pondělněčtvrteční paralelky])

Náplň přednášek

(Popis rozdělení látky a příkladů do jednotlivých přednášek odpovídá tomu, jak byly probrány ve čtvrtečně-páteční, tj. 2. paralelce = paralelka, ve které je pořizován video záznam. Ve všech ostatních paralelkách bude vždy probrána stejná látka, pouze občas o přednášku dříve nebo o přednášku později než v referenční čtvrtečně-páteční paralelce.)

  • 1. přednáška (1. paralelka: 2.10.2017 [po] & 2. paralelka: 5.10.2017 [čt] & 3. paralelka: 9.10.2017 [po])
    Stručný obsah:
    Představení předmětu ♦ Harvardská architektura počítače → koncept CPU, datové a programové paměti, periferních zařízení • Charles Babbage a Analytical Engine (1837) → Ada Lovelace → interpretace informace (dat) jako sekvence čísel ♦ přenos čísel: analogový vs. digitální přenos → sériová digitální linka • bit (b) • třístavová logika a floating stav a možnost jeho detekce • diferenciální přenos ♦ typické mocniny dvojky ♦ přenos dat po sériové lince → bit order • přenosová rychlost • idle stav → start condition → stop condition • přenos dat po RS-232 • simplex vs. half-duplex vs. full-duplex • byte/bajt (B) • efektivita přenosu a reálná přenosová rychlost ♦ hodinový signál
    Materiály:
  • 2. přednáška (1. paralelka: 9.10.2017 [po] & 2. paralelka: 12.10.2017 [čt] & 3. paralelka: 16.10.2017 [po])
    Stručný obsah:
    Komunikační protokol a datový paket • komunikace se sériovou myší přes RS-232 • možnosti reprezentace boolovské informace v jednom bitu Průběžný příklad: parsování paketu sériové myši • šestnáctková soustava • zobrazení a zápis šestnáctkových čísel v Pascalu ♦ bitové operace OR, AND, NOT, XOR, SHL, SHR, ROL, ROR • využití bitových operací pro manipulaci a čtení jednotlivých bitů ♦ reprezentace záporných celých čísel → znaménkový bit vs. jedničkový doplněk vs. dvojkový doplněk
    Materiály:
  • 3. přednáška (1. paralelka: 12.10.2017 [čt] & 2. paralelka: 19.10.2017 [čt] & 3. paralelka: 17.10.2017 [út])
    Stručný obsah:
    Dvojkový doplněk vs. reprezentace s posunem (bias) • Celočíselné datové typy v Pascalu (unsigned vs. signed) • konverze mezi typy • bezznaménkové vs. znaménkové rozšíření (zero vs. sign[ed] extension) • oříznutí (truncation) ♦ vztah bitových operací posunu a násobení/dělení • logický vs. aritmetický posun (SAR) ♦ zápis reálných čísel ve dvojkové soustavě • reprezentace s pevnou řádovou čárkou (fixed point) • reprezentace s pohyblivou řádovou čárkou (floating point) • standard IEEE 754 → denormalizovaná matisa + reprezentace 0 + reprezentace a operace s ±∞ a NaN (Not a Number)
    Materiály:
  • 4. přednáška (1. paralelka: 19.10.2017 [čt] & 2. paralelka: 20.10.2017 [pá] & 3. paralelka: 23.10.2017 [po])
    Stručný obsah:
    Rozdíl master vs. slave zařízení • zápis vs. čtení • potřeba unikátní identifikace point-to-point sériové linky (př. COM3 v příkladu s myší) • point-to-point → multidrop → sběrnice (bus) • adresa zařízení a adresový prostor sběrnice • zapojení sériové linky s pull-up odporem • I2C sběrnice → základní koncepty, signály SDA a SCL • formát timing diagramů • formát přenosu po I2C sběrnici • clock stretching (holding clock low) • I2C zápis vs. čtení ♦ vnitřní struktura typikého zařízení (příklad 1: ALS, příklad 2: myš) • registr zařízení (R/W vs. R/O vs. W/O) ♦ struktura paměti • adresa v paměti a adresový prostor paměti • jednotky kapacity: kB, MB, GB, TB, PB, EB • kB vs. KiB • slovo (word) • zápis bytu do I2C paměti • čtení bytu z I2C paměti • burst přenosy • teoretická vs. reálná rychlost přenosu dat po sběrnici
    Materiály:
  • 5. přednáška (1. paralelka: 23.10.2017 [po] & 2. paralelka: 26.10.2017 [čt] & 3. paralelka: 24.10.2017 [út])
    Stručný obsah:
    Zařízení s registry mapovanými do vlastního adresového prostoru • arbitrace na I2C sběrnici ♦ paměti SRAM (volatile) jako datová operační paměť • latch (flip-flop) jako 1-bitová paměť SRAM • druhy pamětí a jejich charakteristika (přenosová rychlost vs. přístupová doba) • druhy přístupů: sekvenční vs. náhodný vs. jiné • vlastnosti a rozdíly mezi SRAM a DRAM → refresh ♦ paměti ROM vs. NVRAM (non-volatile) • základní vlastnosti ROM, PROM, EPROM, EEPROM, flash memory ♦ operační paměť vs. permanentní datová úložiště • sektor • základní vlastnosti pevných disků (HDD) • adresování C/H/S vs. LBA
    Materiály:
    • lokální kopie 05-vcnl4000 - I2C proximity sensor.pdf - příklad specifikace složitějšího I2C zařízení, které má registrům přiřazeny adresy ve svém vnitřním adresovém prostoru (u tohoto zařízení 8-bitový adresový prostor, registry mapovány na adresy $80 až $8A), na přednášce využito: strana 10 → komunikační protokol podobný jako u I2C pamětí (viz 4. přednáška), příklad registru a jeho adresy [původní zdroj: http://www.vishay.com/docs/83372/vcnl4000.pdf]
    • Principles 2017-18 - 05th Lecture.pptx [PDF verze] - arbitrace na I2C sběrnici
    • Self Assessment Úlohy k této přednášce:
      • WORK IN PROGRESS ...
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (čtvrteční video) paralelka   1. (pondělní) paralelka   3. (anglická) paralelka
         
  • 6. přednáška (1. paralelka: 30.10.2017 [po] & 2. paralelka: 2.11.2017 [čt] & 3. paralelka: 30.10.2017 [po])
    Stručný obsah:
    Dokončení vlastností HDD (rychlost) • základní vlastnosti CD/DVD/Blu-ray • základní vlastnosti SSD • adresa/offset → pohled jako na posloupnost bytů • potřeba načítat data do operační paměti → bázová adresa/offset• typické velikosti adresového prostoru • koncept souboru jako pojmenované posloupnosti sektorů • metadata na disku → souborový systém • práce se soubory: program volá Pascal (číst ze souboru) → Pascal volá OS (číst ze souboru) → operační systém (OS) čte sektory z disku, a interpretuje metadata souborového systému (FS) = OS zná komunikační protokol HDD/SSD, OS rozumí formátu FS • adresář/složka = speciální soubor s metadaty • archiv (.zip, .tar) • archiv jako komplexní datový formát (.docx) • studování binárních dat v souboru = hex viewer (typické 3 části: offset, byte in hex, interpretace jako 1 byte text)• textový soubor = binární soubor jehož data interpretujeme jako text ♦ pohled na soubor jako na posloupnost bytů • binární soubory v Pascalu (vs. textové) file of byteBlockRead a BlockWriteReset(...)/Rewrite(...) nastaví offset na 0 → BlockRead/BlockWrite posune offset → potřeba Seek(f, nový offset od začátku souboru) • zobrazení bytů v poli • vlastní hex view(er) • adresa dat •
    Materiály:
  • 7. přednáška (1. paralelka: 2.11.2017 [čt] & 2. paralelka: 3.11.2017 [pá] & 3. paralelka: 6.11.2017 [po])
    Stručný obsah:
    Koncept hlavičky (header) dat → magic/signature • endianita dat (Little Endian vs. Big Endian) • endianita v programovacím jazyce vs. endianita CPU • program čtoucí LE data správně nezávisle na endianitě CPU • ukazatel (pointer) • typy pointer vs. ^Typ (beztypový vs. typovaný ukazatel) • operátor sizeof • operátor @ (získání adresy proměnné) • zobrazení adresy proměnné → organizace globálních proměnných v paměti → zarovnání dat (alignment) → nezarovnaná data → padding ♦ dereference ukazatele • čtení/zápis z dané adresy • využití ukazatelů pro zobecnění implementace algoritmu pro více proměnných • dereference ukazatele • čtení/zápis z dané adresy • využití ukazatelů pro zobecnění implementace algoritmu pro více proměnných • ukazatele v Pascalu vs. v jazyce C ♦ použití ukazatelů pro čtení/zkoumání binárních dat • záznam (record v Pascalu • využítí ukazatelů na záznam pro čtení komplexních binárníh dat (příklad čtení .dbf souboru) • potřeba nastavit zarovnání položek záznamu ♦
    Materiály:
  • 8. přednáška
    Stručný obsah:
    Reprezentace obrazu • bitmapa a typické souřadnice X a Y • pixel • bitová hloubka, resp. bits per pixel (bpp) • monochromatický/černobílý obraz (1-bit vs. 8-bit per pixel) • barevný obraz a typický RGB pixel (bitová hloubka 15-bit vs. 16-bit vs. 24-bit vs.32-bit [a alfa kanál]) • minimální potřebná metadata pro bitmapy • informace o existenci různých formátů obrazových souborů (BMP/TGA jako bezkompresní; PNG/GIF jako s bezztrátovou kompresí; JPEG jako se ztrátovou kompresí) ♦ ukázka formátu Windows Bitmap (.BMP) jako typický příklad binárního souboru → využití ukazaterů a bitových operaci pro získání a zobrazení jednotlivých pixelů z .BMP souboru ♦ reprezentace zvuku (sample, sample rate) ♦ reprezentace videa ♦ reprezentace textu • textový řetězec (string) • koncept kódování (encoding) • kódování ASCII • 8-bitová kódování jako rozšíření ASCII ♦ Unicode •
    Materiály:
  • 9. přednáška
    Stručný obsah:
    Kódování UTF-32 → UCS-2 (s pevnou délkou znaku) → UTF-16 → UTF-8 (s proměnnou délkou znaku) • endianita UTF-32 a UTF-16 • druhy Unicode znaků • řídící Unicode znaky • combining characters a více znakové sekvence tvořící 1 grafém • reprezentace nového řádku (CR LF vs. LF vs. CR vs. LS vs. PS) ♦ koncept textových souborů • platné znaky řetězce ⇒ řetezce s explicitní délkou vs. null-terminated strings (pozor: znak s kódem 0 vs. znak pro číslici 0) ♦ vyzkoušení práce s null-terminated řetězci → srovnání s řetezci s délkou • rezervní prostor pro prodlužování řetězce vs. přesně vyhrazené místo pro platné znaky → proměnný offset dalších dat v binárních souborech vs. řetězce v paměti • signature/BOM (Byte Order Mark) v textových souborech v Unicode kódováních • detailnejší pohled na typický hex viewer • různé pohledy na stejná binární data (beznaménkové vs. znaménkové celé číslo vs. floatin-point reálná čísla vs. fixed-point vs. text vs. pixel obrazu) ♦
    Materiály:
    • 09-TextInUnicodeAndLatin2-BinaryData.zip - ukázky složitějšího textu textových souborech v kódování UTF-16 LE, a příklady textových souborů v Latin 2, a UTF-8 kódování
    • http://unicode.org/reports/tr9/ - Unicode Bidirectional Algorithm jako příklad netriviálnosti Unicode
    • 09-NullTerminatedStrings.zip - ukázka práce s null-terminated řetězci v Pascalu
    • 09-DataReprezentation.zip - ukázka různých pohledů na stejná 4 bytová data
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (čtvrteční video) paralelka   1. (pondělní) paralelka   3. (anglická) paralelka
         
  • 10. přednáška (1. paralelka: 13.11.2017 [po] & 2. paralelka: 16.11.2017 [čt] & 3. paralelka: 14.11.2017 [út])
    Stručný obsah:
    Jednočipové počítace (microcontroller) • typické příklady Microchip a Atmel • pračka jako příklad zařízení řízeného mikrokontrolerem → koncept firmware • základní periférie: převodníky ADC (Analog Digital Converter) a DAC (Digital Analog Converter), digitální vstupy/výstupy pomocí GPIO • připojení tlačítka a LED diody ke GPIO • koncept řadiče (controller) • přehled typických sběrnic u jednočipových počítačů: již známé I2C, RS-232, a další (jen zmínka o existenci) SPI, RS-485, CAN • základní vlastnosti USB sběrnice: verze vs. přenosová rychlost → přenos po paketech a protokolový overhead → stromová topologie → USB hub → koncept composite zařízení → masterem v kořeni → koncept a potřeba pollingu ♦ koncept HCI (Host Controller Interface) → příklad HCI GPIO řadiče • koncept bridge mezi sběrnicemi → příklady: RS-232 to I2C bridge (a jeho HCI) → USB to RS-232 bridge ⇒ postupná stavba a přenos požadavků přes řetěz sběrnic • odhalení používání USB to RS-232 bridge od začátku semestru • USB to I2C bridge • příklad jednoduchého firmware: baterka s tlačítkem a LED diodou → nekonečný cyklus → vhodnost rozčlenění SW do vrstev a návrh odshora dolů ♦ programovací jazyk → strojový kód ⇒ instrukce vs. instrukční sada vs. procesorová architektura • strojový kód jako posloupnost bytů
    Materiály:
  • 11. přednáška (1. paralelka: 20.11.2017 [po] & 2. paralelka: 24.11.2017 [pá] & 3. paralelka: 20.11.2017 [po])
    Stručný obsah:
    Uložení firmware do jednočipu s Harvardskou architekturou • problém s aktualizací firmware → von Neumannovská architektura jako řešení ♦ koncept ukazatelů na funkce a procedury → deklarace v Pascalu → dereference ukazatele na fci/proc ♦ využití ukazatelů na proceduru/fci pro spuštění "dat" jako kód ♦ trocha historie (UNIVAC → Apple I → Apple II → Atari 800 XE → IBM PC) ♦ přehled referenčních architektur 6502 (8-bit) a x86 (32-bit) • logická vs. fyzická adresa (adresový prostor)
    Materiály:
  • 12. přednáška
    Stručný obsah:
    Srovnání strojového kódu vs. assembleru • instrukce NOP • instrukce přímého nepodmíněného skoku • instrukce nepřímého nepodmíněného skoku • absolutní vs. relativní skok • variabilita instrukční sady (různé možnosti zápisu stejného programu) • Překlad z assembleru do strojového kódu → překladač (compiler): zdrojový kód → strojový kód → memory dump → spustitelný soubor (executable) • překlad z vyššího programovacího jazyka • stejný program v Pascalu + různé překladače Pascalu → různý strojový kód • přenositelnost na úrovni zdrojového kódu (source code portability) → koncept decompileru, resp. disassembleru ♦ struktura programu v Pascalu a zakladní představa jeho překladu • základní organizace paměti programu: strojový kód hlavního programu + strojový kód procedur a funkcí + globální proměnné a konstanty • volání procedury přímo a pomocí ukazatele → přímý skok a nepřímý skok ♦ koncept HW podpory zásobníku • registr SP (stack pointer) • základní pohled na instrukce PUSH a POP • práce s více zásobníky pomocí jednoho registru SP • implementace instrukcí PUSH a POP na x86 • WORD vs. DWORD vs. QWORD • možné argumenty instrukcí: immediate (konstanta), absolutní adresa • různé velikosti argumentů PUSH a POP → • na HW zásobníku nejsou hranice mezi položkami • možná špatná interpretace dat na zásobníku ♦ návrat z podprogramu - potřeba instrukce RET (RTS na 6502) • volání podprogramu - potřeba instrukce CALL (JSR na 6502) • volací zásobník (call stack) • problémy stack overflow a stack underflow ♦ ukládání parametrů na volací zásobník → stack frame (zásobníkový rámec) • potřeba dohody o volací konvenci (calling convention) • předávání konstant jako argument procedury • předání obsahu proměnné jako argument • předání promenné odkazem • potřeba odstranění argumentů z volacího zásobníku
    Materiály:
  • 13. přednáška
    Stručný obsah:
    Přístup k argumentům v proceduře - zatím v pseudokódu • ukládání lokálních proměnných na volací zásobník • prolog a epilog procedury • volání funkce a uložení návratové hodnoty • dvoufázový překlad (opravení adres po znalosti finálního umístnění kódu) • koncept labelů v assembleru ♦ přehled paměti při spuštěném vývojovém prostředí → editor (update a draw smyčka) + překladač + debugger + disaasembler • vynucení C volací konvence pomocí cdecl • breakpoint na řádku v Pascalu → breakpoint na instrukci • princip fungování debuggeru přepisováním instrukcí • debug info (symboly) • univerzalita debuggeru ♦ základní koncept aritmetických instrukcí • registry procesoru • akumulátorová archtektura (př. CPU 6502) a registr akumulátoru a pomocné registry • koncept příznaku (flag) • příznakový registr koncepčně • instrukce LOAD (připomenutí immediate a absolutní adresa) • argument typu indexované adresy • načtení hodnoty dereferencované z ukazatele • instrukce STORE • instrukce TRANSFER mezi registry • PUSH a POP z/do akumulátoru a z/do příznakového registru • přehled základních příznaků: zero, sign (negative), carry • modifikace příznaků jako side-effect provádění instrukce • nastavení/vymazání příznaku • instrukce bitových operací • bitové operace na větší velikosti proměnných, než je podporováno instrukcí (př. 16-bit OR pomocí instrukcí 8-bit OR)
    Materiály:
  • 14. přednáška
    Stručný obsah:
    PLÁN: Instrukce sčítání s přenosem • ignorování přenosu při sčítání v přesnosti instrukce • sčítání znaménkových čísel • využítí přenosu při sčítání ve větší přesnosti (př. 16-bit sčítání pomocí 8-bit ADC) • rozdíl pomocí převedení do součtu záporné hodnoty → převedení do dvojkového doplňku • instrukce rozdílu • instrukce inkrementace a dekrementace o 1 • instrukce bitových posunů a rotací s přenosem → využítí pro implementaci posunů ve vyšší přesnosti • absence instrukcí dělení a násobení na 6502 ♦ přeložení komplexního výrazu z Pascalu do assembleru • rozdělení na operace a:=b op c, resp. a:=a op b • připomenutí volání funkcí • volání runtime programovacího jazyka pro CPU nepodporované operace (př. násobení na 6502) ♦ překlad programu po částech • koncept object file (.obj/.o) • statické linkování a unresolved symbols • staticky linkovaná knihovna (.lib/.a) • standardní knihovna programovacího jazyka (RTL = runtime library) • příklady funkcí z RTL Pascalu: Write, WriteLn, ReadLn • funkce násobení na 6502 v RTL ♦ pokračování překladu výrazu: využítí akumulátoru pro uložení konstanty na volací zásobník • uložení návratové hodnoty funkce do dočasné proměnné • odkaz na globální promenné a načtení jejich obsahu • pozor na 8-bitová sčítání na 6502 • alokace dočasných proměnných na volacím zásobníku • přístup k dočasným proměnným na zásobníku ♦ obecná registrová architektura (př. 32-bitová varianta x86, tj. IA-32) • pohled na část registru • instrukce LOAD, STORE a TRANSFER na x86 • přístup k položkám pole v assembleru • přístup k položkám záznamu (record) v assembleru ♦ aritmetické a bitové operace na x86 • zjednodušení přepisu výrazu do assembleru s větším množstvím registrů a volností instrukční sady • srovnání 6502 a x86: stejný výraz → zásadní rozdíl v komplexnosti výsledného strojového kódu • základní představa o rychlosti zpracování instrukcí = počet taktů instrukce • rychlost typických instrukcí • prolog a epilog procedury a funkce v assembleru (vzhledem k Free Pascalu)
    Materiály:
  • 15. přednáška
    Stručný obsah:
    PLÁN: Překlad if-else pomocí podmíněných instrukcí • instrukce podmíněného skoku • překlad if-else ppomocí podmíněného a nepodmíněného skoku • podmíněné skoky pro standardní příznaky • if s podmínkou A = 0 • if s podmínkou A <> 0 • if se složenou podmínkou s logickým AND nebo OR • if s podmínkou rovnosi A = B pomocí rozdílu • instrukce COMPARE jako nedestruktivní rozdíl • sémantika podmíněných skoků vzhledem k porovnání • if s podmínkou < a >= • problém s podmínkou <= a > • kontrola aritmerického přetečení v Pascalu a řešení pomocí podmíněného skoku • překlad while cyklu • překlad repeat-until cyklu • překlad for cyklu • k čemu se hodí rozumnět assembleru? • inline assembler • problém s přenositelností • vyčlenění platformě závislého kódu do zvláštního zdrojového souboru • využití překladu po částech koncept API • koncept ABI ♦ paralelní sběrnice • paměťová paralelní sběrnice → datová a adresová část
    Materiály:
  • 16. přednáška
    Stručný obsah:
    PLÁN: základní srovnání řídících signálů CPU vs. SRAM → řadič paměti (memory controller) • příklad 1Kx8 SRAM • rozdělení uložení slova mezi více paměťových modulů • adresa bytu z pohledu CPU vs. adresa slova z pohledu paměti • platné adresy pro různé velikosti slova • problém čtení a zápisů nezarovnaných dat → zarovnávání dat na velikost slova ♦ start počítače s von Neumann architekturou • startup/init vektor CPU • ROM s firmware v adresovém prostoru • funkce firmware počítače: test a konfigurace HW → bootování (př. Atari 800 XE) • bootování z Option ROM • teplý vs. studentý start počítače • aplikace Setup jako součást firmware ROM • shadow RAM • možnost programové změny mapovací funkce řadiče paměti → odmapování paměti ROM
    Materiály:
  • 17. přednáška
    Stručný obsah:
    PLÁN: Problémy při překladu kódu • interpret kódu programovacího jazyka • příklad interpretu jednoduché verze BASICu (bez implementace lexikální analýzy - pro nás příliš komplikované) • výhody a nevýhody interpretace kódu • interpret strojového kódu 6502 → potřeba virtuálního stroje (virtual machine), simulátor/emulátor CPU • koncept sandboxu ve VM • koncept JIT překladu • virtual machine jako běhové prostředí pro programovací jazyk → intermediate language → Java/bytecode/JVM nebo C#/CIL/CLR (.NET) → Xamarin → Dalvik • zásobníková registrová architektura (stack machine) • provádění instrukcí vzhledem k registrovému zásobníku • přepis výrazu z 14. přednášky do assembleru zásobníkového stroje (př. CIL kód .NETu) ♦ pokračování bootování → bootování z permanentního úložiště (pevný disk/disketa/fleška) • obraz disku (disk image) • boot sektor • boot loader • rozdělení disku na oddíly (partition/volume) • boot manager
    Materiály:
  • 18. přednáška
    Stručný obsah:
     
    Materiály:
  • 19. přednáška
    Stručný obsah:
     
    Materiály:
    • Principles 2017-18 - 19th Lecture.pptx [PDF verze]
    • Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
      2. (čtvrteční video) paralelka   1. (pondělní) paralelka   3. (anglická) paralelka
         
  • 20. přednáška
    Stručný obsah:
     
    Materiály:
  • 21. přednáška
    Stručný obsah:
     
    Materiály:

Zkouška

Zkouška probíhá písemnou formou a v každé zkouškové písemce je 10 otázek (některé obsahují podotázky). Z každé otázky lze získat 1 nebo 0,5 nebo 0 bodů - 1 bod v případě, že je odpověď na otázku správně; 0,5 bodu, pokud odpověď není zcela kompletní, ale jinak je správná (tj. nějaká malá část odpovědi chybí nebo je nepřesná); v ostatních případech 0 bodů (tj. pokud v odpovědi chybí větší část, nebo je odpověď na otázku plně nebo i jen z části nesprávná). Celkem lze tedy získat maximálně 10 bodů. Mapování získaných bodů na výslednou známku je následující:
Body z písemky Výsledná známka
10 – 8,5
{x | x ≥ 8,5}
1
8 – 6,5
{x | 8,5 > x ≥ 6,5}
2
6 – 5
{x | 6,5 > x ≥ 5}
3
4,5 – 0
{x | 5 > x}
4
Každá zkoušková písemka trvá 4 hodiny, tj. ideálně 20 minut na každou otázku + 40 minut antistresová rezerva.

Níže budou pro ilustraci uvedena zadání písemek z již proběhlých termínů v letošním roce (AR 2017/2018): Níže jsou pro ilustraci uvedena zadání zkouškových písemek z dřívějších let, kdy již výuka předmětu Principy počítačů probíhala dle aktuálního formátu (nicméně i tak pozor, že obsah přednášek nemusí být každý akademický rok stejný úplně "do posledního písmenka" - zároveň platí, že se vždy zkouší jen látka opravdu odpřednesená v daném akademickém roce, tj. aktuální písemky mohou obsahovat i otázky na témata, která se ve starších písemkách nevyskytují, resp. ve starších písemkách mohou být otázky na témata, která byla letos vypuštěna, a tedy se nezkouší).

AR 2016/2017: AR 2015/2016: AR 2014/2015: AR 2013/2014: AR 2012/2013:

Doporučená literatura

Primárním zdrojem informací na zkoušku jsou přednášky tohoto předmětu - tedy vaše pozdnámky z hodin, případně pořízené videozáznamy. Pokud byste potřebovali ještě nějaké další zdroje informací, tak relevantní jsou např. doporučení kolegy Buleje z dřívějších let platná pro starou akreditaci (do AR 2011/2012)- viz níže:

Odborná literatura se zaměřením na tématiku předmětu existuje především v anglickém jazyce. Primárním zdrojem pro HW část předmětu je kniha Computer Organization and Design od dvojice autorů D. A. Patterson a J. L. Hennessy. Jedná se o jednu z nejlepších knih věnovanou návrhu a architektuře počítačů, podle níž probíhá výuka v bakalářškých programech většiny západních univerzit (ale pozor: ve stávající akreditaci jsou některé z pokročilejších konceptů týkající se samotného návrhu počítače probírány ve volně navazující přednášce NSWI143 Architektura počítačů). V principu je však možné ke studiu použít v podstatě jakoukoliv rozumnou knihu:

  • A. Tanenbaum: Structured Computer Organization
  • W. Stallings: Computer Organization and Architecture
  • V. Heuring, H. Jordan: Computer Systems Design and Architecture

Část předmětu věnovaná operačním systémům pokrývá základní principy, které je opět možné najít v prakticky libovolné knize:

  • A. Tanenbaum: Modern Operating Systems
  • A. Silberschatz, G. Gagne, P. Galvin: Operating System Concepts
  • H. Deitel, P. Deitel, D. Choffnes: Operating Systems

Vedle knih je možné najít velké množství relevatních informací také na webu, např. v anglické verzi encyklopedie Wikipedia. Články k jednotlivým tématům také typicky obsahují řadu odkazů na zdroje, které je možné ke studiu použít.

Domácí literatura

S náplní přednášek se částečně kryje seriál Pavla Tišnovského Co se děje v počítači, který vychází na serveru Root.cz. V celé řadě věcí zachází do větších detailů než je možné prezentovat v omezeném čase přednášek, což však rozhodně není na škodu věci (ale pozor: ve stávající akreditaci jsou některé z pokročilejších konceptů probírány ve volně navazující přednášce NSWI143 Architektura počítačů).

Vedle doporučené zahraniční literatury je možné ke studiu vybraných témat využít jako doplněk česky psanou literaturu, ať už ve formě skript z technických škol jako ČVUT, nebo knih vydávaných technickými nakladatelstvími. Uvedené tituly jsou pouze orientační.

  • J. Hlavička: Architektura počítačů. Skripta ČVUT.
  • J. Douša, A. Pluháček: Úvod do počítačových systémů. Skripta ČVUT.
  • J. Bayer, P. Píša, Z. Šebek: Počítače pro řízení. Skripta ČVUT.
  • J. Horejš, J. Brodský, J. Staudek: Struktura počítačů a jejich programové vybavení. SNTL Praha.

Stránky předmětu z předchozí akreditace

Stránky Lubomíra Buleje k poslednímu běhu (AR 2011/2012) předmětu Principy počítačů v minulém formátu (předchozí akreditace) najdete na http://d3s.mff.cuni.cz/teaching/principles_of_computers/ar-20112012/. POZOR: do akademického roku 2011/2012 měl předmět jiný rozsah látky než je v aktuálním formátu.