Min tid som student på LTU


Välkommen till min blogg!

Jag studerar till Högskoleingejör inom data/elektronik på Luleå tekniska universitet.

Min förhoppning är att kunna förbättra mitt studieresultat med hjälp av denna blogg och er som läser mina inlägg. Jag hoppas därför på att ni kommenterar mina inlägg, speciellt om ni är studenter själva!

onsdag 14 maj 2014

Objektorienterad programmering 1

Java är en form av objektorienterad programmering dvs. att koden byggs upp i form av objekt som representerar olika delar programmet. Genom att använda denna metoden är det lättare att utveckla programmet.

Inom Java finns paket och klasser. Ett paket innehåller ett program som utvecklas som då består av klasser. Dessa klasser innehåller i sin tur kod som utför olika uppgifter i programmet.

Första uppgiften är att skriva en klass "Rectangle" som kan representera rektanglar med position, bredd, höjd, area och omkrets. Denna klass ska skrivas i paketet mp0.

För att lösa uppgiften har jag skrivit följande kod:

package Mp0;

public class Rectangle {

public static int height;
public static int width;
public static double X;
public static double Y;

public Rectangle(int w, int h){
width=w;
height=h;
}


// Hämtar data för rektangelns höjd.
public int getHeight(){
return height;
}

// Hämtar data för rektangelns bredd.
public int getWidth(){
return width;
}

// Beräknar rektangelns area.
public int area() {
return height * width;
}

// Beräknar rektanglens omkrets.
public int circumreference(){
return ((height * 2) + (width * 2));
}

// Tilldelar rektangeln en viss position i X- & Y-led med metoden move.
public void move(double deltaX, double deltaY){
X=deltaX;
Y=deltaY;
}

// Hämtar värdet för X med metoden getX().
public double getX(){
return X;
}

// Hämtar värdet för Y med metoden getY().
public double getY(){
return Y;
}

// Skriver ut strängen s som är formaterad för att anga rektangelns, x&y positon, höjd och bredd.
public String toString() {
String r1 = String.format("Rektangel" + "[" + "x=" + X + "; " + "y=" + Y + "; " + "w="+ width + "; " + "h=" + height + "]");
return r1;
}

// Main funktion.
public static void main(String[] args){
Rectangle r1 = new Rectangle (10,20); // Skapar en ny rektangel objekt, r1.
System.out.println(r1); // Skriver ut värden för r1 i en sträng.
System.out.println(""); // Skriver ut tom rad.
System.out.println("Bredden är: " + r1.getWidth());
System.out.println("Höjden är: " + r1.getHeight());
System.out.println("Arean är: " + r1.area());
System.out.println("Omkretsen är: " + r1.circumreference());
System.out.println("Position X är: " + r1.getX());
System.out.println("Position Y är: " + r1.getY());

r1.move(0,0); // Förflyttar rektangel i x- & y-led.
System.out.println(r1);
System.out.println(""); // Skriver ut tom rad.
System.out.println("Bredden är: " + r1.getWidth());
System.out.println("Höjden är: " + r1.getHeight());
System.out.println("Arean är: " + r1.area());
System.out.println("Omkretsen är: " + r1.circumreference());
System.out.println("Position X är: " + r1.getX());
System.out.println("Position Y är: " + r1.getY());
}

}

En klass kan innehålla konstruktor som skapar objekt. Utöver det innehåller klassen även metoder som antigen publika eller privata. Publika metoder innebär att dessa kan användas av andra klasser och privata innebär då att metoderna endast kan användas inom klassen.

Allt detta är nytt för mig och jag hoppas att jag inte har skrivit något fel, tror inte det i alla fall:).

Uppgiften i sig var inte speciellt svårt eftersom jag sedan tidigare har programmeringskunskaper. Utmaningen låg istället i att kunna implementera uppgiften i Java vilket visade sig inte vara så svårt än så länge.


Introduktion till nätverkssäkerhet uppgift 1

Denna kursen var mycket lärorik och intressant eftersom det var mycket som jag inte visste tex hur enkelt det är att ens dator utsätts för attacker från hackar med onda avsikter.

Första uppgiften är liksom en introduktion till kursen och behandlar en av den viktigaste och kanske mest använda säkerhetslösningen i världen och hur enkelt det kan vara att kring gå denna om kraven inte efterföljs. Jag pratar här om lösenordet. Enligt citatet nedan taget framgår vilka villkor som ska vara uppfyllda för att lösenord ska vara säkert och svårt att knäcka.

