Test predicts ability to learn programming

Anything not relating to the X-Universe games (general tech talk, other games...) belongs here. Please read the rules before posting.

Moderator: Moderators for English X Forum

kohlrak
Posts: 136
Joined: Thu, 28. Dec 17, 11:47

Test predicts ability to learn programming

Post by kohlrak » Sat, 6. Jan 18, 18:58

I'm making my own small fork of the spectre and meltdown thread.

Test predicting capability of programmers.

My girlfriend can handle assignment, and i think i managed to teach her recursion. So technically, i broke the test (the idea that you can't teach someone a new trick). The assembly "mov" instruction is one of my major reasons for suggesting one should learn assembly as a first programming language: there's no reason that anyone can't pass the assignment test if the learn and internalize the mov instruction, then get taught that assignment operator is taking the VOS (verb-object-subject) syntax and turning into OVS syntax. Recursion is another challenge that can be done away with by explaining in terms of assembly (and teaching functions as an abstraction that you build off of assembly) for most architectures (arm is an ugly beast for teaching recursion). Concurrency can be demonstrated objectively.

Despite all that, educators are having trouble with students failing that test, which, I suggest, is students aren't learning, as opposed to can't learn.

That said, i'm curious to hear the thoughts. I, personally, think that we're having a hard time teaching programming, anymore, and it's leading to alot of these security issues we're seeing. The test is a more macro outlook, while good coders are making micro mistakes that are turning into huge problems. I have my own thoughts at the cause (attempts to simplify programming in the wrong ways in order to saturate the market, but doing so in a way that leads to incompetence [i'm seeing the exact same thing in language education, and I can confirm that it's a huge issue with foreign language education]).

EDIT: I forgot to clarify the significance of my girlfriend managing to pass the test: she has trouble with multiplication of single digit numbers.

User avatar
Observe
Posts: 5079
Joined: Fri, 30. Dec 05, 17:47
xr

Post by Observe » Sat, 6. Jan 18, 19:19

Supply and demand works fine - until the supply dries up. There are only so many 'born' programmers in the world; just as there are with musicians, mechanics, mathematicians, biologists etc.

I wonder if the global demand for programmers, is simply exceeding the supply of those with the natural capabilities for excellence in that subject?

You may be able to teach some level of fundamentals, but you can't teach brilliance.

If for some reason, the world developed an increased demand for musicians, we couldn't very well complain about how come all our graduates weren't equal to Beethoven or Mozart.

Skism
Posts: 2539
Joined: Mon, 22. Mar 10, 21:36
x3tc

Post by Skism » Sat, 6. Jan 18, 19:30

Perhaps I am not a natural programmer - but I cannot understand what I am supposed to be doing!

I looked at the test and was immediately confused.

fundamentally I don't understand what is being asked off me.
"He who dares not offend cannot be honest."

-Thomas Paine-

User avatar
Morkonan
Posts: 10113
Joined: Sun, 25. Sep 11, 04:33
x3tc

Re: Test predicts ability to learn programming

Post by Morkonan » Sat, 6. Jan 18, 23:24

kohlrak wrote:...That said, i'm curious to hear the thoughts. I, personally, think that we're having a hard time teaching programming, anymore, and it's leading to alot of these security issues we're seeing. The test is a more macro outlook, while good coders are making micro mistakes that are turning into huge problems. I have my own thoughts at the cause (attempts to simplify programming in the wrong ways in order to saturate the market, but doing so in a way that leads to incompetence [i'm seeing the exact same thing in language education, and I can confirm that it's a huge issue with foreign language education])....
"It does exactly what you tell it to do."

That seems to be the general gist of the problem outlined in the article. Prospective students come with the baggage of an assumed set of intuitive "rules" that are being used that lie outside of what is specifically stated. There is no way to communicate "intent" in anything - "It does exactly what you tell it to do, even if you tell it wrong."

Logical operations aren't. They're defined.

One thing worth noting - Programmers aren't wizards. A truly gifted programmer might be a savant, but one doesn't have to be a savant in order to be a good programmer/coder.

My only "classroom" experience in programming was "waaaay back when." "BASIC." That was in high-school. We learned the language and then, for our final, we were told to create whatever we wanted. I made some crappy "tic-tac-toe" game, but still didn't grok wtf I was doing. Why? The teacher assumed that all that was needed was to teach us the language and the rest would come naturally.

Buy "why" does it work? "How" does it work?

That may be why you favor Assembly as the starting point for new students.

pjknibbs
Posts: 41359
Joined: Wed, 6. Nov 02, 20:31
x4

Re: Test predicts ability to learn programming

Post by pjknibbs » Sun, 7. Jan 18, 08:35

Morkonan wrote: "It does exactly what you tell it to do."

That seems to be the general gist of the problem outlined in the article. Prospective students come with the baggage of an assumed set of intuitive "rules" that are being used that lie outside of what is specifically stated. There is no way to communicate "intent" in anything - "It does exactly what you tell it to do, even if you tell it wrong."
There's a famous Charles Babbage quote that applies here, I think:

On two occasions I have been asked, — "Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?" In one case a member of the Upper, and in the other a member of the Lower, House put this question. I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.

kohlrak
Posts: 136
Joined: Thu, 28. Dec 17, 11:47

Re: Test predicts ability to learn programming

Post by kohlrak » Sun, 7. Jan 18, 15:30

Observe wrote:Supply and demand works fine - until the supply dries up. There are only so many 'born' programmers in the world; just as there are with musicians, mechanics, mathematicians, biologists etc.

I wonder if the global demand for programmers, is simply exceeding the supply of those with the natural capabilities for excellence in that subject?

You may be able to teach some level of fundamentals, but you can't teach brilliance.

If for some reason, the world developed an increased demand for musicians, we couldn't very well complain about how come all our graduates weren't equal to Beethoven or Mozart.
You have 2 camps on the supply and demand of programmers. On one hand, you got a large number of commpanies saying they're short on progamming candidates, but then you ask any unemployed person with or without a CS degree, and they say there's not enough jobs. Both of the last jobs i worked at were pretty cheap on the hourly wages, and i worked with people with CS degrees who couldn't find anything better than chicken plucking or nursing home kitchen.

From what i can tell, the skills offered are quite teachable, but they're having a hard time teaching them. For example, people with ADHD are "hard to teach" in a classroom setting without meds, but homeschooling shows signs of success. I think it comes down more to not accepting the differences of students while simultaneously telling them they should be proud of what makes them different, unique, and special.
Skism wrote:Perhaps I am not a natural programmer - but I cannot understand what I am supposed to be doing!

I looked at the test and was immediately confused.

fundamentally I don't understand what is being asked off me.
This is actually the conclusion i came to when i found my girlfriend having a hard time with it. When i re-explained what it was asking for, she passed it easily. According to the nature of the test, i'm not supposed to be able to help her pass it, yet i did. As you can tell, this predictive test actually has alot of background and testing behind it, thus it is considered by many (especially employers who are aware of it) as a legit testing method for potential (a big thing we hear employers complaining about is that they're getting lots of CS-degree-holding candidates who are unable to do simple christmas tree programs and such), so there's a demand for a test that is more viable than a CS degree (but, even with the test, they'll still probably prefer degree over no degree).

