You need to walk before you can run and it is of NO BENEFIT to the student to hide programming behind a fancy UI with fun results before they know what is going on.
Let's be clear here, I am not against Unity. But I'm definitely against Unity for teaching how to program.
The "strength" you exemplify about having unity doing physics in the first lesson is precisely why it's a terrible choice. Students without prior programming knowledge will not understand that this is javascript (a language) connected to a physics library (3rd party module) being represented by the UI (unity). You will introduce them to this mess of interconnected parts and they will have no idea who is responsible for what. Plus you will spend so much time teaching them Unity-specific concepts and fundamentals they will walk away with a crippled ability to program.
I know this because at my university they taught first year programming with java and used a book written by the instructor that showed you how to load an image with swing before teaching conditionals. The boilerplate code that allowed the students to load images did nothing but completely confuse them and negate the teaching aspects as he slowly introduced programming fundamentals. It was a complete disservice to try to "fancify" basic programming and all it did was confuse anyone who hadn't previously learnt to program.
Python on the other hand is a fast, interactive, forgiving interface that boils programming down to the basic nuts and bolts that you need to understand before interfacing with fancy UIs and physics.
Frankly, I think that getting people excited about programming and learning that they can create something actually cool is the most important part of their first introduction.
I took a course in high school that started with the nuts and bolts. I did fine because I already knew some basics, but most of my classmates struggled. They learned that programming is hard and no fun and in the end you've pushed some lines of text around. Most of them barely passed and will never touch code again.
For a serious university level CS course? Sure, start with Python and explain how the basic nuts and bolts work. Trying to get young people excited? I think it's worth considering other options.
How many of us really started out programming learning the basic concepts in a structured environment? I understand your point, but I think that to be so dismissive of the enjoyment and excitement factor is inappropriate.
I cannot stress this strongly enough, _NO_.
You need to walk before you can run and it is of NO BENEFIT to the student to hide programming behind a fancy UI with fun results before they know what is going on.
Let's be clear here, I am not against Unity. But I'm definitely against Unity for teaching how to program.
The "strength" you exemplify about having unity doing physics in the first lesson is precisely why it's a terrible choice. Students without prior programming knowledge will not understand that this is javascript (a language) connected to a physics library (3rd party module) being represented by the UI (unity). You will introduce them to this mess of interconnected parts and they will have no idea who is responsible for what. Plus you will spend so much time teaching them Unity-specific concepts and fundamentals they will walk away with a crippled ability to program.
I know this because at my university they taught first year programming with java and used a book written by the instructor that showed you how to load an image with swing before teaching conditionals. The boilerplate code that allowed the students to load images did nothing but completely confuse them and negate the teaching aspects as he slowly introduced programming fundamentals. It was a complete disservice to try to "fancify" basic programming and all it did was confuse anyone who hadn't previously learnt to program.
Python on the other hand is a fast, interactive, forgiving interface that boils programming down to the basic nuts and bolts that you need to understand before interfacing with fancy UIs and physics.