A course for developers who want to create their iOS applications using good practices, while avoiding some traditional code smells. For first time iOS developers, this course will guide you through several parts of the the language and the API, how and why to use them properly. Avoid common iOS and developers mistakes while building a real world application. The number of applications is not the goal here: a good, well written app is what we are looking for. In this free course you will learn the basics that will allow you to understand what you are building: how and why. You don't really know something until you learn why. If you already develop for iOS, but are tired of developing applications that are costly to mantain, tired of writing code noone else understands, or even the simplest change requires too much energy, this course will fit your needs: learn how to avoid those mistakes using features both from the language and the API. You will learn Swift, the iOS API, good practices, design patterns and code smells. You will not just learn how to use, but understand what and why you are using it. As a newcomer, learn storyboards and view components, as a pro learn about why constants matter, why object orientation matter and more. Understanding what is going on is the difference between a language and API user and a professional programmer. This is our goal, let's understand Swift and iOS development.