Hi Ricky, A couple people have said this but I'll ask again because I am curious: > would it be possible to delay introduction of None entirely until it's time > to introduce is? >
This maybe comes down to course tactics. I happen to like doing algorithms with data arranged in 2d from the start - you can show the kind of before/after data state in a way that is easy for the students to see, to understand what their code needs to do, and the 2d is a rich enough domain that there's a zillion algorithms you can cook up. However, in the 2d, it comes up that you need a representation for when a square is empty, and I think None is the right value for that. Students have no problems understanding the role of None. You could use a string constant 'empty' or something as a workaround. But I think just showing the None is the right way. It's a Python course, here's a situation where None is the appropriate Python approach, so probably this is the week to show them None. A teacher could just use strings and ints and this would not come up, but I love the 2d early for the richness of the examples and homeworks you can do with it. Best, Nick On Wed, Sep 1, 2021 at 11:06 AM Ricky Teachey <ri...@teachey.org> wrote: > On Wed, Sep 1, 2021 at 1:32 PM Nick Parlante <n...@cs.stanford.edu> wrote: > >> In fairness to Nick, he is not talking about the real world. Nick is >>> talking about the hot-house environment of *education*, where fragile >>> newbies are generally protected from real world issues. >> >> >> Let me unpack this just a teeny bit. We don't need to think of the >> students as fragile. Think of it as where the minutes go. >> >> Like why is Java worse? You are trying to explain about comparisons, and >> you need like 30 minutes for Java where the number of different required >> comparison facilities is big, and it just looks needlessly complicated. >> What is the problem with that? Think of it this way: I wanted to talk about >> *algorithms* and solving real problems .. like those are the best uses of >> lecture time and examples. If the language injects something that you feel >> is not such a great use of time, you notice that those minutes are taken >> away from the actual course goals. >> >> Now for Python, == vs. is nothing like that bad. Both == and is are >> sensible, necessary parts of the language, I would just prefer to talk >> about == earlier and is later. Of the two, == is the no-brainer one when >> the students just have ints and strings, and no-brainer is what you want in >> week 2. >> >> For teaching, you are not just identifying the 500 important things they >> need to know. To teach artfully, you are trying to think of an ordering, >> layering on 50 new things each week, where the subest achieved each week is >> internally coherent and you can do a project just using that subset, and at >> the end of the course you've gotten through everything. >> >> Best, >> >> Nick >> > > A couple people have said this but I'll ask again because I am curious: > would it be possible to delay introduction of None entirely until it's time > to introduce is? > > The biggest thing None seems to be needed for beginners is to learn the > idiom for function signature default arguments for mutable parameters (the > classic "Least Astonishment" and the Mutable Default Argument problem > <https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument> > ). > > If the goal of the course is to get as quickly as possible to > *algorithms* and solving real problems, then I don't see why you even need > to teach default arguments at all. > > --- > Ricky. > > "I've never met a Kentucky man who wasn't either thinking about going home > or actually going home." - Happy Chandler > > > >
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/32UKW5DW676DOKGEMJJ6VBFKCUX5VYEO/ Code of Conduct: http://python.org/psf/codeofconduct/