Lesson 1
Get Help with Your Account
What to do if you have questions about your account or general questions about the program.
Basic swift
Lesson 1
Get Help with Your Account
What to do if you have questions about your account or general questions about the program.
Lesson 2
Nanodegree Career Services
The Careers team at Udacity is here to help you move forward in your career - whether it's finding a new job, exploring a new career path, or applying new skills to your current job.
Lesson 3
Get Ready to Learn iOS
Welcome to the iOS Nanodegree! This is where your journey to become an iOS developer begins. Learn about the structure of the program, and determine the best path for you.
Learn the basics of Swift, the programming language used to develop iOS apps.
Lesson 1
Variables and Types
Learn about one of the most basic building blocks of nearly every programming language. Variables give developers the ability to store information that can be used to control the behavior.
Lesson 2
Operators and Expressions
Add, subtract, multiply, divide, and more using operators and expressions in Swift!
Lesson 3
Control Flow
Learn how to control when and how Swift code is executed by using if and else statements.
Lesson 4
Functions
Learn how to define and use functions, which give developers the ability to bundle up code so that it can be reused multiple times.
Lesson 5
Structures and Enums
Learn how to declare and use structures, or structs, in Swift, and explore Enums, a type that can represent any value in a set of related values.
Lesson 6
Optionals
Why does Swift need this data type that no other language has? Join us as we get to the bottom of this mystery, and learn optionals inside and out.
Lesson 7
Strings
Playing with Strings is a lot of fun. In this lesson, we'll explore Swift’s String struct, and practice some common string manipulations.
Lesson 8
Collections
It’s time to explore collection types, including Arrays and Dictionaries.
Lesson 9
Object-Oriented Programming
Learn foundational concepts of object oriented programming, including classes, inheritance, and polymorphism.
Build your first app with Swift and Xcode, Apple’s programming environment for app development.
Lesson 1
Introduction and Xcode
An introduction to Swift and Xcode. Swift is Apple's fast-growing programming language for building iOS apps and much more. Xcode is the programming environment used to create native Apple applications with Swift.
Lesson 2
AutoLayout and Buttons
Learn about Storyboards — Xcode's interface design tool. Use AutoLayout, UIButtons, and UILabels to create an interface. Start developing the views for the Pitch Perfect app.
Lesson 3
ViewController and Multiple Views
Learn how to react to touch events and change the user interface accordingly.
Lesson 4
Delegation and Recording
Introduction to AVAudioRecorder, Delegation, and programmatic segues. Setup audio recording in the Pitch Perfect App
Lesson 5
Playback and Audio Effects
Setup audio playback including rate, pitch, echo, and reverb. Learn about UIStackViews and class extensions.
Lesson 6
Brainstorm Ideas for Your Final App!
Get a kickstart on your open-ended final app by brainstorming potential ideas!
Lesson 7 • Project
Pitch Perfect
Create an iPhone app that records a conversation with you and a friend and plays it back to make you sound like a chipmunk or Darth Vader!
Lesson 8
Suggested Electives
Learn how to store your code on Github, and review Swift syntax if needed, before proceeding.
Develop an app with UIKit, Apple’s front-end framework for developing fast and powerful web interfaces.
Lesson 1
Outlets and Actions
Connect outlets and actions using only code and graphically using storyboard. Use the following UIKit classes: UIButton, UILabel, UISwitch.
Lesson 2
View Presentations and Segues
Learn how to present views modally using the following UIKit classes: UIImagePickerController, UIAlertController, UIActivityViewController.
Lesson 3
The Delegate Pattern
Most common UIKit components make use of the delegate pattern. Learn how delegates make important connections between the model, view, and controller.
Lesson 4
Build V1.0 of the MemeMe App
Create a first version of the MemeMe app that enables a user to take a picture, add text, and share the created meme on Facebook, Twitter, SMS, or email.
Lesson 5 • Project
MemeMe 1.0
You'll create a first version of the MemeMe app that enables a user to take a picture, and add text at the top and bottom to form a meme.
Lesson 6
Table Views
Table views are one of the most commonly used views in iOS apps. Learn how to implement tables in your own apps.
Lesson 7
Navigation
Learn how iOS uses navigation stacks to manage multiple views in an app.
Lesson 8
Complete the MemeMe App
Memes will appear in a tab view with two tabs: a table view and a collection view.
Lesson 9 • Project
Project: MemeMe 2.0
You'll create a final version of the MemeMe App. Memes will appear in a tab view with two tabs: a table view and a collection view.
Incorporate networking into your apps, and harness the power of APIs to display images and retrieve data. Use Apple’s Grand Central Dispatch, or GCD, framework to create asynchronous apps, ensuring a smooth user experience, even while your apps run lengthy operations in the background.
Lesson 1
Welcome to Part 2!
So far, you've focused largely on UIKit and various UI elements of your apps. Now, you'll learn how to deal with network requests and storing data to the device.
Lesson 2
Prereq: Associated Values
Associated values are values that can be attached to enum cases. In this lesson, learn how to use associated values to enhance enums while simultaneously improving their readability and conciseness.
Lesson 3
Prereq: Guards
Guards, or guard statements, specify conditions that must be true for execution to continue. By using guards, you can create preconditions and safely control execution.
Lesson 4
Prereq: Errors
In this lesson, learn how to handle errors in Swift. These errors, unlike warnings or issues raised by the compiler, are generated in situations where correct behavior cannot be guaranteed.
Lesson 5
Prereq: Generics
Generics is one of the most powerful features in Swift. It powers Swift arrays, dictionaries, and collections, and it can be used to apply functionality to specified types.
Lesson 6
Prereq: Closures Reloaded
Learn about closures, an alternative syntax to functions, as well as how `typealias` allows you to rename existing types.
Lesson 7
Networking Foundations: HTTP
See what happens behind the scenes when you visit a website and learn the basics of HTTP networking.
Lesson 8
Networking Foundations: Swift
Apply your knowledge of HTTP networking to make GET requests in Swift and use GCD to ensure a responsive UI.
Lesson 9
Intro to Web Services
Visit the documentation for a third party web API and use it to build a networked iOS app.
Lesson 10
Consuming Data
Get practice parsing JSON and learn a variety of parsing techniques using Swift's Codable protocol.
Lesson 11
Authentication
Learn about the authentication process, access user-specific data, and make your first POST request in Swift.
Lesson 12
Deeper API Interaction
Practice reading documentation as you add features to a networked app.
Lesson 13
Common Networking Challenges
Learn techniques for debugging networked apps, limiting network usage, and properly handling errors.
Lesson 14 • Project
On the Map
In this project, you’ll pull in data from a web service to display a map with pins. Tapping on a pin will display a custom URL posted by another iOSND student at that location.
Lesson 15
Suggested Electives
Time to get some more practice with web APIs, and get really comfortable debugging!
Learn about simple persistence, the iOS File System, and the “sandbox.” Set up the classes we need to get Core Data up and running so that we can create, save, and delete model objects. Enable user interfaces to reactively update whenever the model changes, and safely migrate user data between versions.
Lesson 1
GCD and Queues
Understand how and what tasks you can run in the background on an app and what must always run in the foreground.
Lesson 2
Backgrounding Lengthy Tasks
Create a simple app that downloads huge images. Apply your newly acquired knowledge to send this network lengthy task to the background in two different ways.
Lesson 3
Simple Persistence
Learn about simple persistence and how to save small pieces of data, like user preference, using NSUserDefaults.
Lesson 4
iOS File System and Sandboxing
Learn about the iOS File System, the “sandbox”, and how to access these files using NSFileManager.
Lesson 5
Introducing Core Data
Explore what a data layer is, and how to convert a non-Core Data app to have a Core Data model.
Lesson 6
The Core Data Stack
Set up the classes we need to get Core Data up and running so that we can create, save, and delete model objects.
Lesson 7
Simpler Code with Core Data
Enable user interfaces to reactively update whenever the model changes.
Lesson 8
Rounding Out Core Data
Safely migrate user data between versions, and move slow work to the background.
Lesson 9 • Project
Project: Virtual Tourist
Build an app that lets you tour the world from the comfort of your home. Users will be able to drop pins on a map, download pictures for the location, and save favorites to their device.
Lesson 10
Optional Elective: Firebase in a Weekend - Saturday
Learn about additional data persistence solutions to impress employers! We highly encourage you to do this elective. It is optional.
Lesson 11
Optional Elective: Firebase in a Weekend - Sunday
During the Sunday lesson, you'll be getting into more advanced topics. They include: - Using Firebase Storage to allow users to upload picture messages from their phone - Securing your user's uploade
Lesson 12
Optional Elective: Firebase in a Weekend - Monday
Got extra time this weekend? As a bonus, you will write your own Cloud Function for Firebase that makes chat more fun by adding emojis to FriendlyChat conversations. Cloud Functions for Firebase integ
This is your chance to let your iOS Developer skills shine! For this final project, you'll design and build your own iOS app, taking the design from the drawing board to the App Store.
Lesson 1
Research
Brainstorm and vet multiple app ideas. Think about the UI elements used in each, get user feedback on designs, and investigate relevant web APIs and libraries.
Lesson 2
Build
Choose an idea to pursue and build it! We'll share tips for getting started, dealing with code that doesn't work, and how to submit to the App Store.
Lesson 3
Reflect
Reflect on the process: What went well, and what you might do differently next time? Recognizing and learning from mistakes is what makes you a better developer!
Lesson 4 • Project
Project: You Decide!
This is your chance to let your iOS Developer skills shine! For this final project, you'll design and build your own iOS app, taking the design from the drawing board to the App Store.
Lesson 5
Suggested Electives
Continue your career progress, and take our Technical Interview Prep and Mobile Design Patterns courses to help ace your next interview.
Optional Courses
Learn how to use git, a popular version control system and essential tool for any developer.
Lesson 1
What is Version Control?
Version control is an incredibly important part of a professional programmer's life. In this lesson, you'll learn about the benefits of version control and install the version control tool Git!
Lesson 2
Create A Git Repo
Now that you've learned the benefits of Version Control and gotten Git installed, it's time you learn how to create a repository.
Lesson 3
Review a Repo's History
Knowing how to review an existing Git repository's history of commits is extremely important. You'll learn how to do just that in this lesson.
Lesson 4
Add Commits To A Repo
A repository is nothing without commits. In this lesson, you'll learn how to make commits, write descriptive commit messages, and verify the changes you're about to save to the repository.
Lesson 5
Tagging, Branching, and Merging
Being able to work on your project in isolation from other changes will multiply your productivity. You'll learn how to do this isolated development with Git's branches.
Lesson 6
Undoing Changes
Help! Disaster has struck! You don't have to worry, though, because your project is tracked in version control! You'll learn how to undo and modify changes that have been saved to the repository.
Learn how to interact with remote repositories, and collaborate with other developers on GitHub.
Lesson 1
Working With Remotes
You'll learn how to create remote repositories on GitHub and how to get and send changes to the remote repository.
Lesson 2
Working On Another Developer's Repository
In this lesson, you'll learn how to fork another developer's project. Collaborating with other developers can be a tricky process, so you'll learn how to contribute to a public project.
Lesson 3
Staying In Sync With A Remote Repository
You'll learn how to send suggested changes to another developer by using pull requests. You'll also learn how to use the powerful `git rebase` command to squash commits together.
Learn about AutoLayout, and how to use stack views and constraints to create pixel-perfect UIs.
Lesson 1
Introduction to AutoLayout
In this lesson, you will learn what problems AutoLayout solves and why you can't afford to ignore it any longer.
Lesson 2
Using AutoLayout
In this lesson, you will learn about the 4 different ways of implementing AutoLayout, which one we recommend you use, and why. You also will delve deeper into the recommended way: UIStackViews.
Lesson 3
View Properties used by AutoLayout
AutoLayout uses 3 properties that all views share: intrinsicContentSize, compressionResistence and contentHugging. Don't be put away by the weird names! It's actually pretty simple, and in this lesson, you'll learn all about them.
Lesson 4
Beginning StackViews
In this lesson, you will learn about 4 properties of StackViews that define its apparently weird behavior. Once you're done with this lesson, you will understand there's a logic to StackViews, and a lot of power too.
Lesson 5
Positioning Views & Constraints
In this lesson, your will learn what a constraint is and well as the role of constraints in AutoLayout.
Lesson 6
Horizontal Layouts
In this lesson, we will create simple horizontal layouts. These will be building blocks for more complex layouts.
Lesson 7
Vertical Layouts
In this lesson, we will take composition and vertical layouts to the next step and use them to create more complex layouts.
Lesson 8
Beyond AutoLayout
Before you leave, let's take a look at what you went through and what might be lying ahead.
Sketch UI elements for your final app, and start visualizing what it might look like.
Lesson 1
Sketch UI Elements for Your Final App!
Now that you know a bit more about UI elements available to you, sketch out some potential UIs for your final app ideas!
Find Web APIs to use for your final app.
Lesson 1
Find Web APIs for Your Final App
Begin researching potential web APIs to use in your final app.
Learn how to debug your apps quickly and efficiently so that you can boost your productivity as a developer.
Lesson 1
Debugging, Printing, and Logging
Meet the "So Many Bugs" app, which is used to solve coding mysteries. Learn about the debugging process, and how to use print statements to identify bugs.
Lesson 2
Stepping Through Code
Learn how to use breakpoints to examine application state at any point during execution.
Lesson 3
LLDB and Breakpoint Actions
Learn about LLDB (low-level debugger)—the debugging super tool. Learn common LLDB commands, tips, and tricks.
Lesson 4
Breakpoints and Visual Tools
Learn about exception and symbolic breakpoints, and how to debug your code using Xcode's visual debugging tools.
This course will teach you when and why to choose Firebase as a backend for your iOS application.
Lesson 1
Firebase in a Weekend: Saturday
Start the weekend off right by implementing Firebase in FriendlyChat. FriendlyChat is a realtime messaging application. In this lesson you will: - Create a Firebase project in the Firebase console - Setup Firebase in FriendlyChat - Read and write chat message data to the Firebase Realtime Database - Secure your database with Firebase's security rules language - Setup login and authentication for users
Lesson 2
Firebase in a Weekend: Sunday
During the Sunday lesson, you'll be getting into more advanced topics. They include: - Using Firebase Storage to allow users to upload picture messages from their phone - Securing your user's uploaded files using Firebase's Storage rules - Accessing and analyzing your application's data about user behaviors - Sending notifications to users from the Firebase console - Using Firebase Remote Config to test a new max length for FriendlyChat messages, all without an app update
Lesson 3
Firebase in a Weekend: Monday
Got extra time this weekend? As a bonus, you will write your own Cloud Function for Firebase that makes chat more fun by adding emojis to FriendlyChat conversations. Cloud Functions for Firebase integrates the Firebase platform by letting you write code that responds to events and invokes functionality exposed by other Firebase features.
Learn how to grow an app's user base using Firebase Analytics, a free and unlimited analytics solution. You'll be able to learn who your users are and how they interact with your app.
Lesson 1
Introduction to Digital Analytics
In this lesson, we will take on the role of the developer for a live app: Flood It! We will discuss the foundations of digital analytics using Flood It as a model.
Lesson 2
Introduction to Firebase Analytics
Learn about the Firebase Analytics Dashboard and how to view the data collected by your apps. Also, learn how to build audiences and funnels by leveraging events with Firebase Analytics.
Lesson 3
Implementing In-App Analytics
Learn how to use built-in events provided by Firebase Analytics and implement some of your own. Then, see how easy it is to tailor an app experience to segments of users with User Properties.
Lesson 4
Analytics Integration
In this lesson, you'll build upon what you've learned about Firebase Analytics and explore crash reporting, remote configuration, and dynamic links — a suite of powerful tools for improving your apps.
This series of coding challenges is designed to prepare you for the most common causes of friction between Objective-C and Swift.
Lesson 1
Objective-C vs. Swift
Learn the distinguishing language features of Objective-C.
Lesson 2
Writing Classes in Objective-C
Familiarize yourself with Objective-C syntax. Write some classes and properties from scratch.
Lesson 3
Methods and Messages in Objective-C
Master how to write and call methods in Objective-C. Build a functioning game.
Lesson 4
Porting from Objective-C to Swift (Part 1)
Write custom classes and incorporate third party frameworks and extensions.
Lesson 5
Porting from Objective-C to Swift (Part 2)
Persist data with NSCoder and NSKeyedArchiver. Implement navigation with a collection view.
Lesson 6
Common Interop Challenges
Facilitate communication between the languages of iOS. Complete a set of coding challenges to sharpen interop skills.
Lesson 7 • Project
Interoperability Problem Set
Develop good habits for dealing with variables exported by Objective-C in forms that are difficult for Swift to handle.
This course is strongly recommended for all students who want to gain mastery of common techniques—or design patterns—for organizing and structuring code in iOS apps.
Lesson 1
Principles of Software Design
Learn the core principles and tenets of software design.
Lesson 2
Creational Design Patterns
Understand what creational design patterns are and when to apply them.
Lesson 3
Structural Design Patterns
Understand what structural design patterns are and when to apply them.
Lesson 4
Behavioral Design Patterns
Learn about behavioral design patterns, and know when to apply them.
Lesson 5
Software Anti-Patterns
Understand why learning software anti-patterns, and writing code “the wrong way” is just as important as learning best practices when designing scalable and maintainable code.
Get hands-on practice and detailed walk-throughs of data structures and algorithms. Note that the programming interface in this course is still in beta, and is continually being improved.
Lesson 1
Please Read Before Taking this Course
A reminder that the Swift Workspace, your programming interface in this course, is still in beta and is continually being improved.
Lesson 2
Introduction and Efficiency
Start off with a basic introduction to topics covered in this course and the overall content structure, including an explanation of expected Swift knowledge.
Lesson 3
List-Based Collections
Learn the definition of a list in computer science, and see definitions and examples of list-based data structures, arrays, linked lists, stacks, and queues.
Lesson 4
Searching and Sorting
Explore how to search and sort with list-based data structures, including binary search and bubble, merge, and quick sort. Learn how to use recursion.
Lesson 5
Maps and Hashing
Understand the concepts of sets, maps (dictionaries), and hashing. Examine common problems and approaches to hashing, and practice with examples.
Lesson 6
Trees
Learn the concepts and terminology associated with tree data structures. Investigate tree types, such as binary search trees, heaps, and self-balancing trees.
Lesson 7
Graphs
Examine the theoretical concept of a graph and understand common graph terms, coded representations, properties, traversals, and paths.
Lesson 8
Case Studies in Algorithms
Explore famous computer science problems, specifically the Shortest Path Problem, the Knapsack Problem, and the Traveling Salesman Problem.
Lesson 9
Technical Interviewing Techniques
Learn about the “algorithm” for answering common technical interviewing questions. Practice and get tips for giving interviewers what they’re looking for.