Reading this question Do we really need OO languages to manage software complexity? on one of SE sites and my own experiences in teaching object-oriented concept, e.g. Some real practical example to teach object-oriented concepts and programming (in python) has kept me wondering what are common questions students may ask when they first learn OOP ?
For example in that question the author asked,
I am a beginning CS student ... In the first semester we were introduced to OOP concepts like encapsulation, data hiding, modularity ...
But I think all the principles used to manage complexity like modularity, encapsulation, data hiding and so on can be very easily implemented by procedural languages. So why really OOP if we can manage complexity without it?
I also have to admit that I have own struggle, e.g I asked this question Does OOP overemphasize the importance of noun and thus put action/verb in the less importance position ? on that site too (no student has asked me this question though). My question was closed and even got 2 delete votes but that is alway my concern.
If my students or my colleagues who have experience with javascript and like to learn OOP, I will always let them compare momentjs with date-fns, both deal with date and provide the similar functions, both do a good job, but momentjs an OOP library and date-fns is a function library.
My purpose is let them understand there are more than one ways to do things.
So what are common questions your students ask ?
foreach item in list: process(item)
), after unconstrained iteration (for i is 0 while i< length(list): process( item i of list); add one to i
), as constrained will seem like it is not needed (as it is not needed, but it does make the code simpler). $\endgroup$