quicksheet_oop/assessment.md

1.7 KiB

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