Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Dr. Ron Erez

This course focuses on iOS development using the Swift programming language and the SwiftUI framework. You'll start by learning the programming fundamentals of Swift. This is a project-based course, where each project introduces new language features and provides hands-on experience. The apps will be developed using the MVVM software design pattern, which complements SwiftUI and iOS development. Additionally, you'll learn how to efficiently use Xcode, navigate the interface, utilize hotkeys, and create code snippets.

New content related to iOS 18 is uploaded regularly.

Read more

This course focuses on iOS development using the Swift programming language and the SwiftUI framework. You'll start by learning the programming fundamentals of Swift. This is a project-based course, where each project introduces new language features and provides hands-on experience. The apps will be developed using the MVVM software design pattern, which complements SwiftUI and iOS development. Additionally, you'll learn how to efficiently use Xcode, navigate the interface, utilize hotkeys, and create code snippets.

New content related to iOS 18 is uploaded regularly.

Here is a list of the topics we will cover and the apps we will create.

  1. Xcode. We start by downloading Xcode and SF Symbols, adapting it to our needs and learning essential keyboard shortcuts.

  2. The Swift Programming Language. We start with the basics of the Swift programming language, move on to slightly more advanced Swift topics, and then focus on a dedicated section of Swift coding exercises.

  3. Extended Introduction to Swift. After getting our feet wet in the previous section we move onto a more systematic and comprehensive coverage of the Swift programming language.

  4. Swift Coding Exercises. This section presents a range of coding exercises with different difficulty levels to help reinforce the concepts covered in the previous two sections.

  5. Higher Order Functions and Functional Programming. Higher-order functions are integral to Swift and SwiftUI, so this section is dedicated to this crucial concept.

  6. Greetings App. The aim is to introduce the fundamentals of SwiftUI and provide a brief glimpse into the capabilities of both Swift and SwiftUI. In this short app, we will explore essential layouts, animations, tap gestures, gradients (both linear and radial), multilingual support (including English, Spanish, and more), creating app icons for all devices, and enabling light and dark mode support.

  7. Icons - Light, Dark and Tinted. In this brief section, we will explore icons in iOS 18, including light, dark, and the newly introduced tinted icons.

  8. Basics. The goal is not to give an encyclopedic treatment, rather cover a large chunk of the fundamentals and then quickly dive into as many apps as possible where we use these basics and beyond.

    1. Programming basics, i.e. variables, constants, arrays, loops, structs, conditionals, basic data types, guard, tuples, enumerations, etc.

    2. HStack, VStack, ZStack, gradients, colors, text, alignment, frames, rotations, grids, images, AsyncImage

  9. User Interface Exercise. Video-based exercises with solutions, testing our understanding of concepts from the previous section.

  10. Data Flow in SwiftUI. Understanding @State, @Binding, @ObservedObject, @StateObject, @Published, Observable, and @EnvironmentObject.

  11. Exploring Images. Scale to Fit and Fill, and AsyncImage.

  12. Code Snippets. Utilizing code snippets to write programs more efficiently. While this topic is straightforward, it’s highly practical. In this section, we also cover helpful concepts such as:

    - Page tabbed views 

    - Background colors 

    - Buttons 

    - Gradient text and masks 

    - Clean default views 

    - Avatars 

    - Clickable images linking to websites 

  13. Animations. Keyframes, Bounce, Phase, Breathe, Wiggle, Rotate, and Pulse animations

  14. Gestures. Incorporating various types of gestures such as drag, tap, and magnify

  15. Stylizing Text Views. String Interpolation, Markdown, Attributed Strings, Measurements, Pluralization with Inflection, and OpenURLAction and Text Renderer

  16. Calculator. We implement a nice UI based on a beautiful design from dribbble. We support both light and dark mode and discuss state variables.

  17. Brevis App - Hotkeys. A straightforward yet useful hotkey app designed to work seamlessly on iPhone, iPad, and macOS.

  18. Recipe App MVVM. This is the first App in the course that covers the MVVM design pattern which is central in this course. We also cover basic navigation and lists and custom views in this section.

  19. Chinese Continuing App. This app includes unit testing, MVVM architecture, API calls using URLSession, and features a visually appealing splash screen with a random image.

  20. Fizz Buzz. This app is built around the classic interview question known as Fizz Buzz. We start by exploring Xcode's playground and then progress to developing an app focused on string manipulation. The app implements Fizz Buzz in multiple programming languages, including Swift, Rust, Go, C, and JavaScript/HTML, effectively creating a program that generates other programs. Additionally, we cover how to copy text to the clipboard and explore the context menu.

  21. HTML to Color Extension. In this section we write code that converts  HTML to usable code in SwiftUI. Namely we automate the creation of color extensions which will be used in the Charts App of our course (or in any app for that matter).

  22. Exploring Charts. We create charts using the SwiftUI Charts framework. Using drag gestures in the charts. Horizontal and vertical bar charts, line charts, area charts.

  23. Activity Tracker - Pie Charts and Donut Charts with Swift Data. In this section, we dive into creating visual representations of data using pie charts and donut charts in Swift, leveraging Swift Data for robust data management and visualization.

  24. Line Plots. In this section, we explore line plots with a focus on various intriguing topics. We start by creating random line plots and then move on to examining Lissajous curves, including their parameterizations. We'll also cover essential graphics functions, delve into implementing trigonometric functions, and illustrate the prime number theorem through visual representation. This comprehensive approach provides a solid understanding of how to use line plots to convey complex mathematical concepts and data.

  25. Core Data Math Game. We create a math game focusing on MVVM and Core Data. In addition like most of the apps in the course, the app supports multiple languages out of the box via localization.

  26. Swift Data. In this section, we delve into Swift Data, an alternative to Core Data. We will explore its features and benefits, examining how it streamlines data management and integration within Swift applications.

  27. Building and Deploying Titanic Survival Predictions with CoreML and CreateML. This brief section is designed to give you an introduction to the capabilities of CoreML and CreateML by exploring a practical example: predicting Titanic passenger survival. We’ll start with preparing and preprocessing the Titanic dataset, then use CreateML to train a predictive model, and finally, integrate the model into an iOS app using CoreML. This hands-on exercise will offer a taste of the power and ease of Apple's machine learning tools, demonstrating how they can be applied to real-world data and applications.

  28. Alarm App. This section is a key highlight of the course. We draw inspiration from a design on Dribbble to build a sophisticated user interface that supports multiple languages, including English, Spanish, French, Italian, German, and Turkish. The complexity of the UI provides a great opportunity to work with advanced design elements such as navigation stacks, tab views, grids, shapes, and date pickers. We also create a custom toggle button using tap and drag gestures, states, and bindings.

       In addition, we delve into advanced topics such as async-await and, notably, local push notifications, which are essential for engaging users with timely updates. We explore the use of environment objects, published properties, state management, and bindings, with a particular focus on how these concepts are applied throughout the app, especially in the context of local notifications. This section offers a comprehensive look at these powerful tools and techniques, showcasing their application in creating a robust and interactive app.

  29. Conway's Game of Life. This exercise is based on a classic programming challenge developed by the late British mathematician John Conway, who is remembered for his contributions despite having passed away from COVID. In this version of the game, we extend the concept by allowing users to modify the game rules. Our focus will be on both the programming logic and creating an attractive user interface, including elements such as sliders, custom check boxes, and ForEach views.

  30. Tip Calculator. My first thought was - not another tip calculator. However, this app stands out with its stunning design inspired by Dribbble. In this section, we dive into working with shapes, and place a strong emphasis on state management and bindings. Additionally, we ensure the app is fully localized and adapted for different modes, including light and dark themes, iPad and iPhone, as well as portrait and landscape orientations.

  31. Flashcards App. As the name suggests, this app focuses on creating and managing flashcards. We place a significant emphasis on implementing tap, magnification, and drag gestures within the app.

  32. Mystic Puzzle Game: Mastering the 15-Puzzle Challenge in SwiftUI. Dive into the world of classic puzzles with the Mystic Puzzle Game, also known as the 15-puzzle game. This engaging project challenges you to shuffle 15 tiles, leaving one space empty, and requires users to strategically move the tiles back into their correct positions.

    In this course section, you'll explore more than just a visually appealing interface. We tackle the intricate logic behind the puzzle, making it a stimulating programming exercise. You'll learn how to implement complex algorithms and state management in SwiftUI while creating a smooth, interactive user experience.

  33. Quote of the Day App.  In this section, we'll utilize a quote API to learn how to fetch data from the internet—a crucial skill for many apps. Additionally, we'll explore the use of custom fonts to enhance the app's design and user experience.

  34. Speed code a Chill Meditation App. We create a very simple meditation in 30 minutes flat. This is to show what can be done easily in SwiftUI with very little time and effort.

  35. Multilingual Animals. This can be viewed as an educational game for children. The main goal of this project is to learn how to support text to speech in multiple languages, namely, English, Spanish and French. Of course other languages can easily be supported.

  36. The remaining four apps focus on the frontend. All based on designs from dribbble. Namely.

    1. Body Shape UI.

    2. Meditation App UI.

    3. Finance App UI.

    4. Task Manager UI.

