Please register to participate in our discussions with 2 million other members - it's free and quick! Some forums can only be seen by registered members. After you create your account, you'll be able to customize options and access all our 15,000 new posts/day with fewer ads.
With PHP being such an outdated language with a huge decline, I'm surprised that it's being suggested.
C++ and JS would be at the top of my list. JS is an easy language to learn (incredibly difficult to master)... runs in any browser and is taking off serverside (essentially replacing PHP nowadays).
Coding aspects can be tough to learn for people with no frame of reference. When I teach it, I start kids with binary and hex math/conversion, an assembler for fundamentals and then move into VBA (Visual Basic for Applications) for gratification. Just like multiplication tables and commutative/associative properties in math, it is important for "coders" to understand the building blocks of their craft. I feel that he best way to foster this is to not simply see how much Java they can "get" without being frustrated. There's too much 'magic' and not enough programming reality, at first. Once the fundamentals are known, the higher level languages will come much easier.
If the students are interested in getting a jump start on Computer Science in college or taking the Computer Science AP exam, then I’d teach them Java. That’s the most popular language in college courses these days and the language used for the AP exam. If you just want to get their feet wet with programming concepts then it depends on what your goals are. If I were just fooling around and showing general concepts I’d pick Objective-C. You can build simple C-style hello world apps, it has a more classical message-passing OOP syntax, and it even has a gentle way to introduce you to manual memory management using reference counting. On more modern environments it has some modern features like automatic memory management and closures. Even on older systems like OpenStep you can quickly build pretty UIs with minimal coding.
the curse of the computer industry is that you throw all your books away every 3 years and relearn it all. i wish i could come up with a decent answer to your question. i got a head full of systems that are all now obsolete.
even human language changes. the french i spoke 35 years ago in paris i am now having to reprogram to avoid appearing odd.
Not exactly true Huck. Hell I was a COBOL programmer 30 years ago. I still use COBOL in current business applications, to this very day.
Coding aspects can be tough to learn for people with no frame of reference. When I teach it, I start kids with binary and hex math/conversion, an assembler for fundamentals and then move into VBA (Visual Basic for Applications) for gratification. Just like multiplication tables and commutative/associative properties in math, it is important for "coders" to understand the building blocks of their craft. I feel that he best way to foster this is to not simply see how much Java they can "get" without being frustrated. There's too much 'magic' and not enough programming reality, at first. Once the fundamentals are known, the higher level languages will come much easier.
I think that is an interesting approach. My only concern would be that it might turn students off from programming in general, since they would have to do a lot of work for not so interesting results. What initially got me on the path to being a software developer was a class I took in high school where some of the first programs we built were really cool projects like a Game of Life program. Students, especially in America where everyone has a short attention span, need to learn that programming can be fun. I think if I had to start with stuff like converting between binary/hex/decimal, I may have lost interest in the beginning. Although I did of course eventually have to learn that stuff (any good programmer will)
I've taught a few high students to program and Python is just the best fit. You shouldn't work with any language that needs to be compiled - a student can learn a lot more quickly if they're encountering run time errors instead of compile time errors (and trust me, they'll encounter plenty of errors when they start out). There are also loads of resources out there for Python, and the language actually originated as a language to teach programming. It's pretty much the modern standard for intro level programming classes - i.e. MIT uses it for their intro to programming courses. There's also a good list of reasons why Python is a good teaching language here.
You can go "higher" with a scripting language, like Python or Perl, that doesn't require compiling, or you could go down "lower" and learn a language like C, which is good at HW register manipulation, etc.
My vote would be for C, but keep it limited to loops, conditionals, etc. If you have never programmed, I would stay away from object oriented programming. Hard for you to teach it if you've never learned the concept yourself. That said, I think that learning object oriented languages is a must, but they can get that in college.
I hate to break this to you, but that art of programming encompasses far more than website. You're not going to design and program an embedded control system in PHP.
I started off C in college, then did a whole lotta C++. Then a whole of of Java, a bit of Perl, and a bit of OpenGL. I will say that no matter what you teach, it's the process of how to learn that's more important than the knowing of the language itself, as that would enable someone who knows one language to pick up the syntax, logic, and paradigms of another language in a prompt manner.
I'm biased, but I'd go with C++ or Java. If it really is too much to do OOP for newcomers who also have a lot of other things on their plates (you could argue that college students are more mature, experienced, and organized to handle the workload ), then scripting like Perl, or Python can do the trick too.
Before I retired, I taught programming courses at the community college level for over 20 years.
I'd avoid any of the Microsoft-specific languages (as a first course), since that tends to reinforce the misconception that programs only run on desktop PCs using Windows. This would eliminate VB and C#.
As others have noted, a language such as PHP is web-centric, and would mean you'd be teaching at least some basic HTML. When debugging is necessary, you have to first decide if the problem is in the HTML or the actual programming code.
The syntax and keywords of C, C++, and Java are all very similar, and actually have a lot in common with ALGOL, one of the first languages to have been designed with CS principles in mind, instead of just evolving.
I think for a high school course today, I'd pick Java for the following reasons:
It's purely Object Oriented, not a mix like C++.
Widely used in smartphones and tablets (Android)
All tools needed are available for free download on multiple platforms (Windows, Mac, Linux)
Can be used to create standalone applications or web page applets
Conceptually sound... strong datatypes, structured (no GOTOs)
To me, the most important part of an introductory course is developing the student's problem solving ability (algorithm development), not the particular language used.
Please register to post and access all features of our very popular forum. It is free and quick. Over $68,000 in prizes has already been given out to active posters on our forum. Additional giveaways are planned.
Detailed information about all U.S. cities, counties, and zip codes on our site: City-data.com.