At the end of the day, the current test format is really simply asking whether or not you can take something you already know, and accept a redefinition of it. Once you understand that, then the test is ridiculously passable for everyone i handed it to.
Morkonan wrote:
kohlrak wrote:...That said, i'm curious to hear the thoughts. I, personally, think that we're having a hard time teaching programming, anymore, and it's leading to alot of these security issues we're seeing. The test is a more macro outlook, while good coders are making micro mistakes that are turning into huge problems. I have my own thoughts at the cause (attempts to simplify programming in the wrong ways in order to saturate the market, but doing so in a way that leads to incompetence [i'm seeing the exact same thing in language education, and I can confirm that it's a huge issue with foreign language education])....
"It does exactly what you tell it to do."

That seems to be the general gist of the problem outlined in the article. Prospective students come with the baggage of an assumed set of intuitive "rules" that are being used that lie outside of what is specifically stated. There is no way to communicate "intent" in anything - "It does exactly what you tell it to do, even if you tell it wrong."

Logical operations aren't. They're defined.

One thing worth noting - Programmers aren't wizards. A truly gifted programmer might be a savant, but one doesn't have to be a savant in order to be a good programmer/coder.

My only "classroom" experience in programming was "waaaay back when." "BASIC." That was in high-school. We learned the language and then, for our final, we were told to create whatever we wanted. I made some crappy "tic-tac-toe" game, but still didn't grok wtf I was doing. Why? The teacher assumed that all that was needed was to teach us the language and the rest would come naturally.

Buy "why" does it work? "How" does it work?

