20TD02U Programmering - itnett/FTD02N GitHub Wiki

20TD02U Programmering

Oppstart

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.

Emnebeskrivelse

Fagområde: Datateknikk Emnekode: 20TD02U Studieprogram: IT-drift og sikkerhet Studiepoeng: 10 Studienivå: Fagskole, nivå 5.2 Startsemester: 2024 Høst

Tema: Programmering

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.

Læringsutbytte

Kunnskap:

  • 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.

Ferdigheter:

  • 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.

Generell kompetanse:

  • 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.

Relevante verktøy og ressurser:

  • 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:

Grunnleggende introduksjon til språk, verktøy, metoder, ressurser og konsepter:

  • 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:

Programstrukturer og datastrukturer:

Bibliotek, funksjoner og metoder:

Objektorientert programmering (OOP):

Debugging, testing og unntaksbehandling:

API:

GUI:

UML:

Filbehandling og datasikkerhet:

Generelt:

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.

20TD02U Programmering: En grundig innføring

Del 2: Avanserte Programmeringsteknikker og Verktøy

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:

  1. Huske: Liste opp syntaksen for funksjonsdefinisjoner i Python og JavaScript.
  2. Forstå: Forklare forskjellen mellom funksjoner og metoder.
  3. Anvende: Skrive funksjoner og metoder som løser spesifikke problemer.
  4. Analysere: Vurdere når det er hensiktsmessig å bruke funksjoner for å unngå duplisert kode.
  5. Evaluere: Teste og feilsøke funksjoner for å sikre at de fungerer som forventet.
  6. 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:

  1. Huske: Definere begreper som klasse, objekt, arv og polymorfisme.
  2. Forstå: Forklare hvordan OOP skiller seg fra prosedyreorientert programmering.
  3. Anvende: Implementere enkle klasser og objekter i Python og JavaScript.
  4. Analysere: Vurdere fordeler og ulemper ved å bruke OOP i ulike scenarioer.
  5. Evaluere: Teste og feilsøke OOP-baserte programmer for å sikre korrekt funksjonalitet.
  6. 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:

  1. Huske: Liste opp vanlige debugging-teknikker og verktøy.
  2. Forstå: Forklare viktigheten av testing og unntaksbehandling.
  3. Anvende: Skrive tester ved hjelp av rammeverk som pytest og Jest.
  4. Analysere: Identifisere og rette feil ved hjelp av debugging-verktøy.
  5. Evaluere: Vurdere testdekningen og kvaliteten på testene.
  6. 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:

  1. Huske: Forklare hva et API er og hvordan det fungerer.
  2. Forstå: Beskrive de forskjellige typene API-er (REST, SOAP).
  3. Anvende: Skrive kode som kommuniserer med et eksternt API.
  4. Analysere: Vurdere fordeler og ulemper ved å bruke eksterne API-er.
  5. Evaluere: Teste API-integrasjoner for å sikre pålitelighet og ytelse.
  6. 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:

  1. Huske: Forklare grunnleggende konsepter i GUI-utvikling.
  2. Forstå: Beskrive prinsippene for godt GUI-design.
  3. Anvende: Utvikle enkle GUI-er ved hjelp av rammeverk som Svelte.
  4. Analysere: Vurdere brukervennligheten av et GUI.
  5. Evaluere: Teste og forbedre GUI-basert på tilbakemeldinger.
  6. 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!

20TD02U Programmering: En grundig innføring

Del 2: Programstrukturer, Datastrukturer og Bibliotek

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:

  1. Huske: Definere konsepter som sekvenser, valg (if-else) og løkker (for, while).
  2. Forstå: Beskrive hvordan kontrollstrukturer påvirker programflyten.
  3. Anvende: Implementere kontrollstrukturer i enkle programmer.
  4. Analysere: Vurdere effektiviteten av ulike kontrollstrukturer.
  5. Evaluere: Optimalisere programflyt ved bruk av passende kontrollstrukturer.
  6. 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): Se skriptet her


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:

  1. Huske: Liste opp forskjellige datastrukturer som lister, tabeller, mengder og dictionaries.
  2. Forstå: Forklare forskjellen mellom de ulike datastrukturene.
  3. Anvende: Implementere og bruke datastrukturer i programmer.
  4. Analysere: Vurdere effektiviteten til ulike datastrukturer for spesifikke oppgaver.
  5. Evaluere: Optimalisere bruk av datastrukturer for å forbedre ytelsen.
  6. 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): Se skriptet her


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:

  1. Huske: Forklare hva et bibliotek er og hvordan det brukes i programmering.
  2. Forstå: Beskrive fordeler og ulemper ved å bruke eksterne biblioteker.
  3. Anvende: Installere og bruke biblioteker i egne programmer.
  4. Analysere: Vurdere hvilke biblioteker som er mest passende for spesifikke oppgaver.
  5. Evaluere: Teste og sikre at bibliotekene fungerer som forventet.
  6. 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): Se skriptet her


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.