• Be at least eight characters long.
• Have at least one change of case, not at the start of the password.
• Have at least one digit (0 through 9), not at the end of the password.
• Have at least one non-alphanumeric character, not at the end of the password.”
(Randall J, B., Raymond R, P. (2013). s.266. Corporate Computer Security, Third Edition. New
Jersey: Pearson)

Det finns olika metoder för att knäcka lösenord. Dessa är väldigt effektiva speciellt om ovanstående riktlinjer inte efterföljs. Två utav dessa är hybridmetoden och brute force metoden.

Hybridmetoden lägger till siffror t ex 01,02,03...,09 till strängen. På detta sätt kommer hybridmetoden att hitta lösenordet som tex är tapet04. Det är nästan lönlöst att lägga till specialtecken (+, #, & eller ?) eller siffror före respektive efter ett vanligt ord eftersom hybridmetoden antagligen kommer att knäcka dessa lösenord ganska snabbt. Om specialtecknen däremot stoppas in någonstans mitt i ordet blir det
däremot svårare att knäcka.” (Boldt, M., s.3., Introduktion till lösenordsknäckning). För att lösenordet ska ha större motståndskraft speciellt mot hybridmetoden framgår det klart och tydligt att lösenordet inte får varken börja eller sluta med siffror eller specialtecken.

"Brute Force metoden är den minst intelligenta av metoderna men samtidigt den metod som klarar att knäcka samtliga lösenord. Nackdelen är att det kan ta så ofantligt lång tid att knäcka ett riktigt långt lösenord med denna metod att det blir praktiskt omöjligt.” (Boldt, M., s.1., Introduktion till
lösenordsknäckning).

Det framgår ur ovanstående citat att det enda sättet att skapa säkra lösenord egentligen är att skapa långa lösenord. Att skapa ett lösenord med längden 9 tecken istället för 8 ger 70 gånger fler kombinationer. Om vi däremot skapar lösenord med längden 11 tecken ger detta 343 000 fler kombinationer (Boldt, M. Et al. (2009). s.4. Laboration 1).

Med denna uppgift har jag fått en ganska bra start på kursen. Jag tänker numera om flera gånger innan jag skapar ett lösenord för att det ska bli så starkt som möjligt. Många tar för givet angående hur enkelt det kan vara att knäcka lösenord.

lördag 10 maj 2014

Datakommunikation uppgift 3

Wireshark är ett program som filtrerar datapaket i nätverkstrafik. I denna uppgiften ska jag använda programmet för att bersvara skillnaden mellan Capture filter och Display filter?

Dessutom ska jag förklara hur filtrerar
- endast ICMP-paket (Internet Controll Message Protocol),
- endast ARP-paket,
- ICMP och ARP-paket
- alla paket till din dators IP
- alla paket till din dators MAC-adress
- alla paket.

1) Hur används filter?
Genom att ange en ”sting” med information i fältet för filter kan man filtrera de datapaket
som finns på nätet dit datorn är kopplad. En syntax (kod) kontroll utförs samtidigt som man skriver
in önskad filtrering och vid fel inmatning blir bakgrunden röd och vid korrekt inmatning blir
bakgrunden grön.
Capture filter = Används när man vill fånga in datapaket som finns på nätet eller paket som
skickas mellan två specifika punkter tex din egen dator och din router.
Display filter = Används för att filtrera exakt de paket du är intresserad utav bland många
”infångade” paket.

2) ICMP - Paket
ARP - Paket = Skrivs endast ”arp”.
ICMP & ARP – Paket = Skrivs endast ”icmp or arp”.
Alla paket till min IP – adress = Skrivs ” host 192.168.0.114”.
Alla paket till min MAC-adress = Skrivs ”ether host 00-26-5A-E5-7F-A0”.
Alla paket = Skriver ingenting.

Wireshark är ett mycket användbart program, speciellt när man vill spåra datatrafiken i ett nätverk till expempel vid felsökning. Programmet är mycket avändbart för att visa hur osäkra internet anslutningar kan avslöja känslig data och hur enkel det är att missbruka detta.

Datakommunikation uppgift 2

I uppgift 2 ska jag räkna ut en signals räckvidd beroende på signalhastigheten. 

