/SwiftCurriculum

Learning Swift by defining a curriculum to follow

Primary LanguageSwift

Swift Curriculum

Learning to write code in a new language by just jumping in is how I typically learn. But learning on the go to build an app can leave some gaps in knowledge. With Swift there are so many features which are unique to the language which should be explored and understood. This GitHub repository will be used to systematically learn by writing code following a list of topics to cover. Books, blogs, articles and official Swift documentation will be used to prepare the materials and to link back to the topics. The Wiki will be used to document the various topics which are explored. Code will be prepared with Playgrounds or Xcode projects as appropriate in order to explore a topic. More topics will be added as well. Swift is rapidly evolving and new techniques are emerging all the time.

Blogging and Gists

Some topics will be covered by a blog to share the information. Code snippets which can stand by themselve will be shared as Gists and linked from the blog and Wiki.

Contributing

I'd like to know if I have missed a topic. I am sure this list is not complete. There are many features in Swift which can easily be overlooked when building an app. And it is possible not use many features which could otherwise by very helpful just for the sake of building the app instead of endlessly applying new ideas. Over time more of the Swift feature set could be incorporated into app development.

While the Swift Language Guide can provide a good overview there are many ideas which come from outside official channels. One example is Swift: Selector syntax sugar which was shared on Twitter by Chris Lattner. A collection of these great ideas will be added to the Reading List. Many of these blog posts and articles will come from iOS Dev Weekly which has been a great resource for surfacing great innovations from the developer community.

If you would like to suggest topics, learning material or to change existing material, please either using Issues or fork this repository and send a Pull Request with your changes.