That may be why you favor Assembly as the starting point for new students.
You hit the nail on the head. My first language was C++, but i learned the most with assembly. Most people can understand simple functions, and assembly is merely function syntax with 0 to 3 params for every function, and an occasional global variable that you don't have direct access to (flags register on some archs). The assignment part of the test wipes most people out, because most people read left to right, so it seems more intuitive to read lvalue being assigned to rvalue instead of the other way around, and it's incredibly helpful to people if you actually tell them that rvalue goes to lvalue. The fact that assignment scores barely (if at all) changed, it makes you really wonder what the students were doing.

Another thing alot of programmers don't realize is that C style syntaxes, while the most common, are actually counter-intuitive. We take the sensical nature of the syntax for granted, given we learn about 5 or 6 different languages using the exact same syntax. While assembly is incredibly wordy, it directly looks counter-intuitive, so the student will give the generic syntax more respect, which makes it easier to learn.
pjknibbs wrote:
Morkonan wrote: "It does exactly what you tell it to do."

That seems to be the general gist of the problem outlined in the article. Prospective students come with the baggage of an assumed set of intuitive "rules" that are being used that lie outside of what is specifically stated. There is no way to communicate "intent" in anything - "It does exactly what you tell it to do, even if you tell it wrong."
There's a famous Charles Babbage quote that applies here, I think:

On two occasions I have been asked, — "Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?" In one case a member of the Upper, and in the other a member of the Lower, House put this question. I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.
That's a fun quote, because one has to ask what is right and what is wrong. If you assume the answer to be what you predict it to be, then you'll see the machine as flawed and wrong. But if you expect it to see and execute the code verbatim without trying to assume what you wanted it to do, the answer is correct, just not for the problem you actually needed it for. This sounds more like a humorous paradox, to me.

But, at the end of the day, the real question becomes, was the error the result of the computer not being intelligent enough to predict what the user wanted? Did the user have the wrong algorithm? Or does the user suck at talking to computers?

Unfortunately, most people would say the first. The other two answers are more likely to be true, and must be examined on a case-by-case basis.

RegisterMe
Posts: 8903
Joined: Sun, 14. Oct 07, 17:47
x4

Post by RegisterMe » Sun, 7. Jan 18, 20:05

This should be interesting. I have an IT degree, was taught programming at Uni (but could do everything - program structure, structure text, pseudo code) except produce working code at the end.

It's always annoyed the hell out of me.

So I will give this test a go later :).
I can't breathe.

- George Floyd, 25th May 2020

User avatar
mrbadger
Posts: 14226
Joined: Fri, 28. Oct 05, 17:27
x3tc

Post by mrbadger » Sun, 7. Jan 18, 21:50

I have a number of worksheets I use in one of my final year undergraduate modules.

These worksheets range in difficulty from moderately complex to really quite hard, but none take more than a few hours of work, and any technical ones contain every bit of information needed to complete them, it just requires thought, and that they give themselves enough time to complete them.

The few that don't require research and original thinking.

Some students complete them early and breeze through them as if they were no issue.

Some struggle as if they were the labours of Hercules manifest. Or leave them so late (ignoring my warnings) that they can't do them.

Thing is, not every student, even ones who have been exposed to identical opportunities to learn, and who, on paper are evidently capable of learning, will actually learn.

Not if they won't let themselves learn, or if something else is more interesting, like fashion, dating, sports or Facebook.

Computer Science in particular is not being taught in a very interesting way.

I didn't do my undergraduate study all that long ago, but even then things were changing. But I'm older, I wanted the old fashioned university experience. To me Lectures were merely pointers to direct my independent study. University was an exercise in self education for me.

That's the way I thought it was meant to be for everyone.

Not many kids now do. I see their point. I don't see how they can justify not working, because however they learn, bone idleness isn't going to be the new way, but things have got to change.
If an injury has to be done to a man it should be so severe that his vengeance need not be feared. ... Niccolò Machiavelli

kohlrak
Posts: 136
Joined: Thu, 28. Dec 17, 11:47

Post by kohlrak » Mon, 8. Jan 18, 01:58

RegisterMe wrote:This should be interesting. I have an IT degree, was taught programming at Uni (but could do everything - program structure, structure text, pseudo code) except produce working code at the end.

It's always annoyed the hell out of me.

So I will give this test a go later :).
I'm glad for your honesty, honestly. One of the biggest issues surrounding education is when everyone other than an independent evaluator denies that there is a problem, because it's hard to know who to believe. Is it true that the employer had unrealistic expectations, or did the degree actually amount to nothing despite the employer refuses to look at people without degrees? Honestly, i'd say both groups are at fault, but that just makes me critical, not independent. I'm pretty well invested in saying both.

