User Interface Design (UI Design)
Swift (Programming Language)
This Specialization focuses on the basics of iOS application development. You’ll gain the skills you need to create your own app, including fluency in Objective-C and UIKit and SpriteKit user interface concepts, and you’ll learn to leverage networking, security, audio, video, location, and sensor frameworks. In the final Capstone Project, you’ll apply your skills to create a networked game that leverages sensors on the phone to create a unique gaming experience, and that you can showcase in job applications and interviews or offer in the iTunes store.
Foundations of Objective-C App Development
An introduction to the Objective-C programming language. This will prepare you for more extensive iOS app development and build a foundation for advanced iOS development topics. Objective-C programming requires a Mac laptop or desktop computer. An iOS device is optional if the learner is willing to working exclusively with the simulator. Some learners have been able to work with an OS X virtual machine on Windows, but explaining how to do that is beyond the scope of this course. Upon completing this course, you will be able to: 1. Read and write Objective-C 2. Have a strong grasp of Objective-C objects 3. Organize their code professionally using objects and blocks 4. Prototype several entry-level apps
Networking and Security in iOS Applications
You will learn to extend your knowledge of making iOS apps so that they can securely interact with web services and receive push notifications. You'll learn how to store data securely on a device using Core Data. You’ll also learn to securely deploy apps to the App Store and beta users over-the-air. The format of the course is through a series of code tutorials. We will walk you through the creation of several apps that you can keep as a personal app toolbox. When you make your own apps after this course, you can bring in these capabilities as needed. When necessary we pop out of the code tutorials to talk about concepts at a higher level so that what you are programming makes sense. Upon completing this course, you will be able to: 1. Post Facebook, Twitter, Sina Weibo, Tencent Weibo messages to social media using single sign-on on behalf of a user. 2. Use OAuth 2.0 to securely authenticate to Instagram and retrieve photos on behalf of a user 3. JSON 4. Describe JSON’s syntax 5. Write well-formed JSON 6. Work with JSON data objects in Objective-C 7. Appropriately set the security settings for App Transport Security in iOS 9.0 8. Use http, https and https with perfect forward secrecy to fetch web resources 9. Obtain permissions to receive local push notifications 11. Write an app that can send and receive local push notifications 12. Obtain permissions to receive remote push notifications 13. Write an app that can receive remote push notifications 14. Authenticate using Apple’s cryptographic services such that the developer can use 3rd party infrastructure to send remote push notifications to their app. 15. Securely store data on the user’s device. 16. Authenticate using Apple’s cryptographic services such that they can deploy an app to the app store
Best Practices for iOS User Interface Design
You will learn to develop sophisticated user interfaces for iOS, with a focus on user interface design best practices, UI animations, and
responsive design. You will learn about the key UI widgets, mapping interfaces and view restoration.
Games, Sensors and Media
You will learn to make fluid digital interactive experiences that are suitable for gaming and use the advanced sensor hardware built into the iPhone and iPad. This includes drawing 2D graphics, playing sounds and music, integrating with Game Center, the iOS physics engine and detecting device orientation and location. Upon completing this course, you will be able to: 1. Use the reverse geocode service to convert latitude and longitude to location names 2. Implement GeoFences to make an app efficiently monitor an iOS device’s location 3. Leverage the power of accelerometers, magnetometers and gyroscopes to orient a device in physical space 4. Create an app that responds to ambient light levels by using screen brightness as a proxy 5. Play sound effects and other media as audio 6. Make a game like Pong 7. Make a game like Breakout 8. Manipulate graphics in a game environment 9. Use the physics engine to create realistic game worlds 10. React to multi-touch events for complex interaction design 11. Detect and respond to collisions and contacts efficiently 12. Chain complex sequences of actions, animations and sounds with precision 13. Animate multi-frame sprites 14. Create particle systems to simulate fire, smoke and magic (and more!) 15. Interface with Game Center to create leaderboards and achievements that can be shared through social networks
Toward the Future of iOS Development with Swift
An introduction to the Swift programming language. This will prepare you for more extensive iOS app development and build a foundation for advanced iOS development topics. Upon completing this course, you will be able to: 1. Associate the relationship of Swift and Objective-C and their use in iOS and Mac (OS X) programming 2. Develop the ability to read and write Swift code 3. Distinguish how both programming languages can be used together in applications 4. Demonstrate how to write applications entirely in Swift with the help from several iOS programming samples 5. Determine how Swift can be used for development on new platforms such as Apple Watch and Apple TV 6. Create a working client-server iPhone application with location services that you can add to your portfolio.
iOS Project: Transreality Game
Students will produce a networked game that will leverage sensors on the phone to create a unique gaming experience. The focus of the game will be to make it physical through real-world gestures, motion and knowledge of other players real-world location. To do this students will need to integrate knowledge of graphics, networking, sensors, and user interface design alongside a skill set of tool usage. The final project will involve milestones with opportunities to get ungraded peer review feedback from fellow learners so that they can iterate and improve their game program. The final networked game that the students produce would be something they could showcase in job application materials, in an interview, or offer in the iTunes store.
Although you will find it helpful to have some familiarity with a programming language such as C++, Python, or Java, the courses in this Specialization are designed to be accessible to ambitious novice programmers, as well. You should also be familiar with mobile apps from regular use.