H1: inleiding
Waarom beleidsinformatica?
- Informatie technologie en bedrijven: met elkaar verbonden
Waarom programmeren?
- Inzicht in werking programmatuur
+ begrijpen uitdagingen bij ontwikkeling van software (apps)
- Polyvalent en krachtig instrument
o Problemen oplossen: berekeningen, modelering en analyse van gegevens
- Algoritmische oplossingen stapsgewijs. Ontwikkelen, implementeren en testen
- Programmeren
= training in logisch, systematisch en abstract denken
Waarom Python?
- “eenvoudig”
- Open Source
- Groot toepassingsgebeid
o Onderwijs en wetenschappelijk onderzoek
▪ data science, AI, machine learning + object-georiënteerd prog.
- Gebruikt door grote bedrijven (NASA, Netflix, Facebook, Spotify, YouTube…)
- PopularitY of Programming Language Index (PYPL)
o Aantal zoekopdrachten naar programmeertalen op Google
▪ Python populairst
Waarom GEEN MS Excel?
- Veel manuele en repetitieve handelingen nodig
- Moeilijk te automatiseren
- Moeilijk om resultaten te controleren en fouten op te sporen
- Foutengevoelig
- Geavanceerde algoritmen niet rechtstreeks beschikbaar
WEL – gebruiksvriendelijk, breed inzetbaar, goed gekend in bedrijfsleven, WYSIWYG,
“gemakkelijk” zelf aan te leren…
,H2: algoritmen en programmeren
Een algoritme Is een eindige reeks instructies die vanuit een gegeven
begintoestand naar een beoogd doel leidt
Een proces Herhaalbare reeks afhankelijke activiteiten met een
welbepaald eindresultaat en startende vanaf een
welbepaald beginpunt.
Een computeralgoritme Is een duidelijk gedefinieerde computationele procedure
die een waarde of verzameling van waarden als invoer
neemt en een waarde of verzameling van waarden als
uitvoer produceert
Een computationele Is een geordende reeks ondubbelzinnige, computer-
procedure uitvoerbare instructies die een eindig proces beschrijven
Een programma Is een uitvoerbare representatie of implementatie van
een algoritme
Programmeren • Het implementeren van een algoritme in termen van een
reeks computer uitvoerbare instructies met behulp van
een programmeertaal
• Resultaat: computerprogramma
• Implementeren: uitschrijven in een
programmeeromgeving die toelaat het resulterende
programma uit te voeren op een computer
Instantiatie Specifieke begintoestand en beoogd doel
1. Algoritmen
- Instructies: welbepaalde elementaire handelingen
o “…een laagje kokend water…” ≠ specifiek voor robot
MAAR uitvoerder is mens, dus ok
o Specifiëring hangt af van beoogde uitvoerder v/h algoritme
- Eindige reeks?
o Zoniet, doel niet bereikt
o Eindig in aantal EN tijd (tijd➔ aantal, maar niet omgekeerd!)
- Belangrijke vraag: is een probleem oplosbaar?
o Is een algoritme te bedenken om probleem op te lossen (in termen van
een beperkte set van instructies)?
o Werkt dat algoritme steeds (voor alle mogelijke begintoestanden,
specifiëring of instantiatie van de taak)?
o Zijn er bepaalde voorwaarden voor de eindigheid van het algoritme (voor
alle mogelijke begintoestanden)?
, o Wat is de kwaliteit van een gevonden oplossing (wordt steeds de optimale
oplossing gevonden)?
- Instantiatie v/e probleem: specifieke begintoestand en doel
o Vb bij het Traveling Salesman Problem → specifiëren van:
▪ Het wegennetwerk
▪ Locatie van klanten en vraag
▪ Beschikbare vloot (aantal trucks, laadcapaciteit…)
▪ …
- Correct algoritme: bereikt voor iedere instantiatie: beoogde doel
- Incorrect algoritme: bereikt NIET voor iedere instantiate beoogde doel
o Sommige: mogelijks wel het doel
o Andere: geen uitkomst
2. Computeralgoritmen
- Data/ gegevens = alles wat we kunnen capteren/ oplsaan met behulp van bits
- Informatie = alles wat we kunnen capteren/beschrijven/noteren mbv bits
MET NUT = data met nut voor een eindgebruiker (na verwerking
→ kan voortkomen uit bv een verwerking van data na een algoritme)
- Begintoestand = data; doel = informatie
—> extra waarde na verwerken data
- Kennis bevindt zich in de hoofden van de gebruiker
—> verwerking van informatie door mens
- Pseudocode = op gestructureerde manier instructies geformuleerd, al in
structuur voor het programmeren
- Begintoestand, beoogd doel en instructies NIET VERMELD
o Term: eindig proces
- Geordend
o Structuur met volgorde van instructies
▪ Uitvoeren in willekeurige volgorde: niet (altijd) beoogde uitkomst
→ afhankelijke activiteiten
o Niet ALLE instructies moeten in volgorde
, ▪ Resultaat: samenvoegen deelresultaten (afzonderlijk gerealiseerd)
▪ Parallel computing
- Parallel computing
o Opsplitsen in deelproblemen + terug samenvoegen = sneller
o Meerdere reeksen instructies, expliciet bepaald in algortime, afzonderlijk
uitgevoerd kunnen worden
o Niet alle algoritmen kunnen in parallele structuur
▪ Bv oorzaak-gevolg ketens
- Ondubbelzinnig
o Computer kan niet interpreteren,
▪ Of wel? Algoritmes in ontwikkeling: in staat te interpreteren
▪ Vb ChatGPT, DALL.E é
• Wel interpreteren, vertaalt zelf naar specifieke info
- Computer-uitvoerbaar
o Uitvoerbaarheid van instructie door computer
o NIET de eindigheid van de instructie
▪ Vb willekeurig getal: nee, algoritme erachter niet willekeurig
→ oplossing: sensoren met metingen
▪ Vb lijst natuurlijke getallen: ja(, maar niet eindig)
▪ Vb muziek: ja, als er algoritmes bestaan die de “hogere orde
instructies” kunnen uitvoeren gebruikmakend van machine-
uitvoerbare instructies
- Hiërarchie van instructies
o Instructie kan reeks basisinstructies (in machinetaal) zijn
o Instructie, bestaande uit doenbare basisinstructies, zelf doenbaar
o Algoritme is ook een instructie & omgekeerd (behalve basisinstructies)
- Verschillende niveaus instructies:
o Laagste: geen dubbelzinnige instructies, beperkte set basisfuncties
▪ Instructie = bitsequenties die gevoed worden aan processor
▪ Uitdaging ontwikkelen computeralogritme:
• enkel gebruik maken van beperkte set computer-
uitvoerbare instructies
o MAAR: bestaande algoritmes kunnen als hoger-niveau instructies
herbruikt worden
▪ Bv bubblesort: gebruikt algoritme om percentiel-waarden te
berekenen
▪ Bv ChatGPT: code generen op basis van beschrijving
- Computer-uitvoerbaar omvat dubbelzinnig (kan geschrapt worden)
- Eindig
o Ook nuttige algoritmen die continu doorlopende processen ondersteunen
of uitvoeren ZONDER a-priori bepaald eindpunt
▪ Vb thermostaat
▪ Vb bewaken vitale levenssignalen patiënt ziekenhuis
o Dat zijn ook algoritmen
▪ Zichzelf herhalend
, ▪ Impliciete stopcriteria of -conditites (vb knop om uit te schakelen)
- Proces = de activiteit waarbij een algoritme wordt uitgevoerd, dat op zijn beurt
geïmplementeerd is als een programma
- Een programma = een uitvoerbare representatie of implementatie van een
algoritme
3. Eerste programma’s in Python
- IDE = integrated development environment
4. Programmeren
- Algoritme ≠ representatie
o Verhaal vs boek → verhaal en algoritme niet tastbaar
o Abstractie van specifieke vorm → verhaal, algoritme
▪ Abstracte concepten, vormloos
- Manier om weer te geven, noteren, implementeren
o Exact gedefinieerde primitieven
▪ Primitieven = bouwstenen, waarmee representaties v algoritmen
worden samengesteld
▪ Exact/ precies gedefinieerd → ondubbelzinnig
- Primitief: 2 delen
o Symbolische representatie
o Semantiek = betekenis
- Syntax = verzameling regels voor de manier waarop deze primitieven kunnen
gecombineerd worden tot correcte uitdrukkingen/ instructies
- Verzameling primitieven & syntax = programmeertaal
o Indien primitieven computer-uitvoerbare instructies betreffen
en ontwikkelen
- Mate intelligentie van machines beperkt door
o (Algoritme:) vangt intelligentie + laat toe deze over te dragen
▪ Beprkte set computer-uitvoerbare instructies
▪ Geen algoritme voor oplossen vraagstuk
o Intelligentie van mens om algoritmes te ontwikkelen
▪ Mens mogelijk algoritme (nog) niet gevonden
▪ Algoritme die zelf algoritmes ontwikkelt → machine learning, AI
, 5. Programmeertalen
- Programma’s voor computers
o Reeksen instructies, gecodeerd of neergeschrven d.m.v. alfanumerkieke
tekens → bitsequenties
o MACHINETAAL
▪ 32 bit vs 64 bit computer/bestruringssysteem
• Basislengte 1 instructie
▪ Enige “taal” die computer “verstaat”
▪ Instructies & data gecodeerd als bitsequenties
- Eerste generatie programmeertalen (1GL): Machinetaal
o Ontworpen voor 1 welbepaalde computerarchitectuur
▪ Voor welbepaalde processor/ chip
▪ Programmeur moet in machinetaal denken zoals computer uitvoert
▪ 1 op 1 overeenkomst met werking elektronica/CPU/hardware
▪ Elektrische signalen die verstuurd worden
o Moeilijk, onhandig, traag: bugs
o Niveau van complexitiet bereiken: laag
Ontwikkeling notatiesystemen
- Doel: programmeerproces vereenvoudigen
- Hexadecimale code
o Cijfers 0 t.e.m. 9 en letter 1 t.e.m. F: 16 symbolen
o Ieder symbool: sequentie van 4 bits
▪ 0 = 0000, A = 1010, B = 1011…
- Mnemonische code
o Basisinstructies: Load, Add, Store, Halt
o Programma variabelen of identifiers: begrijpelijke namen voor
geheugencellen op specifieke locaties
➔ 2GL: Assemblertalen
o Programma’s met woorden (mnemonics), begrijpbaar voor mensen
… niet voor machines → vertaling
o Mnemonische code
▪ Omzetten in machine-instructies
▪ Speciale programma’s: assemblers
o Computerafhankelijke taal
▪ Instructies en geheugenlocaties zijn computerspecifiek
o Geen extra functionaliteit ten op zichte van machinetaal
▪ Nog altijd denken zoals computer uitvoert
Complexe, geavanceerde programma’s ontwikkelen
→ nood aan primitieven: instructies van een hoger niveau beschrijven
▪ Voordeel: handig en efficient voor instructies die veelvuldig
gebruikt worden
Primitieven hoger niveau: geautomatiseerd vertaald naar instructies lager niveau
voor uitvoering
o Translator, compiler, interpreter