That said, if you fail, send me a PM and i'll do for you what I did for my girlfriend and work on helping you pass the test, since supposedly you can't teach someone how to pass it. If you can pass it, show me an example of an issue you had trouble getting to work and i'll see what i can do to help you.
mrbadger wrote:I have a number of worksheets I use in one of my final year undergraduate modules.

These worksheets range in difficulty from moderately complex to really quite hard, but none take more than a few hours of work, and any technical ones contain every bit of information needed to complete them, it just requires thought, and that they give themselves enough time to complete them.

The few that don't require research and original thinking.

Some students complete them early and breeze through them as if they were no issue.

Some struggle as if they were the labours of Hercules manifest. Or leave them so late (ignoring my warnings) that they can't do them.

Thing is, not every student, even ones who have been exposed to identical opportunities to learn, and who, on paper are evidently capable of learning, will actually learn.

Not if they won't let themselves learn, or if something else is more interesting, like fashion, dating, sports or Facebook.
See, this is what i've been trying to do for a long time. I've come up with many, many different approaches to trying to teach programming. I feel that basic programming should be necessary for using the computer. I don't mean everyone should be able to code their own assembler or something, but you should be able to take advantage of scripts and such to do those really mundane tasks of generating the numbers that you need to copy and paste or something like that. People should not be afraid of command line tools, as there's nothing particularly difficult or strange about them, other than they're not a gui that everyone's used to.
Computer Science in particular is not being taught in a very interesting way.
It's not just comp. sci. Math and the like. What i find interesting is that we see the same thing with language education, despite it being taught in an interesting way. The closest thing i've come to towards a conclusion is that your average person is apathetic and just doesn't feel like investing in learning their own tools, which can be seen outside computers as well: how many people know how to stop a leaky pipe in the winter by turning the water off in the basement? Valve operation is so basic of a skill, we see how to do it in just about any movie where there is pipes and valves, like a factory.

This apathy is actually why i decided to stop trying to pass my knowledge on. I can work and invest to make it as simple and easy to understand as possible, and everyone says they want to learn, but when the rubber hits the road a totally different story comes out. Frankly, i'm sick of wasting my time on people who seem to only want to waste my time. I'd rather be playing X2 than teaching fundementals like hex or binary when they tell me they're too bored to continue (many don't even have the nads to tell you that much, and let you think that it'd be effective to write more for them to read later when they're "ready," but they never become ready, because they're too "nice" [timid] to tell you that they wasted your damn time).
I didn't do my undergraduate study all that long ago, but even then things were changing. But I'm older, I wanted the old fashioned university experience. To me Lectures were merely pointers to direct my independent study. University was an exercise in self education for me.

That's the way I thought it was meant to be for everyone.

Not many kids now do. I see their point. I don't see how they can justify not working, because however they learn, bone idleness isn't going to be the new way, but things have got to change.
See, you're approaching it the way it was originally meant to be: colleges and universities were institutions where you went to learn more about something you already knew. A great example of this would be in games like skyrim where you have "mages guilds." There was a shift in purpose a long time ago. This shift in purpose changed the whole game and lead to why we have so many people with student debt and no job to show for it. But that's a whole other topic.

User avatar
Stars_InTheirEyes
Posts: 5086
Joined: Tue, 9. Jan 07, 22:04
x4

Post by Stars_InTheirEyes » Mon, 8. Jan 18, 17:19

I was on a coding course (Processing) for a bit and felt stupid and hated it and left.

I did a couple of the test questions and got all 'M2' answers. I see in the sample mark-sheet a student who got M2 in everything passed, while another who did M2 for everything except question q8 got a distinction. I don't see why q8 wouldn't be 3-5-3 and why the distinction student got 3-5-7.
Sometimes I stream stuff: https://www.twitch.tv/sorata77 (currently World of Tanks)
This sı not ǝpısdn down.
MyAnimeList,
Steam: Sorata

User avatar
mrbadger
Posts: 14226
Joined: Fri, 28. Oct 05, 17:27
x3tc

Post by mrbadger » Mon, 8. Jan 18, 17:54

Not every course teaches programming in the way that suits every student.

I struggle to meet the needs of even my good students. A simple tick box what you got right and wrong approach rarely works.

Oh, it works for some things, but not for the broad question 'have you learned how to code'.

For that you need to Viva the student, discuss their progress, get a handle on how much they've understood the language, typically using some code they've written to talk through.
If an injury has to be done to a man it should be so severe that his vengeance need not be feared. ... Niccolò Machiavelli

