# 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) 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