20TD02U Programmering: En grundig innføring

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:

  1. Huske: Forklare hva funksjoner og metoder er.
  2. Forstå: Beskrive hvordan funksjoner og metoder kan brukes for å forbedre kodeorganisasjonen.
  3. Anvende: Implementere funksjoner og metoder i egne programmer.
  4. Analysere: Vurdere effektiviteten av funksjoner og metoder i kode.
  5. Evaluere: Optimalisere bruk av funksjoner og metoder for bedre ytelse.
  6. 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): Se skriptet her


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:

  1. Huske: Definere grunnleggende OOP-konsepter som klasser og objekter.
  2. Forstå: Forklare hvordan OOP forbedrer kodeorganisasjonen.
  3. Anvende: Implementere klasser og objekter i programmer.
  4. Analysere: Vurdere bruken av arv og polymorfisme i kode.
  5. Evaluere: Optimalisere OOP-design for bedre vedlikeholdbarhet.
  6. 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): Se skriptet her


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:

  1. Huske: Forklare begrepene debugging, testing og unntaksbehandling.
  2. Forstå: Beskrive hvordan disse teknikkene forbedrer programkvaliteten.
  3. Anvende: Implementere debugging, testing og unntaksbehandling i programmer.
  4. Analysere: Vurdere effektiviteten av debugging- og testingsteknikker.
  5. Evaluere: Optimalisere feilhåndtering for bedre robusthet.
  6. 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): Se skriptet her


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.

20TD02U Programmering: En grundig innføring

Del 4: API, GUI, UML

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:

  1. Huske: Definere API og beskrive dets funksjon.
  2. Forstå: Forklare hvordan API-er muliggjør kommunikasjon mellom forskjellige programvarekomponenter.
  3. Anvende: Implementere API-kall i programmer.
  4. Analysere: Vurdere effektiviteten og sikkerheten til API-integrasjoner.
  5. Evaluere: Optimalisere bruken av API-er i applikasjoner.
  6. 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): Se skriptet her


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:

  1. Huske: Beskrive grunnleggende GUI-komponenter.
  2. Forstå: Forklare prinsippene for godt GUI-design.
  3. Anvende: Implementere GUI-komponenter i applikasjoner.
  4. Analysere: Vurdere brukervennligheten til et grensesnitt.
  5. Evaluere: Optimalisere GUI for bedre brukeropplevelse.
  6. 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:

  1. Huske: Definere UML og dets komponenter.
  2. Forstå: Forklare hvordan UML kan brukes til å modellere programvare.
  3. Anvende: Lage UML-diagrammer for programvareprosjekter.
  4. Analysere: Vurdere kvaliteten på UML-diagrammer.
  5. Evaluere: Optimalisere UML-diagrammer for bedre klarhet og effektivitet.
  6. 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|
+----------------+

Viktige tips for videre arbeid:

  • 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!

20TD02U Programmering: En grundig innføring

Del 5: Filbehandling og Datasikkerhet

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:

  1. Huske: Definere filoperasjoner og deres formål.
  2. Forstå: Forklare hvordan filer kan manipuleres i forskjellige programmeringsspråk.
  3. Anvende: Implementere kode som leser fra og skriver til filer.
  4. Analysere: Vurdere effektiviteten og sikkerheten til filbehandlingsrutiner.
  5. Evaluere: Optimalisere filoperasjoner for bedre ytelse og sikkerhet.
  6. 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): Se skriptet her

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:

  1. Huske: Definere viktige sikkerhetsbegreper som konfidensialitet, integritet og tilgjengelighet.
  2. Forstå: Forklare vanlige trusler mot datasikkerhet.
  3. Anvende: Implementere grunnleggende sikkerhetstiltak i kode.
  4. Analysere: Vurdere sikkerhetsrisikoer i programvare.
  5. Evaluere: Optimalisere sikkerhetstiltak for å beskytte data.
  6. 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): Se skriptet her

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);

