Module 1A: Algoritmes en Software Flashcards

1
Q

Grote voordeel computers

A
  • Ze zijn niet beperkt tot 1 specifieke taak, maar programmeerbaar voor meerdere taken via softwareprogramma in een specifieke programmeertaal (bv. Java, C++, Python,…) = computerafhankelijk.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Wat is een softwareprogramma?

A

Softwareprogramma → vertaald naar een uitvoerbaar of executeerbaar programma dat uitgeschreven is in termen van de specifieke instructies die gekend zijn door de computer die je wenst te gebruiken, inclusief kennis van de beschikbare geheugens, invoer en uitvoer. De computer voert aldus de gewenste taak uit naar het beoogde einddoel toe.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wat is een algoritme?

A
  • Eindige reeks instructies om een (wiskundig) probleem op te lossen, d.w.z. een procedure om het probleem van een gegeven begintoestand naar een beoogd einddoel te brengen. Het is vergelijkbaar met een recept om een gerecht te bereiden.
  • Voorbeelden:
    • Tekenen cirkel op een computerscherm
    • Het numeriek berekenen van de oplossing van een veeltermvergelijking van hogere orde
    • Het bepalen van de resultaten van een zoekactie in een webbrowser
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Zijn er meerdere algoritmes voor hetzelfde probleem mogelijk?

A
  • Op te lossen probleem vaak wiskundig gedefinieerd en er zijn ook meerdere algoritmes mogelijk voor hetzelfde probleem, maar meestal wel verschil in hoeveelheid tijd en of hardware die nodig is om het probleem op te lossen = complexiteit of efficiëntie van het algoritme.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Staat een algoritme volledig los van computers?

A
  • Ja, maar in de praktijk worden meestal computers gebruikt voor uitvoering algoritmes.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wat is de implementatie van algoritme?

A
  • Daar waar een algoritme dus de beschrijving is van de oplossingsprocedure van een probleem, is het overeenkomstige computerprogramma (software, geschreven in een of andere programmeertaal) de implementatie van dat algoritme.
  • Bij de uitvoering van het computerprogramma is het belangrijk dat het algoritme effectief de juiste taak uitvoert en het correcte resultaat genereert.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wat neemt toe in onze samenleving?

A
  • Door toenemende rekenkracht van computers, neemt het aantal softwareprogramma’s toe. Daarom nemen ook ethische en juridische implicaties toe van software.
    • Bv. foto’s manipuleren en misbruiken.
  • Hoe krachtiger de mogelijkheden van software, hoe moeilijker het is om echt van fake en bonafide van malafide te onderscheiden:
    • Bv. softwarematig afslanken van je gezicht kan een verkeerd ideaalbeeld creëren en anderen aanzetten tot plastische chirurgie om ook hun gezicht af te slanken
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Uit wat bestaat een algoritme?

A
  • Typisch meerdere stappen in sequentie die zich kunnen herhalen (iteratie) of die beslissingen (logica of vergelijkingen) vereisen om de taak te voltooien.
    • Een simpel voorbeeld is het algoritme van Euclides om de grootste gemene deler van twee getallen a en b te bepalen. Het algoritme gebruikt de twee wiskundige variabelen A en B.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Hoe stellen we een algoritme voor?

A
  • Vaak wordt dit ook als stroomdiagramma (flowchart) voorgesteld, maar een wiskundige formulering of een formulering in pseudo-computercode is even handig.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wat is declaratieve kennis?

A
  • Feitelijke uitspraak over een aspect uit de wereld, geeft de definitie van een probleem:
    • Bijvoorbeeld is de wiskundige uitdrukking voor de punten die in het tweedimensionale (x, y)-vlak op een cirkel met middelpunt (a, b) en straal r liggen als volgt: (x-a)2+(y-b)2= r2. Maar dit zegt niets over hoe je dergelijke cirkel op een computerscherm moet tekenen.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Procedurele kennis

A
  • Procedurele kennis
    • Bv. zet je vanuit een startpunt een klein stapje vooruit, dan draai je over een aantal graden en zet je weer een stapje, enz. Als je heel kleine stapjes en draaihoekjes neemt wordt dit uiteindelijk een cirkel.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Aan welke vereisten moet een algoritme voor ingenieurs en informatici voldoen?

A
  1. Correctheid
  2. Eindigheid
  3. Uitvoeringssnelheid
  4. Robuustheid
  5. Elegantie
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Correctheid