Frekvensområdet för downstream(nedladdning) signal delas in i flera delkanaler om 4 kHz där varje delkanal kan överföra 4000 symboler/sekund innehållande 8 bitar/symbol. Sändningseffekten i varje delkanal är 0,1 mW och mottaget brus kan uppskattas till –100 dBm (decibel-milliwatt) i varje delkanal. Man behöver också ett viss givet ett signal/brus-förhållande (SNR eller Signal Noise Ratio) beroende på
vald modulationsmetod. Kopparkabelns (som singalen överförs med) dämpning är frekvensberoende tecknas:

Dämpning/km L=10+8,0*f [dB/km] f= frekvensen i MHz

Jag ska beräkna räckvidden för en signal med hastigheten 256 kbit/s med SNR på 30 dB.

Överföring av 4000 symboler/s
Datahastighet/delkanal=4000*10=40 kbit/s
S = 0,1 mW = -10 dBm
N = -100 dBm
Total signalstyrka i dBm = -10-(-100) = 90 dBm
Total signalstyrka efter modulation = 90-30 = 60 dBm

Räckvidd för 256kb
Antal kanaler för överföring= 256/40 = 6,4 st    
Max frekvens = 200 + 6,4 * 4 = 225,6 kHz = 0,2256 MHz
L = 10 + 8 * 0,2256 = 11,80 dB
Avstånd = 60/11,80 = 5,08 km

Denna uppgiften har varit mycket lärorik. En intressant sak är att ju högre signalhastigheten är desto lägre blir räckvidden. Detta måste bero på att ju högre hastigheten blir desto större blir dämpningen från kabeln. Detta betyder att vill man nå högre hastigheter och samtidigt få en större räckvidd måste dämpningen i kabeln bli mycket mindre, vilket leder till dyrare kablar.

Datakommunikation uppgift 1

Det finns två principer för att överföra digital information över en kanal, beroende på kanalens
egenskaper: antingen skickar man datasignalen ”direkt” ut på kanalen (basbandsöverföring) eller
så använder man bärvågsmodulering.

I uppgift 1 ska jag:
1. Beskriva de båda principerna och redogöra för när det är lämpligt att använda respektive
princip samt för vilka olika typer av medier som de olika principerna passar.
2. Beskriva skillnaden på informationshastighet (=överföringshastighet) och symbolhastighet.
3. Beskriva vilka två faktorer som direkt är avgörande för en kanals överföringshastighet?
4. Redogöra för hur man kan öka informationshastigheten på en kanal utan att behöva öka
symbolhastigheten samt beskriva någon lämplig modulationsmetod smat vilka begränsningar som
finns?

1a. Basbandsöverföring:  Överföring i denna kanal sker mellan olika medier direkt utan behov av modulering. Detta betyder att man ständigt kan skicka eller ha tillgång till information/meddelande i kanalen. Telefonnätet är en basbandskanal där överföringen sker genom tvinnad parkabel. Genom att koppla telefonen till uttaget kan man få tillgång till nätet nästan omedelbart. Ethernet är också ett annat alternativ där man vid ett hemma-nätverk kan ansluta flera datorer och därmed få tillgång till nätverket samt internet.


1b.Passbandsöverföring (bärvågsmodulering): Innebär att informationen eller meddelandet måste moduleras för att skickas ut på kanalen. Detta alternativ är lämpligt att änvända tex i radio, där man kan sända olika typer av information genom att modulera frekvens, amplitud och fas.


2a. Informationshastighet (överföringshastighet): Är hur fort data överförs från en punkt till en annan tex. när man laddar ner. Informationshastigheten anges i bitar/sekund (bits/s) och kan även erhållas genom att multiplicera antal symboler/sekund med antal bitar/symbol. 


2b. Symbolhastighet:
Är antal skickade symbol/sekund där en symbol är en del av datan. Symbolhastigheten är alltid densamma oavsett antalsymboler  eller bithastigheten.


c. Avgörande faktorer för överföringshastighet:  Bandbredden är en faktor påverkar överförings-hastigheten på så vis att ju högre bandbredden är desto högre överföringshastighet kan man uppnå. BER (bitfel) är en annan faktor som påverkar överföringen. Skickade paket som rapporteras som felaktiga måste skickas om igen vilket resulterar i att det tar längre tid att skicka data.

d. Hur ska man öka informationshastighet samt bibehålla symbolhastighet:
Genom att öka antal symboler/s kan man därmed öka bithastigheten. Att öka antal symboler innebär att öka antal nivåer vilket därmed kräver att man genomför amplitud modulering. Nackdelen med amplitudmodulering är att amplitudskillnaden mellan symbolerna minskar vilket gör att överföringen blir med störningskänslig.

