|
Scratch is good, especially for elementary age learners, some adults too. My wife was (retired now) the gifted teacher at an elementary school and was given the edict to teach about robotics and programming. She was able to learn then teach Scratch to her kids. They took off on it, as you would expect with gifted kids.
I’ve given up trying to be calm. However, I am open to feeling slightly less agitated.
|
|
|
|
|
Hmmm,
Never heard of Scratch. What exactly is it? Is it a visual learning tool?
|
|
|
|
|
Yes, it is a visual learning tool - you can pseudo-code using blocks, it is quite good to grasp basics of software development.
Take my link above and give it a try if you have a couple of minutes, it is quite straight forward.
|
|
|
|
|
language is not that important.
It's the manner it is taught that is more important.
CI/CD = Continuous Impediment/Continuous Despair
|
|
|
|
|
There is a beginner programming language called Karel from Stanford University. Which I got to know from this course Stanford Engineering Everywhere | CS106A - Programming Methodology[^]
The language itself is very simple with about twenty or so commands. But the process of problem solving using these 20 commands is what the school student learning is all about.
So according to me, it is Karel.
|
|
|
|
|
Probably not. Even basic concepts require teaching too much about syntax. I'd actually start with Python and cover the basics of data types, functions, and objects. Yes, I know many people hate the indentation but it's common in functional programming languages and is visually simpler than nested curly braces, IMO.
|
|
|
|
|
It used to be Pascal; then Java. Not a big leap to C#. The (NET) "framework" elevates it to a platform versus a simple language. They won't hit any walls.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
It's not; it hinges on the concept of OO. Objects are hard conceptually, classing variables and methods into logical entities.
For a kid, I'd recommend procedural languages; I did AMOS growing up, a kind of basic. It allowed to write instructions and play with parameters, and soon I started on my own Eliza-clone (which is totally doable in Basic and a fun exercise).
Problems arose when my I got pages worth of procedures, largely copy/pasted. At that time, I was ready for OO and inheritance.
Teach her a procedural language and things that give quick reward. Once she knows about variables and procedures, give her a challenge that requires too much writing, and after a day or three, introduce OO and inheritance.
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
Eddy Vluggen wrote: For a kid, I'd recommend procedural languages; I did AMOS growing up, a kind of basic. It allowed to write instructions and play with parameters, and soon I started on my own Eliza-clone (which is totally doable in Basic and a fun exercise).
This!
Start the class with Notepad, command line compilation, and console applications. No IDE, no GUI, no classes. Just learning to think logically and solve problems. C# will work for this, but I'd probably use something different.
My sons took programming-type classes in high school and college -- they spent more time making pretty output than they did making correct output. This was typical for these classes.
Folks often think of OO as the Holy Grail. It's not -- I've dealt with far more badly designed class structures than I have badly designed procedural programs. When the only available tool is a hammer, everything look like a nail.
|
|
|
|
|
When teaching, I'd like to first introduce programming as a list of instructions.
Architecture and concepts can wait until they enjoy it
BryanFazekas wrote: Folks often think of OO as the Holy Grail. It's not I'm one of those; but starting there is not for most people. First you learn about methods and variables. Once you run into the limits of those, OO starts making sense. Before that, it seems a bit.. nonsense that you just do because everyone else does it.
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
Any language would be good to teach programming. It may be difficult to really stick with the basics with C#, not only because of the syntactic sugar, but also because of in-built functions. You can also argue against using Visual Studio or PyCharm or JetBrains as a beginner's IDE. They are a bit too helpful at times and there is nothing better than learning by oneself (even if it is very slow). Eclipse may be a good choice (or maybe VS Code), wouldn't go as far as text-editor only, like Vim.
|
|
|
|
|
It's certainly not bad. You can do low-overhead programs in C# just like you can do in Python (which, I presume, is what they're doing for teaching purposes), you can go fully-blown structure like you'd do in Java. Speaking of structure, C# is well-structured and allows learning concepts without delving too much into the implementation. Which is, as far as I'm concerned, a good way to learn such things. Too many co-workers of mine tend to get lost in the details, missing the big picture, as if they never learned to think outside of low-level details...
|
|
|
|
|
As C# includes many features that you also have in C++ and C, you could use C# as a language for absolute beginners, as long as you start with a very small subset of everything that's possible in C#. No lambda expressions, no null propagation, no classes, no properties etc., just some loops and branches, and maybe some functions. And then you can slowly work your way up to the more advanced features.
|
|
|
|
|
I would recommend it. If they offer it in the school, probably they know how to teach it.
But the other questions are for all programming languages they teach:
Do they teach it right, whatever it is?
Do they teach it the way, to be open to use other languages or whatever language you choose, would you be taught that it is the only and best language?
You can try it yourself that it is easy Hello World - Introduction to C# interactive C# tutorial | Microsoft Docs[^] and surprise your daughter with your knowledge or be step ahead?
|
|
|
|
|
Vaso Elias wrote: If they offer it in the school, probably they know how to teach it.
You are probably live in an utopian state...
“Real stupidity beats artificial intelligence every time.”
― Terry Pratchett, Hogfather
|
|
|
|
|
Vaso Elias wrote: I would recommend it. If they offer it in the school, probably they know how to teach it.
Not necessarily. I recall a couple of classes where the instructor was learning the material a day ahead of teaching it, and a lot of the professors had no idea how to teach.
Many moons ago a coworker did a tech interview for a college professor who wanted to leave academia and get into consulting. She failed the tech interview in a language she had been teaching for 5 years. She could explain language syntax, but had no idea how to program anything of any complexity.
|
|
|
|
|
I had the same experience myself when I was studying at university, however we had also teachers who knew way too much and they did teach us lot
There are always good and experienced teachers and then those who need to work more on their teaching skills .
|
|
|
|
|
My second thought was that I might be very biased (and so less right) since my first thought was "any other choice would be a mistake".
|
|
|
|
|
I guess it's ok. I got taught OOP in Java before I returned to C++ (which was my first language oddly, C was my second). But once you start judging all languages from the lens of C (and even ARM assembler), it's hard to like any new ones.
With exception of LISP
|
|
|
|
|
Don't be confused, bro! Studying C# is VERY good idea! You not only study programming itself, but will have PRACTICAL and POWERFUL language in skills.
C# is "hard" only if you take all features at once. But if you simply create 10-lines helpers inside Main(), it's EASY! Everything depends from teacher - if he is professional, studying can be cool. I support C#!
|
|
|
|
|
The reality is that the choice of language really doesn't matter, although I would agree that restricting to a simpler subset during initial teaching helps. The goal is to understand the basics of programming, not the complexities of the task or the tool. After all, getting someone to understand "I = I + 1" can often be the divider that separates the programmers from the rest of the world. Before we get into the guts of the .NET library, it's necessary to first understand decisions, loops, and so on.
My first language was FORTRAN IV, followed by other high- and low-level languages, now numbering over 30. I have used COBOL as a first language when creating new programmers, with good success. I knew someone who actually used assembler as the first programming language when teaching newbies, on the grounds that that way people would learn both how to program and how computers worked all at the same time.
|
|
|
|
|
I would say it's a good choice, yes. It has a well-balanced set of language features but frees you from having to deal with managing memory and makes it hard[er] to shoot yourself in the foot.
BUT, Interop is a whole other thing...
Paul Sanders.
If I had more time, I would have written a shorter letter - Blaise Pascal.
Some of my best work is in the undo buffer.
|
|
|
|
|
I wouldn't.
In my opinion a beginner needs to start with a simple language and learn more complex languages as he gains experience. With the result that he then knows several languages and can compare and contrast their features and syntax and make decisions about what he likes and doesn't like.
Like many, I first learned BASIC, then Pascal, then a little COBOL and ForTran and assembly, then C, dabbled in C++, and finally C# for the past twenty years.
Any object-oriented language is going to be too complex, with too much boiler-plate code the beginner doesn't need to know about (yet). Even C is too complex, requiring the developer to know about including libraries and linking them.
A modern version of BASIC (not VB) should still be a good option for a beginner to get a feel for how to think about giving a computer instructions.
Python (which I'm not about to learn) is pretty easy and can implant good indenting and formatting habits early.
My kid had a couple of classes in Java. Well not really. Really just how to modify an existing MineCraft object, build it, and use it. He learned nothing.
|
|
|
|
|
When my youngest kid (9) asked me to teach him programming a brought out C64 with BASIC...
“Real stupidity beats artificial intelligence every time.”
― Terry Pratchett, Hogfather
|
|
|
|
|
Kornfeld Eliyahu Peter wrote: C64 with BASIC...
Edsger Dijkstra: It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows.
-- 6079 Smith W.
|
|
|
|