WWDC24 SALE: Save 50% on all my Swift books and bundles! >>

How it works

Welcome to the 100 Days of Swift! This is a free collection of videos, tutorials, tests, and more, all drawn from around my existing work here on Hacking with Swift, and all designed to help you learn Swift.

It’s aimed squarely at beginners who want to learn to build real iOS apps, but struggle to find a good, free course that can help them achieve their goals. If that’s you, welcome – I hope you’re ready to show the iOS world what you’re made of!

Important: There are two versions of the 100 Days course, this one and the newer 100 Days of SwiftUI. If you don’t know which one to follow, let me tell you up front: you should follow the 100 Days of SwiftUI. You should only follow this original version of the course if you specifically want to learn Apple’s older UIKit framework.



If you want to make a success of this course, there are only two rules:

  1. Every day you spend one hour reading or watching Swift tutorials, or writing Swift code.
  2. Every day you post about your progress to the social media site of your choosing. Tell people!

I’ll be providing all the material you need to follow along, so all you need to do is show up ready to learn.



I’ve met so many who have tried and failed to learn Swift, often multiple times, and if you’re here there’s a good chance you’ve already had a few false starts already.

Not this time. This time you’re going to learn it for real, and in just 100 days you’ll have built several full apps that you can be proud of.

You’ve already read the two rules of these 100 days, but to maximize your chance of rocking this course I have a few tips:

  1. It’s a marathon, not a sprint. Don’t charge ahead thinking you’re “learning faster”, because there’s a high chance you’ll get lost. Take your time!
  2. Don’t fall prey to shiny object syndrome. The lure of spending $50 on another course is high, I know, but you don’t learn anything by buying books. Your best chance of success is sticking with the 100 days shown here and really make it work.
  3. Don’t lone wolf it. You aren’t learning by yourself – I’m here to help as are many others. If you have questions, tweet me at @twostraws and I’ll do my best to help!
  4. Use the consolidation days. These are spaced throughout the 100 days to give you time to review what you’ve learned and make it really sink in. Use them to go back over days you weren’t sure about, complete any homework you missed, or just do some free coding.
  5. I have a glossary of common Swift terms that you should bookmark for easy reference.
  6. Download my Unwrap app from the App Store. It works on iPhone and iPad, contains the first 12 days of this course plus lots of bonus activities, and is free with no in-app purchases.

The Course

Days 1-12: Introduction to Swift

The first 12 days provide a gentle warm up for your Swift learning. You’ll watch about a selection of one-minute videos every day, and complete short quizzes about each of those videos.

  • Day 1 – variables, simple data types, and string interpolation
  • Day 2 – arrays, dictionaries, sets, and enums
  • Day 3 – operators and conditions
  • Day 4 – loops, loops, and more loops
  • Day 5 – functions, parameters, and errors
  • Day 6 – closures part one
  • Day 7 – closures part two
  • Day 8 – structs, properties, and methods
  • Day 9 – access control, static properties, and laziness
  • Day 10 – classes and inheritance
  • Day 11 – protocols, extensions, and protocol extensions
  • Day 12 – optionals, unwrapping, and typecasting


Days 13-15: Consolidation I

You just learned a lot about Swift in only 12 days, so before we continue it's important you reflect on what you've learned: look for weak spots, re-watch videos, re-take tests, and so on, until you feel comfortable that you have mastered all the Swift language fundamentals covered in days 1-12.

  • Day 13 – Swift review, day one
  • Day 14 – Swift review, day two
  • Day 15 – Swift review, day three


Days 16-22: Starting iOS

Now that you’ve mastered the basics of Swift, in these days you’ll start building real iOS apps using what you learned.

  • Day 16 – Project 1, part one
  • Day 17 – Project 1, part two
  • Day 18 – Project 1, part three
  • Day 19 – Project 2, part one
  • Day 20 – Project 2, part two
  • Day 21 – Project 2, part three
  • Day 22 – Project 3


Day 23: Consolidation II

In the last few days we covered some of the fundamentals of iOS development, and before we move on to the next set of projects it’s important to take a step back and review what you’ve learned.

  • Day 23 – Milestone: Projects 1-3


Days 24-31: Web views, user input, and Auto Layout

The next three projects we’re looking at will push your iOS skills further as you create some user interface in code, manage table views more carefully, and get some experience with closures.

  • Day 24 – Project 4, part one
  • Day 25 – Project 4, part two
  • Day 26 – Project 4, part three
  • Day 27 – Project 5, part one
  • Day 28 – Project 5, part two
  • Day 29 – Project 5, part three
  • Day 30 – Project 6, part one
  • Day 31 – Project 6, part two


Day 32: Consolidation III

You’ve learned about WebKit, UIAlertController, Auto Layout, and more – some more fundamentals of iOS development. Before we continue on to more projects, let’s take a moment to review what you’ve learned.

  • Day 32 – Milestone: Projects 4-6


Days 33-40: Codable, buttons, and GCD

The next three projects we’ll be building projects where you meet some of the most important topics in iOS development: working with data from the internet, and taking advantage of the raw power of iOS devices. Of course, you’ll also be making useful products along the way!

  • Day 33 – Project 7, part one
  • Day 34 – Project 7, part two
  • Day 35 – Project 7, part three
  • Day 36 – Project 8, part one
  • Day 37 – Project 8, part two
  • Day 38 – Project 8, part three
  • Day 39 – Project 9, part one
  • Day 40 – Project 9, part two


Day 41: Consolidation IV

