
On Tue, Sep 20, 2016 at 09:34:12AM +1000, Chris Angelico wrote:
It's more than that, though. When a student is given an assignment, it's usually to help said student to learn to *write code*, not to learn how to walk into the plumbing store of PyPI and look for something that approximates to the job being done.
That might be sufficient for theoretical computer science courses, but it is *far* from sufficient for learning to be a professional programmer. I think that programmer education lets students down hugely. Knowing how to "walk into the plumbing store" to get a standard plumbing fixture is a skill programmers desperately need. (We also need better standard plumbing fixtures, but that's another story.) Failure to teach appropriate use of external dependencies, including when to use them and when not to, is part of the reason so many programmers suffer under Not Invented Here syndrome. It is not always appropriate to use PyPI, but being able to use it is an essential skill for programmers. To be a professional programmer, you need more skills than just writing code. You need to be able to estimate costs, write and use tests, write documentation, etc, and most relevant to this discussion, manage dependencies. Notice I didn't say "install dependencies". There is more to dependency management than just automatically installing any failed import.
Maybe it's different at university, but with my students, it's always been "no external libraries" (and in some cases, a common-sense avoidance of obvious solutions from the standard library - if you teach someone how to implement a sort and the response is simply "lst.sort()", it's not exactly implementing anything).
This is off-topic, but unless you are specifically doing an algorithms course, why would you bother teaching anyone to implement a sort? Do you teach them to implement their own float multiplication as well?
So the use-case for this isn't nearly as big as it might be. By the time you get to writing large applications (again, taking it from my students' work: a Flask-based web app), it's not illogical to have a requirements.txt and standard pip incantations.
Indeed. -- Steve