User avatar
Morkonan
Posts: 10113
Joined: Sun, 25. Sep 11, 04:33
x3tc

Post by Morkonan » Mon, 8. Jan 18, 19:11

kohlrak wrote:...See, this is what i've been trying to do for a long time. I've come up with many, many different approaches to trying to teach programming. I feel that basic programming should be necessary for using the computer. I don't mean everyone should be able to code their own assembler or something, but you should be able to take advantage of scripts and such to do those really mundane tasks of generating the numbers that you need to copy and paste or something like that. People should not be afraid of command line tools, as there's nothing particularly difficult or strange about them, other than they're not a gui that everyone's used to....
Why should a user ever have to see a command-line? If it has a GUI, is it no longer a script? No longer "programming?" What is the difference between typing a command and pressing a button?

Automobile drivers don't have to be mechanics. In fact, they don't even have to be half-mechanics. In fact, it may be better for them to not know... (Long story, long ago, about my then girlfriend's father who didn't understand why there was such a thing as a torque wrench)

I agree that people need to have better, general, computer knowledge. They should have a basic understanding of how a computer "works." Computers, themselves, however, should be powerful tools that can be used to accomplish desired tasks... safely, with as little risk of error as possible, even for novice users. Tools that are effective, easy to understand and easy to use get used. Or, you get someone who doesn't know what a torque wrench is and just decides to tighten every bolt down as far as it will go...

This is the false divide that was created between Apple and IBM platforms. The idea that a computer should be "user friendly" launched a multi-billion-dollar company and revolutionized the personal computer space. Arguably, the competition to present a user friendly environment coupled with a powerful tool drove the entire personal computer industry to where it is, today. Combining that philosophy with "cellphone" gave birth to yet another industry.

Yes, a normal user should have a basic operating knowledge of "personal computers," no matter the specific platform. This is good. This will help them. This will enable them to do powerful things, safely and efficiently.

But, there's no reason at all why a user should have to know how to code. There's little reason why a user should know how to run a script, regardless of language, or go beyond the alter of the GUI. If that is required for some reason, then the designers have failed in their task of providing a good tool.

Power users, advanced users, those initiated in the mysteries of Computer? They shouldn't be locked out, either. But, there should still be protections for those that think they know more than they do, just so they don't brick their own boxes.

User avatar
Chips
Posts: 4878
Joined: Fri, 19. Mar 04, 19:46
x4

Post by Chips » Mon, 8. Jan 18, 19:34

Morkonan wrote: Automobile drivers don't have to be mechanics. In fact, they don't even have to be half-mechanics. In fact, it may be better for them to not know... (Long story, long ago, about my then girlfriend's father who didn't understand why there was such a thing as a torque wrench)
Erm, you realise programming languages and writing programs is a huge abstraction from machine code?

A normal person has no need to understand chemistry, or biology, or anything beyond ... every day simple tasks.

A rounded education should include some aspect, understanding, appreciation, for the very means by which you interact with the world - which is increasingly via computers. And the engagement of brain may do the good old "transferable skills" aspect; problem solving etc.
Last edited by Chips on Mon, 8. Jan 18, 19:37, edited 1 time in total.

User avatar
mrbadger
Posts: 14226
Joined: Fri, 28. Oct 05, 17:27
x3tc

Post by mrbadger » Mon, 8. Jan 18, 19:36

Whether or not a user should understand about the terminal is dependent on their end goal.

If that goal involves Linux, or Python programming, then the answer is yes. If not then likely no.
Even in the case of just Python, terminal usage would be minimal.

My students are mostly in the category of needing to know it, so I make it available to them. But if they decide not to do it then they can avoid it.

In doing so they put themselves in the 'cannot get >65%' group. But that's because my modules all require advanced programming that in turn requires use of the Linux terminal.

So yes, not everyone does need it, but if you don't want to learn it, don't enroll on an advanced programming module, or at least not one I teach :D

I understand that advanced Wndows programming doesn't go near a terminal, but I don't know, I haven't written a Windows program for over a decade now, if you count pure GUI coding make that 14 years.
If an injury has to be done to a man it should be so severe that his vengeance need not be feared. ... Niccolò Machiavelli

User avatar
Chips
Posts: 4878
Joined: Fri, 19. Mar 04, 19:46
x4

Post by Chips » Mon, 8. Jan 18, 19:42

If the bit about console is related to a programming course, then it is fundamentally necessary.

I may write the code via an IDE, but everything else is command line (build/deploy of code, configuring servers, starting and stopping services etc).

