dbwebb-se / oopython

Course in OO Python
Other
5 stars 3 forks source link

Utveckling inför VT20 #12

Closed AndreasArne closed 10 months ago

AndreasArne commented 5 years ago

Kmom01:

AndreasArne commented 5 years 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.

AndreasArne commented 5 years ago

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/.

AndreasArne commented 5 years ago

kmom01 redovisning uppgift, lägg redovisningstexter i person objektet.

AndreasArne commented 5 years ago

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.

AndreasArne commented 5 years ago

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.

AndreasArne commented 5 years ago

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.

AndreasArne commented 5 years ago

Lab2 ändra från att implementera to_string() metoder till repr

AndreasArne commented 5 years ago

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,

AndreasArne commented 5 years ago

kmom02 extrauppgift; lista alla frågor och vad jag svarade på dom i sista "poäng skärmen" tillsammans med min totala poäng.

AndreasArne commented 5 years ago

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"

AndreasArne commented 5 years ago

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.

AndreasArne commented 5 years ago

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.

AndreasArne commented 5 years ago

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?

AndreasArne commented 5 years ago

Använd https://visualgo.net för allt om datastrukturer och algoritmerna?

AndreasArne commented 5 years ago

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

AndreasArne commented 5 years ago

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?

AndreasArne commented 5 years ago

bara 6 av 21 på campus vara klara med kmom04 i tid. Ser bättre ut på distans men inte jätte.

AndreasArne commented 5 years ago

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...

AndreasArne commented 5 years ago

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.

AndreasArne commented 5 years ago

Få in debugger?!?! eller i python kursen.

AndreasArne commented 5 years ago

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.

AndreasArne commented 5 years ago

kmom05 extra uppgift sortering, "som extra uppgift att sortera alla string.isdigit() = false till höger :)"

AndreasArne commented 5 years ago

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.

AndreasArne commented 5 years ago

Göra ett kmom08 om grafer eller någon anna algoritm?

AndreasArne commented 5 years ago

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.

AndreasArne commented 5 years ago

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?

AndreasArne commented 5 years ago

Feedback från projektredovisning på campu VT19:

AndreasArne commented 5 years ago

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.

AndreasArne commented 5 years ago

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.

AndreasArne commented 5 years ago

Ä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.

AndreasArne commented 5 years ago

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.

AndreasArne commented 5 years ago

En lab i kmom03 om testning? TDD på något sätt? labb i kmom04 om noder. En till labb i kmom06 om rekursion?

AndreasArne commented 5 years ago

Fler korta video? Gör om de gamla?

AndreasArne commented 5 years ago

Bra tips/tricks för en pythonic kurs: https://old.reddit.com/r/Python/comments/basnhi/python_programmers_of_reddit_whats_the_most/

emilfolino commented 5 years ago

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.