3 ms·
I agree that this is important. My personal choice is to use pyenv together with poetry on a Linux machine. Yet, please understand that I teach this course to
by webartifex 7y ago
I agree that this is important.
My personal choice is to use pyenv together with poetry on a Linux machine.
Yet, please understand that I teach this course to absolute (!) beginners. That is why I chose to use the Anaconda Distribution in class, which comes with every package installed that I want my students to study.
Making your first steps in programming is hard enough and so I want to keep the "boiler plate" as small as possible.
But dependency management will be part of the more "advanced" lectures I will do in the future.
- Waterluvian 7y agoI hear you. There's probably no one "right" answer because as I type this, I'm already conflicted with my own opinion. There's already a mountain of important topics to teach. What's on my mind is that all of the "meta" parts of programming are usually seen as "boilerplate" when they make up such a critical part of "authoring" meaningful software. I'm approaching this concern from my personal experience in university. I took a 100 level "CS for Non-CS majors." We did all the formal CS stuff like talking about variables, functions, loops, recursion, etc. but by the end of the course I was still never taught how to take my java applications and package them in a way that I could share with my friends. It felt very much, "you can do so much with a computer... as long as you stay within the environment we rushed you through setting up and use the few libraries we gave you." (I wrote a Reversi game for my girlfriend and shipped it by installing the entire development environment on her laptop! Hah.) I guess my $0.02 is, maybe near the start, I would have loved a little detour block, "If you want to learn how to take these Python scripts/programs we're writing and share them with the world, check out this advanced chapter at the end of the book!" The same might probably be true for, "if you want to play with other Python libraries, take a peek at this chapter that talks about pypi and environments!"
- webartifex 7y agoGood idea. This will go into the course in the future.
- Wowfunhappy 7y agoAs a related note, this is what I think we really lose as we move to computing environments like the iPhone with absolutely mandatory code signing. I've heard it said that "oh, if you're a kid with an iPad and you just want to learn, you can download the little Swift playgrounds app, easy!" But the thing is that the children I've worked with don't want to create stuff inside a toy app that only other people with the toy app can use—they want to create programs that feel real. Sure, maybe the only thing that real app does is display a guess-the-numbers game, but still, you can install it on the computers of your parents and friends and say "look, I made this app!" iOS devices just don't let you do it. Android, Windows, and macOS does, and I really hope we don't loose that in the name of security.
- xapata 7y agoConda is a fine alternative, and perhaps superior to pipenv.
- jfarmer 7y agoIt might seem painful, but the fact is students will be reading lots of material besides what you personally prepare. That material will be referencing all sorts of "advanced" boilerplate things. One of the highest-impact things you can do is orient them in a way to understand outside material more effectively. It doesn't have to be comprehensive, but they're going to see things like "pipenv" and "virtualenv" in outside material sooner rather than later.