Advanced Mac OS X Bootcamp

Advanced Mac OS X Bootcamp is an all-inclusive 5-day Advanced Mac OS X training course for developers ready to investigate the underpinnings of Mac OS X. The class is intensive, and students should be prepared to work hard. The course is taught mainly in C with some Objective-C.

What You'll Learn

Upon completion of Advanced Mac OS X Bootcamp, the student will be able to:

  • Fully leverage the power of OS X's Unix foundation
  • Master debugging techniques and performance tools
  • Write networked applications and daemons
  • Take full advantage of the compiler and linker
  • Create multithreaded and multiprocess programs
  • Use Grand Central Dispatch

Advanced Mac OS X Bootcamp SYLLABUS

Section Content
Advanced Mac OS X BootcampOpen
Why am I here?
An introduction to the instructor and the course.
Command-Line Programs
Even though the Unix command-line is old school, it can still be useful to write programs that can be part of a pipeline. We'll take a look at running processes from the command line, supplying arguments, creating pipelines, environment variables, and more.
GCC and Objective-C 2.0
Create and use macros well, set the flags effectively, and create macros, functions and methods with a variable number of arguments. We'll take a look at GCC-specific extensions and optimization options. Also includes a look at 64-bit programming, Intel-specifc issues, properties, and fast enumerators.
Create and use frameworks, bundles, static libraries, and dynamic libraries.
Debugging with Gdb
Learn the ins and outs of the debugger, getting comfortable with the command-line power not exposed in Xcode. Includes unit testing and code coverage.
Exceptions, Error Handling, and Signals
Error handling is a necessary evil. Learn about errno and Unix errors, setjmp and longjmp, handling signals, blocking signals, exceptions in Cocoa (NS_DURING, @throw), and assertions.
File I/O and Permissions
Find out about Buffered and unbuffered I/O, scatter-gather I/O, file permissions, temporary files, set-uid executables, MacOS aliases and resource forks. And that's just the start.
Network Programming With Sockets
Berkeley Sockets, TCP/IP and UDP, and IPv6
How to write systems that fork for maximum performance. fork(), pipes, and NSTask are covered. Beware of the Zombies!
How to write systems that spawn new threads for maximum performance. pthreads and NSThread are covered.
Here's how to wait for input/output in an event driven application -- without multithreading! Includes Core Foundation and Cocoa classes that give higher level access to the network.
Allow your clients and servers to find each other on the network.
Now that you know the sordid details about files, see how Cocoa hides a lot of the complexity from you. You'll create a simple file browser in Cocoa using NSFileManager.
Accessing the Keychain
Store and read a user's keys from the keychain.
Tired of traditional signal handling and using select() to multiplex I/O? kqueue provides a simple unified model for all that stuff.
Performance Tuning
Learn how to figure out what is really slowing your program down.
Now that you have learned what is hard about threaded programming, see how NSOperation can simplify some of the work.
DTrace and Instruments
Peer into the guts of the operating system while it is running, and use Instruments to diagnose your application's behavior.
See how things are different (and the same) between Desktop OS X and the iPhone.
Grand Central Dispatch
Learn how to use Grand Central Dispatch, to optimally take advantage of the processing power available on your system.
A Peek into Lion
See what new technologies are coming down the pike in Mac OS X Lion.
Really understand the different flavors of memory: stack, heap, and initialized and uninitialized data segments. A tour of the tools that can help you hunt down memory leaks, and a look at Cocoa garbage collection.


Students should have read and understood either Advanced Mac OS X Programming: The Big Nerd Ranch Guide or iPhone Programming: The Big Nerd Ranch Guide (2nd Edition) or the equivalent.


For information or to enroll in a class in United States: (770) 817-6373