As a Teacher: Choosing a suitable programming language 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?
My answer? Python.

Let me explain by tackling all your points.


Simplicity. Python code reads like English. Seriously, how simple is
print("Hello World!")
Generality. Python can be used for web development (via. Flask/Django), data analysis (via. NumPy/Pandas/SciPy), games (via. PyGame), as well as a multitude of other tasks because of the sheer amount of libraries there are.
Minimum Objective stuff. You can do some OOP in Python but it isn't required.
Platform. Python2.7 is in pretty much on every Linux distro and there are plenty of YouTube videos on setting it up on Windows/Mac. If anything, you can use the online interpreter that Repl.It offers.
Industry Preference. Correct me if I'm wrong, but Python has consistently been ranked as one of the most popular languages.


In my experience teaching, it is extremely important to make sure that the syntax is as easy as possible to write and understand. For a new programmer, it can be pretty discouraging when he/she writes code only to see an error message (especially if he/she does not have the skill to read an error message and debug).

Side note, PythonTutor will be really helpful in explaining some major computer science/programming concepts.