You’ve tackled some really big projects these last few days, not least learning about building a user interface in code and running code in background threads. It’s time to take a moment to review what you’ve learned.

  • Day 41 – Milestone: Projects 7-9


Days 42-49: A whole new world

The next three projects we’ll be making are markedly different from the previous 9 – you’ll learn about making grids rather than tables, learn how to make high-performance 2D games using SpriteKit, and, at last, learn how to save user data.

  • Day 42 – Project 10, part one
  • Day 43 – Project 10, part two
  • Day 44 – Project 10, part three
  • Day 45 – Project 11, part one
  • Day 46 – Project 11, part two
  • Day 47 – Project 11, part three
  • Day 48 – Project 12, part one
  • Day 49 – Project 12, part two


Days 50-51: Consolidation V

Now that you have conquered UICollectionViewController and Codable, it’s time to pause for a day and review what you learned – while also tackling a fresh challenge.

  • Day 50 – Milestone: Projects 10-12
  • Day 51 – Expanding your horizons


Days 52-58: Images and animation

The next three projects we’ll be making move into the realm of richer user interfaces – you’ll learn about manipulating images using Core Image, animation views, and more.

  • Day 52 – Project 13, part one
  • Day 53 – Project 13, part two
  • Day 54 – Project 13, part three
  • Day 55 – Project 14, part one
  • Day 56 – Project 14, part two
  • Day 57 – Project 15, part one
  • Day 58 – Project 15, part two


Day 59: Consolidation VI

We’ve covered some hugely important iOS technologies that you’ll be relying on time and time again, so let’s take a brief pause to recap what you’ve learned.

  • Day 59 – Milestone: Projects 13-15


Days 60-65: Maps and bugs

In the next three projects we’ll be edging a little further away from UIKit as we explore MapKit, Apple’s powerful and flexible mapping framework, then we’ll tackle a skill you’re more than ready for: debugging.

  • Day 60 – Project 16, part one
  • Day 61 – Project 16, part two
  • Day 62 – Project 17, part one
  • Day 63 – Project 17, part two
  • Day 64 – Project 18, part one
  • Day 65 – Project 18, part two


Day 66: Consolidation VII

Although these last few projects should have been nice and easy for you, it’s still worth pausing for a day to review what was learned and try out a fresh challenge.

  • Day 66 – Milestone: Projects 16-18


Days 67-73: Leveling up

We’re going to tackle two tough projects back to back, but in doing so you’ll start to really be amazed at the things you can build on iOS – brace yourself!

  • Day 67 – Project 19, part one
  • Day 68 – Project 19, part two
  • Day 69 – Project 19, part three
  • Day 70 – Project 20, part one
  • Day 71 – Project 20, part two
  • Day 72 – Project 21, part one
  • Day 73 – Project 21, part two


Day 74: Consolidation VIII

After two tough projects and yet another important technique, it’s time to hit the brakes for a day and double check everything is sinking in.

  • Day 74 – Milestone: Projects 19-21


Days 75-81: Beacons and bombs

These next three projects will start to show you just how much you’re now able to build with iOS – your skills are really starting to flourish!

  • Day 75 – Project 22, part one
  • Day 76 – Project 22, part two
  • Day 77 – Project 23, part one
  • Day 78 – Project 23, part two
  • Day 79 – Project 23, part three
  • Day 80 – Project 24, part one
  • Day 81 – Project 24, part two


Day 82: Consolidation IX

Your head is probably spinning with Bezier paths and iBeacons, so before we continue on with more learning it’s important to take a day to pause and reflect on what has been covered.

  • Day 82 – Milestone: Projects 22-24


Days 83-89: Multipeer and motion

These next three projects give you chance to go over some earlier topics again, while also introducing some new frameworks such as MultipeerConnectivity and Core Motion.

  • Day 83 – Project 25, part one
  • Day 84 – Project 25, part two
  • Day 85 – Project 26, part one
  • Day 86 – Project 26, part two
  • Day 87 – Project 26, part three
  • Day 88 – Project 27, part one
  • Day 89 – Project 27, part two


Days 90-91: Consolidation X

As we enter the last few days of this challenge, it’s as important as ever to pause for a moment and review what you’ve learned these last few days.

  • Day 90 – Milestone: Projects 25-27
  • Day 91 – Core Graphics redux


Days 92-98: The Final Countdown

These final three projects introduce you to some key functionality that will really help you up your game: using Face ID, mixing UIKit and SpriteKit, and identifying performance hotspots in your code.

  • Day 92 – Project 28, part one
  • Day 93 – Project 28, part two
  • Day 94 – Project 29, part one
  • Day 95 – Project 29, part two
  • Day 96 – Project 29, part three
  • Day 97 – Project 30, part one
  • Day 98 – Project 30, part two


Day 99: Consolidation XI

It’s time to recap all the things you’ve learned in the last few days, and start work on a big challenge to go out with. You’ve got this!

  • Day 99 – Milestone: Projects 28-30


Wrap up

It’s time to see how much you remember from across the entire curriculum. Are you ready for this?



Save 50% in my WWDC sale.

SAVE 50% To celebrate WWDC24, all our books and bundles are half price, so you can take your Swift knowledge further without spending big! Get the Swift Power Pack to build your iOS career faster, get the Swift Platform Pack to builds apps for macOS, watchOS, and beyond, or get the Swift Plus Pack to learn advanced design patterns, testing skills, and more.

Save 50% on all our books and bundles!

Unknown user

You are not logged in

Log in or create account

Link copied to your pasteboard.