I'm not sure if it's the right place for this question. Sorry if going a bit off-topic.
Choosing a suitable Language for the first programming course is one of the most important things that every related teacher/lecturer should bear in mind; especially if the students are young or having a limited math knowledge.
I'm currently teaching a group of highly enthusiastic young people (about 16 to 17 years old) with a medium knowledge of math. They're attending High School at 10th grade class right now. I'm going to start teaching a programming language for the upcoming semester.
They're a group of handpicked students throughout the city with a extraordinary level of creativity and diligence, so i see that working with a real programming language would not be a hard task for them. So, choosing simple graphical and drag'n'drop solutions like Turtle Art, Scratch, and Tynker are not considered as options.
There are a few factors that should be checked before making a choice:
- Simplicity: Most of them probably have not experienced any kind of real coding action before.
- Simplicity, Again: One of the main ideas is teaching how to think algorithmic. Having a sophisticated or hardly-syntaxed language will divert them out of the path.
- Generality: It's better that the language not be designed for special development cases. Take PHP and MATLAB as examples which are respectively designed for Web Development and Calculation/Modeling.
- Minimum Objective stuff: No forced OO programming (like Java). Or at least with the minimum dependency to OO concepts.
- Platform: It's important to have Windows as a supported dev environment, as neary all of them are on Windows.
- Easy to Set-up: It's better to have a straightforward way of setting up the dev environment.
- Industry preference: Not a serious problem. But it should be at least a currently-active language allowing students to reach nearly-real dev experiences.
- Hardware Portability: It's important (but not required) that the language be flexible enough to be used on Hardware programming. (I'm not speaking of Hardware Description languages like Verilog and VHDL.) The aim is programming for more simple processor-based hardware like AVR Microprocessors or Raspberry Pi GPIO interface.
I want to know that
- is there any other factors that i'm missing?
- And, what languages do you suggest as choices?