Add assessment

This commit is contained in:
Chris Proctor 2024-05-20 22:21:42 -04:00
parent 8b8c508cac
commit bb4fa86c98
1 changed files with 38 additions and 0 deletions

38
assessment.md Normal file
View File

@ -0,0 +1,38 @@
# Object Oriented Programming Quicksheet Assessment
Danielle,
This is a clear, specific, thoughtful writeup--though I have a couple of pedantic
notes. For example: although types and classes are exactly identical in Python...
>>> type(1)
<class 'int'>
this is definitely not true for other programming languages; it ends up being a big
deal when you get into more theoretical CS, for example the thrilling intersection
of programming language design and category theory!
Another: I wouldn't say state is a core part of OOP--it's more of a design pattern,
and actually has a bit of a functional programming flavor to it in that you're
putting your attention on a data structure rather than on objects.
You're right to point out inheritance and polymorphism as topics not covered in this
course--this was intentional. A lot of OOP frameworks in Python rely extensively
on inheritance, but I really wrestle with teaching this to beginners; inheritance
comes with a lot of cognitive load since you have to keep in mind invisible,
inherited functionality which makes it quite subtle to figure out why a program
is doing what it's doing. I went to some length to avoid needing inheritance in
`retro-games` and in `banjo`. What do you think?
Polymorphism isn't as prominent in Python as in Java, because Python isn't strongly-typed.
Everything is a bit ontologically promiscuous. Python frameworks do tend to rely
quite a bit on mixins, which are similar to polymorphism.
"I plan to give students a similar open-ended project that allows them to create something with programming that they find personally meaningful."
In my view, that's the most important part :)
Glad to have had you in the class!
-Chris