Overview
What you'll learn
Do you want to add Apple’s iOS platform and the Swift and Objective-C languages to your professional tool kit? Need to keep your career moving forward by building your skills in mobile development? Our evening intensive introduction to iOS development is what you need to upgrade your skills and expand your career options. Come learn iOS development, as well as the Apple Human Interface Guidelines (the HIG) and Apple App Store submission requirements and process.
Learn to write, compile, test, debug, and instrument iOS Apps
Develop familiarity with the Apple development toolchain and it’s open source extensions (git, cocoapods, KIF)
Gain Understanding of the Apple Human Interface Guidelines (the HIG) and Apple App Store submission requirements and process
Learn (in the iOS context) Object-Oriented Programming, UI Design, Multimedia/Graphics, Animation, Multithreading, Networking, Database Processing and Security.
Final project, to be chosen by student and approved by teacher, should go in depth on some subset of the technologies taught in class.
-
Schedule
Tuesday & Wednesday 6PM - 9PM -
Location
500 Interstate Blvd S, Suite 300 Nashville, TN 37210 [We are moving to 301 Plus Park Blvd, Nashville, TN 37217 in April 2019. Students will be notified of the move date once confirmed.] -
Dates
To be announced soon - -
Tuition
$2750
Requirements
Hardware & Software
Apple Developer Account ($99/year)
Mac OS X machine running Mavericks or above (10.9)
iOS device capable running at least iOS 8
Personal Laptop with 4 GB RAM and at least 20GB free disk space
Accounts with GitHub and TestFlightApp.com
Reading: The Swift Programming Language
A git client, Tower or SourceTree are both recommended
Additional Optional Reading: Functional Programming in Swift, Using Swift with Cocoa and Objective-C
Skills
Prior experience as a developer in a modern programming language (PHP, Java, Ruby, C#, Python, etc.)
Syllabus
Section 1: Elements of an iOS App and the Apple Toolchain
- Xcode
- Editor
- Interface Builder (storyboards and xibs) * Clang
- Debugger
- iOS Simulator
- Hello, World in iOS on Simulator and Device
- Instruments
- Profiler
- Memory Management
- UIAutomation
- Languages
- ObjectiveC (history, features, comparison with other languages, e.g. C++)
- Swift (history, features, comparison with other languages, e.g. Scala/F#/Rust)
- Overview of the Apple Frameworks
- Git/GitHub
- Packaging
- Cocoapods/Frameworks
- ipa’s
- Distribution
- TestFlightApp.com/Crashlytics
- The App Store/ Legal stuff / Submission Rules
Section 2: Object Oriented Programming
- Brief History and Principles of OOP
- Swift Language Introduction
- the Swift REPL/Playgrounds
- Mutability/Immutability
- Control Flow
- Functions
- Swift Type System
- Enums/Structures/Classes/Protocols
- Reference Types vs Value Types
- Generics
- Closures
- Custom Operators
- Optional Chaining
- Foundation Kit components
- Memory Management (details of ARC as compared to Auto GC)
- JSON handling in Swift
Section 3: User Interface Design with Model/View/Controller (MVC) paradigm
- Application Lifecycles (UIApplication and UIApplicationDelegate)
- Explanation of Model/View/Controller vs. Other Paradigms
- Overview of UIKit components
- Basic UIViewController
- Lifecycle
- Target/Action paradigm
- Outlets
- Delegation Methods
- Instantiation via Storyboards
- Laying out MVC UIs
- Subclassing UIViewController
- Adding Outlets and Target/Actions
- View Controller hierarchies
- View Controller Transitions/Segues
- Push/pop (UINavigationController)
- Modal
- Intro to animations
- Other View Controllers
- UITableViewController
- UICollectionViewController
- UITabBarController
- Apps
- MainViewController app with buttons and textfields
- Segue to a simple TableView scene with static data
- Segue to a simple CollectionView scene with static data
- TableView based To-Do list
Section 4: User Interface Design (Views)
- UIView and subclasses
- The View hiearchy and lifecycle
- Coordinate Systems
- Drawing (Core Graphics)
- Graphics Contexts
- Transparency
- Touch and Gesture handling
- Printing
- Simple Draw App
Section 5: Graphics
- UIImage/UIImageView
- CoreGraphics
- Background compositing
- Graphics contexts
- Image manipulation
- Scale/Rotate/Transform
- Special effects
- Simple Photo Album
Section 6: Auto Layout
- Interface Builder Review
- Setting Frames and Bounds
- Creating constraints
- Relations
- Multipliers, Constants and Priorities
- Dynamic constraints
- Constraints as Outlets
- Testing Rotations and resizing
- Resolving Constraint Conflicts
- Simple Form App with constraint handling
- Capstone project planning/support
Section 7: Animations
- Review of some functional programming concepts
- Closures
- Types and Generics
- UIView Animation
- Dynamic Animation
- gravity
- collisions
- behaviors
- UIView
- Use dynamic animation to bounce a ball around
Section 8: Scrolling Views
- Overview of UIScrollView, UITableView and UICollectionView
- Coordinate System review
- Constraint handling
- LifeCycles
- Delegation
- Datasources
- Performance and memory management topics
- Infinite scrollview/carousel
Section 9: Advanced Animations
- Differences between the iPhone and the iPad
- Layouts for CollectionViews
- Animating Layouts
- Using Multiple Layouts (and animating between layouts with one UIViewController)
- Animations with multiple UICollectionViewControllers
- Build a complex spinning view
Section 10: Networking
- Intro to Thread Management
- dispatch_async
- NSOperationQueue/NSOperation
- HTTP Get/Post/Delete
- Consuming RESTful Web Services
- Fetching
- Parsing of JSON or XML
- Using UIWebView
- Security
- OAuth2
- App IDs
- Grant Codes
- Access Tokens
- Redirects
- Keychains
- OAuth2
- Display of Fetched and Parsed Data
- Service Review:
- fetch twitter feed and display in a table view
Section 11: Database Management on iOS Devices
- Data Models
- Entities
- Attributes
- Relationships
- FetchedProperties
- Simple UI: NSFetchedResultsController
- Persistent Database (NSPersistentStoreCoordinator)
- Object Graph (NSManagedObjectContext)
- Persistent Objects (NSManagedObject)
- Queries (NSFetchRequest, NSPredicate)
- Inserts/Updates/Deletes (NSManagedObjectContext again)
- Store twitter feed from networking app into a local database
- Capstone support session
Section 12: Location Based Apps
- Location Basics
- Lat/Lon/Alt
- Maps and Projections
- CoreLocation elements
- Actual location (CLLocation)
- Starting and stopping location updates (CLLocationManager)
- Receiving updates (CLLocationManagerDelegate)
- Displaying location (MKMapView)
- Annotations (MKAnnotation/MKAnnotationView)
- Viewpoints (MKMapCamera)
- Searching Maps (MKLocalSearch)
- Going Places (MKDirections)
- Map Overlays (MKOverlay)
- Beacons
- Simple app showing user position with graphics overlays
- Capstone Support Session
Section 13: Onboard Sensors
- Using the Camera and the Film Roll
- UIImagePickerController
- Core Motion
- Accelerometer
- Gyro
- Magnetometer
- Capstone Presentation
Tuition
The cost for this course is $2750.