Moreover this course is dynamic in the sense that I will regularly post more material of my own and/or in response to specific requests from students.

I hope you enjoy this course as much as I enjoyed creating it. Also make the code your own. Experiment and be creative. Try to implement an App idea of your own.

Feel free to ask questions in the Q & A or message me directly. I'm always happy to answer questions and check for questions twice a day.

Happy programming and have a Great day

Ron

Enroll now

What's inside

Learning objectives

  • Learn to build ios apps
  • Learn good programming practices
  • Learn mvvm design pattern
  • Have fun programming and exploring

Syllabus

Introduction
Introduction and How to Get Help
Downloading Xcode and Creating our First App!
SF Symbols
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Covers MVVM, a software design pattern that simplifies the development of the user interface, and complements SwiftUI and iOS development, making apps easier to maintain and scale
Includes coverage of Swift Data, which streamlines data management and integration within Swift applications, and is an alternative to Core Data
Explores CoreML and CreateML by predicting Titanic passenger survival, offering a taste of the power and ease of Apple's machine learning tools applied to real-world data
Features content related to iOS 18, which may be subject to change as the operating system is still under development and has not yet been released
Requires downloading Xcode, which is a large piece of software that may take time and bandwidth to download, and may require a newer operating system
Focuses on Xcode and SF Symbols, adapting it to specific needs and learning essential keyboard shortcuts, which can greatly improve a developer's workflow and productivity

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Project-based deep dive into ios & swiftui

