Mercury Development Academy

The quality of our work depends on the quality of our people. At Mercury Development, we realize that technology doesn’t rest. To ensure that our current and future staff are best positioned to take on any challenge that comes their way – and to maintain the high level of superior products our customers have come to expect – we began Mercury Academy, a state-of-the-art continuing education program.

Mercury Academy delivers in-house courses to university students and offers continuous training opportunities for existing Mercury Development employees. The curriculum began in 2012 with an iOS programming course designed to teach students not only the skills required to write an iOS app, but also the underlying Mac OS X foundation at the heart of iOS. To ensure all participants in the course could digest the considerable depth of the material at a similar speed, Mercury Development first administered a test to gauge understanding of programming terms and concepts. From an applicant pool of 120 Seniors studying computer science, Mercury Development selected just 16 students!

The course was delivered by Mercury Development’s best talent. Students were exposed to advanced theoretical knowledge while benefiting from the vast experience of our lead engineers and project managers (most of whom are former lead engineers). Feedback from the students has been phenomenal, and we hope most will consider Mercury Development as their first employer!

To learn more about reusing the content of the course (lectures and lab work), or to discuss other training opportunities, please contact us at academy@mercdev.com

iOS/OSX Course Syllabus

Day 1. Lecture: Basics of Mac OS X and iOS

  • Overview of Mac OS X and iOS history
  • Understanding OS X and iOS architecture
  • Understanding development tools
  • OS X and iOS app life cycle
  • Understanding sandbox
  • Understanding background mode

Day 2. Lab: My First iOS App

  • Exploring development tools: Xcode IDE and Interface Builder
  • Developing an iOS application with a basic graphical interface in Objective-C

Day 3. Lecture: POSIX Foundation

  • Process management: fork and exec system calls
  • Performing process killing
  • Understanding signals and daemons
  • Using user and group identifiers

Day 4. Lab: My OS X Background Daemon

  • Implementing a background daemon in Mac OS X
  • Experimenting with Launch Daemons and signal processing

Day 5. Lecture: OS X Drivers

  • Mac OS X drivers: lifecycle, matching process, user-mode interaction
  • Learning how to debug using two workstations

Day 6. Lab: My First OS X Driver

  • Implementing a basic filter scheme driver

Day 7. Lecture: POSIX Threads

  • Understanding POSIX Threads
  • Using Planner, priorities, launch, stop, detached threads
  • Understanding PTHREAD synchronization tools, semaphores, conditional variables

Day 8. Lab: Threads in Action

  • Developing a multithreaded application for efficient file copying between storage devices
  • Implementation of primitives, thread synchronization, operations with various planners and priorities

Day 9. Lecture: Objective-C OOP Primer

  • Object oriented programming, patterns in Objective-C. Property, mix-in, exception handling, delegates
  • Memory management, memory pool
  • Delegates and Core Location

Day 10. Lab: My Geo App

  • Developing an application that interacts with GPS functionality of an iOS device and uses a secondary thread to allocate and free up the iOS device memory

Day 11. Lecture: File Management

  • File input/output, extended file input/output, memory mapping, select operation, asynchronous input/output
  • User permissions model, extended attributes, file locking using flock. HFS+ resource forks
  • Reviewing NSFileManager
  • Understanding Aliases

Day 12. Lab: Working with a memory-mapped file in iOS

  • Implementing asynchronous input/output to a memory-mapped file in iOS
  • Operations with standard iOS containers
  • Accessing an SQLite database from an iOS application using CoreData
  • Making sure we develop an app using object oriented programming

Day 13. Lecture: Model View Controller Pattern

  • Understanding Model View Controller (MVC)
  • Reviewing controllers, UIView, UITableView and UITableViewController
  • Editing process in UITableView

Day 14. Lab: Accessing Address Book

  • Developing an application that will display groups of friends
  • Integration with iOS address book

Day 15. Lecture: Learning Patterns

  • Designing patterns for C++ multithreaded programming, real-time systems, Boost

Day 16. Lab: Using Patterns

  • Adding one of the patterns (active class, Future, etc.) to the previously developed iOS app to monitor timers and asynchronous notifications

Day 17. Lecture: Device Orientation

  • Notifications and device orientation changes
  • Operations with UINavigationController
  • Core Fundamentals, collections and Generic

Day 18. Lab: App That Reacts to Device Orientation

  • Adding device orientation processing to the previously developed app
  • Implementing notifications using UINavigationController
  • Implementing a custom UI control

Day 19. Lecture: Protocol Primer

  • General overview of the OSI model
  • Understanding Berkeley Sockets
  • Learning the distinction between the TCP and UDP protocols
  • Understanding TCP client-server operations sequence and synchronous TCP input/output
  • Asynchronous TCP input/output
  • TCP socket options, guaranteed delivery, handling of lost connection and closed socket

Day 20. Lab: My Client-Server Chat Software

  • Developing a basic, single-threaded TCP client and server using select to exchange messages with friends

Day 21. Lecture:

  • Understanding CFRunLoop, execution in the specified work loop
  • NSThread, Thread Local Storage, operations with sockets using CoreFundamentals and Cocoa Introducing IPv6 and Bonjour

Day 22. Lab: Bonjour

  • Implementing Bonjour client and server
  • Adding “Find friends nearby” functionality
  • Implementing a multithreaded server

Day 23. Lecture: Web Technologies

  • Understanding HTTP protocol, WebServices, authorization processes

Day 24. Lab: News App

  • Implementing an RSS client in iOS
  • Displaying HTML pages with weather info in WebView
  • Sharing news on Facebook

Day 25. Lecture: Exploring iPhone Hardware

  • Learning how to interact with accelerometer
  • Understanding how to interact with MapKit
  • Understanding how a built-in camera can be used

Day 26. Lab: Digital Camera App

  • Capturing an image from the device camera and displaying it as a pin on the map

Day 27. Lecture: Advanced Graphics

  • Foundations of OpenGL, shaders, GPU

Day 28. Lab: My Shader

  • Implementing a shader – a valuable skill for any game developer

Final Exam

 

 
Customer login: