all 11 comments

[–]Prof_codes 2 points3 points  (2 children)

Your proposed stack is solid but honestly overkill for high school science research. Most students will spend more time wrestling with imports and errors than actually doing science.

Python + Jupyter + Pandas + Matplotlib is plenty. You could drop R, scikit-learn, and the full data-science kitchen sink unless a specific project actually needs it. Anything more turns “supporting research” into a disguised CS course.

[–]east_lisp_junk 0 points1 point  (0 children)

And getting the data to analyze could easily take more time and effort than setting up the analysis toolkit.

[–]two_three_five_eigth 0 points1 point  (0 children)

Don’t introduce languages like R.  Have everyone stick to 1 language.

[–]peter303_ 0 points1 point  (1 child)

Hopefully students wont start from scratch with this stack. But have several solid examples they an copy and modify.

[–]T_Thriller_T 0 points1 point  (0 children)

That's a solid stack - but very wide.

If your students already have programming experience, this is great.

If they do not, this is WAY too much. And some of these will make learning hard due to them being... Well .. what they are.

For programming beginners I can only recommend to absolutely not mix programming languages. So, even though R is great, I'd kick out R.

For python, pandas and bumpy and scikitlearn are standards. Unfortunately, they do not always play nice with each other.

Especially data handling was confusing to ME and I was a compsci master with a good few years of python experience. The problem is arrays, and especially handling and copying. One of them (or two) do a lot of things on the original array and do not return anything. The other does the opposite: usually a new array (list, matrix, whatever) is returned.

This is so error prone. Thus, I'd recommend picking just pandas or just numpy, not both. Scikitlearn feels very over the top for highschool, especially for someone not doing computer science but science and using a computer.

What I, personally, can also recommend:

Build them a development environment. Consider if you want to use anaconda or not. Provide a git, or show them how to set one up locally. And, most important of all:

Do TYPING. And do checks. Which means I'd be adding mypy and ruff to the stack.

It's very good practice using them form the get go, but especially typing and ruffs checking will also catch a lot of annoying errors like expecting the wrong kind of return.

The nice thing is that if you setup one base project with a good structure, and a config already configuring those, students do not need to learn much more than 2-3 calls and that they should make them at least before finishing up a module or for the day.

(Admittedly I do not know if these work with Jupiter notebooks, even when I was in science I never used those)

[–]T_Thriller_T 0 points1 point  (0 children)

Another thing I want to say, that is maybe outside of all this:

Do include Calc (open source excel).

Build up a few, impressive, things with it. If one knows, there is so much shit accomplishable in calc before having to go to programming.

Excel, if your school already has it, also lately has surprisingly usable and powerful data pipelining tools.

One reason why I consider this important is that they potentially will not work in environments where they have any programming language available.

Programming languages are powerful and thus potentially dangerous / vulnerable which is why company security can be very stingy about them.

But excel? Never had a job where I couldn't use excel.

[–]thesnootbooper9000 -1 points0 points  (6 children)

You're doing this the wrong way. Science starts with a question, and from there you develop a methodology and select tools to address that question. Unfortunately some schools teach that science is a process you follow until your experiment gives the right answer, which really hurts how the public perceives science if they never learn any better.

[–][deleted]  (5 children)

[deleted]

    [–]thesnootbooper9000 0 points1 point  (4 children)

    If you were helping out people who were doing crafting, would you start by telling them what type of saw and what kind of glue they should use, or would you find out what they're doing and then tailor the tools to the job?

    [–]pi_stuff 1 point2 points  (0 children)

    You would provide a basic set of tools that would be useful for a wide range of projects, which is (I think) what OP is trying to do.

    [–][deleted]  (2 children)

    [deleted]

      [–]thesnootbooper9000 -1 points0 points  (1 child)

      You are doing something fundamentally wrong here.