A

Het algoritme moet correct zijn, d.w.z. de juiste output geven voor een gegeven input.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Eindigheid

A

Het algoritme moet in een eindige tijd stoppen met een zinnig antwoord.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Uitvoeringssnelheid

A

Hoe snel berekent het algoritme het gewenste antwoord

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Robuustheid

A
  • Kan het algoritme overweg met alle mogelijke vormen van invoer, zelfs onverwachte of foutieve invoer (bv. als men een negatief getal of iets dat geen getal is ingeeft in een programma om de vierkantswortel te berekenen)is het algoritme (de computercode) leesbaar en begrijpbaar voor de programmeurs?;
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Elegantie

A

Is het algoritme (de computercode) leesbaar en begrijpbaar voor de programmeurs?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Wat zijn enkele recentere uitdagingen die eveneens belangrijk zijn?

A
  1. Is een algoritme ethisch? Zeker als we algoritmes autonoom beslissingen laten nemen (bv. een algoritme dat autonoom CV’s scant en preselecteert voor een jobvacature)
  2. Is een algoritme duurzaam?
    • Wat is de impact op het milieu? (bv. een simpele zoekactie in een browser heeft een sterke ecologische voetafdruk omdat het elders ter wereld een rekenpark laat werken om de zoekresultaten te berekenen).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Wat zijn de eisen van de eindgebruiker?

A
  • Het computerprogramma dat het algoritme implementeert moet eenvoudig om gebruiken zijn, er mooi uitzien, niet te duur zijn, en zo verder.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Hoe kunnen we algoritmes classificeren?

A
  1. Deterministische
  2. Probabilistische of stochastische
  3. Slimme algoritmes of machinaal leren
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Deterministische algoritmes

A
  • Deze algoritmes produceren voor een gegeven invoer steeds dezelfde uitvoer, waarbij het algoritme steeds dezelfde sequentie van stappen doorloopt (een voorbeeld is bovenstaand algoritme van Archimedes om de grootste gemeenschappelijke deler te berekenen).
22
Q

Probabilistische of stochastische

A
  • Algoritmes die, zelfs voor dezelfde invoer, een verschillende uitkomst kunnen genereren, vaak afhankelijk van een willekeurig (random) proces dat bewust in het algoritme gebruikt wordt (bv. een algoritme voor het oplossen van een optimalisatieprobleem dat vertrekt vanuit een willekeurig startpunt of dat op willekeurige wijze opeenvolgende stappen genereert, waardoor opeenvolgende uitvoeringen van het algoritme tot verschillende oplossingen kunnen leiden).
  • Vaak worden dergelijke niet-deterministische algoritmes gebruikt om een goede benaderende oplossing te bekomen wanneer de rekentijd om de exacte oplossing door deterministische algoritmes te berekenen veel te lang zou duren.
23
Q

Slimme algoritmes of machinaal leren

A
  • Dit zijn algoritmes die zichzelf automatisch verbeteren op basis van vroegere ervaringen. Hoe meer het algoritme traint met nieuwe data, hoe beter het algoritme (meestal) wordt.
  • Hiertoe bouwt het algoritme een model van het probleem op op basis van de trainingsdata, en vervolgens gebruikt het dat model om de uitkomst te bepalen voor nieuwe invoer. Machinaal leren behoort tot het domein van de kunstmatige of artificiële intelligentie
24
Q

Voorbeelden slimme algoritmes

A
  • Bv. zoekmodule browers

Routebepaling Waze

Online shoppingdiensten

25
Q

Hoe worden slimme algoritmes gebruikt?

A
  • Gebruikt bij machinaal leren (machine learning), artificiële intelligentie (AI) met zoveel mogelijk data om de werking en doelmatigheid van het algoritme zelf te verbeteren.
  • De uitvoering van dergelijke algoritmes wordt mogelijk gemaakt doordat computers momenteel voldoende rekenkrachtig zijn en de geheugens voldoende groot en ook doordat er nu massaal veel gegevens beschikbaar komen om te trainen.
26
Q

Welke belangrijke vraag stelt zich bij slimme algoritmes?

A
  • Betekenis van een algoritme hangt af van het standpunt: Google allemaal verschillende algoritmes.
  • Zijn zo’n softwareproducten nog wel te doorgronden of te begrijpen hoe ze tot hun beslissingen komen?
  • Wie is er verantwoordelijk voor het gedrag?
    • Verkopers of aanbieders software
    • Software ingenieurs die de software programmeerden?
    • Gebruikers die het algoritme trainen of bijsturen?
