Cocoa Bootcamp

In 7 challenging days, Beginning Cocoa Bootcamp will take you from complete novice to being able to build your first Cocoa application. In addition, you'll become an active participant in the Cocoa programming community, allowing you to continue learning upon completion of the class.

Two days devoted to learning Swift are followed by the renowned Big Nerd Ranch 5-day Cocoa Fast Track Bootcamp. This developer training offers a condensed and information-rich, hands-on introduction to Swift programming. This is the perfect class for programmers interested in learning Cocoa who may lack a background in C or Object-Oriented Programming.

The class is taught on OS X Yosemite and Xcode 6.

What You'll Learn

  • Use and understand Swift’s basic types
  • Declare and use variables and constants
  • Leverage Swift’s control flows and looping constructs
  • Create and use collections
  • Know the power and use case of optionals
  • Understand the similarities and differences between enums, structs, and classes (and their usages)
  • Develop and use simple to more nuanced functions
  • Create closures and effectively use them
  • Understand Swift’s new initializer pattern
  • Work effectively with properties
  • Implement Swift’s functional patterns
  • Utilize extensions to extend Swift’s “out-of-the-box” functionality
  • Create and conform to protocols to develop a blueprint of functionality
  • Create generics to increase our code’s flexibility and power
  • Use lifetime qualifiers to protect against reference cycles
  • Write your first OS X app.
  • Use Xcode's features effectively.
  • Set up elegant user interfaces easily using both XIBs and Storyboards in Interface * Builder.
  • Handle user input from UI elements using the target/action and delegation design patterns.
  • Display editable tables of data.
  • Use bindings to speed up development.
  • Save and load user data using User Defaults, Keyed Archiving and Core Data.
  • Enable sophisticated user interactions such as undo/redo, copy/paste, and drag/drop.
  • Localize apps to other languages to make them accessible for international users.
  • Present priority information to the user via alerts, sheets, and modal windows.
  • Architect apps modularly using MVC, in particular window controllers and view controllers.
  • Create your own views which draw custom content.
  • React to user input from the mouse and keyboard.
  • Integrate an app with a web service.
  • Employ Core Animation to animate view components.
  • Syllabus



      • Introduction
      • Meet the instructor, get settled with Xcode
      • Optionals
      • Optional Types, binding, and chaining
      • Collections
      • Array, Dictionary, and Set
      • Functions and Closures
      • Syntax, best practices, and hands on examples
      • Enumerations
      • Raw values, associated values, switching on enumerations
      • Structs and Classes
      • Similarities, differences, and use cases of these
      • Properties
      • Declaring properties, setters and getters, computed vs. stored, property observers
      • Initialization
      • Working with init and deinit
      • Protocols
      • Create and conform to protocols that define the rules of engagement for a conforming class
      • Extensions
      • Create extensions that modify and add behavior to existing types
      • Generics
      • Demonstrate the power and flexibility of generics by creating a new collection type
      • Automatic Reference Counting (ARC)
      • Discuss reference counting, lifetime qualifiers, and how to eliminate strong reference cycles
      • Why am I here?
      • An introduction to Cocoa, the instructor, and the course.
      • Get started
      • Build a simple app. Discuss tools, frameworks, and workflow.
      • Swift
      • Learn what you need to know of the Swift language.
      • Memory Management
      • Learn to manage your application's memory using ARC, as well as how reference counting works.
      • Controls
      • Use the target/action design pattern.
      • Delegation
      • Use the delegation design pattern to influence the behavior of framework classes without subclassing them.
      • Table Views
      • Display data in a tabular format.
      • KVC, KVO and Bindings
      • Read and write an object's properties using the names of those properties. Observe changes to another object's properties. Use bindings to keep properties of different objects in sync.
      • Array Controllers
      • Use bindings to quickly display editable data in a table view with very little code.
      • Formatters and Validation
      • Present information to the user in a human-readable format. Check that the information that has been entered is acceptable.
      • Undo and Redo
      • Write simple code to participate in Cocoa's powerful undo system.
      • Archiving
      • Serialize and deserialize object graphs using keyed archiving.
      • Core Data
      • Use CoreData with bindings to create full-featured applications easily.
      • User defaults
      • Read and write user preferences to disk.
      • Alerts
      • Make the user confirm their choices with an alert panel.
      • Using Notifications
      • Register for notifications. Post notifications. Handle notifications.
      • Custom views
      • Create a subclass of NSView to draw custom UI.
      • Mouse events
      • Trigger a programmatic response when the user clicks with their mouse.
      • Responders and Keyboard events
      • Trigger a programmatic response when the user presses keys on their keyboard.
      • Drawing Text with Attributes
      • Understand how OS X represents rich text and how that rich text can be drawn onscreen.
      • Pasteboards and nil-targeted Actions
      • Implement copy, cut, and paste. Understand how to take advantage of the responder chain.
      • Drag and Drop
      • Allow the user to drag data into or out of a view.
      • NSTimer
      • Create and use timers.
      • Sheets
      • Present sheets on top of your app's windows.
      • Auto Layout
      • Make your views resize dynamically to handle window resizing and changes to content size.
      • Localization
      • Prepare your application for the global marketplace.
      • Printing
      • Allow users to print the content they are viewing in your app.
      • Web Services
      • Use NSURLSession and NSJSONSerialization to interact with web services.
      • Unit Testing
      • Write automated tests for your app using the XCTest framework.
      • View Controllers
      • Increase modularity and compartmentalization of your app by splitting up the control responsibility among a number of controller objects, each associated with a view.
      • View Swapping and Custom Container View Controllers
      • Create a view controller that contains a number of content view controllers, displaying one at a time. Use view swapping to switch between the content view controllers.
      • Storyboards
      • See how to use OS X Yosemite’s new Storyboards to design your application.
      • Core Animation
      • Learn to use CALayer for animation and custom interfaces.
      • Concurrency
      • Learn the basics of multithreading in Cocoa.
      • NSTask
      • Create Unix processes and communicate with them from a Cocoa application.

Our Nerds, Your Place

No matter where you are, our instructors can come to you. Need to take your team to the next level?

Learn More


Without prior experience in either a procedural programming language (such as C, Pascal, VB, or PHP) or another object-oriented platform (such as Java or C#) this class may prove to be extremely challenging.

How to prepare your device for our class

Get your device ready using these handy instructions.

Advice from the nerds

Although we cover what you need to know of Swift in the first two days, in order to get the most out of the course we recommend that you familiarize yourself with the language first by reading Apple’s The Swift Programming Language.

Upcoming Classes

This class is not on our schedule at this time. Please fill out the form below and we'll be in touch.