To introduce students on programming? Which language is more appropriate now?
-
I think it depends a little on why you are teaching them (or, more accurately, why they are learning) Is it with a view to working in the future in software development, or just for fun? I think at that age, having them be able to produce something quickly that they can see, and play with, is more important. Learning OO, I think, is sensible in this day and age - but I'd personally steer clear of C++. C# is OK but sometimes all the curly braces scare new kids off. VB is OK - especially if you can have them do some 'pretty' stuff where they have at least some time to play with the GUI as well as writing code. I taught a group VB .Net a while ago - they wrote a simple Poker Machine (one-armed bandit, fruit machine) with LOTS of help and hints from me.
Weiye Chen wrote:
Perhaps children are now more intelligent and would not have much problem starting from C++ or C#?
I doubt any increase in intelligence! I Also don't think it takes any greater intelligence to learn C++ or C# or C or VB or some other language (Lego Mindstorms is a goodie especially if you want to involve them in a project)
___________________________________________ .\\axxx (That's an 'M')
_Maxxx_ wrote:
I think it depends a little on why you are teaching them (or, more accurately, why they are learning) Is it with a view to working in the future in software development, or just for fun?
It is mainly for a competition (AIO[^]) where they would need to read some values off a text file and output the results in another text file, based on a given problem scenario. They gave us the flexibility to do the coding in either C, C++, C#, PASCAL, Java, PHP, Pyton and VB. These students have shown interest to learn programming and thus selected to learn. I am thinking of using C as a brief introduction to the basics like data types, loops, functions and later on move to C++ or C#. I prefer the latter as i am worried the students might have difficulty understanding and managing pointers.
Weiye Chen A hermit trying to learn hibernation...
-
That just gave me a flashback and a chill down my spine.
-
10 REM 20 PRINT "THANK YOU!" 30 END
My Blog What you do, when you don't know what to do is what you do when you don't want to do what you do.
Nithin Sundar wrote:
10 REM 20 PRINT "THANK YOU!" 30 END
You are receiving this e-mail because the following bug has been assigned to you. Bug 38265: Insufficient documentation in code.
I wanna be a eunuchs developer! Pass me a bread knife!
-
_Maxxx_ wrote:
I think it depends a little on why you are teaching them (or, more accurately, why they are learning) Is it with a view to working in the future in software development, or just for fun?
It is mainly for a competition (AIO[^]) where they would need to read some values off a text file and output the results in another text file, based on a given problem scenario. They gave us the flexibility to do the coding in either C, C++, C#, PASCAL, Java, PHP, Pyton and VB. These students have shown interest to learn programming and thus selected to learn. I am thinking of using C as a brief introduction to the basics like data types, loops, functions and later on move to C++ or C#. I prefer the latter as i am worried the students might have difficulty understanding and managing pointers.
Weiye Chen A hermit trying to learn hibernation...
I'd try it in C, first. A little understanding of memory allocation goes a long way.
I wanna be a eunuchs developer! Pass me a bread knife!
-
If you were to teach some school students say aged 15-16 (who have no programming experience) the basics of software programming, which language would you begin with? I was taught C->C++->Win32->MFC but i am wondering nowadays if there is still a need to start from C. Perhaps children are now more intelligent and would not have much problem starting from C++ or C#?
Weiye Chen A hermit trying to learn hibernation...
That depends on what kind of students you have. If they are learning a their job and are going to keep on programming in the future, then I would go with C++. This way they can pick up some basic things which managed languages (per definition) don't have. In the long run they will need some experience with pointers and managing memory, otherwise they will keep on producing new material for the Code Horrors section. If it's about a general introduction to programming, then C# and the .Net framework are a good choice. Some stumblestones (like pointers and memory management) are out of the way and you quickly can get the students to work on all kinds of things.
"I have what could be described as the most wide-open sense of humor on the site, and if I don't think something is funny, then it really isn't." - JSOC, 2011 -----
"Friar Modest never was a prior" - Italian proverb -
If you were to teach some school students say aged 15-16 (who have no programming experience) the basics of software programming, which language would you begin with? I was taught C->C++->Win32->MFC but i am wondering nowadays if there is still a need to start from C. Perhaps children are now more intelligent and would not have much problem starting from C++ or C#?
Weiye Chen A hermit trying to learn hibernation...
Cobol ;P
1f y0u c4n r34d 7h15 y0u r3411y n33d 70 g37 14!d Gotta run; I've got people to do and things to see... Don't tell my folks I'm a computer programmer - They think I'm a piano player in a cat house... Da mihi sis crustum Etruscum cum omnibus in eo!
-
10 REM 20 PRINT "THANK YOU!" 30 END
My Blog What you do, when you don't know what to do is what you do when you don't want to do what you do.
Ok, sir, please explain where you got the code from my first program which I wrote when I stumbled over a TRS-80 (model I) back in 1978?
"I have what could be described as the most wide-open sense of humor on the site, and if I don't think something is funny, then it really isn't." - JSOC, 2011 -----
"Friar Modest never was a prior" - Italian proverb -
This might be a bit tricky but my suggestion is to teach them C++ and then have them learn to use C functions inside(Like how these days some people still prefer using the C I/O library inside C++). That way you can get both C and C++ covered at the same time. C# is a great option as well and once you learn one language, the others are only different in terms of syntax. Of course there might be a few differences here and there, but it won't be that hard later on. The real task here is to finish teaching them one language properly. If you are planning to get them involved in writing win32 applications alone then C/C++ would be the way to go. C# is indeed a good choice for Windows Applications as well but according to me, it's better used for web applications. These are just my opinions and I may be wrong. Feel free to correct me. :) EDIT: If you are instead looking at getting them comfortable with programming than serious in it then you might want to try this too: http://msdn.microsoft.com/en-us/beginner/ff384126.aspx[^] Smallbasic is nice. :)
My Blog What you do, when you don't know what to do is what you do when you don't want to do what you do.
I agree. Students need an unforgiving language, so no subtleties get overlooked. Us old timers sometimes just get annoyed by the subtleties and prefer a more forgiving language. :laugh:
-
If you were to teach some school students say aged 15-16 (who have no programming experience) the basics of software programming, which language would you begin with? I was taught C->C++->Win32->MFC but i am wondering nowadays if there is still a need to start from C. Perhaps children are now more intelligent and would not have much problem starting from C++ or C#?
Weiye Chen A hermit trying to learn hibernation...
Starting from C has been stupid for at least 10 years. Starting from C++ has been stupid for at least 4.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
-
Nithin Sundar wrote:
10 REM 20 PRINT "THANK YOU!" 30 END
You are receiving this e-mail because the following bug has been assigned to you. Bug 38265: Insufficient documentation in code.
I wanna be a eunuchs developer! Pass me a bread knife!
It wasn't me! The developer went that way! *points*
My Blog What you do, when you don't know what to do is what you do when you don't want to do what you do.
-
If you were to teach some school students say aged 15-16 (who have no programming experience) the basics of software programming, which language would you begin with? I was taught C->C++->Win32->MFC but i am wondering nowadays if there is still a need to start from C. Perhaps children are now more intelligent and would not have much problem starting from C++ or C#?
Weiye Chen A hermit trying to learn hibernation...
Weiye Chen wrote:
Perhaps children are now more intelligent
Not in my experience. They are more stupid if you ask me. (Since the exams are so banaal lthese days anyone can egt to university). So, what do you want to teach? Computer programming as engineering or how to make money as a programmer? If its 1 then its Assembler, stacks, heaps, registers leading on to C, then C++ (as part of OO) and then the managed/easy languages, Java, C#, VB. If its 2 then C#.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
-
Ok, sir, please explain where you got the code from my first program which I wrote when I stumbled over a TRS-80 (model I) back in 1978?
"I have what could be described as the most wide-open sense of humor on the site, and if I don't think something is funny, then it really isn't." - JSOC, 2011 -----
"Friar Modest never was a prior" - Italian proverb:~
My Blog What you do, when you don't know what to do is what you do when you don't want to do what you do.
-
Starting from C has been stupid for at least 10 years. Starting from C++ has been stupid for at least 4.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
Of course you do realise that all your high level languages use compilers written in C and run on platforms written in C and talk to devices programmed in C?
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
-
Of course you do realise that all your high level languages use compilers written in C and run on platforms written in C and talk to devices programmed in C?
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
Yes. I also know that it takes people with a whole lot of resources and skills to build my car. That doesn't mean I need to know how to build one, in order to drive it. It certainly doesn't mean that I need to know how to build one BEFORE I learn to drive it, any more than I needed to know how to make Bearnaise sauce before I learned to boil a kettle.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
-
Weiye Chen wrote:
Perhaps children are now more intelligent
Not in my experience. They are more stupid if you ask me. (Since the exams are so banaal lthese days anyone can egt to university). So, what do you want to teach? Computer programming as engineering or how to make money as a programmer? If its 1 then its Assembler, stacks, heaps, registers leading on to C, then C++ (as part of OO) and then the managed/easy languages, Java, C#, VB. If its 2 then C#.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
fat_boy wrote:
If its 1 then its Assembler, stacks, heaps, registers leading on to C, then C++ (as part of OO) and then the managed/easy languages, Java, C#, VB.
Learning assembler first is a great idea, if your goal is for most of your class to fail and never consider learning to program again.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
-
Yes. I also know that it takes people with a whole lot of resources and skills to build my car. That doesn't mean I need to know how to build one, in order to drive it. It certainly doesn't mean that I need to know how to build one BEFORE I learn to drive it, any more than I needed to know how to make Bearnaise sauce before I learned to boil a kettle.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
You are comparing apples and oranges. Using a computer is entirely different to programming one.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
-
fat_boy wrote:
If its 1 then its Assembler, stacks, heaps, registers leading on to C, then C++ (as part of OO) and then the managed/easy languages, Java, C#, VB.
Learning assembler first is a great idea, if your goal is for most of your class to fail and never consider learning to program again.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
What a stupid comment.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
-
You are comparing apples and oranges. Using a computer is entirely different to programming one.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
No, I'm really not. Learning assembler, or even C, is a retarded place to start because any widely used language today is built on a platform of OO. If that is a false god or not is irrelevant. Learning something that's super complicated and goes against the most basic principles of the widely used languages is like teaching someone all the bad habits possible, and then later trying to break them of them. When I was using C++ every day, my world was surrounded by people who wrote the most awful, awful code. Why ? Because they learned C first, and never bothered to learn to use C++ where there was a C construct that still worked. For example, file handles instead of iostreams. Microsoft CArray instead of std::vector. You name it, and people didn't bother to learn C++ because they knew C, and it worked in C++. Yes, I know CArray is not C. But it was used for roughly the same reasons. It's also not a bad comparison because the only sane reason to teach someone assembler, or even C, is the idea that people need to know exactly how a computer works, to program it. Beyond that, they are hardly highly productive languages, nor do they come with the sort of frameworks that .NET does ( which makes it even more productive ), so what's the use of knowing it ?
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
-
What a stupid comment.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville
you somewhere on this thread said students are stupider, not smarter. Yet, you think assembler is a good place to start. THAT is the height of arrogant stupidity. I thought teachers were supposed to teach and help, not to confuse and dismay. Show me a class of 16 or even 18 year olds who would all benefit from starting programming with assembler. If they exist, it's because you're teaching at MENSA.
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
-
No, I'm really not. Learning assembler, or even C, is a retarded place to start because any widely used language today is built on a platform of OO. If that is a false god or not is irrelevant. Learning something that's super complicated and goes against the most basic principles of the widely used languages is like teaching someone all the bad habits possible, and then later trying to break them of them. When I was using C++ every day, my world was surrounded by people who wrote the most awful, awful code. Why ? Because they learned C first, and never bothered to learn to use C++ where there was a C construct that still worked. For example, file handles instead of iostreams. Microsoft CArray instead of std::vector. You name it, and people didn't bother to learn C++ because they knew C, and it worked in C++. Yes, I know CArray is not C. But it was used for roughly the same reasons. It's also not a bad comparison because the only sane reason to teach someone assembler, or even C, is the idea that people need to know exactly how a computer works, to program it. Beyond that, they are hardly highly productive languages, nor do they come with the sort of frameworks that .NET does ( which makes it even more productive ), so what's the use of knowing it ?
Christian Graus Driven to the arms of OSX by Vista. Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
There will always be people who write bad code, and anyone who has truly learnt C++ (and it would appear all those people you worked with were liars) would use iostreams and STL. However, to learn programming as an engineering discipline requires at least some understanding of the nuts and bolts. Even if it is only to recognise how complicated it is and what benefits OO languages can bring. And as for your analogy it is false. A car user is like a computer user. They need to know how to use it, not how it works. An engineer needs to know how it works. Period.
"It is a remarkable fact that despite the worldwide expenditure of perhaps US$50 billion since 1990, and the efforts of tens of thousands of scientists worldwide, no human climate signal has yet been detected that is distinct from natural variation." Bob Carter, Research Professor of Geology, James Cook University, Townsville