Closed AndreasArne closed 10 months ago
Gör om kmom01-03 genomgående. Ändra strukturen. Kolla https://www.mii.lt/informatics_in_education/pdf/INFE016.pdf, http://www.cs.au.dk/~mec/publications/workshop/11--ecoop2004.pdf Lägg till Classdiagram från början och ha som genomgående tema. Förklara privata attribut i kmom01 så kan få till abstraction med get/set metoder.
Se till att python är uppdaterat till 3.7 på studentservern och kolla in third edition av kursliteraturen, https://learning.oreilly.com/library/view/python-3-object-oriented/9781789615852/.
kmom01 redovisning uppgift, lägg redovisningstexter i person objektet.
Objek vs instans
jag tror att nyckelordet är ”individuell”. Jag tänker att instans är unik. Man kan gör en class Dog och varje hund som produceras är ”ett objekt”, dvs det är modellen av en hund men varje hund är en individuell instans, dvs det finns flera olika instanser men alla är objekt. Så skulle man ha flera variabler som dog1, dog2, dog3 så är alla objekt, men de är olika individuella instanser.
Kör getter setter kmom01. I kmom02 visa pythonic properties. https://www.python-course.eu/python3_properties.php Eller properties i kmom03 med uml och unittest Getters/setters ska bara användas för privata attribut, inte publika.
Kan använda decorator för att föra historik på bankaccount objekt. Varje transaktion som görs ska loggas. Kan lägga decorator runt alla transaktions metoder för att enkelt för historik.
Lab2 ändra från att implementera to_string() metoder till repr
kmom03 extrauppgift på svältaräv, stöd för fler spelare. Orginal ha bara två spelare. Klassdiagrammet ska innnehålla alla klasser nu när sekvens är borta,
kmom02 extrauppgift; lista alla frågor och vad jag svarade på dom i sista "poäng skärmen" tillsammans med min totala poäng.
kmom02 question uppgift, måste vara tydligare vad de tre questions klasserna representerar. Bestäm vilken som är bas och sub, så får tydligare klassdiagram?
Borde type: string verkligen vara bold med tanke på att det bara är "get_type" som används av koden? Jag döpte min till q_type för att inte skriva över pythons inbyggda method "type"
Kmom02 feedback:
Jag tycker att vissa saker borde ha varit klart i handler.py så att man fokuserar på det viktiga i det här kursmomentet. För det var ofta man fastnade problem som man egentligen inte har lärt sig om. Mitt förslag till nästa gång är att behåll så att man, precis som nu, man ska skriva all kod i questions.py enligt mallen. Men in handler.py ska metoderna has_next, read session, write_session ska vara iförväg klara i modulen. Dessa gav mest huvudvärk i onödan. Resten ska man fylla i själv. Detta tycker jag ger mer för studenten och låter den i detta skede fokusera på att lära sig. Jag tycker dock att i correct_answer metoden i handler.py så får man en länk till nyttig information om hur man hämtar information via form. Om det är via get eller form["etc"] eller getlist osv så att man ändå är i kontakt med "form" som hängde med i argumentet.
Jag tycker denna sortens uppgift är bra. Det känns lite mer "verkligt". Min uppmaning är ändå att fortsätta med sådana. Jo, en liten feedback på beskrivningen av session i artikeln/övningen. Det skulle behöva förtydligas vad vi faktiskt gör. Kanske en liten förklaringsvideo. Med olika exempel. Om vi ska lagra en lista i sessions, eller bara olika objektattribut osv.
Något går fel på studentservern om man har för många print statements i sin kod. man fårr 500 vid start
I övning när läsa från session lägg till att först kolla om nyckeln finns i session innan man hämtar värdet.
check_answer löses vanligen med respond == self._answer, skriv om frågan så funktionen ska vara annorlunda för checkboxes i alla fall.
ha all session kod färdig? många som hade svårt med den
Lägg till init i klassdiagrammet, visa parametrar.
Visa upp lättare exempel utan listcomprehensions och spara objekt i session. Många gör avancerade saker med to_json i uppgiften för att jag gjorde det i övningen.
Kmom03 war uppgift: Test kravet - det finns typ inga andra metoder än pop/append/return svårt att hitta mer än 5 intressanta metoder att testa.
Dock så anser jag att förklaringen på War-spelet är något förvirrande. Det finns inget angivet angående slutet av spelet, och de angivna reglerna leder till något oförutsedda slut till spelet. Men generellt anser jag att kursmomentet varit mycket lärorikt och intressant.
Jag tycker det fanns brister i sektionen Introduktion, där ett exempel på hur resultatet skulle se ut, presenterades. Jag tycker att exemplet inte gick igenom hur det skulle se ut när spelet var över, exempelvis. Det var ganska svårt att komma igång till en början, eftersom mycket i uppgiften lämnades öppet för egen tolkning. Detta skulle kunna vara både positivt och negativt. Negativt eftersom uppgiften blev ganska svårtolkad och det var svårt att se hur resultatet skulle se ut. Positivt eftersom man fick med ganska mycket egen fantasi strukturera upp programmet på ett så bra sätt som möjligt.
kmom05 rekursion: Lägg till övning/exempel från python for every one, sida 299 (thinking recursivly). Boken innehåller mycket om rekursion, kolla mer i den.
Fler övningar, https://www.geeksforgeeks.org/recursion-practice-problems-solutions/ nya att lägga in i labben?
Använd https://visualgo.net för allt om datastrukturer och algoritmerna?
kmom04 genomgång: Prata om pekar och minnesallokering som intro. Kolla genomgång från förra året. https://www.youtube.com/watch?v=PCQiNz0g4qA
kmom04, lista klassdiagram. Ta bort retur värden för add/insert/set/remove, ska slängas excception om inte går bra. Minska antalet metoder som ska implementers?
bara 6 av 21 på campus vara klara med kmom04 i tid. Ser bättre ut på distans men inte jätte.
Kmom04 uppgift med main och loop, de får för många branches valideringsfle med alla if och try/except. Hantera... kan ignorera de felen...
kmom05, ha inte bubblesort i uppgiften, byt till quicksort/merge sort? Bubbelsort ska aldrig användas. Sorteringsalgoritmer också?
Om de har gjot extra uppgifterna i kmom04 behöver de inte ändra någon kod i insertionsrt för att det ska fungera.
Förtydliga i uppgiftn att de ska skicka in hela listan till sortering och inte head noden.
Få in debugger?!?! eller i python kursen.
kmom06: inorder_traversal med yeild istället för print. """setitem getitem contains"""
extra: iterator för klassen så funkar i for x in bst:
Uppdatera test för remove. Nu räcker de med att de returnera värdet som finns i nyckeln, inget som kollar att nyckeln inte finns längre. I testet efter delete gör get på nyckeln och kolla att det inte finns längre. Gör en print i remove teste för att se att elementet är borta och resterande fortfarnade är kvar och i korrekt ordning.
Tabort krav om att remove ska vara rekursiv? Det verkar förvirra studenterna.
kmom05 extra uppgift sortering, "som extra uppgift att sortera alla string.isdigit() = false till höger :)"
Få in i kmom06, https://www.geeksforgeeks.org/advantages-of-bst-over-hash-table/?
Få in prestanda mellan olika DTS och sorterings algoritmer, ett körbart program de kan testa sina mot.
Göra ett kmom08 om grafer eller någon anna algoritm?
kmom06, lägg till länk, http://careerdrill.com/blog/coding-interview/choosing-the-right-data-structure-to-solve-problems/ för när man vill använda specifika datastrukturer.
lab i kmom04? små uppgifter med att skapa och koppla ihop noder och ta bort noder från varandra. Bara en nod klass, skapa noder, koppla ihop dem, koppla från någon typ?
Feedback från projektredovisning på campu VT19:
De kan behöva en kort refresher på dictionary (datatypen) i python innan projektet. De har ju inte använt det sen i python kursen typ. Det förklarar varför alla valde lista och tycker dictionary är svårare.
Proj: krav 3: finns inget att testa i Node typ. Grundkraven tycker många är aningen lätta, men samtidigt lite kluriga. Lägg till någon funktionalitet? I grundkraven.
Ändara uppgifter i kmom04 och 06 för att få de mer praktiska? http://careerdrill.com/blog/coding-interview/choosing-the-right-data-structure-to-solve-problems/ Så datastrukturerna används för att lösa problem de är bra på. Kolla på länken ovanför och se vi kan göra uppgift av vad man använder Queue/Lista/BST till.
Var tydlig med i kursen att de ska lära sig mer OO och testning i senare kurser och att fokus kommer vara datastrukturer och algoritmer.
En lab i kmom03 om testning? TDD på något sätt? labb i kmom04 om noder. En till labb i kmom06 om rekursion?
Fler korta video? Gör om de gamla?
Bra tips/tricks för en pythonic kurs: https://old.reddit.com/r/Python/comments/basnhi/python_programmers_of_reddit_whats_the_most/
Inkludera del i föreläsning om hållbarhet och hur effektiv kod påverkar CPU cyklar vilket ledar till mindre ström in i datorn.
Kmom01: