Feedback on an "Intro to Julia" guide for a university course

Great catch! Indeed, I don’t think I want to introduce arbitrary-precision arithmetic right at the start… I’ll think rewriting this (either along the lines you / Benny suggest, or having a question that asks something like “%f is for floats, so how many of these digits do we expect to be correct?”… or just using %g instead.

Thanks for the kind words, and for the criticisms!

You are, of course, absolutely correct that “annotations” play distinct roles in different contexts, and I think your critique is spot on: the way I’ve written things could easily lead students to an incorrect mental model of :: as a monolithic feature. I think I need to spend some time (both from this, and also from Tamas Papp’s comments) thinking more about how I want to talk about types in this and in the later appendices.

A final comment: I do not want to imply that type annotations are generally desirable for performance, or get students into the habit of sprinkling type annotations as if it is magical fairy dust for their code. On the other hand (and please correct me if this is wrong!) I do want them to get in the habit of making sure that when they define structs they use annotations to make sure the struct’s fields are concrete.

Also, thanks for catching those typos!

(edit – I forgot to write the word “students” in the “A final comment:” sentence)

1 Like

Ah, that’s the fourth meaning of “type annotation”. And, yeah, that one is almost always a good choice.

3 Likes

Thanks for your continued thoughts on this (and for confirming your approach to teaching scope)!

A very fair point — perhaps I was enjoying writing a bit too much, and thus engaging in more hand-holding than is necessary.

Unfortunately, no (we currently have a shortage of TAs available, so they’re largely being reserved for the largest intro classes). It gives a bit of impetus to the project of trying to write something that might head off questions about minor problems that a TA could otherwise handle. As you say: it’s not a trivial task, and the cost-benefit analysis of attempting it is not a slam dunk. But if nothing else at least it’s a task I’m enjoying!

2 Likes

Happy to help, though I am not sure I am helping much; ultimately you are the one who knows these students best.

I would play it by ear: see how the students are doing in the first few homeworks, and go faster/slower accordingly.

1 Like

In my experience teaching this kind of material, this is not a concern. Even senior students often need way more hand-holding than you might expect. And if you do go overboard, they often don’t mind feeling like they know something already.

Increasingly, the real problem is that most students won’t (maybe can’t) read a section of a technical document from start to finish. They have cheerfully admitted as much to me. On top of that, modern computing has abstracted or obscured even filesystem basics for them their whole lives. The idea of dropping an undergrad straight into the Julia manual sounds…unwise…to me.

(Not all students, certainly, but there’s little point in worrying about what to do for the great ones.)

Students increasingly expect just-in-time delivery of solutions to today’s homework, a la LLMs. While that can work out for someone who has a basic understanding already, it’s not clear to me that it works for a raw beginner, and I haven’t figured out what to do about it. I can’t even get them to start assignments early enough to ask for real help in time.

10 Likes