What programming language to teach first
blogs.msdn.com
blogs.msdn.com
When I started I learned c++. I would say this is a pretty good starting language since its very easy to transfer to c#, java, php, ect because of the similarities. But it also let the professors explain garbage collection, pointers ect. However c++ had so many annoying moments because the compiler messages were so cryptic which are really bad when starting out.
So that makes me believe that c# would be a better choice because of what visual studio can offer. It would allow the students to run through their programs 1 line at a time, see exactly whats going on as well as give much better error messages.
Then after high school while working my first job, I happened to pick up a book on VB(4 I think) at the local library that came with a demo version. I was blown away by how quickly and simply I could create complete apps. Over that weekend I wrote an app that solved a real problem at work and that was installed and used by the people working there. After seeing that I could use programming to quickly simplify real world problems I got into programming again. I moved from VB onto other languages and haven't touched VB since then. But if I had been sat down with a C++ compiler instead of VB I probably never would have gotten into programming.
Right, my point. Don't focus on language, focus on problem solving. Show someone how programming can quickly solve an actual problem they are having. First find a problem that appeals to your audience, then pick the language the best solves that problem, and teach them that (even if it is VB). If after that they are interested they'll go on to learn as much as they can, if they're not then there probably isn't much you can do and no programming language can change that
By "Visual Basic" I suspect he means VB.net. Do you have problems with VB.net or with VB 6 and prior versions?
I taught my younger cousin very basic programming via StarLogo. He still needed help, but he learned.
I just started teaching my girlfriend a bit of ruby via irb. REPL is a great learning tool.
As far as teaching CS majors, I have no idea.
I think Javascript is a great intro language, you can start really simple (alert("hello!")) and dive deeper into some pretty complex programming without leaving Firefox/Firebug. Plus webapps are very accessible for High School students.
For CS students its really hard. Dynamic languages are nice because it simplifies much of the work you deal with in Java and C. But eventually you'll need to know what static typing is and how to allocate memory. I like starting simply and building on that base as opposed to diving in the deep end.
My college's first programming language was C++. Spent the first few weeks understanding bits and bytes and core programming concepts w/o even writing much code. It seemed overly complex for an intro, but maybe it was poor instruction.
MsgBox "Hello!"
Command1.Caption = "Hello!!!"
And then clicking Go, and trying it out right there -- that's real programming, it's got the properties you asked for, and it's much more discoverable than a command-line shell.It is simple, powerfull and has a cool factor several orders of magnitude bigger than any web & desktop based thingie.
It is on Lego Mindstorms! What other programming language allows you to build a robot to chase the cat?
That would suggest Python as pretty much the only contender for first language.
Basic is nice, but it lacks the explicit structure that Pascal, C/C++, and other high-level languages enforce.
I'm thinking Pascal is a good choice because it's explicit enough in its constructs to force the programmer to realize what they're doing, but not so fine-grained that you need to start thinking about memory management, pointers, and other more advanced constructs.
The skills are then easily transferable to other similar languages like C/C++, Java, C#, etc.
I would go with something interactive that would make seamless switches between writing a program and running it.
Even REPLs like Python's and Ruby's seem overkill.
A dialect of Lisp would also seem appropriate.
CS: Scheme and SICP or a less intense book.
WWW: Javascript (well, after I brushed up). mikeryan has the right idea here, and it probably would be a great match for a bunch of high school and even younger students.
Prior to Javascript and DHTML VB might have been a good choice for the same reason (I'm assuming the edit-compile-run cycle was fast). VB prior to VB.NET wasn't that ugly.