# ITGK Teori-kurs Note: Introduksjon --- ## ⏺ **OBS:** Opptak Note: PVV sin youtube-kanal selv-introduksjon Angående forelesningen Planen min er å gå over alle temaene nevnt i pensum. Kommer til å nevne en del biter som ikke nødvendigvis er viktig for pensum, men som er viktig for å forstå innholdet --- ## Generelt Hva er IT Kort Historie --- ### Folk som er viktige - Von Neumann --- ### Et par begreper:
- PC - Operativsystem - Abstraksjon - Transistorer - IC
- Hardware - Software - Kernel - WWW/Internet - High level/Low level - bit
Note: Operativsystem -> Ressursallokering -> Kernel -> Grafisk brukergrensesnitt ----
- PC
---- ---
| Enhet | Størrelse | |------------|-------------------| | byte | 8 bits | | kilobyte | \\(1000\\) bytes | | megabyte | \\(10^6\\) bytes | | gigabyte | \\(10^9\\) bytes | | terabyte | \\(10^{12}\\) | | petabyte | \\(10^{15}\\) | | exabye | \\(10^{18}\\) |
| Enhet | Størrelse | |------------|-------------------| | byte | 8 bits | | kilobyte | \\(1000\\) bytes | | megabyte | \\(10^6\\) bytes | | gigabyte | \\(10^9\\) bytes | | terabyte | \\(10^{12}\\) | | petabyte | \\(10^{15}\\) | | exabye | \\(10^{18}\\) |
--- ### Datatyper - Integer - Character - Float - Array - String Note: char -> ASCII 7b, Extended ASCII 8b, UTF-8 Finnes flere, men disse Objekter --- ### Tallsystemer Note: Forventet å kunne octal, binær, heksadesimal går tom for siffer delbarhet hexadesimal i 4 binær chunks om gangen octal i 3 binær chunks om gangen revers lurt å trene på brukt ca. 20 min --- *Slide med konversjon fra binær til octal og heksadesimal* --- ### Negative tall Signed magnitude bruker første biten 0000 = 1000 kaster bort en plass Løsning: Twos complement: 0001 = 1 0000 = 0 1111 = -1 1000 = MIN_INT Algoritme: - finn ut hva minste negative tall er - ta resten av bitsene, og konverter til desimal - regn ut offsett --- ### Flyttall ``` >>> 0.1 + 0.2 0.30000000000000004 ``` \\[ (+,\ \ 4,\ \ 1949284) = +1.949284 \cdot 10^4 = 19492.84 \\] Note: Matematisk tilnærming Signed bit, exponent - 2^?, signifikant? består av 3 biter, kan gi rare utregninger iblant Opphøyd i 10, men i virkeligheten opphøyd i 2 Ikke veldig viktig, men kan være oppklarende. --- # Hardware - Datamaskin --- # Datamaskin Note: Består av mange forskjellige biter. datamaskin er bare et begrep vi bruker. Kan gå galt på veldig mange lag i prosessen. Moores law, antall transistorer i en IC dobles hver 2. år. --- ## Hovedkort (Motherboard) Note: Limet som fester alle de andre bitene sammen. Inneholder litt logikk for konfigurasjon av alle bitene, men lite ellers. --- ## CPU Note: Viktigste biten. Gjør alle beregningene. Består av 3 biter, kontrollenhet, minneenhet, ALU Kjører raskt, gHz Har et visst sett med ting den kan gjøre, kalt et instruksjonssett. Setter du disse på rad, så har du et program. ---- ### Fetch Decode Execute Cycle (De 5 stegene) Note: *5 steg* hver gang den skal kjøre en instruksjon PC - program counter Branching - hopp til andre steder/loop Kjører en instruksjon for hver klokkesykel, men gjør flere steg samtidig. Verdt å merke seg. --- ## Minne

Primary

- Volatile - Random Access

Secondary

- Nonvolatile - Sequential Access?
Note: Primær - RAM tilfeldig access - kan nå hvor som helst øyeblikkelig volatilt - uten strøm så forsvinner dataen. Sekundær - Harddisk Tregt - cd som spinner Sekvensiell aksess - Må lete for å lese på riktig sted. ikke volatilt - holder på data uten strøm SSD - Nesten random access, ligner på ram, men er ikke volatil CD, DVD, Ekstern harddisk, USB, osv. --- # Digital Representasjon --- ## Analog/Digital
- ADC - inn på computeren - DAC - ut fra computeren
Note: Analog kan du måle bortimot så nøyaktig du vil Digital har et visst sett med 0 og 1 --- ## Piksler
Note: Piksler er en måte å representere bilder En piksel er en liten bit av bildet, med en farge. Ofte tilsvarer 1 piksel 1 LED på skjermen Den fargen er representert som en sammensetning av 3 farger Pleier ofte å være RGB ----

