Basis Programmeren
Hoofdstuk 1: Inleiding
Waarom beleidsinformatica? Belangrijkste technologieën
- Uit het verleden? Bv. stoommachine, boekdrukkunst…
- Voor de toekomst? Bv. AI, zelfrijdende auto’s…
Gartner Hypecycle for Emerging Technologies
- Onderzoeksbureau (markt)
- Hypecycle (curve): nieuwe technologie wordt
snel gehyped, er ontstaat meteen veel
interesse; maar verwachtingen liggen vaak
hoog (bedrijven hebben schrik om niet mee te
zijn met de nieuwste ontwikkelingen)
terugkerend patroon
The age of digital
- Digitaal: informatie wordt opgeslagen als sequentie van 0 en 1
- Analoog: andere manier om data op te slaan/weergeven dmv analogie
Verschil zit in de manier waarop informatie wordt opgeslagen, niet in weergave
- Data (gegevens): alles wat je kan opslaan als 0 en 1’tjes
<->
Informatie: data die ook nut heeft voor een gebruiker
<->
Kennis: zit opgeslagen in je hoofd essentie leidt tot wijsheid
Informatiesystemen
- Data capteren, opslaan, bewerken, transformeren, rapporteren
- Hardware, software, database- en netwerktechnologie, gebruikers
Impact IT op macro-economisch niveau (tussen verschillende bedrijven)
De wereld verandert door IT
- Digitalisatie
o Omschakeling naar services industry
- Innovatie: nieuwe manieren van produceren/producten aanbieden/…
o Creative destruction: bestaande producten worden vernietigd, omdat ze niet meer
relevant zijn of waarvoor een beperkt doelpubliek overblijft
- Globalisatie: we zijn veel minder afh. van locatie
o Outsourcing = het uitbesteden van activiteiten aan andere ondernemingen
o Offshoring (delokaliseren) = het verplaatsen van een economische activiteit naar het
buitenland, owv kostenbesparing
Impact IT op micro-economisch niveau (binnen één bedrijf)
Informatietechnologie biedt bijzondere opportuniteiten aan bedrijven
- Toename in productiviteit: kosten verlagen
- Competitief voordeel: betere/nieuwere producten
- Positieve impact op bedrijfsvoering: IT gebruiken voor beter management
Om opportuniteiten te grijpen: nood aan goed beleid wat betreft het gebruik van IT!
Grondslagen van de beleidsinformatica: basiskennis IT voor een goed beleid wat betreft IT!
Programmeren = training in logisch, systematisch en abstract denken
1
,Basis Programmeren
Data, AI & emerging technologies
- Samenwerkingen O&O
o Financiële instellingen
Fraude detectie, krediet risico management…
o HR services bedrijven
Interne mobiliteit, retentie, talent management, compensation & benefit…
o Industriële bedrijven
Predictief en preventief onderhoud
o Telecom bedrijven
Klantrelatiebeheer
Hoofdstuk 2: Algoritmen en Programmeren
1 Algoritmen
Een algoritme is een eindige reeks instructies die vanuit een gegeven begintoestand naar een beoogd
doel leidt
maw een algoritme bepaalt hoe een welbepaald probleem kan worden opgelost
1. De stappen die nodig zijn
2. Om vanaf een welbepaalde beginsituatie
3. Een vooropgestelde uitkomst te bereiken
Instructies: welbepaalde elementaire handelingen
Specificering hangt af van de beoogde uitvoerder van het algoritme
Eindige reeks instructies?
o Anders wordt beoogd doel niet bereikt
o Eindig in aantal én tijd (laatste impliceert het eerste)
Bv. Chocoladecake recept
- Eindige reeks instructies: bereidingswijze
- Welbepaalde begintoestand: ingrediënten
- Beoogd doel: chocoladecake
Bv. Torens van Hanoi
- Welbepaalde begintoestand: alle schijven van groot naar klein op paal A
- Beoogd doel: alle schijven van groot naar klein op paal C
- Eindige reeks instructies: ?
Bv. Traveling Salesman Problem (TSP)
- Welbepaalde begintoestand: klanten b-f hebben pakje besteld
- Beoogd doel: kortste route om pakjes te leveren vanuit a
- Eindige reeks instructies?
Is een probleem oplosbaar?
- Is er een algoritme te bedenken om tot een oplossing te komen (in termen van een beperkte
set instructies)?
- Werkt dat algoritme steeds (voor alle mgl begintoestanden, specifiëring of instantiatie van de
taak)?
- Zijn er bepaalde voorwaarden voor de eingidheid vh algoritme (voor alle mgl
begintoestanden)?
- Wat is de kwaliteit van een gevonden oplossing (wordt steeds de optimale oplossing
gevonden)?
2
,Basis Programmeren
Instantiaties, correcte en incorrecte algoritmen
- Instantiatie van een probleem betreft een specifieke begintoestand en doel
Bv. een instantiatie van het TSP probleem vereist specifiëren van
o Het wegennetwerk (incl. reistijden)
o Locatie van klanten en hun vraag
o Beschikbare vloot (#trucks, laadcapaciteit…)
o Condities die van toepassing zijn op de opl bv. max. reistijd per chauffeur
- Correct algoritme bereikt voor iedere instantiatie het beoogde doel
o maw het algoritme lost het betreffende probleem op
- Incorrect algoritme bereikt niet voor iedere instantiatie het beoogde doel
o Voor sommige bereikt het mogelijks wel het doel
o Voor andere wordt mogelijks geen uitkomst gegenereerd en blijft het algoritme
eindeloos doorlopen
2 Computeralgoritmen
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
- Begintoestand: waarde of verzameling van waarden als invoer
o Computer kan enkel bits als invoer nemen
- Doel: waarde of verzameling van waarden als uitvoer
o Computer kan enkel bits als uitvoer produceren
- Instructies: computationele procedure
o Eindige reeks computer-uitvoerbare instructies
Sorteren van een rij gehele getallen
Bubble sort algoritme: initiële reeks van getallen overlopen, telkens een positie opschuiven en blijven
herhalen tot de hele rij correct gesorteerd is
Algoritme op een visuele manier noteren (kan ook met taal, computertaal…)
Business Analyst: beschrijven/analyseren, wat onze informatiesystemen juist moeten doen
Informatie doorgeven aan IT’ers
Bv. debiteren zichtrekening: vanuit perspectief systeem (pseudocode)
<->
Vanuit gebruikersperspectief: user stories
Een computationele procedure is een geordende reeks ondubbelzinnige, computer-uitvoerbare
stappen die een eindig proces beschrijven ( begintoestand, doel en instructies niet vermeld)
3
, Basis Programmeren
Een proces is een herhaalbare reeks afh. activiteiten met een welbepaald eindresultaat en startende
vanaf een welbepaald beginpunt
Wat is de betekenis en het belang van de termen?
1. Geordend: zorgvuldig opgebouwde structuur als het gaat om volgorde van stappen
o Willekeurige volgorde leidt niet (noodzakelijk) tot beoogde resultaat afh.
activiteiten
o Geen losse verzameling instructies, maar geordende set (tenzij anders gespecifieerd)
o Betekent niet dat ALLE stappen in vooraf vastgelegde volgorde uitgevoerd moeten
worden om hetzelfde resultaat te bekomen
Resultaat mgl bekomen door samenvoegen deelresultaten
Afzonderlijk realiseerbaar, los van elkaar, niet geordend
Parallel computing, multi-core processors
Multi-core processors: meerdere kernen, in iedere kern kan je berekeningen uitvoeren
Parallele (multi-threaded) algoritmen
- Omvatten meerdere reeksen stappen, die expliciet bepaald zijn in het algoritme, en
afzonderlijk uitgevoerd kunnen worden
- Die ontworpen zijn precies om door verschillende processoren in een multi-
processormachine uitgevoerd te worden
- Niet alle algoritmen kunnen (her-)ontworpen worden in een parallele structuur, bv. oorzaal-
gevolg ketens, verkeerssimulatie…
2. Ondubbelzinnig: vereist omdat computer niet kan interpreteren
o moet exact gezegd worden wat te doen in termen vd basisstappen/instructies die de
machine kan uitvoeren
bv. “een snufje zout” ondubbelzinnig?
o OF wel interpreteren? Algoritmes in ontwikkeling die een computer in staat stellen te
interpreteren
Bv. ChatGPT, DALL.E 2
3. Computer-uitvoerbaar
o Uitvoerbaarheid van de stap door een computer
o Maar NIET de eindigheid van de stap
Bv. genereer een willekeurig getal tussen 0 en 1 kan eigenlijk niet
muziek componeren kan
maak een lijst van alle natuurlijke getallen kan niet (oneindige reeks)
Om een stap uit te voeren kan mogelijks een reeks instructies nodig zijn
Indien al die instructies computer-uitvoerbaar zijn, is de uit te voeren stap zelf ook doenbaar
Instructies: verschillende niveau’s
o Laagste niveau: geen instructies die dubbelzinnig zijn, beperkte set basisinstructies
Instructies = bitsequenties die gevoed worden aan processor
Essentiële uitdaging bij het ontwikkelen van computer algoritmes: enkel
gebruik te maken van beperkte set computer-uitvoerbare instructies
o Maar: bestaande algoritmes kunnen als hoger-niveau of hogere-orde instructies
herbruikt worden
Bv. bubblesort in algoritme om percentiel-waarden te berekenen
Bv. ChatGPT om code te genereren obv beschrijving door gebruiker
4
Hoofdstuk 1: Inleiding
Waarom beleidsinformatica? Belangrijkste technologieën
- Uit het verleden? Bv. stoommachine, boekdrukkunst…
- Voor de toekomst? Bv. AI, zelfrijdende auto’s…
Gartner Hypecycle for Emerging Technologies
- Onderzoeksbureau (markt)
- Hypecycle (curve): nieuwe technologie wordt
snel gehyped, er ontstaat meteen veel
interesse; maar verwachtingen liggen vaak
hoog (bedrijven hebben schrik om niet mee te
zijn met de nieuwste ontwikkelingen)
terugkerend patroon
The age of digital
- Digitaal: informatie wordt opgeslagen als sequentie van 0 en 1
- Analoog: andere manier om data op te slaan/weergeven dmv analogie
Verschil zit in de manier waarop informatie wordt opgeslagen, niet in weergave
- Data (gegevens): alles wat je kan opslaan als 0 en 1’tjes
<->
Informatie: data die ook nut heeft voor een gebruiker
<->
Kennis: zit opgeslagen in je hoofd essentie leidt tot wijsheid
Informatiesystemen
- Data capteren, opslaan, bewerken, transformeren, rapporteren
- Hardware, software, database- en netwerktechnologie, gebruikers
Impact IT op macro-economisch niveau (tussen verschillende bedrijven)
De wereld verandert door IT
- Digitalisatie
o Omschakeling naar services industry
- Innovatie: nieuwe manieren van produceren/producten aanbieden/…
o Creative destruction: bestaande producten worden vernietigd, omdat ze niet meer
relevant zijn of waarvoor een beperkt doelpubliek overblijft
- Globalisatie: we zijn veel minder afh. van locatie
o Outsourcing = het uitbesteden van activiteiten aan andere ondernemingen
o Offshoring (delokaliseren) = het verplaatsen van een economische activiteit naar het
buitenland, owv kostenbesparing
Impact IT op micro-economisch niveau (binnen één bedrijf)
Informatietechnologie biedt bijzondere opportuniteiten aan bedrijven
- Toename in productiviteit: kosten verlagen
- Competitief voordeel: betere/nieuwere producten
- Positieve impact op bedrijfsvoering: IT gebruiken voor beter management
Om opportuniteiten te grijpen: nood aan goed beleid wat betreft het gebruik van IT!
Grondslagen van de beleidsinformatica: basiskennis IT voor een goed beleid wat betreft IT!
Programmeren = training in logisch, systematisch en abstract denken
1
,Basis Programmeren
Data, AI & emerging technologies
- Samenwerkingen O&O
o Financiële instellingen
Fraude detectie, krediet risico management…
o HR services bedrijven
Interne mobiliteit, retentie, talent management, compensation & benefit…
o Industriële bedrijven
Predictief en preventief onderhoud
o Telecom bedrijven
Klantrelatiebeheer
Hoofdstuk 2: Algoritmen en Programmeren
1 Algoritmen
Een algoritme is een eindige reeks instructies die vanuit een gegeven begintoestand naar een beoogd
doel leidt
maw een algoritme bepaalt hoe een welbepaald probleem kan worden opgelost
1. De stappen die nodig zijn
2. Om vanaf een welbepaalde beginsituatie
3. Een vooropgestelde uitkomst te bereiken
Instructies: welbepaalde elementaire handelingen
Specificering hangt af van de beoogde uitvoerder van het algoritme
Eindige reeks instructies?
o Anders wordt beoogd doel niet bereikt
o Eindig in aantal én tijd (laatste impliceert het eerste)
Bv. Chocoladecake recept
- Eindige reeks instructies: bereidingswijze
- Welbepaalde begintoestand: ingrediënten
- Beoogd doel: chocoladecake
Bv. Torens van Hanoi
- Welbepaalde begintoestand: alle schijven van groot naar klein op paal A
- Beoogd doel: alle schijven van groot naar klein op paal C
- Eindige reeks instructies: ?
Bv. Traveling Salesman Problem (TSP)
- Welbepaalde begintoestand: klanten b-f hebben pakje besteld
- Beoogd doel: kortste route om pakjes te leveren vanuit a
- Eindige reeks instructies?
Is een probleem oplosbaar?
- Is er een algoritme te bedenken om tot een oplossing te komen (in termen van een beperkte
set instructies)?
- Werkt dat algoritme steeds (voor alle mgl begintoestanden, specifiëring of instantiatie van de
taak)?
- Zijn er bepaalde voorwaarden voor de eingidheid vh algoritme (voor alle mgl
begintoestanden)?
- Wat is de kwaliteit van een gevonden oplossing (wordt steeds de optimale oplossing
gevonden)?
2
,Basis Programmeren
Instantiaties, correcte en incorrecte algoritmen
- Instantiatie van een probleem betreft een specifieke begintoestand en doel
Bv. een instantiatie van het TSP probleem vereist specifiëren van
o Het wegennetwerk (incl. reistijden)
o Locatie van klanten en hun vraag
o Beschikbare vloot (#trucks, laadcapaciteit…)
o Condities die van toepassing zijn op de opl bv. max. reistijd per chauffeur
- Correct algoritme bereikt voor iedere instantiatie het beoogde doel
o maw het algoritme lost het betreffende probleem op
- Incorrect algoritme bereikt niet voor iedere instantiatie het beoogde doel
o Voor sommige bereikt het mogelijks wel het doel
o Voor andere wordt mogelijks geen uitkomst gegenereerd en blijft het algoritme
eindeloos doorlopen
2 Computeralgoritmen
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
- Begintoestand: waarde of verzameling van waarden als invoer
o Computer kan enkel bits als invoer nemen
- Doel: waarde of verzameling van waarden als uitvoer
o Computer kan enkel bits als uitvoer produceren
- Instructies: computationele procedure
o Eindige reeks computer-uitvoerbare instructies
Sorteren van een rij gehele getallen
Bubble sort algoritme: initiële reeks van getallen overlopen, telkens een positie opschuiven en blijven
herhalen tot de hele rij correct gesorteerd is
Algoritme op een visuele manier noteren (kan ook met taal, computertaal…)
Business Analyst: beschrijven/analyseren, wat onze informatiesystemen juist moeten doen
Informatie doorgeven aan IT’ers
Bv. debiteren zichtrekening: vanuit perspectief systeem (pseudocode)
<->
Vanuit gebruikersperspectief: user stories
Een computationele procedure is een geordende reeks ondubbelzinnige, computer-uitvoerbare
stappen die een eindig proces beschrijven ( begintoestand, doel en instructies niet vermeld)
3
, Basis Programmeren
Een proces is een herhaalbare reeks afh. activiteiten met een welbepaald eindresultaat en startende
vanaf een welbepaald beginpunt
Wat is de betekenis en het belang van de termen?
1. Geordend: zorgvuldig opgebouwde structuur als het gaat om volgorde van stappen
o Willekeurige volgorde leidt niet (noodzakelijk) tot beoogde resultaat afh.
activiteiten
o Geen losse verzameling instructies, maar geordende set (tenzij anders gespecifieerd)
o Betekent niet dat ALLE stappen in vooraf vastgelegde volgorde uitgevoerd moeten
worden om hetzelfde resultaat te bekomen
Resultaat mgl bekomen door samenvoegen deelresultaten
Afzonderlijk realiseerbaar, los van elkaar, niet geordend
Parallel computing, multi-core processors
Multi-core processors: meerdere kernen, in iedere kern kan je berekeningen uitvoeren
Parallele (multi-threaded) algoritmen
- Omvatten meerdere reeksen stappen, die expliciet bepaald zijn in het algoritme, en
afzonderlijk uitgevoerd kunnen worden
- Die ontworpen zijn precies om door verschillende processoren in een multi-
processormachine uitgevoerd te worden
- Niet alle algoritmen kunnen (her-)ontworpen worden in een parallele structuur, bv. oorzaal-
gevolg ketens, verkeerssimulatie…
2. Ondubbelzinnig: vereist omdat computer niet kan interpreteren
o moet exact gezegd worden wat te doen in termen vd basisstappen/instructies die de
machine kan uitvoeren
bv. “een snufje zout” ondubbelzinnig?
o OF wel interpreteren? Algoritmes in ontwikkeling die een computer in staat stellen te
interpreteren
Bv. ChatGPT, DALL.E 2
3. Computer-uitvoerbaar
o Uitvoerbaarheid van de stap door een computer
o Maar NIET de eindigheid van de stap
Bv. genereer een willekeurig getal tussen 0 en 1 kan eigenlijk niet
muziek componeren kan
maak een lijst van alle natuurlijke getallen kan niet (oneindige reeks)
Om een stap uit te voeren kan mogelijks een reeks instructies nodig zijn
Indien al die instructies computer-uitvoerbaar zijn, is de uit te voeren stap zelf ook doenbaar
Instructies: verschillende niveau’s
o Laagste niveau: geen instructies die dubbelzinnig zijn, beperkte set basisinstructies
Instructies = bitsequenties die gevoed worden aan processor
Essentiële uitdaging bij het ontwikkelen van computer algoritmes: enkel
gebruik te maken van beperkte set computer-uitvoerbare instructies
o Maar: bestaande algoritmes kunnen als hoger-niveau of hogere-orde instructies
herbruikt worden
Bv. bubblesort in algoritme om percentiel-waarden te berekenen
Bv. ChatGPT om code te genereren obv beschrijving door gebruiker
4