Answers.Body: <p>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.</p>
  <p>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.</p>
  <p>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.</p>
  <p>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.</p>
  <p>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.</p>
  <p>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.</p>
  <p>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.</p>
  <p>For more specific than that, you'd probably have to ask the teacher directly :)</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-09T22:35:11.283Z
Answers.Text: 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...
Answers.UserDisplayName: csabinho
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-10T18:45:00.107Z
Answers.Text: 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"...
Answers.UserDisplayName: csabinho
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-10T19:10:03.080Z
Answers.Text: @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.)
Answers.UserDisplayName: Ben I.
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-11T11:28:58.030Z
Answers.Text: 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)
Answers.UserDisplayName: Rushi
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-03-09T22:27:54.287Z
Answers.LastActivityDate: 2022-03-09T22:27:54.287Z
Answers.UserDisplayName: Ben I.
Body: <p>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.</p>
  <p>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?</p>
  <p>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.</p>
  <p>Another option would be to just skip user interfaces in DOS, which would definitely some saved time that could be &quot;invested&quot; in some other topics.</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-03-10T07:30:17.223Z
Comments.Text: Good q. But could be improved with some "block graphics" code snipptes. Plus your preferred equivalent.
Comments.UserDisplayName: Rushi
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-03-11T18:17:14.337Z
Comments.Text: 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.
Comments.UserDisplayName: Scott Rowe
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-03-11T18:56:21.660Z
Comments.Text: @ScottRowe Usually approximately 14. And mostly without prior knowledge in programming.
Comments.UserDisplayName: csabinho
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-03-11T19:45:42.167Z
Comments.Text: Well there's your answer. "Even dwarfs started small"
Comments.UserDisplayName: Scott Rowe
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-03-11T19:53:05.513Z
Comments.Text: @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.
Comments.UserDisplayName: csabinho
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-03-17T17:37:39.357Z
Comments.Text: Re, "without any benefit." There's _always_ benefit to learning something new even if there is more benefit to be had from learning something that is both new and useful.
Comments.UserDisplayName: Solomon Slow
Tags: <c><gui>
Title: Why are block graphics being taught? (either "instead of ncurses" or "at all")
ThreadText: # Why are block graphics being taught? (either "instead of ncurses" or "at all")
  
  (Asked by: username_0 on 2022-03-09)
  
  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.
  
  **Tags:** c, gui
  
  > **Comments:**
  > **username_1**: Good q. But could be improved with some "block graphics" code snipptes. Plus your preferred equivalent.  
  > **username_2**: 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.  
  > **username_0**: @username_2 Usually approximately 14. And mostly without prior knowledge in programming.  
  > **username_2**: Well there's your answer. "Even dwarfs started small"  
  > **username_0**: @username_2 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.  
  > **username_3**: Re, "without any benefit." There's _always_ benefit to learning something new even if there is more benefit to be had from learning something that is both new and useful.  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_4 on 2022-03-09. Score: 3
  
  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 :)
  
  > **Comments:**
  > **username_0**: 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...  
  > **username_0**: 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"...  
  > **username_4**: @username_0 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.)  
  > **username_1**: 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 @username_0, 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)  
  
  ---
  
  