Apple puts free Swift curriculum on iBooks, plans courses at US schools
Apple on Wednesday released "App Development with Swift," a free course available through the iBooks Store, which will also be coming to a handful of U.S. schools at the beginning of the fall semester.
The iBooks course is a full-year endeavor geared towards helping people "design fully functional apps, gaining critical job skills in software development and information technology," according to Apple. Swift is Apple's open-source programming language that works across iOS, macOS, watchOS, and tvOS.
In the fall, six colleges will begin teaching the iBooks material: the Alabama Community College System, Columbus State Community College, Harrisburg Area Community College, Houston Community College, Mesa Community College and the San Mateo Community College District. HCC is in fact opening an iOS Coding and Design School, Apple noted.
"Select" high schools will simultaneously add it to their curricula, but Apple has yet to identify them by name.
App Development with Swift is a part of Apple's broader Everyone Can Code program, which the company noted will see materials used in over 1,000 U.S. schools this fall.
Encouraging Swift development likely has multiple benefits for Apple. In general it should foster the creation of more apps for its platforms, but in the long run it may also build up a potential workforce and further cement Swift and Apple platforms as a standard.
The iBooks course is a full-year endeavor geared towards helping people "design fully functional apps, gaining critical job skills in software development and information technology," according to Apple. Swift is Apple's open-source programming language that works across iOS, macOS, watchOS, and tvOS.
In the fall, six colleges will begin teaching the iBooks material: the Alabama Community College System, Columbus State Community College, Harrisburg Area Community College, Houston Community College, Mesa Community College and the San Mateo Community College District. HCC is in fact opening an iOS Coding and Design School, Apple noted.
"Select" high schools will simultaneously add it to their curricula, but Apple has yet to identify them by name.
App Development with Swift is a part of Apple's broader Everyone Can Code program, which the company noted will see materials used in over 1,000 U.S. schools this fall.
Encouraging Swift development likely has multiple benefits for Apple. In general it should foster the creation of more apps for its platforms, but in the long run it may also build up a potential workforce and further cement Swift and Apple platforms as a standard.
Comments
The race to the bottom of cheap apps has proven to me people want cheap software, not professional software in a lot of cases. I can see games and "play apps" being written by those who are not properly trained and are SO warriors.
I think this is good for everyone though. The more exposure that Swift gets, the more implanted future it will have. Not just in the iOS and Mac world, but the open source linux world as well. I'm quite excited to see it take off in the server side and machine learning world.
I think offering these classes as tech electives is great! There are too many colleges that think that C++ is still a dominating factor. I have seen some that still teach Pascal! Hopefully this helps start moving the bar for more modern languages and frameworks.
That is the very split that developed between the mainframe COBOL/FORTRAN coders and the PC guys working with the variety of languages.
A big part of that was that the PC was pointed at individual users rather than critical corporate infrastructure. So it required that the development had to be maintainable and upgradeable. That requirement meant that:
- It had to work -- ALWAYS and with consistent reliability and accuracy!
- People other than the original coder had to be able to pick it up and either fix it or upgrade it.
- There had to be a wide enough knowledge base of the language that the code was not reliant on a hand full of specialists...
But importantly, even though all that is true, there still remains a huge demand for simple, one-off, single user, non-critical applications that make people's lives better... That is the point where Jobs and Woz started at -- and it still exists today...
I don't believe that everyone can code or that everyone should code...
But, I do believe that everyone should be exposed to coding as part of the education process -- the 3Rs becomes the 3Rs + S [coding in Swift].
They should get a basic knowledge of: what code can do; what is involved in the process; and the meticulous effort required.
If for for no other reason than self protection -- in a world of hackers and even legitimate companies trying to meddle in one's private business...
...Yes, to realize to realize their exposure when they agree to those Terms Of Use requirements.
This is a good first step! But, to make the program a success, I believe Apple will need to offer something more than providing free curriculum -- for example:
A good second step would be a free iCloud account to each participant (students and teachers, alike). A section within iCloud where participants can see what others are doing, exchange ideas, share code, etc... get a little competition going.
That would work better for a touch UI. You'd have a predefined set of nodes with attributes and they can be open source as well as modifiable. To start a program, you just add an object node. There would be layout objects for the UI and data objects including database objects. The object nodes would have function nodes added to them and those would have action/data nodes that had things like loops, variables, mathematical functions, sorting code, animation curves etc. The nesting would define the scope. If an object wanted to address a variable inside the scope of another, a user could just select it and the software would work out how to get that information. At any time, the user could expand the node into text to see what it is doing and modify it at the code level.
This setup has the advantage of promoting code reuse/modularity and optimal code vs monolithic functions/classes. The open source nature of the blocks would have people trying to make them run as fast as possible. It also helps avoid typos because you aren't typing most of the code. It makes profiling a bit easier too because running the program can highlight in red which nodes took the longest to execute and those can be fixed. It makes it faster to do prototyping because companies can build app templates and just replicate that for new ones.
File resources can be accessed in an interface like in iMovie with Images, Audio, Movies, Documents tabs and you just drop them into the nodes, which saves having to hard-code filesystem paths. If you wanted to play an audio track, you don't have to read up on how to use a sound manager API, you just drop an audio node in place and pick the sound then attach an action to play it at a given point in the execution and it can handle the playback without stalling the program execution.
This would be language-independent software development. Visual scripting can abstract different languages and the exact same high-level structures can be mapped between Swift, Java, C#, C++ etc without manually changing any code. With a certain node structure, it would be possible to convert old programs that were typed into nodes. For complex software, the number of nodes could get unwieldy but nodes can contain multiple lines of code and it would be nested inside multiple objects/classes e.g 20 objects on screen, open one object to get 20 actions, open one action to see 20 data nodes and you work on one at a time. This can handle the equivalent of tens of thousand of lines of code concisely enough for a small screen.
Rich feature nodes allows very complex tasks to be done quickly like cloud syncing and 2D/3D object handling. Instead of thinking about manually using nested arrays, dictionaries and lists and constructing special data classes for cloud syncing, the data nodes can have cloud-sync features built-in and it would aggregate the data into key/value stores as needed, only syncing what changed.
2) Am I wrong in thinking that Apple already has something similar with Storyboards in Xcode?
Of course, all those sync with iCloud, which is a handy feature, but it doesn't have to sync with iCloud. If Apple does offer some sort of Xcode option for iOS-based devices, why can't they just have a similar repository for these development files without Apple specifically creating an iOS app called Finder or one called Terminal so I can bypass a reasonable storage selection, look my how Music is stored in the file system, manually edit PLISTs for Library/Preferences and other such things?
What good reason is there to open this up to over a billion iDevice users. Personally, I think how Apple stores photos and music/movies/TV shows in Photos and iTunes, respectively, is the right way to go. Hell, I want Apple to obfuscate this even more in the future so that macOS is even more user friendly, not less.