- 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?
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.
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.
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 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.
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)
However, it was taught by the business school, and I think that was very appropriate.
Universities are not for training. Schools are for that. Institutes are for that. Whatever.
Universities are for knowledge, science, truth. Not "training".
And yes, I am aware that the above makes medicine mostly a school thing (except for the academic aspect).
But of course, things change.
But in general universities have been teaching the tools of specific industries for a long time. Sometimes entire departments or buildings are sponsored by specific companies or programs underwritten as “industry-academic partnerships” when the research aims are aligned with strategic goals of a particular company.
For example, Oregon State University’s College of Forestry has a Tallwood Design Institute:
“Its core tenets are the importance of industry collaboration, through outreach, education and feedback from professionals.”
So, teaching a particular framework may be more explicit, but it isn’t unusual activity.
http://blogs.oregonstate.edu/collegeofforestry/2019/04/09/ta...
Universities have a bunch of roles and one of them is to teach skills you'll need in a given job. While some of those skills are truly general (problem solving, certain mathematics, thermo) you still learn the ones most common in your discipline. When you start a job as a new graduate you should have some familiarity in the tools and language of your discipline -- what units are used, how people talk (different disciplines can use different terms for the same thing), and yes, the most important tools. When I was an undergraduate we used Bridgeport mills (yes, it was pre CNC -- they were installed the very next year) because those were the common tools.
Many of the things I learned back then are obsolete, but I realize that most of the time was spent on the stuff that has lasted: diff eq, thermo, "deep skills". However I could not have been of any use to any employer if I didn't know (in my case) how to program a Lisp machine.
The CS193* classes are electives for the undergrad CS majors. I think this one is popular simply because lots of Stanford students want to make apps for the phone they have in their pocket.
The core curriculum is based around algorithms, data structures, theory, discrete math, etc etc that you expect from a top university in CS. They use a variety of languages like python, java, lisp, C, etc to illustrate these concepts through class projects.
Learning the SwiftUI API is not a required part of the core curriculum at Stanford.
Using proprietary software/tools is not the worse thing universities have done (looking at you $700 biology dept textbooks).
I imagine for this class owning a mac is a minimal requirement.
I think your talking about books though.. I didn't like it when Profs used there own books.
I'm sure it makes sense for some students, but it just kind of seems like a waste of money to me for most people.. It's good that it's free now.
Universities need to balance out the argument that you're making with the argument that CS education doesn't prepare people for having an actual job.
At the end of the day the day if you want to create a startup or even just get a job out college, taking practical courses like iOS development will put you in a much better position than spending all of your time taking theory classes.
This applies to a lot of 1xx classes anywhere! In particular, foreign languages, or beginning art classes.
My wife went to art grad school at UCLA. Her advisor (whose competence is beyond amazing, e.g. https://art.famsf.org/adrian-saxe) taught an undergraduate ceramics class, and one of his chores was to bust on his students who made bongs as their class project. Which he did with good humor. (Broke in the kiln, how about that!)
What can you say? Learning happens in all kinds of ways?
In 30 years maybe there will be an academic/open source "teaching OS" for mobile like there is for desktop Operating Systems classes today.
Sure you could. "mobile engineering" would just be a study of solving computer science problems with relatively low resources, a finite amount of power, etc. You don't need to make iOS/Android apps to study this. Many lessons I've learned while solving problems on mobile apps can be easily transferred from platform to platform. They weren't Android or Chrome specific for example.
It’s client/server, no need to be specifically mobile phone as a course.
I do agree about practical hands-on training is like riding a bike; just ride it to know how.
A lot of programming classes utilized specific tech (The Extension school at the University I work at teaches classes on React and Vue and Laravel, R, Python....) These are cross-platform tools and generally free.
I think it can be useful to have this knowledge out there. The parts of it that are good might end up in Open Source projects or give people ideas of different ways of doing things.
If you want to learn about mobile application development, you have to pick a specific platform to target, and anything other than mobile web is going to be commercial.
Ideally, the things students learn in the class aren't just various APIs, but instead how to build a product, work as a team, and solve problems.
FWIW, I teach a very practical class in mobile application development at a university.
Excel, Power Point, etc.
Let's imagine you want to teach your students a course on native mobile development. How would you do it without turning it into a "course on how to work with a specific commercial product", given that your only two relevant choices are Android and iOS, and both are commercial products?
Not any more weird than my old college offering courses in Java and .NET-related things.
Or high schools that teach people how to use Microsoft Word.
Or a trade school teaching people how to use specific types of machinery only made by one company.
Or secretarial schools that only taught people how to use IBM Selectrics.