3
$\begingroup$

I'm not entirely sure if this is an international phenomenon, but every time I tutor students (Usually approximately age 14, and mostly without prior knowledge in programming) I ask myself the question I asked above.

By block graphics I don't mean simple patterns on a screen, which could be seen as an algorithmic exercise, but complete borders, screen colors, menus etc. Didn't they update their curricula for about two decades? Do they want to teach thoroughly that the DOS-window and Windows use different encodings? Any other ideas?

If they would teach ncurses the students would learn some real-world software development by reading the documentation of a library and also they wouldn't learn something nobody would ever use in the real world.

Another option would be to just skip user interfaces in DOS, which would definitely some saved time that could be "invested" in some other topics.

$\endgroup$
6
  • $\begingroup$ Good q. But could be improved with some "block graphics" code snipptes. Plus your preferred equivalent. $\endgroup$
    – Rusi
    Mar 10 at 7:30
  • 1
    $\begingroup$ What age of students? For kids, getting something interesting to show on the screen is a big draw, and block graphics doesn't take much sophistication. $\endgroup$
    – Scott Rowe
    Mar 11 at 18:17
  • 1
    $\begingroup$ @ScottRowe Usually approximately 14. And mostly without prior knowledge in programming. $\endgroup$
    – csabinho
    Mar 11 at 18:56
  • $\begingroup$ Well there's your answer. "Even dwarfs started small" $\endgroup$
    – Scott Rowe
    Mar 11 at 19:45
  • 1
    $\begingroup$ @ScottRowe The point why I'm asking this is that it's overly time-consuming(while not being complex or challenging) without any benefit. As I mentioned above: 1. it's DOS, which isn't really in use anymore, 2. it's not even a proper algorithmic exercise. $\endgroup$
    – csabinho
    Mar 11 at 19:53

1 Answer 1

3
$\begingroup$

I have not taught any of that myself, so I will not give a full-throated defense of the practice, but I will point to something you might not have thought of.

The purpose of a lab assignment is typically to get students to understand and work with a series of concepts being taught in class. That might mean that we focus on outdated technology, if the underlying learning goal is clearer there.

When I teach students about the basics of assembly, program pointers, and stack pointers, I don't delve into x86 assembly. It's too rich, too difficult, and (most importantly) obscures too many of the details I am trying to teach them. Instead, I use 6502. No one pretends that it's even remotely modern! I'm not tricking my students into thinking that they're learning the cutting edge. But the ideas that I am trying to get them to understand are there, on the surface, in a rich (and idea-rich) enough environment that students can delve.

Similarly, when I want to teach about manual buffer overflows, fuzzing, and shellcodes, I go back to a *nix virtual machine from the early 1990s, before there were stack protections. My learning goals are best served when the activity is hard, but nevertheless approachable enough that they can have some success at it with a bit of focus and guidance.

I never have to pretend that this is cutting-edge stuff, and the students never think that it is. I content, instead, that this is an excellent environment to learn the fundamentals of what a buffer overflow attack is, and how it works in an environment that is (again) quite rich, but lacking any sort of modern stack protections. I want them to do it by hand because I want them to really understand it, so I don't want those protections.

When I teach students about processor architecture, I again head towards a fake model processor. It's not that modern processors are uninteresting! It's that they obscure the fundamental basics that I need to show them. I use a fictional processor designed by some other teachers that put the fetch-execute cycle at the forefront, and have the students implement that.

So, it could be that, as you say, the professors are simply being lazy. Alternatively, it could be that the older system has educational benefits specifically because it does not do a lot of more modern stuff that obscures the concepts that the professor is trying to get students to understand.

For more specific than that, you'd probably have to ask the teacher directly :)

$\endgroup$
4
  • 1
    $\begingroup$ Well, ncurses was released in 1993. It isn't cutting edge at all, but it's a library which is still used in the real world. The only point I can make up is that they want to avoid using libraries... $\endgroup$
    – csabinho
    Mar 9 at 22:35
  • 1
    $\begingroup$ The point with asking the teacher directly sadly isn't really realistic as I'm just a private tutor for some (school and university, but block graphics are mostly taught in schools) students. And a student wouldn't get any useful answer, I guess... There's a slight difference between your answer and my question. You are teaching something for a clear reason, which is to understand principles of a language family. That's perfectly logical and serves a clear purpose. I tried to make up a reason for teaching block graphics but I couldn't really find a "solution"... $\endgroup$
    – csabinho
    Mar 10 at 18:45
  • 1
    $\begingroup$ @csabinho Yeah, I don't know specifically - I've never taught graphics at all. I just now the reason that I often wind up with out of date technology is clarity, so it occurred to me that the professor might be up to something similar, though I obviously have no way to know. (Also, I know nothing about graphics, so I can't comment more specifically on the graphic choice.) $\endgroup$
    – Ben I.
    Mar 10 at 19:10
  • $\begingroup$ The Egyptian civilization is old. The dinosaurs are old. You could say one is older than the other. You could also say both are way older than my furthest back ancestor. In the age when web graphics is replacing gui (proper) graphics, it's good to remember @csabinho, ncurses is really old. Put differently, living on the bleeding edge is hardly a plus in an edu setting. (BTW I consider Pascal better, considerably better to introduce prog in cs101 than almost all that's done today) $\endgroup$
    – Rusi
    Mar 11 at 11:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.