Course Objectives

By completing this course, you will:

Course Structure

Class time is divided roughly equally between lectures and hands-on work. In addition, you will have a number of assignments to work on at home.

Projects & Assignments


But see the FAQs below if you don't meet the pre-requisites and are still interested in registering for this course.

Dates & Times

Classes will be held on four consecutive Saturdays:

Classes will run from 9am to 4pm with a one-hour break from 12pm to 1pm.


260 KD per participant.

Class Size

Capped at 8 participants.


CODED Campus (Google Maps).


This course is delivered by me, Ahmad Alhashemi. I've been programming for 20 years and have been writing Swift code since the day Swift was announced in 2014. I have written iOS, macOS, and command-line applications in Swift. I participate in Swift language evolution discussions and have made a (very small) contribution to the Swift compiler.

Most importantly, I'm passionate about teaching Swift and I'm looking forward to helping you become a proficient Swift programmer!

Register →


Are there iOS projects?

You will notice that there are no iOS projects. This is simply because we want to focus on learning the Swift language itself without having to worry about UIKit, AutoLayout, IBOutlets, and the iOS simulator.

What you learn in this course will be directly applicable to your iOS work. In fact, after taking this course, you should see a significant difference in the way you write iOS applications.

Are the projects too difficult and complicated?

All of the projects can be implemented in about 500 lines of code and you will get plenty of guidance. The projects are selected because they give you opportunities to apply the concepts you will learn in the course.

What if I don't have Swift experience?

If you don't have Swift experience but you do have a lot of experience in another statically typed language, such as Java, C#, C++, Kotlin, TypeScript, Go, Dart, or others; and you feel comfortable picking up a new programming language as you go, then you'll still be able to benefit from this course.

What if I don't have a laptop running macOS?

Swift is also officially supported on some versions of Ubuntu. All of the code and projects in this course is compatible with Swift on Linux. If you feel comfortable installing and using Swift on Linux, then feel free to register! You can use your favorite text-editor or IDE instead of Xcode. I highly recommend installing a Swift plugin to your editor that adds autocompletion. There are ones for VS Code, Atom, Sublime, CLion, and others.

Why did you pick Swift to teach this course?

Swift is unique in offering a large number of programming paradigms in one language: objects and classes, protocols, higher-order functions, algebraic data types, and generics.

The alternative would have been to use two or three different programming languages to learn the different paradigms. Using one language simplifies the course and makes it possible to experiment by refactoring code from one paradigm to the other within the same code base.

Why didn't you pick [insert my favorite language] to teach this course?

This doesn't mean that what you learn in this course doesn't apply to Java, for example. It just means that Java doesn't have all of the features I want to teach you in this course.

Can you create a custom version of this course for our company?

Yes. Contact me for details.

Register for Advanced Swift Course

Registration for the June 2019 session is still open.

Alternatively, feel free to email me directly at

Course Banner