Uppgiften var mycket lärorikt men inte vidare svårt att slutföra. 

Scriptspråk uppgift 4

Uppgift 4 kombinerar Javascript, PHP samt MYSQL (databas). Uppgiften går ut på att skapa webbtjänsten MINILIBRIS. Användare skall kunna registrera sig som medlem direkt från webbplatsen och kan då sedan beställa böcker on-line. För varje medlem registreras dennes unika användarnamn, namn, efternamn, adress och telefonnummer. Anger man ett användarnamn som redan är upptagen, uppmanas man att välja ett annat. Medlemmar loggar in med sitt användarnamn och kommer då till beställningssidan.

För att lösa uppgiften skrev jag kod som hanterar olika bitar av webbtjänsten.

Första delen var att hantera registreringen av nya medlemmar och för detta skrev jag kod som hanterar anslutningen till databasen via MYSQL.

Därefter skrev jag koden som kontrollerar om användaren existerar i databasen vid försök till inloggning. Här använder jag mig av "Cookies" samt "Session". Kakor är små filer som lagrar information om en specifik användare. En session används vid inloggning där en session skapas för varje användare och är oberoende från varandra. När användaren loggar ut stängs sessionen ner utan att andra användare påverkas.

Sedan kommer koden som hanterar sökning efter böcker i databasen. Sökningen sker genom "Queries" till databasen via MYSQL. En viktig punkt med använding av MYSQL via PHP är att se till att internetanslutningen är säker för att undvika SQL-injektion (SQL-attack) från hackare.

Sist skrev jag koden som hanterar beställning av böcker. Slutligen skrev jag även "index" sidan, alltså den webbsida som användaren ser när denne använder sig av webbtjänsten

Den här uppgiften har varit mycket lärorik och rolig. Jag har fått lära mig hur man använder PHP språket för att kunna ansluta till en databas och både kunna lagra och hämta data.

Scriptspråk uppgift 3

Uppgift 3 går ut på att skriva en PHP-fil som definierar följande:

1. En funktion green($s) som gör att $s skrivs i grön färg alltså om funktionen skulle användas tex. green("Detta skrivs i grön färg") skall jag få utskriften "Detta skrivs ut i grön färg" i grön färg :).

2. En funktion write_array($arr) som tar emot arrayen $arr som parameter och visar alla array-element i en tabell.

Nu har jag gått igenom fler anteckningar och föreläsningar och är rätt så insatt i PHP språket. Jag har två deluppgifter att lösa och eftersom jag sedan tidigare har studerat språket C++ är jag van vid funktioner och arrayer. Nu är det bara att implementerar samma grundprincip i PHP språket vilket visade sig inte vara så svårt.

För att lösa uppgiften skrev jag följande kod.

<HTML>
<HEAD>
<TITLE>Labb3 - Uppg1A</TITLE>
</HEAD>
<BODY>
<?php
function green($texttoprint){
echo "<font color='green'>$texttoprint:<br><br></font>";
}

function write_array($arr){
$arraylength = count($arr);
$n=0;

echo
"<table border='1' width='200'>
<tr>
<th>Key</th>
<th>Element</th>
</tr>";

for($i=0;$i<$arraylength;$i++){
echo "<tr>
<td>$n</td>
<td>$arr[$i]</td>
</tr>";
$n++;
}

echo "</table>";
}

function my_max($arr){
echo "<br>Max value is " . max($arr) . ".";
}
?>
</BODY>
</HTML>

Vill du prova? Kopiera koden ovan och klistra in det i ett nytt textdokument och spara filen med filändelsen ".PHP".

Deluppgift 1 var inte så svår, använde mig av tidigare kunskap i uppgift 2.

Deluppgift 2 var däremot lite svårare eftersom jag inte hade skrivit ut en array som en tabell. Jag fick lära mig tabellen börjar med <table> och slutar med </table>. Sedan börjar varje rad i tabellen med <tr> och slutar då med </tr>. Innuti varje rad kan man sedan ange önskat antal kolumner via <td> och </td>. Nyttig kunskap:)!

Scriptspråk uppgift 2

Uppgift 2 gick ut på att skapa en PHP (Hypertext Preprocessor file) fil som skriver ut "Hello world" 10 gånger, varje gång i en ny rad där varannan rad ska ha texten utskriven i blå färg.

PHP är ett nytt språk för mig och det är väldigt intressant. PHP är inte likt Javascript eller HTML eftersom scriptet körs på serversidan vilket betyder att sidorna kan laddas fortare och säkrare.

För att lösa uppgiften läste jag först alla föreläsningsanteckningar och skrev följande kod:

<HTML>
<HEAD>
<TITLE>Hello World</TITLE>
</HEAD>
<BODY>
<H1>
<?php
for($i=0;$i<5;$i++){
echo "<font color='blue'>HELLO WORLD <br></font>";
echo "<font color='red'>HELLO WORLD <br></font>";
}
?>
</H1>
</BODY>
</HTML>

Vill du prova? Kopiera koden ovan, klistra in det i ett nytt textdokument och spara sedan dokumentet med filändelsen ".php".

Koden är ganska kort och enkel. Till min förvåning var det inte så svårt att skriva i PHP-språket. Det räcker nämligen att börja med "<?php" och avsluta med "?>". Dessa är markörer för start av PHP respektive slut för PHP och skrivs innanför BODY sektionen i HTML scriptet. Lite krånligt eller?

Vi får se vad nästa uppgift kommer att innehålla, hoppas att jag kan börja skriva lite mer avancerat snart.

Scriptspråk uppgift 1

Uppgift 1 gåt ut på att skapa ett HTML-dokument som innehåller ett formulär med tre textrutor (type = text) och en Räkna-knapp (type = button).

Till detta ska jag även skriva en JavaScript-funktion "Power(X,N)" som skall räkna ut "X upphöjt till N", alltså användaren skall kunna mata in "talet X" i textruta 1 och "talet N" i textruta 2. När man klickar på knappen skall resultatet av funktionen "Power(X, N)" visas i ruta 3.

Uppgiften var väldigt enkel eftersom jag sedan tidigare har lite erfarenhet av HTML kodning. För att lösa uppgiften skrev jag följande kod:

<HTML>
<HEAD>
<TITLE>Uppgift1</TITLE>

<script language="javascript" type="text/javascript">

function Power(X,N){
<!--
return document.form1.result.value=Math.pow(X,N)
-->
}
function printResult(){
<!--
var x = parseInt(document.form1.X.value)
var n = parseInt(document.form1.N.value)
if(x > 0 && n > 0)
Power(x,n)
else
alert("Kontrollera inmatningsfälten!")
-->
}
</script>
<noscript>
"Din webbläsare kan inte visa javascript"
</noscript>
</HEAD>
<BODY>
<form name="form1" action="" method="get">
Ange X här: <input type="text" name="X"><BR></BR>
Ange N här: <input type="text" name="N"><BR></BR>
Ditt resultat: <input type="text" name="result"><BR></BR>
<input type="button" name="berakna" value="Beräkna" onClick=printResult()>
</form>
</BODY>
</HTML>

Vill du prova? Kopiera koden ovan, öppna upp ett nytt textdokument och spara filen i HMTL format genom att ange .html som filändelse när du sparar filen.

I denna uppgiften lärde jag mig att skriva javascript kod, vilket jag inte hade gjort tidigare. Det visade sig dock att javascript kodning inte var speciellt svårt när man väl har lärt sig formatet.

Jag hoppas att uppgift 2 är lite svårare och att jag kan lära mig något nytt.

söndag 25 september 2011

RAM-minnet, vad är det egentligen?

RAM-minnet eller Random Access Memory, består av ett chip där data lagras temporärt och kan användas enligt önskemål. Datan som lagras i RAM-minnet består tex. av data som datoranvändaren "öppnar upp" och arbetar med just då. Datan i RAM-minnet raderas när datorn stängs av och sparas på hårddisken.

RAM-minnet finns i flera olika former, men jag väljer att belysa RAM-minnena SRAM(1), som är statiskt minne, DRAM(2), som är dynamiskt minne och DDR-(3) och SDRAM(4), vilket de flesta datoranvändare känner till.


SRAM består av minneselement så kallade vippor(5). Dessa är små digitala kretsar som kan aktiveras eller nollställas och därmed lagra en binär(6) siffra på antingen 1 eller 0.


DRAM består av minneselement i form av kondensatorer(7). Dessa kondensatorer kan laddas och urladdas och därmed lagra en binär siffra på 1 eller 0. Skillnaden mellan en  vippa och en kondensator är att kondensatorn hela tiden "läcker" och behöver ständigt laddas för att bibehålla sitt värde. En laddad kondensator har värdet 1 och en urladdad har värdet noll. 


En annan skillnad mellan SRAM och DRAM är att SRAM innehåller fyra MOS-transistorer(8) och två resistorer(9) per minneselement medan DRAM innehåller en MOS-transistor och en kondensator per minneselement. Eftersom DRAM har färre delar, kan den vara mindre i storlek än SRAM, men pga behovet att ständigt kontrollera laddningen hos kondensatorn, tar det längre tid att bearbeta information och därför är den mer långsam än SRAM.


En annan viktig form av RAM-minne som de flesta känner till är DDR- och SDRAM.


SDRAM eller Synchronous Dynamic Random Access Memory, har revolutionerat datoranvändandet eftersom den möjliggör för användaren att arbeta med flera olika program samtidigt. SDRAM fungerar på så sätt att den synkroniserar den data som lagras i minnet. Detta betyder att minnet utför arbete enligt datorns "clock" frekvens. SDRAM utför även arbete genom "pipeline" metoden, där den kan ta emot ett kommando samtidigt som den utför ett annat kommando som tex, att starta ett program på datorn samtidigt som man håller på att installera ett annat program.


DDR RAM 
Double-Data-Rate Synchronous Dynamic Random Access Memory,  bygger på samma teknologi som SDRAM, men arbetar med en större hastighet. Datorn i sig har en "clock" frekvens, som alla komponenter arbetar efter för att bibehålla synkronisering. Om man föreställer sig denna frekvens som vågor så arbetar SDRAM:en endast vid de uppåt buktande delarna alltså 50 % av vågen medan DDR RAM arbetar inom vågens hela intervall, alltså 100% av vågen och är dubbelt så snabb.  


Sist men inte minst vill nämna att DDR- och SDRAM minnena och minnen liknande dessa kallas allmänd för RAM-minnen, vilket inte är hela sanningen. Den mer korrekta benämningen är RWM-minne, Read Write Memory, där man inte bara har tillgång till data utan kan även skriva eller lagra data.



Vad har jag lärt mig utav detta då?
Jo, att RAM-minnet har flera olika former och är inte bara så kallade arbetsminnet i min dator. Det existerar flera former av minnet än vad jag trodde och användnings området för RAM-minnet är väldigt stort. Man hittar det bland annat i telefoner, så att man snabbt kan få tillgång till data. Sedan har jag även lärt mig att man inte ska blanda ihop RAM-minnet med arbetsminnet eftersom arbetsminnet ger både tillgång till data samtidigt som den lagrar eller "skriver" data. Den rätta benämningen för arbetsminnet ska vara RWM-minne. Dessutom har jag även lärt mig hur viktigt RAM-minnet egentligen är för datorn. Inte konstigt att man hela tiden vill uppdatera sitt arbetsminne i datorn, ju kraftigare arbetsminne man har, desto snabbare kan datorn bearbeta information.


(1) Läs mer om SRAM på                             http://computer.howstuffworks.com/ram2.htm
(2) Läs mer om DRAM på                             http://computer.howstuffworks.com/ram1.htm
(3) Läs mer om DDR RAM på                       http://www.wisegeek.com/what-is-ddr-ram.htm
(4) Läs mer om SDRRAM                             http://www.wisegeek.com/what-is-sdram.htm
(5) Lär mer om vippor på                              http://www.ne.se.proxy.lib.ltu.se/lang/vippa/344141
(6) Lär mer binära talsystem                         http://www.ur.se/mb/pdf/Texter/Binara_talsystem.pdf                                  (7) Läs mer om kondensatorer på                  http://www.ne.se.proxy.lib.ltu.se/lang/kapacitans
                                                                    http://electronics.howstuffworks.com/capacitor.htm
(8) Läs mer om MOS-transistorer på             http://www.ict.kth.se/courses/IL1390/transistor/index.htm

(9) Läs mer om resistorer på                         http://sv.wikipedia.org/wiki/Resistor

Läs mer om RAM på                                     http://sv.wikipedia.org/wiki/Random_Access_Memory,

                                                                     http://www.wisegeek.com/what-is-random-access-memory.htm
Läs mer om de olika RAM-minnena på          http://computer.howstuffworks.com/ram3.htm

Se video på hur RAM-minnet (arbetsminnet) arbetar i din dator!

http://www.youtube.com/watch?v=Ye6W6mMSPl0