RGB

Hver verdi er mellom 0 og 255 Kan derfor representeres som et hexadecimal med 6 tegn
| Farge | Rød | Grønn | Blå | |--------------------------------------|---------------|---------------|---------------| | #283681 | 28\\(_{16}\\) | 36\\(_{16}\\) | 81\\(_{16}\\) | | #FF0000 | FF\\(_{16}\\) | 00\\(_{16}\\) | 00\\(_{16}\\) | | #C0FFEE | C0\\(_{16}\\) | FF\\(_{16}\\) | EE\\(_{16}\\) | | #FFFFFF | FF\\(_{16}\\) | FF\\(_{16}\\) | FF\\(_{16}\\) | | #000000 | 00\\(_{16}\\) | 00\\(_{16}\\) | 00\\(_{16}\\) |
| Farge | Rød | Grønn | Blå | |--------------------------------------|----------------|----------------|----------------| | #283681 | \\(40_{10}\\) | \\(54_{10}\\) | \\(129_{10}\\) | | #FF0000 | \\(255_{10}\\) | \\(0_{10}\\) | \\(0_{10}\\) | | #C0FFEE | \\(192_{10}\\) | \\(255_{10}\\) | \\(238_{10}\\) | | #FFFFFF | \\(255_{10}\\) | \\(255_{10}\\) | \\(255_{10}\\) | | #000000 | \\(0_{10}\\) | \\(0_{10}\\) | \\(0_{10}\\) |
Note: Regn ut 1920x1080 x 24 bits --- # PAUSE --- ## Lyd
- Bør være dobbelt så ofte som høyeste frekvensen - Bitdybde (16 bit er standard)
\\[ 16\ bits \cdot 44100\ Hz \cdot (3 \cdot 60)s \cdot 2\ kanaler \\] Note: tegn en bølge, og vis frekvensen --- ## Encoding og Komprimering - "Hvordan tolke dataen" - Lossless vs lossy Note: Alt er 1 og 0, men det kan tolkes på forskjellige måter. Grunnen til at de ofte diskuteres sammen ---- ### Eksempel på komprimering \\[ AAAAAAABBBBAAAAABB \\] \\[ A6B4A5B2 \\] Note: Rart for tekst, men gir mening for bilder -> Runlength encoding ---- ### Eksempel på lossy komprimering Dette er en eksempelsetning. Dte e en eksmplstnig Note: ikke vanlig for tekst, men akseptabelt for video/lyd/bilde Gjøres ofte på tjenester som messenger. --- # Algoritmer Note: Beskriver stegvis og nøyaktig hvordan man løser et problem Uten tolkning Pseudokode ---- (Eksempel på pseudokode) --- ## Kompleksitet
\\[ \mathcal{O}(1) \\] ```python def f(lst): print('Hi!') ```
\\[ \mathcal{O}(n) \\] ```python def f(lst): for item in lst: print(item) ```
\\[ \mathcal{O}(n^2) \\] ```python def f(lst): for item in lst: for itemOnceMore in lst: print(item, itemOnceMore) ```
Note: brukes mer om dere skal programmere mye ---- Sorteringsalgortimer: - Bubble sort: \\(\mathcal{O}(n^2)\\) - Merge sort : \\(\mathcal{O}(n\ log\ n)\\) --- # Nettverk --- ## Internett - Hva er det ---- ### Historie - ARPAnet Note: Sponset av Dep. of defense, USA Kjellermaskiner, matte Ble ikke brukt aktivt hele tiden Overføre instruksjoner Maksimal utnyttelse Flere universiteter koblet seg på Ikke veldig planlagt --- ### 5 lags modellen Note: pakker pakket inn i hverandre ---- ### Physical layer Note: Medium for kommunikasjon mellom 2 eller flere endrepunkter ---- ### Data link layer Note: Etablert: Kommunikasjonsmedium Stabil overføring, og kontakt med andre ender ---- ### Network layer Note: Etablert: Flere computere er koblet sammen Kommunikasjon gjennom flere computere. Oppfører seg litt som postkontorer ---- ### Transport layer Note: Etablert: Link over mange computere. Stabil og sikker kommunikasjon til tross for forsvunnede pakker, ---- ### Application layer Etablert: Stabil og sikker kommunikasjon. Applikasjonsspesifikk data. --- # Programvareutvikling --- Note: Løs tidligere eksamener Crash course