636 karma · joined February 17, 2012
I've seen top-students who got fed up with the field, or with academics in general, and moved into industry after a bachelors. I've also seen average performing students discovering a love for research and going that route successfully. And anything in between.
Heck, even discovering that a field isn't for you and switching majors or dropping out for a bit is fine.
So, I recommend going someplace/some major you feel at home and then try as many different courses and activities until you discover what drives you. Then decide where to go next from there.
How can you verify the recommendations are sound, valid, safe, complete, etc., without trying them out? And trying out unsound, invalid, unsafe, incomplete, etc., recommendations might result in dead plants in a couple of weeks.
Anyway, two years later I got a brand-new laptop with good hardware that was running 98se. As far as I remember, it didn't crash during normal usage. By then I was studying computer science, and would sometimes write or run programs that would make it crash, but that was on me. I did dual boot in Linux, and that didn't have any problems on that machine either.
Fun fact, I still have that laptop, it's over 25 years old now, but it still works and runs Windows 98se!
, !
, !
ᴴᵉˡˡᵒ, ᵂᵒʳˡᵈ!
So, there's almost no bold/italic punctuation. And non-ASCII Unicode letters aren't "supported" this way either. But you can get quite far with "formatted" ASCII letters in Unicode, if you're so inclined.
If the course website was even on the open web to begin with. If they're in some university content management system (CMS), chances are that access is limited to students and teachers of that university and the CMS gets "cleaned" regularly by removing old and "unused" content. Let alone what will happen when the CMS is replaced by another after a couple of years.
For most students this wasn't easy, particularly compared to the way most of them were comfortable programming on their own by trial-and-error hacking away at a problem. Proving programs correct by construction takes a different skill. At the same time, it wasn't particularly hard either once you got going.
I don't think this way of teaching and learning programming was very useful or practical. With Dijkstra's students leaving the university, or otherwise losing primacy at the computer science faculty, Dijsktra's ideas faded away from the curriculum. Since then—I returned twenty years later to teach at this university—, the curriculum is very like any other computer science / engineering curriculum. And students seemed to have as much trouble with it as before.
What I missed about the curriculum when it was gone, was the consistency it brought into the curriculum. The curriculum felt as one continuous track to some clear idea of what it meant to be a programmer in Dijkstra's style. If you liked that idea, the curriculum was a great guide. If you didn't, it felt as a waste of time.
After all, they've just been bought. Usually this results in changes, despite new owner's loud promises that nothing will change.
I've taught in classes of 12 and of 32, the differences in students' behavior, and in reaction my own was huge.
Similarly, I've taught classes where students just came back from an hour of PA and classes that were the second class of the day. The former group of students had always trouble concentrating and focusing, whereas the other group would sometimes have trouble getting up to steam in many activities.
Similarly, I've taught classes that were obligatory for students and classes that were electives. Again, the differences in students' behavior was quite pronounced.
Given constraints and practicalities of our educational system, it is difficult to offer each student the best courses, activities, support, etc. they each individually need. Instead, you often end up compromising. Which isn't great. Particularly for students performing above or below average compared to their peers.
Anyway, just a frustrated ex-teacher here. Thanks for listening.
As for the added complexity to the compile or run-time system, that seems mostly an issue for language implementers, not users. It certainly won't be an issue for beginning programmers, so for them and their teachers, there's no tradeoff to pay for.
Of course, you can tell students to ignore most of the code until later in the course when they'll learn all about it, but that doesn't work. They'll make sense of the code within their limited understanding of programming and frames of reference. They'll build local theories of how and why these programming elements, like "static", "class", "main", "String[]" etc. fit together, how they relate to error messages they get when their programs don't compile or don't work.
Then, when they do reach the place in the course when they're to learn all about these concepts, they have to reconcile their own local theories with the material at hand to create a more thorough and evolved understanding of the concept. That's often not an easy process. In many introductory programming courses, there's not much time for reflection. As a result, their evolving understanding is likely closer to their initial understanding instead of the ones we aim at as teachers.
What's not helping here is that as experienced programmers who have developed a deep understanding of these concepts to understand novice's point-of-view and their struggles with the material.
Learning and teaching is hard!
As an aside, the organization I worked at before had two to four secretaries per floor. Before the pandemic, most were in their offices when you needed anything practical, like staples, batteries, etc. After the pandemic, most of them work from home most days of the week. That's great for them, but I've had days that I had to go through the whole building to get this or that.
These small informal conveniences and ways-of-working aren't on the organization's radar, and when they're gone, it takes some doing to get them organized again. Until then, and until everyone in the organization knows about the new ways of working, this can be quite frustrating and inefficient.
By the way, this definitely doesn't mean to glorify an organization and what they're doing. Far from it. They're just in it for continued existence and making some money, I suppose. But it is nice if an organization has some social utility, as compared to, say, sell advertisements for crap no-one needs. And I think, if that's important to you, you can refer to that when you're applying for a job.
Of course, if you're working in a field where there's much more candidates than jobs, this is pretty meaningless because you have to take whatever comes your way.
I assume the answer is more complicated than just pointing to a technological advancement. As usual, social-cultural issues will have been at play as well.
Nowadays, when I write by hand, it is always in haste, standing awkwardly in front of some flat surface, and using a scrap of paper and a partial dried-out pen I got for free a decade or more ago. No wonder my writing has gotten worse! And it wasn't good to begin with.
Now that I'm thinking about it, I've not kept the preparatory aspects of good writing from the past when I am "writing" on my computer. The keyboard is always there, a fresh "sheet of paper" always at hand, and it is so easy to edit and change my writing afterward, that I don't care much about thinking before writing.
However, I've seen students use Stack Overflow and other resources as a source of "program stamps":
- They enter their problem in an Internet search engine.
- Click on the first result with code in it.
- "Stamp it" on their own code: I.e., copy/paste it.
- Using editor/compiler, find any issues by trial and error and fix them so the editor/compiler doesn't complain anymore.
They might try a simple example or two to see if it works. And that's it.
There's not much reflection on their final solution, or on the bits they copy/paste. They don't seem to understand their solution, nor care about that or their problem solving process. They put in effort, they expect a passing grade.
Over the years I learned that doing this the other way around, thus starting by being helpful and then saying no, resulted in people seeing wiggle room and started to negotiated with me.