According to learners, this course provides a deep dive into iOS 18 and SwiftUI 6 with extensive, project-based content. Students find that building numerous apps is highly effective for learning. The course effectively teaches the MVVM pattern. Reviewers highlight the up-to-date material and a responsive instructor who updates the course. Some mention the pace can be fast and the course is challenging for absolute beginners, recommending some prior programming experience. Despite the challenges, it offers excellent value for serious developers.
Responsive instructor support
"Instructor is very responsive in Q&A. Highly recommend..."
"Instructor answers questions quickly."
"Super comprehensive... The instructor is great and updates the content frequently."
"The instructor clearly knows his stuff and keeps the material updated."
Effectively teaches MVVM design pattern
"The MVVM pattern is taught well and applied consistently. Instructor is very responsive in Q&A."
"The MVVM recipe app was a great introduction to the pattern, and the later apps like the Alarm App and Finance UI solidify it."
"Learning MVVM through practical examples is much better than just theory."
"The coverage of MVVM is thorough, which is crucial for building maintainable apps."
Covers the latest iOS 18 and SwiftUI 6
"The coverage of SwiftUI 6 and iOS 18 features is excellent and up-to-date."
"Content feels current and relevant for iOS 18."
"The instructor is great and updates the content frequently."
"Content feels current and relevant for iOS 18."
Extensive project-based practical learning
"This course is truly a deep dive! The coverage of SwiftUI 6 and iOS 18 features is excellent and up-to-date. I especially appreciate the project-based approach; building real apps like the Alarm and Activity Tracker really solidified my understanding."
"Fantastic course! The content is incredibly thorough, starting from Swift basics and building up to complex apps. ... The projects are well-chosen and challenging in a good way."
"The sheer volume of content is impressive, especially the range of projects. I learned a lot about SwiftUI and MVVM."
"Excellent value. The 80-hour estimate is accurate, and you get a massive amount of practical knowledge. The MVVM recipe app was a great introduction to the pattern, and the later apps... solidify it."
Pace may be fast for absolute beginners
"Some sections feel a little fast-paced, particularly the more advanced Swift topics initially."
"Absolute beginners might find it overwhelming without pausing and re-watching."
"However, as a complete beginner to programming, I found the initial Swift sections very challenging and the pace rapid. I had to supplement heavily with other resources just to keep up."
"Be prepared for a steep learning curve if you have no prior experience."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Deep Dive iOS 18 & SwiftUI 6: 80-Hour Project-Based Course with these activities:
Review Swift Fundamentals
Reinforce your understanding of Swift programming fundamentals before diving into the course's project-based approach. This will help you grasp the more advanced concepts and efficiently build iOS apps.
Show steps
  • Review basic syntax, data types, and control flow in Swift.
  • Practice writing simple Swift programs to solidify your understanding.
  • Familiarize yourself with Swift's optionals and error handling.
