May. 14, 2015
By Sam Tatum, Senior CS Major
During the Spring 2015 semester, I had the opportunity to do an internship in the IT department of Freed-Hardeman University. I was able to do something that has always intrigued me: iOS development. In the present technology-driven world, mobile phones have become a major part of everyday life. A dominant force in the smartphone industry is Apple Inc., a company that has led the industry with their attention to detail and highly-acclaimed products. In 2014, Apple released a new programming language that was specifically designed for iOS and Mac OS app development called Swift.
About the App
The application that I was a part of developing was will be used to support various events (e.g. Horizons or Lectureship) hosted by Freed-Hardeman. The app was designed to show attendees where they need to be and what they can do at certain times by showing every presentation, who was speaking at the presentation, and where the presentation was located.
The objective of the internship was to rewrite the iOS application entirely in Swift. At times I helped other developers in the group on some of the front-end, but my main focus was the back-end (data access portion) of the application.
The objective of the internship was to rewrite the iOS application entirely in Swift. At times I helped other developers in the group on some of the front-end, but my main focus was the back-end (data access portion) of the application.
Front-end Development
On the front-end side of the application I worked on the schedule page, a listing of all the presentations in chronological order. I worked with a tableview and implemented a cell to show information about each presentation at the event. I also learned how to use Apple’s auto-layout system to make the interface fluid. This allows the same application to be displayed on many different device widths and heights (e.g., iPhone 5S, iPhone 6, iPhone 6 Plus). This was by far the most difficult part of the project, but one of the most rewarding when it finally worked.
Back-end Development
On the back-end, I was in charge of parsing the data needed by the app from an XML file and optimizing the application for performance by asynchronously downloading and caching the images. I thought I understood asynchronous downloading, singletons, thread safety, and images caching but actually implementing them really helped me master them. Also, this experience has shown me how all of my classes throughout college are interwoven together, giving me a more holistic perspective of computer science.
I used asynchronous methods to download the XML files needed, as well as the images used in the application. By asynchronously downloading the images, we were able to provide the user with a responsive interface while the image assets were downloaded in the background. There is a possibility of ten to thirty images that need to be downloaded, so I determined that caching the images on the device was the best approach. By caching the images, we eliminated loading times when going back to a certain page within the application or returning to the application after closing it.
Future Plans
The experience and knowledge that I have gained from taking the iOS mobile development internship was extremely valuable. After this experience in mobile development, my interest in iOS development has increased greatly. I also now am very interested in learning Android mobile development in order to broaden the types of development jobs that I’m able to pursue. I plan to further increase my knowledge of iOS development, possibly as a full-time career. There is so much to learn, and I have just scratched the surface at what is possible for mobile applications.