27
Q

Hoe komt in het algemeen een softwareprogramma tot stand?

A
  • Softwareontwikkeling is een productieproces door verschillende groepen programmeurs. Typisch bestaan softwareprogramma’s tegenwoordig uit verschillende “lagen” softwarecode bovenop elkaar, vaak door verschillende mensen en bedrijven ontwikkeld.
28
Q

Wat beïnvloedt de softwareontwikkeling?

A
  1. Wie is de eindgebruiker (andere programmeurs of de eindgebruiker of is het ingebed in een apparaat)?
  2. Is de software bedoeld voor open source (d.w.z dat de software voor het brede publiek beschikbaar is en door iedereen (vaak gratis) kan gebruikt worden) of propriëtair (d.w.z. dat je enkel een licentie op een uitvoerbare versie kunt bekomen (tegen betaling))?
  3. Wat is de vereiste veiligheid of de gewenste graad van zekerheid over een correcte uitvoering?
  4. Wat zijn de vereisten in termen van snelheid en de types van machines waarop de software moet draaien?
29
Q

Hoe wordt software geschreven?

A

Typisch in broncode (=source code) in een voor programmeurs leesbare programmeertaal (= Bv. Python, C++, Java,…) die dan door een computer gecompileerd wordt in uitvoeringscode (‘execution code’), deze is binair maar kan door computers worden begrepen en uitgevoerd.

30
Q

Waarom is broncode relevant?

A

Juridisch gezien omdat die vaak grotendeels automatisch worden gegenereerd door applicatiesoftware.

  • Als je naar de broncode van die pagina in HTML gaat kijken (meestal “Ctrl+U” of de rechtermuisknop en “bron weergeven” klikken), is die code natuurlijk niet allemaal ingetikt door een programmeur; integendeel, de grafische ontwerper van de krant gebruikt een webpaginalayoutprogramma om snel websites te creëren dat vervolgens automatisch de overeenkomstige HTML-code genereert die dan door de webbrowser wordt omgezet in de grafische webpagina die je op je scherm ziet.
31
Q

Wat zijn de verschillende types van software?

A
  1. Programmeertalen
  2. Besturingssystemen
  3. Communicatieprotocollen
  4. Toepassingen of applicaties
32
Q

Besturingssystemen

A

Windows, Linux, Android,…

33
Q

Communicatieprotocollen

A

TPC/IP, ftp,…

34
Q

Toepassingen of applicaties

A

Apps, games, tekstverwerker, browser,…

35
Q

Wat zijn bugs?

A
  • Softwareprogramma’s bevatten steeds fouten waardoor ze hun functie niet (geheel) volgens de specificaties vervullen.
  • De impact van een bug naar de gebruiker toe kan natuurlijk sterk verschillen afhankelijk van de aard van de bug; de meeste bugs worden niet als storend ervaren of treden slechts in zeldzame omstandigheden op.
  • Debuggen: Traceren en verwijderen van bugs → leidt typisch tot meerdere updates van de software.
36
Q

Welke soorten gebreken kunnen we onderscheiden vanuit juridisch standpunt?

A
  1. Technische gebreken
  2. Functionele gebreken
  3. Belevingsgebreken
37
Q

Technische gebreken

A
  • Dit wil zeggen het niet of niet goed functioneren van software zonder dat aan het gebrek een gebruikershandeling ten grondslag ligt.
    • Het vastlopen van de computer door een softwarefout of door rekenfouten.
38
Q

Functionele gebreken?

A

De e software functioneert technisch wel, maar doet functioneel niet wat de gebruiker daarvan verwachtte. De uitkomsten van het systeem zijn voor de gebruiker bijvoorbeeld niet bruikbaar (genoeg), bv. voldoen ze niet aan wettelijke vereisten.

39
Q

Belevingsgebreken

A
  • De software functioneert technisch en functioneel goed, maar de gebruiker had daar andere verwachtingen van. Deze belevingsgebreken zijn soms terug te voeren op interpretatieverschillen ten aanzien van de overeengekomen specificaties.
  • Een afnemer kan de software bijvoorbeeld niet gebruiksvriendelijk vinden. De beleving kan ook de uitleg van het afgesloten contract betreffen, bv. als de leverancier de werkende software niet verder ontwikkelt.