If you aren't capable of compiling or building at the command line, you're unlikely to get very far. The more familiarity you have (with working from a command line), the better prepared you'll be (not talking about just related to programming, but access/running services etc).

User avatar
Morkonan
Posts: 10113
Joined: Sun, 25. Sep 11, 04:33
x3tc

Post by Morkonan » Mon, 8. Jan 18, 19:50

Chips wrote:
Morkonan wrote: Automobile drivers don't have to be mechanics. In fact, they don't even have to be half-mechanics. In fact, it may be better for them to not know... (Long story, long ago, about my then girlfriend's father who didn't understand why there was such a thing as a torque wrench)
Erm, you realise programming languages and writing programs is a huge abstraction from machine code?
Yes.
A normal person has no need to understand chemistry, or biology, or anything beyond ... every day simple tasks.

A rounded education should include some aspect, understanding, appreciation, for the very means by which you interact with the world - which is increasingly via computers. And the engagement of brain may do the good old "transferable skills" aspect; problem solving etc.
I agree, wholeheartedly. But, what is the purpose of "computer?" Why does a user have one? The user should have a basic understanding of how their computer works and they should, ideally, understand how to accomplish the desired, and suitable, tasks with it. Ideally, those tasks should be designed to be easy to accomplish, the tools easy to use, and nothing those standard, mundane, tasks require should, by necessity, go beyond the "user environment."

I'm not in favor of restraining use. I'm simply pointing out that a computer is a tool and as its design becomes better, so will its overall capabilities for use. Valuable, productive, and efficient users are possible without those users being required to do more than operate within the user environment. They don't need to know how to "code." A basic understanding of most things "computer" will be helpful, but nothing beyond that is necessary in a well-designed user environment.

User avatar
Chips
Posts: 4878
Joined: Fri, 19. Mar 04, 19:46
x4

Post by Chips » Mon, 8. Jan 18, 20:36

I would ask whether you believe in education, but the answer is undoubtedly going to be too long to hold my interest - given we're on a forum on the internet. Life is too short.

So computer is just a tool, fine.

User avatar
mrbadger
Posts: 14226
Joined: Fri, 28. Oct 05, 17:27
x3tc

Post by mrbadger » Mon, 8. Jan 18, 20:44

Chips wrote:If the bit about console is related to a programming course, then it is fundamentally necessary.
I agree, but how? There are many ways to use the terminal. I teach the use of Linux standard CLI tools, and Git, Mercurial, SSH and the like.

Or how to activate shared libraries for a session, like OpenMP, or OpenMPI, since I'm buggered if I'll give them sudo access, and I doubt they'd always get it in their jobs, so it's a useful skill.

But then there's server admin terminal stuff, of which I only know Linux stuff, not Windows, and Windows is probably important. I have neither the skill, time, or equipment to teach them the Windows stuff. Powershell matters, but not in my classes.

My point is, there are many ways to use the terminal, so which do you teach?

I tend to scare students with my 'simple' CLI worksheets. Mostly because even the good students tend to have no idea just how much you can do with the terminal.

The bad ones who think they can leave them till the last minute just freak out and fail.
If an injury has to be done to a man it should be so severe that his vengeance need not be feared. ... Niccolò Machiavelli

Nanook
Moderator (English)
Moderator (English)
Posts: 27865
Joined: Thu, 15. May 03, 20:57
x4

Post by Nanook » Mon, 8. Jan 18, 23:53

Chips wrote:I would ask whether you believe in education....
So computer is just a tool, fine.
Why should an artist, a lawyer, an architect or a mechanic, for example, know how to code on a computer? Their education lies in a different direction. It doesn't mean they're less educated. They can successfully make use of computers as tools to do their jobs without knowing any coding at all. For that matter, what use is coding to the average home computer user? They use browsers, email, home office software and perhaps do some gaming. To say that all computer users should learn how to code is just silly and to imply that they're less educated is a bit arrogant, IMO.
Have a great idea for the current or a future game? You can post it in the [L3+] Ideas forum.

X4 is a journey, not a destination. Have fun on your travels.

kohlrak
Posts: 136
Joined: Thu, 28. Dec 17, 11:47

Post by kohlrak » Tue, 9. Jan 18, 01:18

Stars_InTheirEyes wrote:I was on a coding course (Processing) for a bit and felt stupid and hated it and left.

