diff --git a/assessment.md b/assessment.md new file mode 100644 index 0000000..2895b72 --- /dev/null +++ b/assessment.md @@ -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) + + +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 +