Intro – 01_Objective-C vs. Swift
01. Introduction1:13
03. Intro to Dasmer Singh00:00
04. Interview with Dasmer Singh00:00
05. Compare and Contrast00:00
06. Similarities Objective-C and Swift00:00
07. Differences Handling Nil00:00
08. Differences Mutability00:00
09. Mutability in Objective-C
10. NSArray vs. NSMutableArray00:00
11. Differences Typing00:00
12. In Objective-C Arrays are not Typed00:00
13. Dynamic Method Resolution00:00
14. The Power Is In Your Hands
15. With Great Power…00:00
16. Interview Questions About Objective-C00:00
17. Practice NSArray vs. NSMutableArray00:00
18. Practice Invoking Methods on Nil
19. Interview Question Inheritance
20. Seek Out More Practice Questions0:18
Intro – 02_Writing Classes in Objective-C
01. Introduction00:00
02. Class Declaration00:00
03. Code for the House Class
04. Property Attributes nonatomic and atomic
05. Readwrite, Readonly, and Copy00:00
06. Class Initialization00:00
07. Understanding Self
08. Code for the Custom Initializer
09. Practice Write the Book Class00:00
10. Making Two Classes Work Together00:00
11. More Property Attributes Strong and Weak00:00
12. Practice Build on the Book Project00:00
13. Practice Rock, Paper, Scissors
14. Lesson 2 Outro00:00
Intro – 03_Methods and Messages in Objective-C
01. Introduction to Lesson 300:00
02. Review Method Definition Syntax00:00
03. Practice Method Definitions
04. Calling Methods Syntax and Vocabulary00:00
05. Why Do We Say Send a Message00:00
06. Quiz Methods and Messages
07. Add a Game Property
08. Finishing the Method throwDown00:00
09. Properties Provide Setters and Getters00:00
10. Control Flow Switch Statements00:00
11. Putting the generateMove Method to Work00:00
12. Control Flow If Statements00:00
13. Practice Messaging in Objective-C0:06
14. Exercise RPS Helper Methods
15. Making a Method Visible to Other Classes00:00
16. Exercise RPS Results Message
17. Exercise RPS, Putting It All Together00:00
18. Nice work! Next Up…00:00
Intro – 04_Porting from Objective-C to Swift (Part 1)
01. Interview with Keith Smiley from Lyft00:00
02. Lesson 4 Introduction00:00
03. GIFMaker Demo00:00
04. Getting Started
05. App Components
06. To Do List00:00
07. Present the Video Camera00:00
08. What’s Analogous to a Category
09. UIViewController Extension00:00
10. Display a GIF in a UIImage00:00
11. Implement Regift Methods00:00
12. Display the GIF in the GifEditor00:00
13. Do You See the New GIF
14. Convert a Video into a GIF Check!00:00
15. Rewriting the Gif Class
16. Sample Swift Gif Class
17. Configure the Editor to Add a Caption00:00
18. UITextFieldDelegate Methods
19. UITextFieldDelegate Methods Sample Code
20. Make Room for the Keyboard
21. Make Room for the Keyboard Sample Code
22. Add a Caption to the Animated GIF
23. What is this Method Doing
24. Let’s Walk Through presentPreview00:00
25. Add a Caption Check!00:00
26. Share the GIF00:00
27. Share the GIF Sample Code
28. Share the GIF Check!00:00
29. Create an Action Sheet00:00
30. Convert an Existing Video Check!00:00
31. Enable Video Trimming Steps
32. Enable Video Trimming Sample Code
33. Crop GIF to be Square
34. Quiz How Did the Cropping Go
35. Finishing Touches00:00
36. Get Ready for the Next Iteration…00:00
Intro – 05_Porting from Objective-C to Swift (Part 2)
01. Introduction00:00
02. GIFMaker 2.0 Demo00:00
03. GifMaker 20 Todo List00:00
04. Setup the SavedGifsViewController
05. UICollectionView Protocols00:00
06. Setup the PreviewVC and its Delegate
07. View Saved GIFs in a Collection Check!00:00
08. Conform to the NSCoding Protocol00:00
09. Sample Code for the NSCoding Protocol
10. Handling Untyped Arrays00:00
11. Construct a File Path for the GIFs Array
12. Sample Code to Create the File Path
13. Save and Retrieve the GIFs00:00
14. Where Should We Unarchive the GIFs
15. Persist GIFs Check!00:00
16. The GIF Detail View
17. Sample Code for the GIF Detail View
18. First Time User Experience
19. Styling
20. Add this Project to Your Portfolio
21. Well Done! Next Up…00:00
Intro – 06_Common Interop Challenges
01. Remember Dasmer00:00
02. Interview with Dasmer Singh00:00
03. #1 Nil Values00:00
04. Nullability Annotations00:00
05. Quiz Annotate the Book Class
06. #2 The Hazards of ID and AnyObject00:00
07. Taking Care with AnyObject Optional Chaining and Casting00:00
08. Lightweight Generics00:00
09. Quiz ID and the Hazards of AnyObject
10. #3 Error Handling00:00
11. How Swift Interprets an NSError00:00
12. How Objective-C Interprets Swift Errors00:00
13. #4 Is Your Swift API visible to Objective-C
14. Using @objc00:00
15. Mixed Language Projects and Importing Files
16. Outro00:00
17. Objective-C Course Finale00:00
Intro – 01_Interoperability Problem Set
01. Interoperability Problem Set Description
02. Interoperability Problem Set
Project Description – Objective-C for Swift Developers
Project Rubric – Objective-C for Swift Developers
Get Ready to Learn iOS
Variables and Types
02. Interlude Download Xcode
03. Course Sandbox0:56
04. Exercise Your First Lines of Swift00:39
05. Exercise Hello World00:23
06. Exercise Review
07. Intro to Variables2:09
08. Data Types
09. Creating Variables1:28
10. Type Inference
11. Changing a Variable’s Value
12. Constants1:51
14. Tips With String Literals
15. Tips With String Literals (Continued)
16. Lesson 1 Conclusion0:17
Operators and Expressions
02. Operators in Playgrounds
03. Terms to Remember
04. Working With Operator Expressions2:51
04. Working With Operator Expressions 21:37
04. Practice
05. Back to Game Points
05. QUESTION
06. Looking Ahead at New Operators0:14
06. Question
07. Boolean Expressions00:18
08. Quiz
09. The AND Operator
10. The OR Operator
10. Quiz
11. The NOT Operator0:14
11. Quiz
Control Flow
02. If Statements1:43
04. If Else and Else If Statements
05. If, Else If Practice
06. More on Conditionals0:15
07. Switch Statements00:00
08. Loops0:12
09. For Each Loops00:00
10. While Loops00:00
11. The Break Keyword00:00
12. Repeat While0:12
12. Quiz
Functions
02. Function Syntax00:00
03. Functions with Parameters00:00
03. Functions with Parameters 200:00
03. Functions with Parameters 300:00
04. Function Scope
05. Returning Values00:00
06. Default Parameters and Using Functions00:00
07. Chaining Functions
08. Internal and External Parameter Names0:15
Structures and Enums
01. Writing Structures and Properties0:09
02. Creating an Instance of a Struct00:00
03. Accessing properties00:00
03. Accessing properties 200:00
04. Advanced Structs3:25
05. Structs Practice00:00
05. Quiz
06. Playing with Structs
07. Enums0:16
08. Enums, Switch Statements, and Initialization0:31
08. Enums, Switch Statements, and Initialization 20:16
07. Practice00:00
Optionals
01. Introduction to Optionals0:22
02. About Nil Values0:22
03. The Optional Type00:00
04. Unwrapping Optionals
05. Optional Chaining00:00
06. Unsafe Unwrapping and Implicit Optionals00:00
06. Unsafe Unwrapping and Implicit Optionals 200:00
06. Quiz
Strings
01. Intro to Strings00:00
01. Quiz
02. String Initialization
03. Properties and Methods
04. String Methods Practice00:00
04. String Methods Practice 200:00
04. String Methods Practice 300:00
05. String Manipulation
06. String Manipulation Practice00:00
06. Quiz
06. Practice00:00
Collections
01. Introduction to Arrays2:33
02. Array Operations
03. Looping Through Arrays
04. Practice With Arrays00:00
04.2 Practice00:00
04. Quiz
05. Introduction to Dictionaries0:59
06. Dictionary Operations2:56
06. Practice00:00
07. Sets0:10
07. Sets 21:01
07. Practice00:00
Object-Oriented Programming
01. Classes1:02
02. Value and Reference Types
02. Quiz
04. Polymorphism
05. Protocols4:52
06. Extensions
07. Review and Conclusion0:16
Introduction and Xcode
01. Introduction0:28
02. Course Map1:00
03. Pitch Perfect Overview1:09
04. Creating a Hello World Swift iOS App2:38
05. Tour of Xcode4:12
06. Document Outline in Xcode1:13
07. Xcode Shortcuts
08. Introduction to the MVC Pattern1:43
09. MVC Pattern in Mail.app
10. What’s Next0:20
AutoLayout and Buttons
01. Introduction0:56
02. Intro to the Storyboard3:36
03. AutoLayout Basics0:50
04. AutoLayout Minimum Info Needed1:58
05. Quiz on AutoLayout Constraints0:20
05. Solution0:27
06. Constraints to the Record Button00:00
07. Alternative Way to Create Constraints00:00
08. Adding Code for the Button00:00
09. From Code to UI Element00:00
10. Note on IBOutlets, IBActions, and Constraints
11. Difference Between IBAction and IBOutlet
11. Quiz
12. Connecting the Stop Recording Button00:00
13. Adding Constraints for the New Buttons00:00
14. More Info on AutoLayout
15. Where Do Buttons Come From00:00
ViewController and Multiple Views
01. Introduction00:00
02. Application Lifecycle00:00
03. Opening Documentation in Xcode00:00
04. UIViewController viewDidLoad00:00
04. UIViewController viewDidLoad 200:00
04. Quiz
05. ViewDidLoad and Friends00:00
06. Setting State Before a View Appears00:00
07. Enable and Disable the Recording Buttons00:00
08. Adding Images to the Recording Buttons00:00
09. Resizing the Stop Button
10. Disabling the Stop Recording Button
11. How to Enable or Disable a UI Button00:00
11. How to Enable or Disable a UI Button 200:00
12. Enabling and Disabling the Buttons00:00
13. Multiple Views00:00
14. Using a UINavigation Controller00:00
15. Adding a Second View Controller00:00
16. UINavigationController
17. Recap and Next Steps00:00
18. Recap What You Have Learned00:00
Delegation and Recording
01. Lesson Overview00:00
02. AVAudioRecorder and Deciphering New Code
03. AVAudioRecorder Code Explanation00:00
04. Renaming the Recording View Controller00:00
05. Adding the AVAudioRecorder00:00
06. Recording Issues00:00
07. Fixing the Segue00:00
08. Quiz
09. Adding Delegation to RecordSoundsVC00:00
10. Summarize What You Learned (Delegation)00:00
10. Summarize What You Learned (Delegation) 200:00
11. Sending the Recorded Audio File00:00
12. Creating the PlaySoundsViewController00:00
13. Setup the PlaySoundsViewController
14. Prepare for Segue and Receiving the Data00:00
15. Wrapup and What’s Ahead00:00
Playback and Audio Effects
01. Lesson Overview0:29
02. StackViews as a Concept1:07
03. Inserting StackViews00:00
04. Snail and Rabbit Button Icons00:00
05. StackView for Pitch Effects00:00
06. StackViews for Echo+Reverb and Stopping Playback
07. Fixing the UI
08. Wiring up Buttons (IBOutlets+IBActions)00:00
09. Troubleshooting IBOutlets and IBActions00:00
10. Adding the Audio Extension00:00
11. Playing Back Audio00:00
12. PlaySoundsViewController Extension00:00
13. Clean Up
14. Wrap Up00:00
15. Reflection
Brainstorm Ideas for Your Final App!
01. Welcome to Project 1.5!00:00
02. First iOS Apps by Experienced Developers00:00
03. Let’s Build an App!00:00
04. Benefits of Logging your Progress
05. Course Map and Mindset00:00
07. Starting at the Drawing Board00:00
08. Brainstorm Ideas Personal Motivation00:00
10. Brainstorm Ideas Featured Apps00:00
12. Lacking Ideas Let’s Get Creative!00:00
13. Advice for Getting Creative00:00
14. Get Feedback on your Ideas!00:00
Pitch Perfect
01. Pitch Perfect
Project Rubric – Pitch Perfect
Project Description – Pitch Perfect
What is Version Control
01. What is Version Control1:59
02 What is Version Control1:20
03. Git and Version Control Terminology1:32
03.2 Git and Version Control Terminology
03.2 Git and Version Control Terminology2:08
03.3 Git and Version Control Terminology00:00
03.4 Git and Version Control Terminology00:00
04. MacLinux Setup00:00
05. Windows Setup00:00
06. Onward00:00
Create A Git Repo
01. Intro00:00
02. Create A Repo From Scratch
03. Clone An Existing Repo
05. Outro0:27
Review a Repo’s History
01. Intro2:27
02. Displaying A Repository’s Commits00:00
02.2 Displaying A Repository’s Commits00:00
03. Changing How Git Log Displays Information00:00
03.2 Changing How Git Log Displays Information00:00
04. Viewing Modified Files
04. Viewing Modified Files
04.2 Viewing Modified Files00:00
04.2 Viewing Modified Files
05. Viewing File Changes
06. Viewing A Specific Commit
06. Viewing A Specific Commit
07. Outro00:00
Add Commits To A Repo
01. Intro00:00
04. Commit Messages
04. Commit Messages
04.2 Commit Messages
06. Having Git Ignore Files
06. Having Git Ignore Files
07. Outro00:00
Tagging, Branching, and Merging
01. Intro1:04
03. Branching3:08
04.0 Branching Effectively
05. Merging00:00
06. Merge Conflicts
07. Outro00:00
Undoing Changes
01. Intro00:00
02. Modifying The Last Commit
03. Reverting A Commit
04.0 Resetting Commits
05. Lesson Outro00:00
06. Course Outro00:00
Working With Remotes
01. Intro00:00
02.2 Remote Repositories00:00
03. Add A Remote Repository00:00
04. Push Changes To A Remote00:00
05. Pulling Changes From A Remote00:00
05.2 Pulling Changes From A Remote00:00
06. Pull vs Fetch00:00
06.2 Pull vs Fetch00:00
07. Lesson Wrap Up00:00
Working On Another Developer’s Repository
01. Intro0:41
02. Forking A Repository00:00
02.2 Forking A Repository3:56
Staying In Sync With A Remote Repository
01. Intro0:39
02. Create a Pull Request1:25
04. Manage an active PR
05. Squash Commits00:00
05.2 Squash Commits00:00
05.3 Squash Commits00:00
06. Course Wrap Up00:00
Develop Your Personal Brand
01. Why Network
02. Why Use Elevator Pitches
03. Personal Branding
04. Meet Chris
05. Elevator Pitch
06. Pitching to a Recruiter
07. Use Your Elevator Pitch
08. Resources in Your Career Portal
LinkedIn Review
01. Using LinkedIn
02. Resources in Your Career Portal
Project Description – LinkedIn Profile Review Project
Project Rubric – LinkedIn Profile Review Project
GitHub Review
01. Introduction
02. GitHub profile important items
03. Good GitHub repository
04. Interview with Art – Part 1
05. Identify fixes for example “bad” profile
06. Quick Fixes #1
07. Quick Fixes #2
08. Writing READMEs with Walter
09. Interview with Art – Part 2
10. Commit messages best practices
11. Reflect on your commit messages
12. Participating in open source projects
13. Interview with Art – Part 3
14. Participating in open source projects 2
15. Starring interesting repositories
16. Outro
17. Resources in Your Career Portal
Project Description – Optimize Your GitHub Profile
Project Rubric – Optimize Your GitHub Profile
Outlets and Actions
01. Introduction0:52
02. MemeMe App0:49
03. Course Map0:39
04. Click Counter and its Object Diagram2:11
05. Coding Click Counter00:00
06. Click Counter Quiz00:00
06. Click Counter00:00
07. Creating the Count and Label Properties00:00
08. Diagramming the target action00:00
09. Setting the Target Action00:00
10. Experimenting with Target Action
11. Actions as Callback Methods00:00
12. Transitioning to Storyboard Label00:00
13. Transitioning to Storyboard, Button00:00
14. Actions Outlets Quiz
15. Intro Switches for the Color Maker App00:00
16. Researching Switches for Color Maker
16. Quiz
17. Diagramming Color Maker00:00
18. Connecting the Color Maker00:00
18. Quiz
19. Help with Connecting the Color Maker00:00
20. Debugging Color Maker Error 100:00
20. Quiz
202. Debugging Color Maker Error 100:00
21. Debugging Color Maker Error 200:00
21. Quiz
22. Debugging Color Maker Error 300:00
23. Challenge App Color Maker with Sliders
24. Challenge App Quiz
25. End of Lesson 100:00
View Presentations and Segues
01. Presenting View Controllers1:13
02. Get Your Game Face On!00:00
03. Modal Presentation vs Navigation00:00
03.2 Modal Presentation00:00
04. How does a view get presented modally00:00
05. Launch Image Picker and Activity View00:00
06. Launch Activity View and Alert View00:00
07. Summarize code for 3 Experiments
08. Dice Example, Take Control00:00
08.2 Dice Example – Take control00:00
09. Presenting the Dice View Controller00:00
10. Presenting View Controllers Code Only
11. How Do ViewControllers Communicate00:00
11. Quiz
12. Demonstrate Code Segue00:00
13. Code Segue Review
14. Segue Only00:00
15. Steps For Segue Only
16. Passing Data Between ViewControllers00:00
17. prepareForSegue00:00
18. Review of prepareForSegue
19. Challenge App Roshambo00:00
20. Steps to Build Roshambo
22. Lesson 2 End00:00
The Delegate Pattern
01. Introducing Delegates0:25
02. Reuse with Customizaton1:33
03. The Course Github Repository
04. Compare and Contrast Custom Text Fields0:29
04. Quiz
05. Introducing Protocols1:00
06. Real World Examples of Protocols
07. Text Field Code Review1:42
07. Quiz
08. The UITextFieldDelegate Protocol
09. Diagramming the Text Field App2:28
10. A Look at the Other Two Delegates0:36
10. Quiz
10.2 A Look at the Other Two Delegates2:58
11. Creating a Random Color Delegate1:21
12. Random Color Delegate Code
13. Preparing for the Challenge Apps2:11
14. Challenge Apps
16. Next Up MemeMe v1.00:36
Build of the MemeMe App
01. MemeMe 1.0 Project Intro0:24
02. MemeMe 1.0 Demo1:24
03. MemeMe 1.0 To-Do List0:35
04. Reflecting on the To-Do List0:13
05. Picking Images2:24
06. Researching the UIImagePicker Delegate
07. Receiving an Image Using a Delegate
08. What About the Camera
09. Textfield Specifications
10. Working with Text Attributes
11. Move View Get Out the Way2:25
12. Code for Keyboard Adjustments
13. Implementing keyboardWillHide
14. Recommended Reading on NSNotifications
15. Generating a Meme Object
16. Sharing a Meme using an Activity View
MemeMe The Meme Editor
01. MemeMe 1.0 The Meme Editor
Project Description – MemeMe 1.0 The Meme Editor
Project Rubric – MemeMe 1.0 The Meme Editor
Table Views
01. Recalling Text Field Delegate0:37
02. Protocol Methods Review0:47
02. Quiz
03. Observing HealthKit Safari and Contacts1:45
04. Guessing the Properties of Data Struct0:27
04.2 Guessing the Properties of Data Struct0:36
05. Key Delegate Data Source Questions1:21
05. Quiz
06. Recognizing Method Signatures
06. Quiz
07. Favorite Things0:41
07. Quiz
07.2 Favorite Things0:25
08. How cellForRowAtIndexPath Wrangles Cells1:51
09. Implementing cellForRowAtIndexPath
09. Quiz
10. Do-Re-Mi App
11. Approaching the Problem from Storyboard0:37
12. Exploring the Bond Villains Project
13. Setting up Bond Villians in Storyboard0:32
13.2 Setting up Bond Villians in Storyboard0:07
14. Connecting the Storyboard in Xcode1:35
15. Choosing Cell Styles
16. Challenge App Roshambo with History1:07
17. Steps to Build Roshambo with History
19. Next Up Navigation0:14
Navigation
01. Recalling Navigation1:55
02. Navigation in Your Favorite Apps0:22
02. Navigation in Your Favorite Apps 20:14
03. Make Your Own Adventure The Easy Way2:38
04. MYOA Steps and Solution
05. Adding Start Over Button Step 11:32
06. Adding Start Over Button Step 21:01
07. Start Over Button Steps and Solution
08. Navigation and the Stack Data Structure0:53
09. How Can We Verify the Stack Behavior0:33
09. How Can We Verify the Stack Behavior 20:36
09. Quiz
10. Intro to Rock Paper Scissors0:49
11. Replacing RPS Logic with Navigation
12. RPS with Navigation – Solution
13. Master-Detail, Navigation for Tables0:32
13. Quiz
14. Bond Villians Using Master Detail0:20
15. Steps to Rebuild BondVillains
16. Challenge App Data-Driven MYOA3:12
17. Notes on the Challenge App
19. Congrats0:41
Complete the MemeMe App
01. MemeMe 2.0 Project Intro0:32
02. MemeMe 2.0 Demo1:17
03. MemeMe 2.0 To-Do List0:28
04. Using a Shared Model1:15
05. Code for Using a Shared Model
06. Example Code Tabs Collection Views
07. TabViewControllers Villains in Tabs1:39
08. Setup the Sent Memes Collection View
09. Setup a Collection View in Storyboard3:40
10. Recap Set up the CollectionView in SB
11. Setting up a Collection View Flow Layout2:10
12. Code for Collection View Flow Layout
13. Troubleshooting Collection Views
14. Way to go!0:08
MemeMe 2.0 The Final Product
01. MemeMe 2.0 The Final Product
Project Description – MemeMe 2.0 The Final Product
Project Rubric – MemeMe 2.0 The Final Product
Suggested Electives
01. Suggested Electives
Introduction to AutoLayout
01. Welcome to AutoLayout!0:44
02. Why AutoLayout0:21
03. Laying Out Views2:10
04. The Need for Adaptive UI’s1:24
05. The Screen Sizes, They are a Changin´0:42
06. Adapting to Changes to the Available Space
07. What AutoLayout Really Is1:35
Using AutoLayout
01. Four Ways to Skin the AutoLayout Cat1:09
02. Enter UIStackView0:58
View Properties used by AutoLayout
01. Intrinsic Content Size0:36
02. Can the Intrinsic Content Size Change?
03. Compression Resistance0:16
04. Content Hugging0:19
05. Quiz
Beginning StackViews
01. StackViews 1010:31
02. Axis0:24
03. Spacing0:29
04. Distribution3:02
05. Alignment0:44
06. What on Earth is Going On1:16
07. Properties of a StackView Recap1:38
08. Commandments and Principles3:21
Positioning Views Constraints
01. What Does It Mean To Position A View1:02
02. Quiz
03. Creating a Row of Views1:15
04. Anatomy of a Constraint1:47
05. Different Devices0:47
06. Expand to Take the Whole Width1:09
07. Content Hugging and Compression Resistance1:18
08. Compression Resistance and Content Hugging Revisited1:01
09. Content Hugging Put to Test
09. Quiz
10. Of Margins and Training Wheels0:51
Horizontal Layouts
01. Two Text Fields in a Row1:01
02. Frames Will Be Different At Runtime2:07
03. Distribution0:39
04. Fill Equally
05. Composition StackViews within StackViews1:08
Vertical Layouts
01. Summing It Up!0:32
02. Image View as Big as Possible2:56
03. Header and Footer1:57
03. Header and Footer
04. Header and Footer Solved4:17
05. Textfields with the Same Size4:00
06. Centered, Square And Fat Image View4:35
07. Putting it All Together and Homework0:23
Beyond AutoLayout
01. Why is AutoLayout Hard
02. Different Devices, Different Rules…
Sketch UI Elements for Your Final App!
01. Welcome to Project 2.5!0:20
02. On Developing Multiple Ideas0:43
03. UI Elements for App Ideas
Making a Network Request
01. Get Out and Network1:08
02. Course Map Lesson 00:36
03. Which Apps Do You Use0:23
03. Which Apps Do You Use 20:42
04. Starting Our Concept List
05. How Apps Use the Network0:46
06. Getting Data with HTTP1:28
07. Adding to the Concept List
08. High-Level HTTP1:24
09. Adding to the Concept List
10. GET Requests5:13
11. Adding to the Concept List
12. Understanding New Concepts0:44
12. Understanding New Concepts 21:07
13. Creating a Request2:18
14. Understanding NSURLSession2:50
15. Starting a Request2:17
16. Background to Main1:40
17. App Transport Security3:10
18. Request a Different Image0:16
19. GCD Black Box0:23
20. Taking the Pill
21. The Blue Pill0:19
22. Networking with You!0:19
23. Lesson 0 Concept List
Using Web Services and APIs
01. Course Map Lesson 11:07
02. Web Services and APIs00:00
03. New Concepts
04. Which Web Service Should I Use00:00
04. Which Web Service Should I Use 200:00
05. Our First Networking App00:00
06. Using a Web Service00:00
07. Adding to the Concept List
08. Are You Set-Up with Flickr00:00
09. Which Flickr API Method Should I Use00:00
09. Which Flickr API Method Should I Use 200:00
10. Searching a Gallery’s Photos00:00
11. Build the URL00:00
12. Escaping Parameters00:00
12. Escaping Parameters 200:00
13. Making a Request00:00
14. Adding to the Concept List
15. Basics of Serialization00:00
16. Adding to the Concept List
17. Parsing JSON00:00
18. Adding to the Concept List
19. Deserializing JSON00:00
20. Picking Random Image00:00
21. Setting the Image00:00
22. New Concepts and Error Checking00:00
23. How Does it Work00:00
23. How Does it Work 200:00
24. Networking with You!00:00
25. Lesson 2 Teaser00:00
26. Lesson 1 Concept List
Problem Set JSON Parsing
01. Problem Set Files
02. JSON Parsing Prep
03. Exercise Instructions
05. Animals Solution
07. Hearthstone Solution
09. Achievements Solution
Chaining Asynchronous Requests
01. Course Map Lesson 200:00
02. Demo “Flick Finder”00:00
03. The Search Method Part 100:00
04. The Search Method Part 200:00
05. Using NSURL Components00:00
06. Pieces of a URL00:00
06. Pieces of a URL 200:00
07. New Concepts
08. The Text Search Action00:00
08. The Text Search Action 200:00
09. The LatLon Search Action00:00
09. The LatLon Search Action 200:00
10. Starting The Search00:00
11. What’s What Who’s Who00:00
11. What’s What Who’s Who 200:00
12. Completing a Search
12. Completing a Search 200:00
13. Making it More Random00:00
13. Making it More Random 200:00
14. Chaining Asynchronous Requests00:00
15. Adding to the Concept List
16. Selecting a Random Page00:00
16. Selecting a Random Page 200:00
17. Selecting a Random Image00:00
18. Networking with You!00:00
19. Lesson 3 Teaser00:00
20. Lesson 2 Concept List
Authenticating Requests
01. Course Map Lesson 0300:00
02. Interview with Travis Bell TheMovieDB00:00
03. More on TheMovieDB
04. Accessing User vs. Anonymous Data00:00
05. New Concepts
06. Demo My Favorite Movies00:00
07. Looking at TheMovieDB Docs00:00
08. Interview with Travis Bell Auth Flow00:00
09. Adding to the Concept List
10. Authorization Flow(Chart)00:00
11. Starting My Favorite Movies00:00
12. Are You Set-Up with TheMovieDB00:00
13. Updates to Info.plist for ATS00:00
14. Adding to the Concept List
15. Breaking Each Method into 7 Steps
16. GETing the Request Token00:00
16. GETing the Request Token 200:00
17. GETing the Session ID Login00:00
17. GETing the Session ID Login 200:00
18. GETing the Session ID Session ID00:00
18. GETing the Session ID Session ID 200:00
19. Securing the Requests00:00
20. GETing the User ID00:00
20. GETing the User ID 200:00
21. The Movie Detail View
22. Our First POST Request00:00
23. Adding to the Concept List
24. POSTing a Favorite Movie00:00
24. POSTing a Favorite Movie 200:00
25. Networking with You!00:00
26. Lesson 4 Teaser00:00
27. Lesson 3 Concept List
Improve Networking with MVC
01. Course Map Lesson 400:00
02. Interview with Travis Favorite Apps00:00
03. Demo The Movie Manager00:00
04. A Quick Detour on Closures
05. Nonescaping and Escaping Closures
06. Escaping Closure Examples
07. Async Example of Escaping Closure
08. Why Escaping Closures
09. Checking Out the Code00:00
10. Keeping Our Code Clean with MVC00:00
11. Designing the API Methods00:00
12. Abstracting Away Redundant Code00:00
13. The Client You’ll Build00:00
14. A Method for GETting00:00
15. A Method for POSTing00:00
16. Our New Login Flow00:00
18. Interview with Travis Another Auth Flow00:00
19. The New Auth Flow (and OAuth)00:00
20. Authentication via the Website00:00
21. Adding Convenience GET SessionUser IDs00:00
22. Adding Convenience GET Watchlist00:00
23. Adding Convenience POST Watchlist00:00
24. Networking with You!00:00
25. Lesson 5 Teaser00:00
09. Checking Out the Code 200:00
11. Designing the API Methods 200:00
12. Abstracting Away Redundant Code 200:00
15. A Method for POSTing 200:00
17. Adding Convenience GET Request Token 200:00
20. Authentication via the Website 200:00
22. Adding Convenience GET Watchlist 200:00
23. Adding Convenience POST Watchlist 200:00
Preparing for On the Map
01. Course Map Lesson 500:00
02. Networks are Unreliable00:00
03. Part 1 What Happens Next00:00
03. Part 1 What Happens Next 200:00
04. Part 2 What Happens Next00:00
04. Part 2 What Happens Next 200:00
05. Techniques for Failing Gracefully
06. Network Link Conditioner00:00
07. Installing the Network Link Conditioner00:00
07. Installing the Network Link Conditioner 200:00
08. Handling Our Networking Problems00:00
09. Preparation Materials
10. On the Map Send Off00:00
11. Extended Topics
12. Networking with You!00:00
Closures Reloaded
01. Closures Reloaded00:00
02. What Makes Closures So Special00:00
03. Flying First Class00:00
04. First Class Demo00:00
05. The Answer to Life…00:00
05. The Answer to Life. 200:00
06. Adding Closures to an Array00:00
06. Adding Closures to an Array 200:00
07. Same Old Functions and Closures00:00
08. Functions and Closures00:00
08. Functions and Closures 200:00
09. Variable Capture Intro00:00
10. Variable Capture and Type Alias00:00
11. Type Alias Example00:00
12. Variable Capture at Last00:00
13. Type Alias00:00
13. Type Alias 200:00
14. Capture00:00
14. Capture 200:00
15. Outro00:00
GCD and Queues
01. GCD and Queues00:00
02. GCD and Threads00:00
02. GCD and Threads 200:00
03. Types of Queues00:00
04. Serial Queues Can I Have Concurrency00:00
04. Serial Queues Can I Have Concurrency 200:00
05. Main Functions in GCD00:00
06. Dispatch Async00:00
06. Dispatch Async 200:00
07. Execution Order00:00
07. Execution Order 200:00
08. Beware of UIKit and Core Data!00:00
09. Will it Crash The Toughest Bugs Ever00:00
09. Will it Crash The Toughest Bugs Ever 200:00
10. Outro00:00
Backgrounding Lengthy Tasks
01. Intro00:00
02. Example App00:00
03. Synchronous Download00:00
04. Asynchronous Download00:00
05. An Asynchronous Method00:00
06. Completion Closure00:00
07. Sync vs. Async00:00
07. Sync vs. Async 200:00
08. Recap and Best Practices00:00
On the Map
01. Demo On the Map00:00
02. APIs and New Methods00:00
03. Parse Announcement
04. Using the Parse API
05. Making Requests in a Playground
06. Parse API What is a Student Location
07. Parse API GETting Student Locations
08. Parse API GETting a Student Location
09. Parse API POSTing a Student Location
10. Parse API PUTting a Student Location
11. Using the API
12. API POSTing a Session
13. API DELETEing a Session
14. API GETting Public User Data
15. Working with Maps
16. On the Map
Project Description – On the Map
Project Rubric – On the Map
Suggested Electives
01. Suggested Electives
Conduct a Job Search
01. Introduction00:00
02. Job Search Mindset00:00
03. Target Your Application to An Employer00:00
04. Open Yourself Up to Opportunity00:00
05. Resources in Your Career Portal
Refine Your Entry-Level Resume
01. Convey Your Skills Concisely00:00
02. Effective Resume Components00:00
03. Resume Structure00:00
04. Describe Your Work Experiences00:00
05. Resume Reflection00:00
06. Resume Review00:00
07. Resume Review (Entry-level)
Refine Your Career Change Resume
01. Convey Your Skills Concisely00:00
02. Effective Resume Components00:00
03. Resume Structure00:00
04. Describe Your Work Experiences00:00
05. Resume Reflection00:00
06. Resume Review00:00
07. Resume Review (Career Change)
Craft Your Cover Letter
01. Get an Interview with a Cover Letter!00:00
02. Purpose of the Cover Letter00:00
03. Cover Letter Components00:00
04. Write the Introduction00:00
05. Write the Body00:00
06. Write the Conclusion00:00
07. Format00:00
08. Resources in Your Career Portal
Project Description – Craft Your Cover Letter
Project Rubric – Craft Your Cover Letter
Find Web APIs for Your Final App
01. Welcome to Project 3.5!
02. Find Existing APIs and Libraries
03. Advice for Choosing Web APIs Libraries
04. Find Vet Web APIs
05. Constructing URLs
05. Constructing URLs
06. Structure of the Web API’s Data
07. User Authentication
08. Summary and What’s Next
Debugging, Printing, and Logging
01. We Need to Talk About the Bug Problem00:00
02. Notice Code Examples and Repositories
03. SoManyBugs Repository
04. SoManyBugs Demo00:00
05. Shake the Bugs00:00
06. Warnings, Errors, and Runtime Errors00:00
07. Debugging Lingo
08. The Debugging Process00:00
09. Print Debugging00:00
09. Print Debugging – Solution00:00
10. Printable and DebugPrintable00:00
11. No More Crash!00:00
11. No More Crash!00:00
12. Advanced Print Debugging Logging00:00
13. Bonus Debugging Tool dump
Stepping Through Code
01. Breakpoint Debugging00:00
02. Setting Breakpoints00:00
03. Pausing Our Execution and the Debug Area00:00
05. Jumping Around Frames00:00
06. The Debug Bar00:00
07. Step In, Step Out, Step Over00:00
08. Fixing Settings Bug with Breakpoints00:00
08. Fixing Settings Bug with Breakpoints – Solution00:00
09. Stack Traces for Creating a Bug00:00
09. Stack Traces for Creating a Bug – Solution00:00
10. Debug Navigator Icons
11. Variable Kinds00:00
11. Variable Kinds – Solution00:00
12. Getting Help with Bugs00:00
13. Good Debuggers are Good Investigators00:00
LLDB and Breakpoint Actions
01. Better Debugging with Better Tools00:00
02. The Low Level Debugger00:00
03. Common LLDB Commands Part 100:00
04. Common LLDB Commands Part 200:00
05. Practicing with LLDB00:00
05. Practicing with LLDB – Solution00:00
06. Practicing with LLDB Demo00:00
07. LLDB Reference Material
08. Breakpoint Actions00:00
09. Playing with Breakpoint Options00:00
09. Playing with Breakpoint Options – Solution00:00
Breakpoints and Visual Tools
01. Exception Breakpoints00:00
02. Symbolic Breakpoints00:00
03. Pro Trip Property Breakpoints
04. Fix the Breakpoint Scene00:00
04. Fix the Breakpoint Scene – Solution00:00
05. Quick Look00:00
06. Debug View Hierarchy00:00
07. Fixing the Visual Bugs00:00
07. Fixing the Visual Bugs – Solution00:00
08. Fixing the Visual Bugs Solution Pt. 200:00
09. Xcode Debugging Hotkeys
10. Becoming a Debugging Ninja
11. Squash All the Bugs!00:00
Simple Persistence
01. Intro00:00
02. Course Overview00:00
03. UserDefaults Intro00:00
04. When Should You Use UserDefaults00:00
04. When Should You Use UserDefaults
04. When Should You Use UserDefaults? – Solution00:00
05. Example Before We Dive into the Code00:00
06. Pick Your Pitch00:00
07. Adding Persistence to Pick Your Pitch
08. Finishing Pick Your Pitch00:00
09. Outro00:00
iOS File System and Sandboxing
01. Intro00:00
02. The iOS File System00:00
04. The Sandbox00:00
05. Where Stuff Will Be Stored00:00
06. Writing Reading from the Sandbox00:00
07. A Visitor00:00
03. File System Quiz
Introducing Core Data
01. Introduction00:00
02. About Data Layers00:00
04. More than Persistence
05. Why Persist Data00:00
06. Why Apps Close00:00
07. Persistence Options
08. Introducing Mooskine00:00
09. Downloading Mooskine
10. The Existing Model00:00
11. Adding a Core Data Model00:00
12. Entities00:00
13. Attributes00:00
14. Attribute Types
16. Adding Attributes to Note
17. Relationships00:00
18. Two-Sided Relationships and Deletion Rules
19. Entities Review
20. Code Generation00:00
21. Codegen Consequences
22. Summary00:00
15. Optional Attributes
03. What is Core Data?
19. Entities Review
21. Codegen Consequences
The Core Data Stack
01. Introduction00:00
02. The Core Data Stack00:00
03. Stack Facts
04. Setting Up the Stack in Mooskine00:00
05. Switching to Code-Generated Classes00:00
06. Injecting the DataController Dependency00:00
07. Fetching Data for NotebooksListViewController00:00
08. Adding and Deleting Notebooks00:00
09. Fetch Requests, Faults and Uniquing
10. Creating and Saving Managed Objects
11. Making a Fetch Request
12. Practice Adapt NotesListViewController
13. Updating NotesListViewController00:00
14. NSPredicate
15. A Predicate Predicament
16. Saving Edits in NoteDetailsViewController00:00
17. When Should You Save00:00
18. Subclassing in Core Data
20. Extending Model Classes00:00
21. Customizing Note Initialization
22. Singletons and Dependency Injection
23. Review00:00
Simpler Code with Core Data
01. Introduction00:00
02. Refactoring00:00
03. Complexity in Mooskine00:00
04. NSFetchedResultsController00:00
06. Adding a Fetched Results Controller00:00
07. Fetched Results Controller and Collections00:00
08. Displaying Data00:00
09. Tracking Changes00:00
10. Adding Change Types
12. NSFetchedResultsControllerDelegate
13. Caching00:00
14. Practice NotesListViewController
15. Generic Data Source
16. Review00:00
05. Core Data Notifications
11. Number of Rows in a Section
Rounding Out Core Data
01. Competitive Analysis00:00
02. Introduction00:00
03. Storing Rich Text with NSAttributedString00:00
04. Binary and transformable attributes00:00
05. Changing a Data Model00:00
06. Adding a New Data Model00:00
07. Migration Types00:00
08. Custom mapping models
09. Creating a new model version
10. Transformable
10. Transformable
12. Pathifier Helper
13. Adding Text Formatting00:00
14. Concurrency in Core Data
15. Context Architecture Choices00:00
16. Context Creation and Keeping Queues Straight00:00
17. Context Merge Policies00:00
18. Creating a Background Context00:00
19. Using a Background Context00:00
20. Observing Notifications00:00
21. Running Mooskine00:00
22. Concurrency in Core Data
23. Summary00:00
Optional Elective Firebase in a Weekend – Saturday
01. Optional Elective Info
02. Firebase in a Weekend!00:00
03. Overview00:00
04. Favorite Features
05. Examination of Final App00:00
05. Creating a Firebase Project00:00
06. Download the Friendly Chat App
07. Firing Up FriendlyChat
08. Firebase in Xcode00:00
09. Installing Cocoapods00:00
10. Setting up Cocoapods for FriendlyChat00:00
11. Starter Code Walkthrough00:00
12. Starter Code Walkthrough Exercise
13. Firebase Realtime Database00:00
14. Why Firebase Realtime Database00:00
15. Database Structure00:00
16. Exploring the Database
17. Sending a Message00:00
18. Database Rules for Testing00:00
19. Reading from the Database00:00
20. Reading Messages00:00
21. Showing Messages00:00
22. Database Rules for Testing
23. Database Security00:00
24. Database Security Rules
25. Advanced Database Rules
26. Why is it Great to Authenticate00:00
27. Why is it Great to Authenticate (Exercise)
28. FirebaseUI Authentication00:00
29. Authentication in Firebase Console00:00
30. Getting Started with FirebaseUI00:00
31. Configuring Email and Password Authentication00:00
32. Configuring Google Authentication00:00
33. Saturday Check In00:00
Optional Elective Firebase in a Weekend – Sunday
01. Sunday Funday00:00
02. Firebase Storage Features00:00
03. Creating Storage Structure
04. Sending Friendly Photos00:00
05. Message in a Bottle00:00
06. A Fix and a Break00:00
07. Message Received!00:00
08. Bonus Seeing the Bigger Picture
09. Keep Your Stuff Safe00:00
10. Not Your Parents’ Permissions00:00
11. Playing Matchmaker00:00
12. Playing Matchmaker Exercise
13. Follow the Rules
14. Contexts or Chaos00:00
15. Reading in Context
15. Reading in Context
16. Securing it All Together
17. Analytics Answer “Now What”00:00
18. Analyze This
19. Notify Me00:00
20. Notifications Next Steps
21. Remote Config Little Changes, Big Impact00:00
22. Policies and Limits00:00
23. Talking Too Much00:00
24. Fixing Message Length00:00
25. Remote Config – Conclusion00:00
26. Making Firebase Your Homebase00:00
27. ConclusionExtra Practice
Optional Elective Firebase in a Weekend – Monday
01. Intro to Monday Module
02. Swift to JavaScript Comparison
03. Intro to Cloud Functions
04. Install the Firebase CLI
05. Create the Local Project
06. Cloud Functions Structure
09. Emojify in FriendlyChat App
11. Cloud Functions Conclusion
Virtual Tourist
01. Virtual Tourist
Project Description – Virtual Tourist
Project Rubric – Virtual Tourist
Introduction to Digital Analytics
01. How Does Your Garden Grow00:00
02. Course Outline00:00
03. Analytics Let the Data Drive00:00
04. Check Out Flood-It!00:00
05. Download Flood-It!
06. Demo of Flood-It!00:00
07. Measurement Planning00:00
08. Goal of Measurement Planning
09. Identifying Goals00:00
10. Go for the Goals
11. The Plan00:00
12. Meet Goals with In-App Purchases00:00
13. Planning
14. Planning – Conclusion00:00
15. The Plan for Your Goals
16. Are We There Yet00:00
17. KPI
18. KPI for Flood-It!
19. Analytics in Action00:00
Introduction to Firebase Analytics
01. Intro Flood-It!00:00
02. Firebase Analytics Intro00:00
03. Analytics for Flood-It!00:00
04. Access Demo Project
05. Date Range and Filters00:00
06. Quiz Date Range and Filters
06. Quiz: Date Range and Filters
06.2 Quiz: Date Range and Filters
06.2 Quiz: Date Range and Filters
07. Dashboard Reports00:00
08. Exploring Analytics Events00:00
09. Quiz: Events Scavenger Hunt
10. Tracking Events00:00
11. Automatically Collected Events
12. Conversion Events00:00
13. Conversion Events in Flood It
14. Audiences00:00
15. Funnels00:00
16. Design a Funnel
17. Summary Flood-It!00:00
Implementing In-App Analytics
01. Intro Implementing In-App Analytics00:00
02. Introducing the Green Thumb App00:00
03. Setting Up Green Thumb
04. Quiz Running the App
05. Firebase Automatically Collected Events00:00
06. Suggested Events00:00
07. Quiz: Suggested Events
08. Logging Events00:00
08.2 Logging Events00:00
09. Quiz Implementing Log to Cart Event
10. More Logging Events00:00
11. Quiz Creating the sendAddToCart Function
12. Quiz Implementing the Log to Cart Event
13. Custom Event Logging00:00
14. Quiz Event Logging Practice
15. User Properties00:00
16. Setting User Properties00:00
17. Configuring User Properties00:00
18. Quiz Logging the User Property
19. Summary Implementing In-App Analytics00:00
Analytics Integration
01. Intro Analytics Integration00:00
02. Track Certain Groups of Users with Audiences00:00
03. Quiz Create an Audience
04. Using an Audience
05. Fix Crashes with Crash Reporting00:00
06. Configuring Crash Reporting
07. Quiz Report a Crash
08. Improve Your App with Remote Config00:00
09. Implementing Remote Config00:00
10. Dynamic Links00:00
11. Implementing Dynamic Links
12. Custom Parameters for Dynamic Links00:00
13. Quiz Implementing Dynamic Links
14. Summary Analytics Integration00:00
15. Conclusion00:00
Research
01. First iOS Apps by Experienced Developers00:00
02. Let’s Build an App!0:58
03. Benefits of Logging your Progress
04. Course Map and Mindset00:00
06. Starting at the Drawing Board00:00
07. Brainstorm Ideas Personal Motivation00:00
09. Brainstorm Ideas Featured Apps00:00
11. Lacking Ideas Let’s Get Creative!00:00
12. Advice for Getting Creative00:00
13. Get Feedback on your Ideas!00:00
15. On Developing Multiple Ideas00:00
16. UI Elements for App Ideas
21. Find Existing APIs and Libraries00:00
22. Advice for Choosing Web APIs Libraries00:00
23. Find Vet Web APIs
27. Summary and What’s Next00:00
Build
01. It’s (Almost) Time to Start Building!00:00
02. Define Features for Your App Ideas00:00
03. Refine Your Feature Lists00:00
04. Choose Key Feature
05. It’s the Moment of Truth00:00
06. How Confident Are You
07. Create a Paper Prototype00:00
08. Reminder to Check out UX Design
09. Get Input Refine Your Paper Prototype00:00
10. Estimate Time to Completion00:00
11. Follow Your Timeline00:00
12. Where to Find Great Graphics00:00
13. Build Your App00:00
14. Tips for Getting Started00:00
15. What About When You Get Stuck00:00
16. Help Getting Unstuck00:00
17. Share Your Working Prototype!00:00
18. Testing 1, 2, 3…00:00
19. Get Users to Find Bugs00:00
20. Polish and Prep Your App00:00
21. App Store What You’ll Need
22. App Store Assets
23. App Store Certificate
24. App Store App ID
25. App Store Provisioning Profile
26. App Store Archive
27. App Store Bringing it All Together
28. You did it! Hip-Hip-Hoorah!00:00
Reflect
01. How’d it go00:00
02. Time Estimates00:00
03. What Would You Change00:00
04. What was Your Biggest Challenge00:00
05. What did You do Well00:00
06. What’s Next00:00
07. Monitor App Store Feedback
You Decide!
01. You Decide!
Project Description – You Decide!
Project Rubric – You Decide!
Principles of Software Design
01. Introduction to Software Design1:17
02. Software Design Principles3:00
03. Which Design is Extensible, Encapsulated, and Reusable
04. Keep it DRY00:00
05. SOLID Foundations
06. Single Responsibility Principle00:00
07. OpenClosed Principle00:00
08. Liskov Substitution Principle00:00
09. Interface Segregation Principle00:00
10. Dependency Inversion Principle00:00
11. SOLID Exercise
12. Summary Gang of Four Design Patterns00:00
Creational Design Patterns
01. Creational Design Patterns00:00
02. Factory Method00:00
03. Static Factory Method
04. Controlling Access00:00
05. Singleton00:00
06. When Lazy is Good
07. Dependency Injection00:00
08. No Dependency Injection
09. Dependency Injection vs Dependency Inversion
10. Object Pool00:00
11. Object Pool Exercise
12. Object Pools on iOS
13. Builder00:00
14. Builder Exercise
15. Summary00:00
Structural Design Patterns
01. Structural Design Patterns00:00
02. Adapter00:00
03. Adapters Using Protocols
04. Facade00:00
05. Decorator00:00
07. Match the Pattern
08. Summary00:00
06. Decorator vs. Inheritance
Behavioral Design Patterns
01. Introduction to Behavioral Design Patterns00:00
02. Observer00:00
03. Observer Exercise
04. Observers on iOS
05. Command00:00
06. Chain of Responsibility00:00
07. Mediator00:00
08. Memento
09. Finger Painting Exercise
10. Summary00:00
Software Anti-Patterns
01. Introduction to Software Anti-Patterns00:00
02. Code Smell
03. God Object
04. God Object Exercise
05. God Object Exercise Solution
06. Deep Inheritance
07. Deep Inheritance Exercise
08. Global Variables
09. The Takeaway
10. Congratulations!00:00
02. Code Smell
Please Read Before Taking this Course
01. Important Note about Your Swift Workspace
Introduction and Efficiency
01. Course Introduction2:09
02. Course Outline
03. Course Expectations
04. Syntax0:27
05. Swift Syntax Review
06. Swift Practice
07. Efficiency2:27
08. Notation Intro2:49
09. Notation Continued2:02
10. Worst Case and Approximation00:00
11. Efficiency Practice
List-Based Collections
01. Welcome to Collections00:00
02. Lists00:00
03. Arrays00:00
04. Swift Arrays
05. Linked Lists00:00
06. Linked Lists in Depth00:00
07. Linked Lists in Swift
08. Linked Lists Practice
09. Linked Lists Walkthrough
10. Stacks00:00
11. Stacks Details00:00
12. Stacks in Swift
13. Stacks Walkthrough
14. Queues00:00
15. Queues in Swift
16. Queues Walkthrough
Searching and Sorting
01. Binary Search00:00
02. Efficiency of Binary Search00:00
03. Binary Search in Swift
04. Binary Search Walkthrough
05. Recursion00:00
06. Recursion in Swift
07. Recursion Walkthrough
08. Intro to Sorting00:00
09. Bubble Sort00:00
10. Efficiency of Bubble Sort00:00
11. Bubble Sort Practice
12. Merge Sort00:00
13. Efficiency of Merge Sort00:00
14. Merge Sort Practice
15. Quick Sort00:00
16. Efficiency of Quick Sort00:00
17. Quick Sort in Swift
18. Quick Sort Walkthrough
Maps and Hashing
01. Introduction to Maps00:00
02. Sets and Maps00:00
03. Swift Dictionaries
04. Dictionaries Walkthrough
05. Introduction to Hashing00:00
06. Hashing00:00
07. Collisions00:00
08. Load Factor
09. Hash Maps00:00
10. String Keys00:00
11. String Keys in Swift
12. String Keys Walkthrough
Trees
01. Trees00:00
02. Tree Basics00:00
03. Tree Terminology00:00
04. Tree Practice
05. Tree Traversal00:00
06. Depth-First Traversals00:00
07. Tree Traversal Practice
08. Search and Delete00:00
09. Insert00:00
10. Binary Tree in Swift00:00
11. Binary Tree Walkthrough
12. Binary Search Trees
13. BSTs00:00
14. BST Complications00:00
15. BST in Swift
16. BST Walkthrough
17. Heaps00:00
18. Heapify00:00
19. Heap Implementation00:00
20. Self-Balancing Trees00:00
21. Red-Black Trees – Insertion00:00
22. Tree Rotations00:00
CoreML and Machine Learning
1. Introduction to Machine Learning5:02
2. Supervised Learning00:00
3. Unsupervised Learning6:10
4. Reinforcement Learning7:14
5. What is CoreML6:51
6. What we’ll be making00:00
8. How to Import the Image Recognition Model & Enable Camera Functionality00:00
9. Getting Image Recognition Results Back from Our V3 Model00:00
10. Hotdog or Not Hotdog00:00
Advanced CoreML – CoreML Tools & Converting Models
1. What we’ll be making00:00
2. Installing CoremlTools using Python PIP00:00
3. Converting a Caffe Model into MLModel00:00
4. [Challenge] – Set up a UIImagePickerController00:00
5. [Solution] – Setting up a UIImagePickerController00:00
6. [Challenge] Getting Classifications from Our Model00:00
7. [Solution] Getting Classifications from our Model00:00
8. [Challenge] Adding Cocoapods to Our Project00:00
9. [Solution] Adding Cocoapods to Our Project00:00
10. [Challenge] Making HTTP GET requests to Wikipedia using Alamofire and REST00:00
11. [Solution] Making HTTP GET requests to Wikipedia using Alamofire and REST00:00
12. [Challenge] Parsing the JSON Result using SwiftyJSON00:00
13. [Solution] Parsing the JSON Result using SwiftyJSON00:00
14. Displaying Images From a URL using SDWebImage00:00
15. [Bonus Lesson] Creating the App Icon From Scratch and Styling the App00:00
16. Completed App Project
CreateML – Building Your Own Machine Learning Model from Scratch
1. Introduction to CreateML00:00
2. How to Gather Data for Training00:00
3. How to Train a Brand New Machine Learning Model00:00
4. [Challenge] Build Your Own Machine Learning Model00:00
CreateML & Natural Language Processing (NLP)
1. What We’ll Make – TwitterX Sentiment Analysis00:00
2. Using CreateML for Natural Language Processing00:00
3. How to Sign Up as a Twitter Developer00:00
4. Setting Up the Swifter Framework00:00
10. Code Refactoring00:00
By now, you will have needed to finish downloading and installing Xcode. To follow along with the examples in this lesson, open up the playground file titled Operators and Expressions from the Learn Swift Programming playground collection. Play around with the examples and see what you can get Swift to do!
The first thing you need to know about operators and expressions are their simple definitions:
- Operators are special symbols or phrases that can be used to check, change, or combine values.
- Expressions are statements that can be reduced to a single value. In programming lingo, you’d say expressions are statements that return a single value.
To really capture these concepts, let’s look at a fictitious calculation for an adventure game:
![](https://cdn-images-1.medium.com/max/1200/1*6hIMWalGo4jnh9Kl54ivRw.png)
This calculation reads that totalPoints
are calculated by taking gamePoints
, adding some points for the numberOfLives
, removing some points for the numberOfDeaths
, and then adding some random bonus.
![](https://cdn-images-1.medium.com/max/1200/1*IFiSmNyxx9yFtWhYEsgI_w.png)
Between the variables, are arithmetic operators. Most of these operators you’ve probably seen before in a math class — like addition (+), subtraction (-), and multiplication (*). We also have the equals sign (=) which is known as the assignment operator. Most of these operators work as you might expect, and we can really see this once we start substituting values into the calculation.
Operators in Action
Here is our calculation again, and we’ll use it as an example:
![](https://cdn-images-1.medium.com/max/1200/1*6hIMWalGo4jnh9Kl54ivRw.png)
In the upcoming examples, we’ll use the same “totalPoints” calculation.
Let’s assume that before we calculate this, we have 3 lives (numberOfLives
), 0 deaths (numberOfDeaths
), and 1000 gamePoints
. Also, let’s assume the pointsPerLife
is 100 and the pointsPerDeath
is 300 (or -300 once we subtract it). So, we can substitute those values, and we get the following result:
![](https://cdn-images-1.medium.com/max/1200/1*-etB6tiAxykKaWWkqq2bkg.png)
The initial values are 1000 game points, 3 lives, 100 points per life, 0 deaths, and 300 points per death.
What are we seeing here? Well, each time we substitute a value for its corresponding variable name, we are seeing our first type of expression: a literal expression. For example, when the variable numberOfLives
is reduced to its actual value of 3—that is a literal expression. We call it a literal expression because the resulting value (in this case 3) is a literal value. Remember a literal is just another word for a fixed value.
![](https://cdn-images-1.medium.com/max/1200/1*tezAot9gOC2fDteVrWQrHw.png)
First, the randomBonus is evaluated, and then the result is computed.
As we reduce the rest of this statement, the randomBonus
is reduced just like the other expressions. Right now, we won’t talk about the randomBonus
expression, called a function call expression, (more on functions in a later lesson) but just assume functions also reduce to a single value. And, as you can see, the result is 1320, which will be assigned to totalPoints
.
Have questions? Head to Knowledge for discussion with the Bootcamp AI Community.