I did a couple of the test questions and got all 'M2' answers. I see in the sample mark-sheet a student who got M2 in everything passed, while another who did M2 for everything except question q8 got a distinction. I don't see why q8 wouldn't be 3-5-3 and why the distinction student got 3-5-7.
I'm not sure what link you followed to get to that point, and since there's so many variations of the test... Provide a more direct link?
mrbadger wrote:Not every course teaches programming in the way that suits every student.

I struggle to meet the needs of even my good students. A simple tick box what you got right and wrong approach rarely works.

Oh, it works for some things, but not for the broad question 'have you learned how to code'.

For that you need to Viva the student, discuss their progress, get a handle on how much they've understood the language, typically using some code they've written to talk through.
Well, that's actually the best way i've seen, given that programming is an art. It's a STEM field, but it's very much an art (as is mathematics). There is some empirical knowledge to it, though, so you can write tests to make sure they have all the tools down, but, at the end of the day, you can't be like some teachers an do a diff on the file and the percentage difference is the change of your grade. Fortunately, idiots like that are rare.
Morkonan wrote:
kohlrak wrote:...See, this is what i've been trying to do for a long time. I've come up with many, many different approaches to trying to teach programming. I feel that basic programming should be necessary for using the computer. I don't mean everyone should be able to code their own assembler or something, but you should be able to take advantage of scripts and such to do those really mundane tasks of generating the numbers that you need to copy and paste or something like that. People should not be afraid of command line tools, as there's nothing particularly difficult or strange about them, other than they're not a gui that everyone's used to....
Why should a user ever have to see a command-line? If it has a GUI, is it no longer a script? No longer "programming?" What is the difference between typing a command and pressing a button?

Automobile drivers don't have to be mechanics. In fact, they don't even have to be half-mechanics. In fact, it may be better for them to not know... (Long story, long ago, about my then girlfriend's father who didn't understand why there was such a thing as a torque wrench)

I agree that people need to have better, general, computer knowledge. They should have a basic understanding of how a computer "works." Computers, themselves, however, should be powerful tools that can be used to accomplish desired tasks... safely, with as little risk of error as possible, even for novice users. Tools that are effective, easy to understand and easy to use get used. Or, you get someone who doesn't know what a torque wrench is and just decides to tighten every bolt down as far as it will go...

This is the false divide that was created between Apple and IBM platforms. The idea that a computer should be "user friendly" launched a multi-billion-dollar company and revolutionized the personal computer space. Arguably, the competition to present a user friendly environment coupled with a powerful tool drove the entire personal computer industry to where it is, today. Combining that philosophy with "cellphone" gave birth to yet another industry.

Yes, a normal user should have a basic operating knowledge of "personal computers," no matter the specific platform. This is good. This will help them. This will enable them to do powerful things, safely and efficiently.

But, there's no reason at all why a user should have to know how to code. There's little reason why a user should know how to run a script, regardless of language, or go beyond the alter of the GUI. If that is required for some reason, then the designers have failed in their task of providing a good tool.

Power users, advanced users, those initiated in the mysteries of Computer? They shouldn't be locked out, either. But, there should still be protections for those that think they know more than they do, just so they don't brick their own boxes.
Because alot of programs loose functionality when placed into a GUI. Alot of programs can be better chained together when you don't have to take output from one program and copy and paste it into another. The simplification of computers provides a good entry point, like a "hello world," if you will. I've actually taken the time in trying to simplify the hello world, because it really is way too complex in most languages to not scare people away. "You have to do all that just to put a message on the screen? Hell, what's next? An essay just to ask someone what their name is?"
Chips wrote:
Morkonan wrote: Automobile drivers don't have to be mechanics. In fact, they don't even have to be half-mechanics. In fact, it may be better for them to not know... (Long story, long ago, about my then girlfriend's father who didn't understand why there was such a thing as a torque wrench)
Erm, you realise programming languages and writing programs is a huge abstraction from machine code?
Actually, it's really not. This is an illusion that certain people want you to believe for various reasons. For most people, the reason seems to be that they don't want to loose face. Machine code programming is one of those things that's really not as hardcore as it's made out to be, but everyone's still afraid to learn it. Assembly is a reasonable interface, but it can be done with a hex editor instead. No reason to do it without an assembler, though, as assembly is the best of both worlds. IMO, assembly is easier to learn than any High Level Language like C, despite those languages made with the intent of making it easier.
mrbadger wrote:Whether or not a user should understand about the terminal is dependent on their end goal.

If that goal involves Linux, or Python programming, then the answer is yes. If not then likely no.
Even in the case of just Python, terminal usage would be minimal.

My students are mostly in the category of needing to know it, so I make it available to them. But if they decide not to do it then they can avoid it.

In doing so they put themselves in the 'cannot get >65%' group. But that's because my modules all require advanced programming that in turn requires use of the Linux terminal.

So yes, not everyone does need it, but if you don't want to learn it, don't enroll on an advanced programming module, or at least not one I teach :D

I understand that advanced Wndows programming doesn't go near a terminal, but I don't know, I haven't written a Windows program for over a decade now, if you count pure GUI coding make that 14 years.
You let programming students avoid command line programs?
Chips wrote:If the bit about console is related to a programming course, then it is fundamentally necessary.

I may write the code via an IDE, but everything else is command line (build/deploy of code, configuring servers, starting and stopping services etc).

If you aren't capable of compiling or building at the command line, you're unlikely to get very far. The more familiarity you have (with working from a command line), the better prepared you'll be (not talking about just related to programming, but access/running services etc).
And it's important for building your own setup within another, such as your own OS or maybe Thereshallbewings.
Morkonan wrote: I agree, wholeheartedly. But, what is the purpose of "computer?" Why does a user have one? The user should have a basic understanding of how their computer works and they should, ideally, understand how to accomplish the desired, and suitable, tasks with it. Ideally, those tasks should be designed to be easy to accomplish, the tools easy to use, and nothing those standard, mundane, tasks require should, by necessity, go beyond the "user environment."

I'm not in favor of restraining use. I'm simply pointing out that a computer is a tool and as its design becomes better, so will its overall capabilities for use. Valuable, productive, and efficient users are possible without those users being required to do more than operate within the user environment. They don't need to know how to "code." A basic understanding of most things "computer" will be helpful, but nothing beyond that is necessary in a well-designed user environment.
That's the fundemental question that too many people answer differently. The computer is a calculator, which can also make things happen in the real world. Coding is fundemental to it's usage. The fact that people are so stuck on getting information from people through web-pages and processing that information, or organizing their files for use of some mp3 players, or any number of other mundane tasks, we see too many users spending too many hours doing things that would be easy if they just took 5 minutes to code a script to do it for them.
Chips wrote:I would ask whether you believe in education, but the answer is undoubtedly going to be too long to hold my interest - given we're on a forum on the internet. Life is too short.

So computer is just a tool, fine.
It really is just a tool. A very, very expensive tool.
mrbadger wrote:
Chips wrote:If the bit about console is related to a programming course, then it is fundamentally necessary.
I agree, but how? There are many ways to use the terminal. I teach the use of Linux standard CLI tools, and Git, Mercurial, SSH and the like.

Or how to activate shared libraries for a session, like OpenMP, or OpenMPI, since I'm buggered if I'll give them sudo access, and I doubt they'd always get it in their jobs, so it's a useful skill.

But then there's server admin terminal stuff, of which I only know Linux stuff, not Windows, and Windows is probably important. I have neither the skill, time, or equipment to teach them the Windows stuff. Powershell matters, but not in my classes.

My point is, there are many ways to use the terminal, so which do you teach?

I tend to scare students with my 'simple' CLI worksheets. Mostly because even the good students tend to have no idea just how much you can do with the terminal.

The bad ones who think they can leave them till the last minute just freak out and fail.
Well, many of the tools come with man pages. You can easily get away with teaching them that there are manuals, and that they can read them, since some of these tools sometimes get replaced. Do you give a man a fish, or do you teach him to fish?
Nanook wrote:
Chips wrote:I would ask whether you believe in education....
So computer is just a tool, fine.
Why should an artist, a lawyer, an architect or a mechanic, for example, know how to code on a computer? Their education lies in a different direction. It doesn't mean they're less educated. They can successfully make use of computers as tools to do their jobs without knowing any coding at all. For that matter, what use is coding to the average home computer user? They use browsers, email, home office software and perhaps do some gaming. To say that all computer users should learn how to code is just silly and to imply that they're less educated is a bit arrogant, IMO.
Mechanic is a special case, anymore, so I won't go into that. An artist, lawyer, and architect are also regular users. Regular users, alone, have so many uses for coding, should they ever apply themselves. I haven't been coding any real projects in years (aside from an assembler that i've been doing on and off), yet I seem to be writing code at least once a month, even sometimes once a week. Whether this is to backup my game installers ('cause i buy from gog since i believe in user rights), encrypt dirty file zips, a program to clean the XML formatting out of a script for a particular space game, i have a reason to code and can do so in a way that makes my life easier than if i was to try to do things without coding.

Post Reply

Return to “Off Topic English”