Viktige tips for videre arbeid:

  • 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.

20TD02U Programmering: Kunnskap og Læringsmål

Programstrukturer, Datastrukturer, Bibliotek, Funksjoner og metoder, Objektorientert programmering, Debugging, testing og unntaksbehandling, API, GUI, UML, Filbehandling, Datasikkerhet

Kunnskap

Kandidaten har kunnskap om:

  1. Grunnleggende programmering og programmeringsverktøy:

    • Forståelse av programmeringskonsepter som variabler, datatyper og operasjoner.
    • Kunnskap om vanlige programmeringsverktøy og utviklingsmiljøer (IDEs).
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Grunnleggende sikkerhet relatert til programmering:

    • Forståelse av kryptering, hashing og autentiseringsteknikker.
    • Kunnskap om hvordan man sikrer datalagring og kommunikasjon.
  7. Tilegne seg ny kunnskap innen programmering:

    • Evne til å bruke relevant faglitteratur, nettbaserte ressurser, og faglige nettverk for å lære nye teknologier og språk.
  8. Innsikt i egne utviklingsmuligheter innenfor programmering:

    • Selvrefleksjon på egen kompetanse og identifisere områder for forbedring og videre læring.

Eksempler og Ressurser

Programstrukturer

Se skriptet her

Datastrukturer

Se skriptet her

Bibliotek

Se skriptet her

Funksjoner og metoder

Se skriptet her

Objektorientert programmering

Se skriptet her

Debugging, testing og unntaksbehandling

Se skriptet her

API

Se skriptet her

GUI

Se skriptet her

UML

+----------------------+
|       Dog            |
+----------------------+
| - name: String       |
+----------------------+
| + bark(): void       |
+----------------------+

Filbehandling

Se skriptet her

Datasikkerhet

Se skriptet her

Viktige Tips:

  • 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.

20TD02U Programmering: Ferdigheter

Kandidaten kan:

  1. 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>
  2. Skrive kode med variabeldeklarasjoner, kontrollstrukturer, løkker og funksjoner:

  3. Lese og tolke kode:

    • Analysere eksisterende kode for å forstå funksjonalitet og struktur.
    • Eksempel: Se skriptet her
  4. Utføre vedlikehold og forbedre eksisterende applikasjoner:

    • Identifisere og rette feil i koden, samt legge til nye funksjoner.
    • Eksempel: Se skriptet her
  5. Drøfte grunnleggende sikkerhet til en applikasjon:

    • Identifisere vanlige sikkerhetstrusler som SQL-injeksjon, XSS, CSRF og foreslå tiltak for å beskytte applikasjonen.
    • Eksempel: Se skriptet her

Detaljert Forklaring av Hver Ferdighet

  1. 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.
  2. Skrive kode:

    • Kandidaten skal beherske grunnleggende programmeringsteknikker som variabeldeklarasjoner, kontrollstrukturer, løkker og funksjoner.
    • De skal kunne skrive ren, lesbar og effektiv kode.
  3. 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.
  4. 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.
  5. 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.

Anbefalte Verktøy og Ressurser

Praktiske Tips

  • 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.

20TD02U Programmering: Generell Kompetanse

Kandidaten kan:

  1. Vedlikeholde og utvikle sin egen kompetanse innenfor emnet:

    • Eksempel: Bruke online læringsplattformer som Coursera eller Udemy for kontinuerlig læring.
    • Python-kode: Se skriptet her
  2. Delta aktivt i prosjekter:

    • Eksempel: Bidra til open-source prosjekter på GitHub.
    • Git-kommandoer: Se skriptet her
  3. 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)
      
  4. 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. Se skriptet her
  5. 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();

Verktøy og Ressurser

  • Læringsplattformer: Coursera, Udemy, Khan Academy
  • Prosjektledelse: Jira, Trello
  • Versjonskontroll: Git, GitHub
  • Samarbeidsverktøy: Slack, Microsoft Teams
  • Nettverksbygging: LinkedIn, faglige konferanser

Praktiske Tips

  • 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!

⚠️ **GitHub.com Fallback** ⚠️