generated from mwc/quicksheet_oop
39 lines
1.7 KiB
Markdown
39 lines
1.7 KiB
Markdown
# 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
|
|
|