- Is it weird that there's barely any training of practical software engineering in a university setting as it is, and now this question posits that one of the great durable examples of such a course is somehow against the norm?
- Is it weird that a community would train someone in methods and concepts using the technologies invented up the street?
- Is it weird to think that after decades of deeply-rooted institutional ties between Apple and Stanford that they wouldn't have a genuinely beneficial relationship and respect for one another?
It depends what you expect from your education. I'd personally expect a university to focus on the academic side of computer science rather than teaching typical practical "busywork". The theory is what I expect to count in a university, the practice is just a nice side effect for testing the theory. Others expect a university to just teach you how to be a software dev as best as possible.
I don't believe that Apple is the best at teaching people proper coding techniques for their platform; they have trouble keeping their API documentation up to date, I don't expect them to be that great at teaching people how to use them. Different approaches taught by different institutions are often a great way to improve your software design as well, because if you only learn from a single track then you can easily become too blinded by how things should be done to think of how things can be done. So, different places teaching how app development works rather than letting Apple be the guide towards the platform is a good thing in my eyes.
I can understand the ties behind the Stanford connection, but I would expect a university to at least design a course to be platform-neutral. Focussing a course on extending the very closed app store ecosystem from an educational institution feels sketchy to me.
The core curriculum focuses on theory with lots of projects to apply what you learned.
CS193 classes are optional and are sometimes designed/lead by grad student lecturers who are interested in that topic.
It is clear that there is a demand by Stanford students for this class. If someone wanted to design and teach a mobile dev course that surveyed android & ios, html5 mobile dev, and mobile UX issues, they could do so. They could call it CS193m or something.
So if not Apple's platform, which platform would be a better pedagogical platform for education in mobile programming?
I am not aware of a mobile OS that exists for an optimal pedagogical experience. Or a set of programming languages and libraries that exist for pedagogically optimal exploration. Your choices are basically Android/Kotlin or Apple/iOS. I do both. It's not obvious to me that either is a great "leading to code" environment. Your comment about Apple docs up to dates was... I find figuring out Google's Android APIs much more difficult and it's a huge flux between what's trending cool and what will actually run on a given device.
As an educator, I would guess that having more consistency betwixt student devices would be a big win. Apple definitely wins here.
What may have decided it though was the student body's more common device. If more students were packing iPhones than droids, then it makes sense for that to be your text.
I'm personally more in favour of supporting Android development in a teaching environment for one simple reason: you don't need a Chromebook to develop for Android, but you do need a Mac to develop for iOS. Even if you own an iPhone, running an Android emulator is free and easy. If you own an Android, there's no way to run a simulated iPhone without more accompanying hardware. If you've purchased a Windows-based laptop at the start of your education, you're basically locked out of the iOS course unless you borrow someone else's Macbook or start messing with horrible virtual machine solutions that violate the EULA.
I don't even think for a second that Google's docs are any better than Apple's. In fact, I think they're much worse. What I intended to convey with that paragraph is that I don't think that Apple should be the educator that teaches people to code for mobile.
I haven't kept up with Android's new APIs but I do know that Android is great for backwards compatibility. If you know the basics for Android, you can adapt to whatever fancy framework Google pumps out this year quite fast, or you can choose to stick to the "traditional" API that'll always be supported. Normal apps can do just fine without even some of the older stuff like fragments. Whatever Google is doing, is not necessarily the best way to develop code for their platforms.
There are some education institutions which are very focused on "practical software engineering", and which sometimes produce people who lack computer science background and cannot work with complex systems. This cheapens the value of CS education for everyone.
When I saw the course, I was worried because I thought that Stanford might move in that direction.
(after the explanation that this is optional undergrad course, I am no longer worried)
- Is it weird that there's barely any training of practical software engineering in a university setting as it is, and now this question posits that one of the great durable examples of such a course is somehow against the norm?
- Is it weird that a community would train someone in methods and concepts using the technologies invented up the street?
- Is it weird to think that after decades of deeply-rooted institutional ties between Apple and Stanford that they wouldn't have a genuinely beneficial relationship and respect for one another?