40
Q

Wat is het onderscheid met hoe software wordt aangeboden?

A
  1. Propriëtaire software
  2. Open source
41
Q

Propriëtaire software

A
  • De meeste commerciële software valt hieronder, is eigendom van een leverancier.
    • Bv. Microsoft Office.
  • Gebruiker koopt een gelimiteerde gebruikslicentie, krijgt geen toegang tot de broncode en kan software niet wijzigen of wijzigingen verspreiden → pakket is onaantastbaar voor gebruiker en leverancier is de enige die inzage heeft in de software en wijzigen kan en mag aanbrengen.
  • Bugs worden behandeld via gebruikers die ze melden of rapporteren, maar de leverancier dient ze op te lossen in een update of latere versie van de software.
42
Q

Opensourcesoftware

A

De broncode (source code) wordt vrijgegeven en de gebruiker krijgt vaak de licentie om naast gebruiker ook ontwikkelaar te zijn.

Voorbeelden:

  • Apache webserver
  • Mozilla Firefox browser
  • Mozilla Thunderbird e-mailclient
43
Q

Wat geeft open source voor mogelijkheden?

A
  • Beschikbaarheid van de broncode geeft gebruikers de mogelijkheid om de software bestuderen, aan te passen, te verbeteren, te verspreiden of te verkopen.
  • De ontwikkeling van opensourcesoftware komt vaak tot stand op publieke en gemeenschappelijke wijze, door samenwerking binnen een ‘community’ van zowel individuele programmeurs als overheden en bedrijven.
  • Voorkomt vendor lock-in van 1 enkele softwarefabricant.
44
Q

Hoe wijzigt opensource software?

A
  • De meeste gebruikers/ontwikkelaars trachten hun wijzigingen in het originele pakket te krijgen door het bij de community aan te bieden; het onderhoud van de wijzigingen ligt dan immers ook bij het originele team.
  • Als dat niet kan, dan kan de gebruiker altijd een ‘fork’ (een eigen versie) van de software maken en dit pakket onder een gewijzigde naam publiceren en verspreiden, zelfs betalend, mits dit plaatsvindt binnen de voorwaarden van de licentie.
45
Q

Wat is een GPL-licentie?

A

General Public Licence: hierbij dient de software steeds open source te blijven, wat betekent dat ook de gewijzigde broncode steeds ter beschikking moet gesteld worden.

De BSD-licentie (BSD = Berkeley Software Distribution) laat wel toe om zelf propriëtaire afgeleide software te maken, mits de oorspronkelijke BSD-licentie vermeld wordt.

46
Q

Wat doen leveranciers van opensourcesoftware zoals bv. Red Hat?

A

Zij hebben diepgaande kennis van de pakketten die zij ondersteunen en focussen zich typisch op het verlenen van diensten, zoals bv. het ondersteunen van of het schrijven van specifieke extra modules voor klanten. Dankzij het opensourcemodel heeft een klant dus meer keuzevrijheid in leverancier.

47
Q

Wat zijn nog andere voordelen van opensource software?

A
  • Via de community zijn er meer personen betrokken bij de softwareontwikkeling waardoor bugs sneller gevonden worden en de softwarekwaliteit hoger kan zijn. Door participatie aan discussies in de community hebben zowel gebruikers als ontwikkelaars invloed op toekomstige wijzingen van de software.
48
Q

Wat is de Free Software Foundation?

A
  • Werd in 1985 opgericht om een publiek besturingssysteem voor computers te ontwikkelen; oorspronkelijk was dit het GNU project,[9] later leidde dit tot BSD Unix en GNU/Linux.
  • Dit leidde tot:
    • Het vrijgeven van de broncode van de Netscape Communicator browser in 1998 leidde tot de oprichting van het Open Source Initiative, en was het startpunt voor vele bedrijven om opensourcesoftware te accepteren en aan te bieden
49
Q

Wat hebben enkele bedrijven gedaan sinds de vroege jaren ‘00?

A
  • Een aantal bedrijven een deel van hun broncode terwijl ze de belangrijke delen voor zich hielden.
    • Dit leidde tot de nu wereldwijd gebruikte termen Free Open Source Software en Commercial Open Source Software om het onderscheid te maken tussen helemaal open en halfopen vormen van opensourcesoftware.
50
Q
A