Both for the midterm and for the final full fabric of all slides of CODE - a course called computational thinking. Theory and history behind programming in Python
SV Computationeel denken midterm
Isabelle van Aard
College 1 – Introductie
Computationeel denken: problemen zo formuleren dat ze door een computer kunnen worden
opgelost (sommige definities zijn te beperkend: “think like a
computer (scientist)”)
Afbeelding: aantal belangrijke aspecten van computationeel denken;
niet volledig: mist bv evaluatie.
Computationeel denken gaat terug op werk Seymour Papert (1980)
‘collaboration of computers and children’; leren door doen
Jeanette Wing (2006) computationeel denken in het Amerikaanse
onderwijs; problem solving skills staan centraal en worden toegepast
in programmeren
➢ Computational thinking is the mental skills and practices for
o designing computations that get computers to do jobs for us, and
o explaining and interpreting the world as a complex of information processes
➢ gebaseerd op eerdere definities, maar (erg) hoog-niveau
o designing komt overeen met omschrijvingen tot nu toe
o explaining and interpreting the world →heel ambitieus en veelomvattend..
➢ CODE gevormd door context; Computationeel denken in inku is ontwerpen en begrijpen van
ICT in relatie tot mens, organisaties en maatschappij
Information Retrieval (IR) houdt zich bezig
met het ontwerpen van zoektechnologie
- als ergens mensen en machines bij
elkaar komen is het hier
- zoektechnologie heeft de wereld
veranderd → Google (alles te
vinden) Spotify (playlist), etc.
College 2 – Achtergrond Python
Vanaf ∼1980: de programmeertaal ABC:
• Ontwikkeld op het CWI in Amsterdam
• Bedoeld als educatieve programmeertaal; Simpel, interactief, Compact, High-level
• Beperkingen van ABC
o Geen communicatie met randapparatuur (printer, muis, geluid)
o Geen grafische output, geen toegang tot bestanden
o Beperkte functionaliteit: te simpel, compact, high-level
1
, • Ontwikkelaar ABC: Guido van Rossum → Nieuwe taal: Python.
• Verbeterde, uitgebreidere versie van ABC (Onderdelen van Pascal en C) Eerste versie in 199
• Van Rossum heeft Python doorontwikkeld tot 2018
o Naam: Monty Python
• ABC zelf is ontwikkeld als verbetering van BASIC en Pascal
• Python heeft invloed gehad op Ruby (mid-jaren ’90)
• Stamboom van programmeertalen (vergelijkbaar met de stamboom van menselijke talen)
Ontwikkeling
• Veel nieuwe functionaliteit sinds 1991
o Omgaan met strings en Unicode Rekenen: hoeveel is 7/2? (antw nieuwere versies: 3,5)
• Fundamentele design-keuzes
o Verschillende manieren om hetzelfde te doen
o Gebruik van functioneel programmeren
• Verschillen Python 2 en Python 3
o Python 2: 2000 tot nu, end-of-life 2020
o Python 3: 2008 tot nu
o Onderling niet compatible
o Beide versies bestaan al ruim 10 jaar naast elkaar
o Erg onhandig voor programmeurs
• Leesbaarheid → Vanuit ABC: Engels in plaats van leestekens; Python is erg leesbaar.
• Scripting-taal: meteen beginnen met de taak
o Niet compileren
o Of: interactieve interpreter (Vanuit ABC)
• Python is wel gecompileerd, maar dit is niet zichtbaar voor de gebruiker
• Design-filosofie: leesbare code en eenvoudig te gebruiken
Twee verschillende manieren van programmeren:
1. Declaratief: voer kennis in over het domein en laat de computer met een algemene
oplossingsstrategie de taak uitvoeren (verdeeld in logisch programmeren en functioneel
programmeren)
i. Functioneel programmeren beschouwt een programma als een verzameling
wiskundige functies die gegeven een bepaalde input altijd dezelfde output geven
Geen side effects zoals nieuwe waardes voor variabelen. Erg handig voor
automatische programma-analyse, zoals bewijzen dat een programma correct is.
Niet altijd handig om te programmeren
ii. Logisch programmeren beschouwt een programma als een verzameling feiten en
regels Feit: het regent. Regel: als het regent word je nat. Conclusie: je wordt nat.
Je kunt het programma een vraag stellen (regent het? of: word je nat? ) en de
computer berekent het antwoord automatisch, gegeven de feiten en regels.
Principe: focus op wat, niet op hoe.
Niet altijd handig om te programmeren
2
, 2. Imperatief/ Procedureel: vertel de computer stap voor stap wat het programma moet doen:
i. Vertel de computer stap voor stap wat het programma moet doen.Veel code
schrijven Vaak eenvoudiger te bedenken dan bij declaratief programmeren.
Minder restrictief paradigma. Bijna alle belangrijke programmeertalen zijn
imperatief Java, JavaScript, C++, C#, PHP, Python → Python heeft ook elementen uit
functioneel programmeren.
➢ Python is een high-level programmeertaal; Ontworpen om leesbaar te zijn voor mensen
➢ De code moet vertaald worden naar low-level code
➢ Low-level code wordt omgezet naar binaire code (0 en 1)
➢ Binaire code wordt omgezet in stroom voor de processor
o 0 is laag voltage (geen stroom), 1 is hoog voltage (wel stroom)
➢ Het resultaat van de verwerking in de electronica is een voltage
➢ Dit wordt terugvertaald naar 0 en 1 → 0 en 1 wordt terugvertaald naar het resultaat voor de
gebruiker
o uitvoer op het scherm, aansturen wifi, geluid…
➢ Het vertalen naar low-level code gebeurt met een grammatica
➢ De grammatica analyseert elke regel programmacode
➢ bv: een rekenexpressie bestaat uit twee getalexpressies en een
operator een getal is 0..9, een operator is + of - of > of ... Python
bevat regels voor het omzetten operator + met twee
getalexpressies wordt omgezet in twee low-level LOAD-instructies
en een ADD-instructie.
➢ Python naar assembly
➢ Low-level code (assembly) wordt omgezet in binary
➢ Binary naar voltages
• Een processor bestaat uit miljoenen transistors
• Transistors zijn gemaakt van halfgeleiders (semiconductors) zoals silicium
(silicon)
• Een halfgeleider wordt op drie punten aangesloten
• De geleiding tussen twee punten hangt af van de stroom op het derde punt
• Hiermee kunnen logische poorten worden gemaakt zoals AND en OR waarmee
berekeningen worden gedaan
3
The benefits of buying summaries with Stuvia:
Guaranteed quality through customer reviews
Stuvia customers have reviewed more than 700,000 summaries. This how you know that you are buying the best documents.
Quick and easy check-out
You can quickly pay through credit card or Stuvia-credit for the summaries. There is no membership needed.
Focus on what matters
Your fellow students write the study notes themselves, which is why the documents are always reliable and up-to-date. This ensures you quickly get to the core!
Frequently asked questions
What do I get when I buy this document?
You get a PDF, available immediately after your purchase. The purchased document is accessible anytime, anywhere and indefinitely through your profile.
Satisfaction guarantee: how does it work?
Our satisfaction guarantee ensures that you always find a study document that suits you well. You fill out a form, and our customer service team takes care of the rest.
Who am I buying these notes from?
Stuvia is a marketplace, so you are not buying this document from us, but from seller IsabelleU. Stuvia facilitates payment to the seller.
Will I be stuck with a subscription?
No, you only buy these notes for $8.31. You're not tied to anything after your purchase.