Update Jan 1st: Tim Poulsen (@skypanther), Training Curriculum and Certification Lead at Appcelerator, responded to this blog and my email to him saying that indeed some questions I pointed out are a bit confusing and will be updated. Also, he confirmed that the exam has not yet been updated for Titanium 3.x. Something to be aware of when you’re taking the exam!
Today I took and passed (89%) the Appcelerator TCAD exam. As an encouragement for those wanting to become certified app developers too, I want to give some clues on how to prepare for and take the exam.
Also take a look at Boydlee’s blog Preparing for the TCAD certification. It might by slightly out-dated (Nov 2011), but it does mention topics like Facebook, contacts and oAuth that are not mentioned in the official certification objectives.
The exam
Appcelerator uses the excellent Testcraft software for the exam. Make sure you use the same email address for the test as that of your Appcelerator account so that after successfully taking the test the badge will be added to your profile. You have 90 minutes to correctly answer at least 75% of 60 questions, divided into 12 categories of 5 questions each:
- Code Questions (is this code correct? what will happen?)
- Appcelerator Cloud Services
- Cross-Platform Development in Titanium
- Integrating Web Content (WebView)
- Media and the Filesystem
- Using Location Services (including maps)
- Working with Local Data
- Working With Remote Data
- You’re a Native Application Developer Now (sdk, tools, differences)
- Zero To App Recap (platform)
- UI Fundamentals
- Deployment and Distribution
The software lets you mark questions you want to get back to later, which is excellent. Just focus on what you do know first and you will have plenty of time to spend on the more difficult ones. Nearly all questions are multiple choice, asking you to select one or more answer. Most of them also let you add comments. You can use this to add some notes to questions you mark for later review. After finishing the exam, it will immediately give you the total score and your score on each category. If you passed you will be able to download and e-mail the results and certificate (PDF).
Questionable questions
I did run into some questions I was not sure of if the right answer would also be the correct one. For example, one question asked for the existence of a certain SDK feature that has just been added recently in 3.x. The same goes for changes in the most recent SQLite version. Another question on the license was also confusing since multiple licenses are used for different parts of the Titanium platform and software. I did elaborate on these doubts in the Comments field of these questions, but I don’t know if anyone at Appcelerator actually reads those.
Resources for preparation
General resources to make sure you’ve been through before taking the exam:
- Docs: Appcelerator Docs
- eBook: Building Mobile Applications with Titanium
- Videos: Building Native Mobile Apps
- Lab: TCAD Course Labs
Helpful resources during the exam
Make sure you have the following resources open and logged into:
- Appcelerator Docs
- ACS Docs
- iOS Provisioning Portal
- Titanium Studio (testing code questions during spare time)
Preparation and cheat sheet
All certification objectives (June 2012) linked to relevant resources:
- JavaScript
- Understand JavaScript syntax and fundamentals
- Guide: Javascript Development Primer
- Guide: Style and Conventions
- Guide: Coding Best Practices
- Guide: Coding standards
- Identify CommonJS coding patterns
- Guide: CommonJS Modules in Titanium
- Instantiate Titanium objects
- Describe execution context and the means by which you create one or more
- Identify the benefits of a single-context app design
- Guide: Execution contexts
- API: Ti.UI.Window
- Compare and contrast include() and require()
- Understand JavaScript syntax and fundamentals
- Appcelerator Cloud Services
- Guide: Integrating with Appcelerator Cloud Services
- Guide: Appcelerator Cloud Services
- Docs: Appcelerator Cloud Services
- API: Ti.Cloud
- Site: Cloud Services
- Cloud-enable an app
- Guide: Register Your App with ACS
- Guide: Adding ACS to a new project
- Guide: Adding ACS to an existing project
- Manage app keys
- Console: My Apps / ACS
- API: Ti.Cloud(tiapp.xml Properties)
- Implement ACS APIs
- API: Ti.Cloud (and underlying)
- Identify ACS APIs and features
- Site: ACS Key Features
- Describe ACS security features
- API: Ti.Cloud.Users
- API: Ti.Cloud.ACLs
- API: Ti.Cloud.SocialIntegrations
- Cross-platform development
- Implement branching techniques using appropriate Titanium properties
- Include platform-specific resources at build time
- Guide: Platform-specific resources
- Include density and aspect-ratio specific images at build time
- Compare and contrast mobile platform features
- Guide: Platform and Device Specific(tutorials)
- Guide: Android Platform Overview
- Guide: Android UI Components and Conventions
- Guide: iOS Platform Overview
- Guide: iOS UI Components and Conventions
- Guide: Mobile Web Platform Overview
- Web content
- Guide: Integrating Web Content
- API: Ti.UI.WebView
- Include HTML/CSS content in your Titanium app
- Guide: The WebView Component
- Identify the ramifications and pitfalls of the WebView
- Communicate between the WebView and native Titanium environments
- Multimedia
- Implement audio playback
- Guide: Audio APIs
- API: Ti.Media.Sound
- API: Ti.Media.AudioPlayer
- Implement audio recording
- Guide: Recording audio
- API: Ti.Media.AudioRecorder
- Implement video playback
- Guide: Video APIs
- API: Ti.Media.VideoPlayer
- Capture still images and video
- Guide: Camera
- API: Ti.Media.showCamera
- Retrieve images from the device’s photo gallery app
- Guide: Gallery
- API: Ti.Media.openPhotoGallery
- Implement audio playback
- Filesystem
- Guide: Filesystem access and storage
- API: Ti.Filesystem
- API: Ti.Filesystem.File
- Store text and binary data in files
- Guide: Writing
- Read text and binary data from files
- Guide: Reading
- Identify the accessible storage locations on the filesystem
- Identify the appropriate locations to store data on the filesystem
- See above
- Determine when the filesystem is the most suitable storage location for your app’s data
- Geolocation
- Guide: Tracking Position and Heading
- API: Ti.Geolocation
- Configure geolocation on Android
- API: Ti.Geolocation(Android)
- API: Ti.Geolocation.Android
- Guide: Using Location Services in your App
- Configure geolocation on iOS
- API: Ti.Geolocation(iOS)
- Guide: Using Location Services in your App
- Request geolocation permissions, accounting for platform-specific requirements
- API: Ti.Geolocation.locationServicesAuthorization(iOS)
- API: Ti.Geolocation.locationServicesEnables(Android note)
- Guide: Detect if Location Services are Available
- Obtain the user’s current location
- Continually monitor the user’s location
- Perform forward and reverse geocoding
- Mapping
- Guide: Native Maps and Annotations
- API: Ti.Map
- Add a map to your app
- Set map options and properties
- Guide: Displaying a MapView
- API: Ti.Map
- Add annotations to your map
- Set annotation options and properties
- API: Ti.Map.Annotation
- API: Ti.Map
- Enable event handling for maps and annotations
- Guide: Handling MapView Events
- SQLite database storage
- Identify the database capabilities of the mobile operating environments
- Install a database
- Guide: Installing a database
- API: Ti.Database.install
- Open a database
- API: Ti.Database.open
- Create database structures (tables)
- Guide: Creating a database
- Guide: Manipulating the Database’s Structure
- API: Ti.Database.execute
- Retrieve data from a database
- Guide: Retrieving data
- Insert, update, and delete data from a database.
- Guide: Storing updating and deleting data
- Guide: Truncating (emptying) a table
- Determine when a database is the most suitable storage location for your app’s data
- App properties
- Store data in an application property
- Retrieve data from an application property
- Identify the data types and access methods supported by app properties
- Determine when app properties are the most suitable storage location for your app’s data
- Networking
- Implement the HTTPClient object
- Retrieve data in various formats from network services
- Guide: Working with JSON Data
- Guide: Handling Remote Data with HTTPClient and JSON
- Guide: Working with XML Data
- Guide: Dealing with SOAP Web Services
- Upload and download files across the network
- Guide: File Uploads and Downloads
- Post JSON-formatted data
- Guide: Sending JSON data
- Determine when to use JSON, XML, and SOAP to transmit rich data across the network
- Android SDK tools
- Guide: Android Platform Overview
- Guide: Platform and Device Specific: Android
- Guide: Android UI Components and Conventions
- Identify the components and install location of the Android SDK
- Identify the components of the Android development toolchain
- Identify the Android SDK troubleshooting and development tools you will use as a Titanium developer
- Implement a native Android project using command-line tools
- iOS SDK tools
- Guide: iOS Platform Overview
- Guide: iOS UI Components and Conventions
- Identify the components and instal llocation of the iOS SDK
- Identify the components of the iOS development toolchain
- Identify the iOS SDK troubleshooting and development tools you will use as a Titanium developer
- Implement a native iOS project using Xcode
- Titanium basics
- Create a Titanium project
- Guide: Working with Projects
- Run a Titanium project in the simulator or emulator
- Configure app properties such as the SDK version, target platforms, etc.
- Describe the architecture of Titanium
- Guide: Studio Architecture
- Create a Titanium project
- User interface
- Guide: User Interface Fundamentals
- Guide: User Interface Deep Dives
- Select the appropriate UI measurement units
- Guide: Units
- API: Ti.UI.View
- Position elements on screen accounting for the UI coordinate ssystem
- Select and implement layout modes
- Guide: Layout modes
- Send and react to user and non-user events
- Guide: Event handling
- Deployment and publishing
- Guide: Preparing for distribution
- Compare and contrast certificate types
- Code-sign an Android app
- Code-sign an iOS app
- Install an iOS app for testing
- Install an Android app for testing
- Identify the requirements and procedure for publishing an app to the Android market (Google Play)
- Guide: Register with the Android Market
- Guide: Distributing Android apps
- Identify the requirements and procedure for publishing an app to the iTunes app store
- Guide: App Store requirements
- Guide: Distributing iOS apps
- Identify the requirements and procedure for publishing an app to non-market locations (Enterprise, ad-hoc, etc.)
This is an excellent resource for preparing for your TCAD exam. Thank you very much for sharing this helpful material!