Read 'SwiftUI by Tutorials'
Supplement your learning with a comprehensive guide to SwiftUI. This book will provide a deeper understanding of the framework and its capabilities.
Show steps
  • Obtain a copy of 'SwiftUI by Tutorials'.
  • Work through the book's examples and exercises.
  • Experiment with different SwiftUI components and layouts.
SwiftUI Layout Challenges
Sharpen your SwiftUI layout skills by tackling various UI challenges. This will help you master HStack, VStack, ZStack, and other layout components.
Show steps
  • Find online resources with SwiftUI layout challenges.
  • Attempt to recreate the layouts using SwiftUI code.
  • Compare your solutions with the provided examples.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Build a Simple UI Clone
Solidify your understanding of SwiftUI by cloning a simple UI from Dribbble or another design resource. This will give you practical experience with layout, styling, and data binding.
Show steps
  • Find a simple UI design on Dribbble or a similar platform.
  • Break down the design into individual SwiftUI components.
  • Implement the UI using SwiftUI code.
  • Refine the UI to match the original design as closely as possible.
Document Your Learning Journey
Improve retention by documenting your learning process. This can be in the form of a blog, a series of notes, or even a video log.
Show steps
  • Choose a platform for documenting your learning journey.
  • Regularly record your progress, challenges, and insights.
  • Share your documentation with others to receive feedback.
Contribute to a SwiftUI Open Source Project
Deepen your understanding of SwiftUI by contributing to an open-source project. This will expose you to real-world code and collaboration.
Show steps
  • Find a SwiftUI open-source project on GitHub.
  • Identify an issue or feature you can contribute to.
  • Submit a pull request with your changes.
  • Respond to feedback and iterate on your contribution.
Read 'App Architecture: MVVM'
Enhance your understanding of the MVVM architecture pattern. This book will provide a deeper understanding of the pattern and its benefits.
Show steps
  • Obtain a copy of 'App Architecture: MVVM'.
  • Read the book and understand the principles of MVVM.
  • Apply the MVVM pattern to your own iOS projects.

Career center

Learners who complete Deep Dive iOS 18 & SwiftUI 6: 80-Hour Project-Based Course will develop knowledge and skills that may be useful to these careers:
iOS Developer
As an iOS Developer, you will create applications for Apple's mobile operating system. This course helps build a foundation in Swift and SwiftUI to develop iOS applications. You will gain experience with Xcode, an integrated development environment containing Apple's suite of software development tools, including those for testing and debugging. The extensive hands-on projects, like the Greetings app, the Recipe app, Flashcards app, and the Alarm app provide valuable experience in building real-world iOS applications. In particular, the course covers MVVM, a key skill for any iOS developer.
Swift Developer
Becoming a Swift Developer means specializing in Apple's Swift programming language to create apps for iOS, macOS, watchOS, and tvOS. The course provides a comprehensive introduction to the Swift language, covering fundamentals, advanced topics, and coding exercises. A significant portion of the course is dedicated to using Swift, along with SwiftUI, to build iOS applications. The many projects will show you how to utilize Swift, along with graphics frameworks and other developer tools to build dynamic and interactive applications. For example, the course illustrates the breadth of Swift through the creation of a program that generates code in other languages.
Mobile App Developer
A Mobile App Developer designs and builds applications for mobile devices, such as smartphones and tablets. This course will help you focus specifically on iOS development using Swift and SwiftUI. The project-based approach provides hands-on experience with building various apps, from simple tools to more complex applications using the MVVM design pattern. You'll also learn how to create user interfaces, work with data, and implement animations and gestures. Apps such as the Tip Calculator, Meditation App, and Finance App would prove useful.
Mobile Engineer
A Mobile Engineer is a software engineer that specializes in mobile software. This course will help you focus specifically on iOS development using Swift and SwiftUI, and teaches good programming practices within that particular environment. The project-based approach provides hands-on experience with building various apps. You'll also learn how to create user interfaces, work with data, implement animations and gestures, and connect to APIs. The brevis hotkey app would be of particular usefulness and relevance here.
User Interface Engineer
A User Interface Engineer focuses on creating and implementing the visual and interactive elements of software applications. The course may be useful as it covers SwiftUI, which is used to construct user interfaces for iOS apps. You'll learn how to use various UI components, layouts, and styling techniques. The course emphasizes hands-on experience, with numerous projects focused on creating visually appealing and intuitive user interfaces. You'll gain experience with animations, gestures, and other interactive elements. Of particular use may be the multiple UI based apps towards the end of the course.
Frontend Developer
A Frontend Developer implements the user-facing parts of websites and applications. This course may be useful because it covers SwiftUI, which is used to construct user interfaces for iOS apps. The various UI components, layouts, styling techniques, animations, and gestures that the course teaches are all critical to the frontend experience. Because the last four apps in this course focus on the frontend, students who wish to become Frontend Developers should be excited by this prospect.
Software Development Engineer
A Software Development Engineer designs, develops, and tests software applications and systems. This course may be useful, as it focuses on iOS development with Swift and SwiftUI. Experience with Xcode, Swift, and SwiftUI, allows you to create and maintain high-quality software. The project-based approach provides ample opportunity to apply your knowledge and refine your skills and good programming practices. In particular, the unit testing element of the Chinese Continuing App would prove useful here.
Software Engineer
As a Software Engineer you will design, develop, and maintain software systems. This course may be useful, as it delivers a project-based learning experience focused on iOS development using Swift and SwiftUI. The course provides hands-on experience with building various apps, and you will gain a good grounding in data structures and algorithms. The coverage of MVVM is also relevant, as are the broad range of Swift techniques taught. The math game and Conway's game of life, for example, teach the student the fundamentals of how to create sophisticated software.
Application Developer
An Application Developer is responsible for designing, coding, and testing applications for various platforms. This course may be useful, as it focuses on iOS application development using Swift and SwiftUI. You'll learn how to use Xcode, navigate the interface, and create code snippets. The project-based approach provides hands-on experience with building a variety of applications, reinforcing your understanding of app building. Furthermore, the course goes deep into localization, so that the applications you build can be used internationally.
Full-Stack Developer
A Full Stack Developer works on both the front-end and back-end components of applications. This course may be useful, as it will give you experience creating iOS applications that can be connected to back-end services. Although this course does not delve into backend development, being able to create the front end will still prove extremely useful. Specifically, this course has an emphasis on making API calls, such as the quote of the day app. You'll gain experience working with data, implementing user interfaces, and handling user interactions.
Software Architect
The Software Architect is responsible for making high-level design choices and setting technical standards, including software coding standards, tools, and platforms. While this role typically requires a master's or doctoral degree, and deep experience, this course will give you experience with Swift and SwiftUI, popular languages and platforms in the mobile app domain. You will also gain insights into the MVVM design pattern and good programming practices. Ultimately, this course may provide a helpful overview of mobile app architecture.
Technical Lead
The Technical Lead manages a team of software developers and guides them in implementing technical solutions. While a technical lead typically requires a master's or doctoral degree, and deep experience in the domain, this course will give you experience with Swift and SwiftUI, popular languages and platforms in the mobile app domain. You will gain insights into the MVVM design pattern and good programming practices from a student's point of view. The course will also show you the basics of unit testing.
Data Scientist
The Data Scientist applies statistical analysis, machine learning, and data visualization techniques to extract knowledge and insights from data. This course may be useful because it touches on machine learning. Specifically, the course has a section on building and deploying Titanic Survival Predictions with CoreML and CreateML, two tools which Apple has created for machine learning. The course is an introduction to those libraries, however.
Technical Product Manager
The Technical Product Manager blends technical knowledge with product management skills to define and guide the development of tech products. Although a product manager does not need to code, this course may be useful as you will gain a solid understanding of the iOS development process and a deeper understanding of the technical trade offs involved. Because the course involves the active construction of apps, it may provide a helpful view into the world of the iOS developer.
Quality Assurance Engineer
The Quality Assurance Engineer works with software development teams to test software and ensure high quality. Although this role requires a separate skillset, it will be helpful to have a knowledge of how iOS code is constructed. This course covers the Swift language, testing methodologies, and user interaction. The course will also provide a hands-on experience with Xcode, the standard tool of the iOS developer. The coverage of unit testing is directly applicable to quality assurance.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Deep Dive iOS 18 & SwiftUI 6: 80-Hour Project-Based Course.
Provides a comprehensive guide to SwiftUI, covering everything from basic layouts to advanced animations and data management. It's a great resource for learning the fundamentals of SwiftUI and building real-world iOS apps. This book is particularly useful for understanding the declarative approach of SwiftUI and how it differs from UIKit. It serves as a valuable reference throughout the course.
Provides a deep dive into the Model-View-ViewModel (MVVM) architecture pattern, which is heavily used in this course. It explains the principles of MVVM and how to implement it effectively in iOS apps. This book is particularly useful for understanding how to separate concerns and create testable code. It serves as a valuable reference for designing and building robust iOS applications.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser