20TD02U Programmering - itnett/FTD02H-N GitHub Wiki
Velkommen til 20TD02U Programmering! Dette emnet gir deg en grunnleggende innføring i programmering, og dekker viktige konsepter, teknikker og verktøy som du vil bruke i din karriere innen IT-drift og sikkerhet.
Fagområde: Datateknikk Emnekode: 20TD02U Studieprogram: IT-drift og sikkerhet Studiepoeng: 10 Studienivå: Fagskole, nivå 5.2 Startsemester: 2024 Høst
Emnets innhold:
- Programstrukturer: Sekvenser, valg (if-else), løkker (for, while).
- Datastrukturer: Lister, tabeller, mengder, dictionaries.
- Bibliotek: Forståelse av hvordan man bruker eksterne biblioteker for å utvide funksjonalitet.
- Funksjoner og metoder: Modularisering av kode og gjenbruk.
- Objektorientert programmering (OOP): Klasser, objekter, arv, polymorfisme.
- Debugging, testing og unntaksbehandling: Finne og rette feil, skrive tester for å sikre kodekvalitet, håndtere uventede situasjoner.
- API (Application Programming Interface): Forståelse av hvordan man samhandler med eksterne tjenester og systemer.
- GUI (Graphical User Interface): Grunnleggende prinsipper for å lage brukervennlige grensesnitt.
- UML (Unified Modeling Language): Modellering av programvare og systemer.
- Filbehandling: Lese fra og skrive til filer.
- Datasikkerhet: Grunnleggende prinsipper for å sikre applikasjoner og data.
- Grunnleggende programmeringskonsepter: Variabler, datatyper, operatorer, uttrykk.
- Programmeringsteknikker: Kontrollstrukturer, løkker, funksjoner, OOP.
- Brukergrensesnitt: Prinsipper for design og utvikling av GUI.
- Kommunikasjon mellom programgrensesnitt: API-er, nettverksprotokoller.
- Sikkerhet: Grunnleggende sikkerhetsprinsipper og trusler.
- Selvlæring: Evne til å finne og bruke ressurser for å lære nye programmeringsspråk og teknologier.
- Utvikling: Skrive kode som løser problemer og implementerer funksjonalitet.
- Lesing og tolkning: Forstå og analysere eksisterende kode.
- Vedlikehold og forbedring: Oppdatere og forbedre eksisterende applikasjoner.
- Sikkerhetsvurdering: Identifisere og diskutere potensielle sikkerhetsproblemer i kode.
- Selvutvikling: Kontinuerlig læring og utvikling av programmeringsferdigheter.
- Prosjektarbeid: Samarbeid med andre i prosjekter, kommunisere effektivt og levere resultater.
- Faglig nettverk: Bygge relasjoner med andre IT-profesjonelle.
- Programmeringsspråk: Python, JavaScript (med fokus på Node.js og Svelte), eventuelt andre språk avhengig av studiets fokus.
- Utviklingsmiljøer (IDE): Visual Studio Code, PyCharm, WebStorm.
- Versjonskontroll: Git, GitHub.
- Debugging-verktøy: De innebygde verktøyene i IDE-en din, nettleserens utviklerverktøy.
-
Nettressurser:
- MDN Web Docs: https://developer.mozilla.org/
- W3Schools: https://www.w3schools.com/
- Stack Overflow: https://stackoverflow.com/
- Python: Et allsidig språk som er mye brukt innen databehandling, automatisering og web-utvikling. Det er kjent for sin lesbarhet og enkle syntaks.
- JavaScript: Det dominerende språket for web-utvikling, som brukes til å lage interaktive nettsider og webapplikasjoner. Node.js er en runtime-miljø for å kjøre JavaScript på serversiden.
- Svelte: Et moderne JavaScript-rammeverk for å bygge brukergrensesnitt. Det er kjent for sin ytelse og enkle, men kraftige syntaks.
- IDE: Et integrert utviklingsmiljø gir deg verktøy for å skrive, feilsøke og teste kode på en effektiv måte.
- Versjonskontroll: Git lar deg spore endringer i koden din og samarbeide med andre utviklere. GitHub er en populær plattform for å lagre og dele Git-prosjekter.
- Objektorientert programmering: En programmeringsparadigme som fokuserer på å organisere kode i gjenbrukbare objekter.
- API: Et sett med regler og spesifikasjoner som lar ulike programmer kommunisere med hverandre.
- Sikkerhet: Vurdering av potensielle trusler og sårbarheter i applikasjoner, og implementering av tiltak for å beskytte data og systemer.
Nettressurser for å lære programmering (20TD02U):
Grunnleggende programmering:
- Codecademy: https://www.codecademy.com/
- Khan Academy: https://www.khanacademy.org/computing/computer-programming
- freeCodeCamp: https://www.freecodecamp.org/
- The Odin Project: https://www.theodinproject.com/
- edX: https://www.edx.org/
- Coursera: https://www.coursera.org/
Programstrukturer og datastrukturer:
- Learn Python: https://www.learnpython.org/
- JavaScript.info: https://javascript.info/
- Visualgo: https://visualgo.net/en
Bibliotek, funksjoner og metoder:
- Python Package Index (PyPI): https://pypi.org/
- npm: https://www.npmjs.com/
- MDN Web Docs: https://developer.mozilla.org/en-US/
Objektorientert programmering (OOP):
- Real Python - OOP: https://realpython.com/python3-object-oriented-programming/
- Understanding Objects in JavaScript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects
Debugging, testing og unntaksbehandling:
- Python Debugging with pdb: https://realpython.com/python-debugging-pdb/
- Debugging JavaScript: [fjernet ugyldig nettadresse]
- Jest: https://jestjs.io/
API:
- Postman: https://www.postman.com/
- RapidAPI: https://rapidapi.com/
GUI:
- Svelte Tutorial: [fjernet ugyldig nettadresse]
- React Tutorial: https://reactjs.org/tutorial/tutorial.html
UML:
- UML Diagrams: https://www.uml-diagrams.org/
- draw.io: https://app.diagrams.net/
Filbehandling og datasikkerhet:
- Python File I/O: https://www.w3schools.com/python/python_file_handling.asp
- OWASP Top 10: https://owasp.org/www-project-top-ten/
Generelt:
- Stack Overflow: https://stackoverflow.com/
- GitHub: https://github.com/
- Reddit: https://www.reddit.com/r/programming/
Tips:
- Start med det grunnleggende: Ikke hopp over det grunnleggende om programmering, selv om det virker enkelt.
- Øv deg regelmessig: Programmering er en ferdighet som krever kontinuerlig øvelse.
- Bygg prosjekter: Å bygge egne prosjekter er en fin måte å lære og anvende kunnskapen din på.
- Spør om hjelp: Ikke vær redd for å stille spørsmål hvis du står fast. Det finnes mange ressurser og et stort fellesskap av utviklere som er villige til å hjelpe.
Lykke til med å lære programmering!
Absolutt! Her er kodeeksempler som demonstrerer læringsutbyttet, emnene og bruken av verktøyene og ressursene vi har diskutert, med fokus på Svelte for frontend-utvikling:
Emne: Programmering
Læringsmål:
- Skrive kode med variabeldeklarasjoner, kontrollstrukturer, løkker og funksjoner.
- Utvikle et brukergrensesnitt.
- Kommunisere mellom ulike programgrensesnitt.
- Ivareta sikkerheten til applikasjoner.
Kodeeksempel (Svelte):
<script>
import { onMount } from 'svelte';
let name = '';
let greeting = '';
let apiData = [];
async function fetchGreeting() {
try {
const response = await fetch('/api/greet?name=' + encodeURIComponent(name));
const data = await response.json();
greeting = data.greeting;
} catch (error) {
console.error('API-feil:', error);
greeting = 'Noe gikk galt. Prøv igjen senere.';
}
}
onMount(async () => {
try {
const response = await fetch('/api/data');
apiData = await response.json();
} catch (error) {
console.error('API-feil:', error);
}
});
</script>
<input type="text" bind:value={name} placeholder="Skriv inn navnet ditt">
<button on:click={fetchGreeting}>Hent hilsen</button>
{#if greeting}
<p>{greeting}</p>
{/if}
<h2>Data fra API:</h2>
<ul>
{#each apiData as item}
<li>{item.id}: {item.value}</li>
{/each}
</ul>
Forklaring:
-
Variabler:
name
,greeting
,apiData
brukes til å lagre data. -
Kontrollstrukturer:
if
-blokken viser hilsenen kun hvis den er tilgjengelig. -
Løkker:
each
-blokken brukes til å iterere over data fra API-et og vise dem i en liste. -
Funksjoner:
fetchGreeting
henter en hilsen fra en API basert på brukerinput. - Brukergrensesnitt: En enkel input-boks og knapp lar brukeren samhandle med applikasjonen.
-
API-kommunikasjon:
fetch
brukes til å hente data fra en API. -
Feilhåndtering:
try...catch
brukes for å håndtere potensielle feil under API-kall.
Verktøy og ressurser:
- Svelte: Rammeverk for å lage brukergrensesnittet.
- Node.js og Express (eller annet backend-rammeverk): For å lage API-en som leverer dataene.
- Visual Studio Code: En populær IDE for å skrive og feilsøke koden.
- Git og GitHub: For versjonskontroll og samarbeid.
Emne: Nettverk
Læringsmål:
- Forstå grunnleggende nettverkskonsepter (OSI-modellen, TCP/IP, etc.).
- Visualisere nettverkstopologier.
Kodeeksempel (Svelte + vis.js):
<script>
import { onMount } from 'svelte';
import { Network } from 'vis-network/standalone';
let nodes = [
{ id: 1, label: 'Router' },
{ id: 2, label: 'Switch' },
{ id: 3, label: 'PC1' },
{ id: 4, label: 'PC2' }
];
let edges = [
{ from: 1, to: 2 },
{ from: 2, to: 3 },
{ from: 2, to: 4 }
];
onMount(() => {
new Network(document.getElementById('network'), { nodes, edges }, {});
});
</script>
<div id="network"></div>
Forklaring:
-
Visualisering: Bruker
vis.js
for å lage et interaktivt nettverksdiagram. - Nettverkskonsepter: Diagrammet illustrerer en enkel nettverkstopologi med en ruter, en switch og to PC-er.
Verktøy og ressurser:
- vis.js: JavaScript-bibliotek for nettverksvisualisering.
- Packet Tracer (Cisco): Simuleringsverktøy for å øve på nettverkskonfigurasjon.
Emne: Datasikkerhet
Læringsmål:
- Forstå grunnleggende sikkerhetsprinsipper.
- Identifisere og håndtere sikkerhetsrisikoer.
Kodeeksempel (Svelte):
<script>
let password = '';
let passwordStrength = 'Svak';
$: if (password.length >= 12 && /\d/.test(password) && /[A-Z]/.test(password)) {
passwordStrength = 'Sterk';
} else if (password.length >= 8) {
passwordStrength = 'Middels';
}
</script>
<input type="password" bind:value={password}>
<p>Passordstyrke: {passwordStrength}</p>
Forklaring:
- Sikkerhet: Sjekker passordstyrken basert på lengde og kompleksitet.
- Reaktivitet: Oppdaterer passordstyrken i sanntid mens brukeren skriver.
Verktøy og ressurser:
- OWASP Top 10: En liste over de 10 mest kritiske sikkerhetsrisikoene for webapplikasjoner.
Dette er bare noen få eksempler på hvordan Svelte kan brukes til å lære og demonstrere IT-kompetanse. Mulighetene er uendelige, og du kan tilpasse disse eksemplene eller lage dine egne prosjekter for å utforske de ulike emnene i dybden.
Kapittel 1: Funksjoner og Metoder
Læringsutbytte:
- Kunnskap: Forståelse av hvordan man definerer og bruker funksjoner og metoder i programmering.
- Ferdigheter: Kunne skrive og bruke funksjoner for å modularisere og gjenbruke kode.
- Generell kompetanse: Evne til å strukturere kode på en effektiv og vedlikeholdbar måte.
Blooms Taksonomi:
- Huske: Liste opp syntaksen for funksjonsdefinisjoner i Python og JavaScript.
- Forstå: Forklare forskjellen mellom funksjoner og metoder.
- Anvende: Skrive funksjoner og metoder som løser spesifikke problemer.
- Analysere: Vurdere når det er hensiktsmessig å bruke funksjoner for å unngå duplisert kode.
- Evaluere: Teste og feilsøke funksjoner for å sikre at de fungerer som forventet.
- Skape: Utvikle komplekse applikasjoner ved hjelp av funksjoner og metoder.
Metoder og Verktøy:
- IDE: Bruk av Visual Studio Code for å skrive og teste funksjoner.
- Debugging-verktøy: Innebygde verktøy i IDE for å feilsøke funksjoner.
- Praktiske Øvelser: Skrive og teste funksjoner i Python og JavaScript.
Kapittel 2: Objektorientert Programmering (OOP)
Læringsutbytte:
- Kunnskap: Forståelse av grunnleggende prinsipper i objektorientert programmering.
- Ferdigheter: Kunne definere klasser og objekter, samt bruke arv og polymorfisme.
- Generell kompetanse: Evne til å strukturere kode på en modulær og gjenbrukbar måte ved bruk av OOP.
Blooms Taksonomi:
- Huske: Definere begreper som klasse, objekt, arv og polymorfisme.
- Forstå: Forklare hvordan OOP skiller seg fra prosedyreorientert programmering.
- Anvende: Implementere enkle klasser og objekter i Python og JavaScript.
- Analysere: Vurdere fordeler og ulemper ved å bruke OOP i ulike scenarioer.
- Evaluere: Teste og feilsøke OOP-baserte programmer for å sikre korrekt funksjonalitet.
- Skape: Utvikle komplekse applikasjoner ved hjelp av OOP-konsepter.
Metoder og Verktøy:
- IDE: Bruk av PyCharm for Python og WebStorm for JavaScript.
- Versjonskontroll: Bruk av Git for å spore endringer i kodebasen.
- Praktiske Øvelser: Skrive og teste OOP-kode i Python og JavaScript.
Kapittel 3: Debugging, Testing og Unntaksbehandling
Læringsutbytte:
- Kunnskap: Forståelse av teknikker for debugging, testing og unntaksbehandling.
- Ferdigheter: Kunne bruke debugging-verktøy og skrive enhetstester.
- Generell kompetanse: Evne til å skrive robust kode som håndterer feil på en elegant måte.
Blooms Taksonomi:
- Huske: Liste opp vanlige debugging-teknikker og verktøy.
- Forstå: Forklare viktigheten av testing og unntaksbehandling.
- Anvende: Skrive tester ved hjelp av rammeverk som pytest og Jest.
- Analysere: Identifisere og rette feil ved hjelp av debugging-verktøy.
- Evaluere: Vurdere testdekningen og kvaliteten på testene.
- Skape: Utvikle et testmiljø og skrive omfattende tester for et prosjekt.
Metoder og Verktøy:
- Debugging-verktøy: Bruk av pdb for Python og innebygde verktøy i IDE for JavaScript.
- Testing-rammeverk: pytest for Python, Jest for JavaScript.
- Praktiske Øvelser: Skrive og kjøre enhetstester, samt bruke debugging-verktøy for å finne og rette feil.
Kapittel 4: API (Application Programming Interface)
Læringsutbytte:
- Kunnskap: Forståelse av hvordan API-er fungerer og hvordan de kan brukes.
- Ferdigheter: Kunne samhandle med eksterne API-er og integrere dem i applikasjoner.
- Generell kompetanse: Evne til å bruke API-er for å utvide funksjonaliteten i applikasjoner.
Blooms Taksonomi:
- Huske: Forklare hva et API er og hvordan det fungerer.
- Forstå: Beskrive de forskjellige typene API-er (REST, SOAP).
- Anvende: Skrive kode som kommuniserer med et eksternt API.
- Analysere: Vurdere fordeler og ulemper ved å bruke eksterne API-er.
- Evaluere: Teste API-integrasjoner for å sikre pålitelighet og ytelse.
- Skape: Utvikle et API for å tilby tjenester til andre applikasjoner.
Metoder og Verktøy:
- API-verktøy: Bruk av Postman for å teste API-er.
- Utviklingsmiljøer: Visual Studio Code for å skrive kode som bruker API-er.
- Praktiske Øvelser: Integrere eksterne API-er i enkle applikasjoner.
Kapittel 5: GUI (Graphical User Interface)
Læringsutbytte:
- Kunnskap: Forståelse av prinsippene for design og utvikling av GUI.
- Ferdigheter: Kunne utvikle enkle grafiske brukergrensesnitt.
- Generell kompetanse: Evne til å skape brukervennlige og intuitive grensesnitt.
Blooms Taksonomi:
- Huske: Forklare grunnleggende konsepter i GUI-utvikling.
- Forstå: Beskrive prinsippene for godt GUI-design.
- Anvende: Utvikle enkle GUI-er ved hjelp av rammeverk som Svelte.
- Analysere: Vurdere brukervennligheten av et GUI.
- Evaluere: Teste og forbedre GUI-basert på tilbakemeldinger.
- Skape: Utvikle komplekse GUI-er som del av større prosjekter.
Metoder og Verktøy:
- GUI-rammeverk: Bruk av Svelte for å utvikle GUI.
- Utviklingsmiljøer: Visual Studio Code for å skrive og teste GUI-kode.
- Praktiske Øvelser: Utvikle og teste enkle GUI-applikasjoner.
Viktige tips for videre arbeid:
- Praktisk anvendelse: Fokuser på å anvende det du lærer i praktiske prosjekter.
- Kontinuerlig læring: Hold deg oppdatert på nye teknologier og beste praksis.
- Samarbeid: Delta i faglige diskusjoner og samarbeid med andre for å utvide din kunnskap og erfaring.
- Ressursbruk: Benytt deg av de anbefalte verktøyene og ressursene for å forbedre din forståelse og ferdigheter.
Lykke til med studiet av programmering!
Kapittel 1: Programstrukturer
Læringsutbytte:
- Kunnskap: Forståelse av grunnleggende programstrukturer som sekvenser, valg og løkker.
- Ferdigheter: Skrive og bruke grunnleggende kontrollstrukturer for å styre flyten i programmer.
- Generell kompetanse: Evne til å lage logiske og strukturerte programmer.
Blooms Taksonomi:
- Huske: Definere konsepter som sekvenser, valg (if-else) og løkker (for, while).
- Forstå: Beskrive hvordan kontrollstrukturer påvirker programflyten.
- Anvende: Implementere kontrollstrukturer i enkle programmer.
- Analysere: Vurdere effektiviteten av ulike kontrollstrukturer.
- Evaluere: Optimalisere programflyt ved bruk av passende kontrollstrukturer.
- Skape: Utvikle komplekse algoritmer som bruker kontrollstrukturer effektivt.
Metoder og Verktøy:
- IDE: Bruk av Visual Studio Code for å skrive og teste kontrollstrukturer.
- Debugging-verktøy: Bruk av innebygde verktøy i IDE for å feilsøke kontrollstrukturer.
- Praktiske Øvelser: Skrive programmer som bruker sekvenser, valg og løkker for å løse problemer.
Eksempel (Python):
# En enkel løkke for å skrive ut tall fra 1 til 5
for i in range(1, 6):
print(i)
# If-else for å sjekke om et tall er positivt, negativt eller null
num = int(input("Skriv inn et tall: "))
if num > 0:
print("Positivt tall")
elif num == 0:
print("Null")
else:
print("Negativt tall")
Kapittel 2: Datastrukturer
Læringsutbytte:
- Kunnskap: Forståelse av grunnleggende datastrukturer som lister, tabeller, mengder og dictionaries.
- Ferdigheter: Kunne manipulere datastrukturer for å lagre og hente data effektivt.
- Generell kompetanse: Evne til å velge passende datastrukturer for ulike programmeringsoppgaver.
Blooms Taksonomi:
- Huske: Liste opp forskjellige datastrukturer som lister, tabeller, mengder og dictionaries.
- Forstå: Forklare forskjellen mellom de ulike datastrukturene.
- Anvende: Implementere og bruke datastrukturer i programmer.
- Analysere: Vurdere effektiviteten til ulike datastrukturer for spesifikke oppgaver.
- Evaluere: Optimalisere bruk av datastrukturer for å forbedre ytelsen.
- Skape: Utvikle komplekse datastrukturer for å løse spesifikke problemer.
Metoder og Verktøy:
- IDE: Bruk av Visual Studio Code for å skrive og teste kode med datastrukturer.
- Praktiske Øvelser: Implementere ulike datastrukturer og bruke dem til å løse problemer.
Eksempel (Python):
# Liste
fruits = ["apple", "banana", "cherry"]
fruits.append("orange")
print(fruits)
# Dictionary
person = {
"name": "John",
"age": 30,
"city": "New York"
}
print(person["name"])
# Mengde
numbers = {1, 2, 3, 4, 5}
numbers.add(6)
print(numbers)
Kapittel 3: Bibliotek
Læringsutbytte:
- Kunnskap: Forståelse av hvordan man bruker eksterne biblioteker for å utvide funksjonalitet.
- Ferdigheter: Kunne finne, installere og bruke eksterne biblioteker i programmer.
- Generell kompetanse: Evne til å integrere biblioteker for å løse spesifikke problemer og forbedre effektiviteten.
Blooms Taksonomi:
- Huske: Forklare hva et bibliotek er og hvordan det brukes i programmering.
- Forstå: Beskrive fordeler og ulemper ved å bruke eksterne biblioteker.
- Anvende: Installere og bruke biblioteker i egne programmer.
- Analysere: Vurdere hvilke biblioteker som er mest passende for spesifikke oppgaver.
- Evaluere: Teste og sikre at bibliotekene fungerer som forventet.
- Skape: Utvikle egne biblioteker for gjenbruk i ulike prosjekter.
Metoder og Verktøy:
- Pakkehåndtering: Bruk av pip for å installere Python-biblioteker.
- Praktiske Øvelser: Finne og bruke biblioteker til å løse spesifikke oppgaver i programmer.
Eksempel (Python):
# Installere et bibliotek (requests)
# pip install requests
# Bruke requests-biblioteket til å gjøre et HTTP-anrop
import requests
response = requests.get("https://api.github.com")
print(response.status_code)
print(response.json())
- Praktisk anvendelse: Fokuser på å anvende det du lærer i praktiske prosjekter.
- Kontinuerlig læring: Hold deg oppdatert på nye teknologier og beste praksis.
- Samarbeid: Delta i faglige diskusjoner og samarbeid med andre for å utvide din kunnskap og erfaring.
- Ressursbruk: Benytt deg av de anbefalte verktøyene og ressursene for å forbedre din forståelse og ferdigheter.
Del 3: Funksjoner og metoder, Objektorientert programmering, Debugging, testing og unntaksbehandling
Kapittel 1: Funksjoner og metoder
Læringsutbytte:
- Kunnskap: Forstå modularisering av kode og gjenbruk ved hjelp av funksjoner og metoder.
- Ferdigheter: Skrive funksjoner og metoder for å løse problemer og organisere kode.
- Generell kompetanse: Evne til å strukturere programmer ved hjelp av funksjoner og metoder.
Blooms Taksonomi:
- Huske: Forklare hva funksjoner og metoder er.
- Forstå: Beskrive hvordan funksjoner og metoder kan brukes for å forbedre kodeorganisasjonen.
- Anvende: Implementere funksjoner og metoder i egne programmer.
- Analysere: Vurdere effektiviteten av funksjoner og metoder i kode.
- Evaluere: Optimalisere bruk av funksjoner og metoder for bedre ytelse.
- Skape: Utvikle komplekse funksjoner og metoder for spesifikke oppgaver.
Metoder og Verktøy:
- IDE: Bruk av Visual Studio Code for å skrive og teste funksjoner og metoder.
- Praktiske Øvelser: Skrive programmer som bruker funksjoner og metoder for å løse problemer.
Eksempel (Python):
def add_numbers(a, b):
return a + b
result = add_numbers(5, 3)
print(result)
Kapittel 2: Objektorientert programmering (OOP)
Læringsutbytte:
- Kunnskap: Forstå konseptene klasser, objekter, arv og polymorfisme.
- Ferdigheter: Skrive og bruke klasser og objekter for å strukturere kode.
- Generell kompetanse: Evne til å utvikle gjenbrukbare og vedlikeholdbare programmer ved hjelp av OOP.
Blooms Taksonomi:
- Huske: Definere grunnleggende OOP-konsepter som klasser og objekter.
- Forstå: Forklare hvordan OOP forbedrer kodeorganisasjonen.
- Anvende: Implementere klasser og objekter i programmer.
- Analysere: Vurdere bruken av arv og polymorfisme i kode.
- Evaluere: Optimalisere OOP-design for bedre vedlikeholdbarhet.
- Skape: Utvikle komplekse OOP-systemer for spesifikke oppgaver.
Metoder og Verktøy:
- IDE: Bruk av Visual Studio Code for å skrive og teste OOP-kode.
- Praktiske Øvelser: Skrive programmer som bruker klasser, arv og polymorfisme for å løse problemer.
Eksempel (Python):
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
raise NotImplementedError("Subklasser må implementere denne metoden")
class Dog(Animal):
def speak(self):
return f"{self.name} sier woof!"
class Cat(Animal):
def speak(self):
return f"{self.name} sier meow!"
dog = Dog("Buddy")
cat = Cat("Whiskers")
print(dog.speak())
print(cat.speak())
Kapittel 3: Debugging, testing og unntaksbehandling
Læringsutbytte:
- Kunnskap: Forstå metoder for å finne og rette feil i programmer, skrive tester for å sikre kodekvalitet, og håndtere uventede situasjoner.
- Ferdigheter: Bruke debugging-verktøy, skrive enhetstester og håndtere unntak i kode.
- Generell kompetanse: Evne til å utvikle robust og pålitelig kode gjennom systematisk testing og feilhåndtering.
Blooms Taksonomi:
- Huske: Forklare begrepene debugging, testing og unntaksbehandling.
- Forstå: Beskrive hvordan disse teknikkene forbedrer programkvaliteten.
- Anvende: Implementere debugging, testing og unntaksbehandling i programmer.
- Analysere: Vurdere effektiviteten av debugging- og testingsteknikker.
- Evaluere: Optimalisere feilhåndtering for bedre robusthet.
- Skape: Utvikle omfattende testplaner og feilhåndteringsstrategier.
Metoder og Verktøy:
- IDE: Bruk av innebygde debugging-verktøy i Visual Studio Code.
- Testing Rammeverk: Bruk av unittest for å skrive og kjøre tester.
- Praktiske Øvelser: Skrive programmer som bruker debugging, testing og unntaksbehandling for å sikre kvalitet.
Eksempel (Python):
# Unntaksbehandling
try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"Feil: {e}")
# Enhetstesting
import unittest
def add_numbers(a, b):
return a + b
class TestAddNumbers(unittest.TestCase):
def test_add_numbers(self):
self.assertEqual(add_numbers(3, 4), 7)
if __name__ == '__main__':
unittest.main()
- Praktisk anvendelse: Fokuser på å anvende det du lærer i praktiske prosjekter.
- Kontinuerlig læring: Hold deg oppdatert på nye teknologier og beste praksis.
- Samarbeid: Delta i faglige diskusjoner og samarbeid med andre for å utvide din kunnskap og erfaring.
- Ressursbruk: Benytt deg av de anbefalte verktøyene og ressursene for å forbedre din forståelse og ferdigheter.
Kapittel 1: API (Application Programming Interface)
Læringsutbytte:
- Kunnskap: Forståelse av API-konsepter og deres betydning for programvareutvikling.
- Ferdigheter: Kunne integrere og bruke API-er i egne prosjekter.
- Generell kompetanse: Evne til å designe og dokumentere egne API-er.
Blooms Taksonomi:
- Huske: Definere API og beskrive dets funksjon.
- Forstå: Forklare hvordan API-er muliggjør kommunikasjon mellom forskjellige programvarekomponenter.
- Anvende: Implementere API-kall i programmer.
- Analysere: Vurdere effektiviteten og sikkerheten til API-integrasjoner.
- Evaluere: Optimalisere bruken av API-er i applikasjoner.
- Skape: Utvikle og dokumentere egne API-er.
Metoder og Verktøy:
- Verktøy: Postman for testing og dokumentasjon av API-er.
- Biblioteker: Axios for API-kall i JavaScript, Requests for API-kall i Python.
Eksempel (Python):
import requests
def get_data_from_api():
response = requests.get('https://api.example.com/data')
if response.status_code == 200:
return response.json()
else:
return None
data = get_data_from_api()
print(data)
Kapittel 2: GUI (Graphical User Interface)
Læringsutbytte:
- Kunnskap: Forståelse av prinsippene for GUI-design og utvikling.
- Ferdigheter: Kunne lage enkle GUI-applikasjoner.
- Generell kompetanse: Evne til å utvikle brukervennlige grensesnitt.
Blooms Taksonomi:
- Huske: Beskrive grunnleggende GUI-komponenter.
- Forstå: Forklare prinsippene for godt GUI-design.
- Anvende: Implementere GUI-komponenter i applikasjoner.
- Analysere: Vurdere brukervennligheten til et grensesnitt.
- Evaluere: Optimalisere GUI for bedre brukeropplevelse.
- Skape: Designe og utvikle komplette GUI-applikasjoner.
Metoder og Verktøy:
- Verktøy: Visual Studio Code med relevante plugins.
- Biblioteker: Tkinter for Python, Svelte for JavaScript.
Eksempel (Svelte):
<script>
let name = '';
let greeting = '';
function greet() {
greeting = `Hello, ${name}!`;
}
</script>
<input type="text" bind:value={name} placeholder="Enter your name">
<button on:click={greet}>Greet</button>
{#if greeting}
<p>{greeting}</p>
{/if}
Kapittel 3: UML (Unified Modeling Language)
Læringsutbytte:
- Kunnskap: Forståelse av UML og dets bruk i programvareutvikling.
- Ferdigheter: Kunne lage UML-diagrammer for å modellere systemer.
- Generell kompetanse: Evne til å bruke UML for å planlegge og dokumentere programvareprosjekter.
Blooms Taksonomi:
- Huske: Definere UML og dets komponenter.
- Forstå: Forklare hvordan UML kan brukes til å modellere programvare.
- Anvende: Lage UML-diagrammer for programvareprosjekter.
- Analysere: Vurdere kvaliteten på UML-diagrammer.
- Evaluere: Optimalisere UML-diagrammer for bedre klarhet og effektivitet.
- Skape: Utvikle komplette UML-diagrammer for komplekse systemer.
Metoder og Verktøy:
- Verktøy: draw.io for å lage UML-diagrammer.
- Teknikker: Bruk case-diagrammer, klassediagrammer, aktivitetsdiagrammer.
Eksempel (Klassediagram i UML):
+----------------+
| Person |
+----------------+
| - name: String |
| - age: int |
+----------------+
| + greet(): void|
+----------------+
- Praktisk anvendelse: Lag prosjekter som bruker API-er, GUI-er og UML for å øve på det du har lært.
- Kontinuerlig læring: Utforsk videre ressurser og hold deg oppdatert på beste praksis.
- Samarbeid: Delta i faglige diskusjoner og prosjekter med medstudenter og fagfolk.
Lykke til med studiet av programmering!
Kapittel 1: Filbehandling
Læringsutbytte:
- Kunnskap: Forståelse av grunnleggende filoperasjoner som lesing, skriving og sletting.
- Ferdigheter: Kunne lese fra og skrive til filer ved hjelp av forskjellige programmeringsspråk.
- Generell kompetanse: Evne til å håndtere filer effektivt og sikkert i applikasjoner.
Blooms Taksonomi:
- Huske: Definere filoperasjoner og deres formål.
- Forstå: Forklare hvordan filer kan manipuleres i forskjellige programmeringsspråk.
- Anvende: Implementere kode som leser fra og skriver til filer.
- Analysere: Vurdere effektiviteten og sikkerheten til filbehandlingsrutiner.
- Evaluere: Optimalisere filoperasjoner for bedre ytelse og sikkerhet.
- Skape: Utvikle applikasjoner som krever avansert filbehandling.
Metoder og Verktøy:
- Verktøy: Teksteditorer og IDE-er som Visual Studio Code, PyCharm.
- Biblioteker: Innebygde biblioteker i Python, JavaScript og andre språk.
Eksempel (Python):
# Åpne en fil for lesing
with open('example.txt', 'r') as file:
content = file.read()
print(content)
# Åpne en fil for skriving
with open('example.txt', 'w') as file:
file.write('Dette er en test.')
Eksempel (JavaScript Node.js):
const fs = require('fs');
// Lese fra en fil
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
// Skrive til en fil
fs.writeFile('example.txt', 'Dette er en test.', (err) => {
if (err) throw err;
console.log('Filen er oppdatert.');
});
Kapittel 2: Datasikkerhet
Læringsutbytte:
- Kunnskap: Forståelse av grunnleggende sikkerhetsprinsipper og trusler mot data.
- Ferdigheter: Kunne implementere sikkerhetstiltak for å beskytte data i applikasjoner.
- Generell kompetanse: Evne til å identifisere og mitigere sikkerhetsrisikoer i kode og systemer.
Blooms Taksonomi:
- Huske: Definere viktige sikkerhetsbegreper som konfidensialitet, integritet og tilgjengelighet.
- Forstå: Forklare vanlige trusler mot datasikkerhet.
- Anvende: Implementere grunnleggende sikkerhetstiltak i kode.
- Analysere: Vurdere sikkerhetsrisikoer i programvare.
- Evaluere: Optimalisere sikkerhetstiltak for å beskytte data.
- Skape: Utvikle sikre applikasjoner og systemer.
Metoder og Verktøy:
- Verktøy: Sikkerhetsscannere som OWASP ZAP, Burp Suite.
- Biblioteker: Kryptografibiblioteker som PyCryptodome i Python, Crypto i Node.js.
Eksempel (Python - hashing):
import hashlib
password = 'mysecretpassword'
hashed_password = hashlib.sha256(password.encode()).hexdigest()
print(hashed_password)
Eksempel (JavaScript Node.js - kryptering):
const crypto = require('crypto');
const algorithm = 'aes-256-ctr';
const secretKey = 'mysecretkey';
const iv = crypto.randomBytes(16);
const encrypt = (text) => {
const cipher = crypto.createCipheriv(algorithm, secretKey, iv);
const encrypted = Buffer.concat([cipher.update(text), cipher.final()]);
return `${iv.toString('hex')}:${encrypted.toString('hex')}`;
};
const encryptedText = encrypt('Sensitive data');
console.log(encryptedText);
- Eksperimenter: Test ulike filbehandlingsmetoder og sikkerhetstiltak i praksis.
- Hold deg oppdatert: Følg med på nyheter og oppdateringer innen datasikkerhet.
- Samarbeid: Del erfaringer og løsninger med medstudenter og fagfolk.
Programstrukturer, Datastrukturer, Bibliotek, Funksjoner og metoder, Objektorientert programmering, Debugging, testing og unntaksbehandling, API, GUI, UML, Filbehandling, Datasikkerhet
Kandidaten har kunnskap om:
-
Grunnleggende programmering og programmeringsverktøy:
- Forståelse av programmeringskonsepter som variabler, datatyper og operasjoner.
- Kunnskap om vanlige programmeringsverktøy og utviklingsmiljøer (IDEs).
-
Grunnleggende programmeringsteknikker:
- Variabeldeklarasjoner: Forståelse av hvordan variabler brukes til å lagre data.
- Kontrollstrukturer: Kunnskap om if-else, switch-case, og hvordan disse styrer flyten i et program.
- Løkker: Forståelse av for-løkker, while-løkker og do-while-løkker for gjentagende oppgaver.
- Funksjoner: Evne til å definere og bruke funksjoner for å modularisere og gjenbruke kode.
-
Utvikling av brukergrensesnitt:
- Kunnskap om GUI-verktøy og biblioteker som Svelte, React eller Tkinter.
- Forståelse av grunnleggende prinsipper for design og utvikling av brukervennlige grensesnitt.
-
Kommunikasjon mellom ulike programgrensesnitt:
- Forståelse av API-er og hvordan de brukes til å integrere og kommunisere med eksterne tjenester.
- Kunnskap om HTTP-protokollen og JSON-formatet for datautveksling.
-
Viktigheten av å ivareta sikkerheten av applikasjoner:
- Bevissthet om vanlige sikkerhetsrisikoer som SQL-injeksjon, XSS, og CSRF.
- Kunnskap om teknikker for å beskytte applikasjoner, som inputvalidering og bruk av sikkerhetsbiblioteker.
-
Grunnleggende sikkerhet relatert til programmering:
- Forståelse av kryptering, hashing og autentiseringsteknikker.
- Kunnskap om hvordan man sikrer datalagring og kommunikasjon.
-
Tilegne seg ny kunnskap innen programmering:
- Evne til å bruke relevant faglitteratur, nettbaserte ressurser, og faglige nettverk for å lære nye teknologier og språk.
-
Innsikt i egne utviklingsmuligheter innenfor programmering:
- Selvrefleksjon på egen kompetanse og identifisere områder for forbedring og videre læring.
# Python
for i in range(5):
print(i)
if True:
print("True!")
# Python
my_list = [1, 2, 3]
my_dict = {"key": "value"}
# Python - Bruk av requests biblioteket
import requests
response = requests.get("https://api.example.com/data")
print(response.json())
# Python
def greet(name):
return f"Hello, {name}!"
# Python
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print("Woof!")
my_dog = Dog("Fido")
my_dog.bark()
# Python
try:
result = 10 / 0
except ZeroDivisionError:
print("Cannot divide by zero.")
# Python - Flask API eksempel
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/data', methods=['GET'])
def get_data():
return jsonify({"data": "value"})
if __name__ == '__main__':
app.run()
# Svelte
<script>
let count = 0;
function increment() {
count += 1;
}
</script>
<button on:click={increment}>
Count: {count}
</button>
+----------------------+
| Dog |
+----------------------+
| - name: String |
+----------------------+
| + bark(): void |
+----------------------+
# Python
with open('file.txt', 'r') as file:
content = file.read()
print(content)
# Python - Hashing med hashlib
import hashlib
password = "mypassword"
hashed_password = hashlib.sha256(password.encode()).hexdigest()
print(hashed_password)
- Praktiske Prosjekter: Implementer små prosjekter for å anvende det du har lært.
- Samarbeid: Delta i gruppeprosjekter for å lære av andre.
- Hold deg Oppdatert: Følg med på nyheter og oppdateringer innen programmering og sikkerhet.
Kandidaten kan:
-
Utvikle et brukergrensesnitt ved hjelp av kode og utviklingsverktøy:
- Bruke moderne rammeverk og biblioteker for å lage interaktive og brukervennlige grensesnitt.
- Eksempel (Svelte):
<script> let count = 0; function increment() { count += 1; } </script> <button on:click={increment}> Count: {count} </button>
-
Skrive kode med variabeldeklarasjoner, kontrollstrukturer, løkker og funksjoner:
- Variabeldeklarasjoner:
# Python x = 5 y = "Hello"
- Kontrollstrukturer:
if x > 3: print("x is greater than 3")
- Løkker:
for i in range(5): print(i)
- Funksjoner:
def greet(name): return f"Hello, {name}!"
- Variabeldeklarasjoner:
-
Lese og tolke kode:
- Analysere eksisterende kode for å forstå funksjonalitet og struktur.
- Eksempel:
def factorial(n): if n == 0: return 1 else: return n * factorial(n-1)
-
Utføre vedlikehold og forbedre eksisterende applikasjoner:
- Identifisere og rette feil i koden, samt legge til nye funksjoner.
- Eksempel:
# Legge til logging i en funksjon import logging logging.basicConfig(level=logging.DEBUG) def add(a, b): logging.debug(f"Adding {a} and {b}") return a + b
-
Drøfte grunnleggende sikkerhet til en applikasjon:
- Identifisere vanlige sikkerhetstrusler som SQL-injeksjon, XSS, CSRF og foreslå tiltak for å beskytte applikasjonen.
- Eksempel:
# Beskytte mot SQL-injeksjon import sqlite3 def get_user(username): conn = sqlite3.connect('example.db') cursor = conn.cursor() cursor.execute("SELECT * FROM users WHERE username=?", (username,)) return cursor.fetchone()
-
Utvikle et brukergrensesnitt:
- Kandidaten skal kunne designe og utvikle interaktive brukergrensesnitt ved hjelp av moderne rammeverk som Svelte, React eller Angular.
- De skal forstå prinsippene for brukeropplevelse (UX) og hvordan man lager intuitive og effektive grensesnitt.
-
Skrive kode:
- Kandidaten skal beherske grunnleggende programmeringsteknikker som variabeldeklarasjoner, kontrollstrukturer, løkker og funksjoner.
- De skal kunne skrive ren, lesbar og effektiv kode.
-
Lese og tolke kode:
- Kandidaten skal kunne lese eksisterende kode for å forstå hvordan den fungerer og hva den gjør.
- De skal kunne tolke algoritmer og datastrukturer som brukes i koden.
-
Vedlikeholde og forbedre applikasjoner:
- Kandidaten skal kunne identifisere og rette feil i koden, samt forbedre eksisterende funksjonalitet.
- De skal kunne legge til nye funksjoner og optimalisere koden for bedre ytelse.
-
Grunnleggende sikkerhet:
- Kandidaten skal ha forståelse for grunnleggende sikkerhetsprinsipper og kunne identifisere vanlige sikkerhetstrusler.
- De skal kunne implementere sikkerhetstiltak for å beskytte applikasjoner mot trusler som SQL-injeksjon og XSS.
-
Utviklingsverktøy:
- Visual Studio Code, PyCharm, WebStorm
-
Læringsressurser:
- MDN Web Docs: https://developer.mozilla.org/
- W3Schools: https://www.w3schools.com/
- Stack Overflow: https://stackoverflow.com/
- Bygg Prosjekter: Lag små prosjekter for å praktisere ferdighetene dine.
- Delta i Kodegjennomganger: Få og gi tilbakemeldinger på kode for å lære best practices.
- Hold deg Oppdatert: Følg med på de nyeste trendene og verktøyene i programmeringsverdenen.
Kandidaten kan:
-
Vedlikeholde og utvikle sin egen kompetanse innenfor emnet:
- Eksempel: Bruke online læringsplattformer som Coursera eller Udemy for kontinuerlig læring.
-
Python-kode:
# Lese en bok om avanserte Python-konsepter def read_book(title): print(f"Reading book: {title}") read_book("Advanced Python Programming")
-
Delta aktivt i prosjekter:
- Eksempel: Bidra til open-source prosjekter på GitHub.
-
Git-kommandoer:
git clone https://github.com/opensource/project.git cd project git checkout -b new-feature # Gjør endringer i koden git add . git commit -m "Added new feature" git push origin new-feature
-
Utføre arbeid etter oppdragsgivers behov, etablere fagnettverk og samarbeide med mennesker på kryss av fagfelt:
- Eksempel: Bruke Agile metoder som Scrum for prosjektledelse og samarbeid.
-
Scrum-sprint board: Bruk verktøy som Jira eller Trello for å administrere oppgaver og samarbeid.
Task: Implement user authentication - Create login page (In Progress) - Set up backend authentication (To Do) - Write unit tests for authentication (To Do)
-
Utveksle bransjerelaterte synspunkter og informasjon:
- Eksempel: Delta i faglige diskusjoner på forum som Stack Overflow eller Reddit.
-
API-kode: Bruke API-er for å hente bransjerelatert informasjon.
import requests def get_latest_tech_news(): response = requests.get("https://api.technews.com/latest") if response.status_code == 200: news = response.json() for article in news: print(article['title']) get_latest_tech_news()
-
Bygge relasjoner, både internt, eksternt og på tvers av fagfelt:
- Eksempel: Delta i nettverksarrangementer og faglige konferanser.
-
JavaScript-kode for nettverksapp: Lage en enkel applikasjon for å administrere nettverkskontakter.
const contacts = []; function addContact(name, email) { contacts.push({ name, email }); } function listContacts() { contacts.forEach(contact => console.log(`${contact.name}: ${contact.email}`)); } addContact("John Doe", "[email protected]"); listContacts();
- Læringsplattformer: Coursera, Udemy, Khan Academy
- Prosjektledelse: Jira, Trello
- Versjonskontroll: Git, GitHub
- Samarbeidsverktøy: Slack, Microsoft Teams
- Nettverksbygging: LinkedIn, faglige konferanser
- Kontinuerlig læring: Hold deg oppdatert med de nyeste teknologiene og praksisene innen programmering.
- Bidra til prosjekter: Engasjer deg i både interne og eksterne prosjekter for å bygge erfaring og nettverk.
- Samarbeid og kommunikasjon: Bruk moderne verktøy og metoder for effektiv kommunikasjon og prosjektledelse.
- Nettverksbygging: Delta i faglige diskusjoner, konferanser og nettverksarrangementer for å utvide ditt faglige nettverk.
Lykke til med å utvikle din kompetanse og bygge relasjoner innen programmering!