These projects were initiated by the Stanford University’s CS193P, iPhone Application Development class. There are two projects, in three repositories.
GraphCalculator was the first project. GraphCalculator is a simple two screen application that ushered me into Objective-C and iOS application development. This project gave me a glimpse to the syntax of Objective-C, Xcode, and the cocoa framework.
Places and CoreDataPlaces were completed after GraphCalculator. The main difference between the two part project is the mechanism of persistence. Places uses NSUserDefaults while CoreDataPlaces uses Core Data. Whilst following the lectures supplied by Stanford, I also attempted to experiment with the suggestions detailed in Clean Code: A Handbook of Agile Software Craftsmanship and The Pragmatic Programmer: From Journeyman to Master.
The Graph Calculator application allows the user to do simple math computations and draw a graph of an expression. The specifications to this assignment can be found on the CS193P page.
Graph Calculator is a two UIViewController application. The first UIViewController’s view is a calculator view, setup with a xib file. The second UIViewController’s view is setup programmatically with axes to allow graphing of an expression. The axes drawer is supplied by Stanford University.
The following lists outlines my first-time attempts, and experiments executed throughout the course of completing the projects.
- Objective-C
- Xcode
- Git / Github
- Dash for framework documentation lookup
- Model-View-Controller design/implementation
- Delegation
- Notification
- Strategy design pattern
- Factory design pattern
- Multi-MVC application - Places & CoreDataPlaces
- Multithreading with Grand Central Dispatch
- Algorithm utilizing NSDictionary
- Key-Value-Observing
- Objective-C category
- iPad/iPhone universal application
- UIView
- Multi-touch gestures
- Core Data implementation with SQLite database
- Image cache with NSFileManager
- Utilization of NSZombie
- nib/xib file based UI design
- TDD -> Refactoring development cycle - Production code, Test code (MostRecentPhotos files)
- OCMock objects
- Integration Tests with Keep It Functional (KIF) by Square
- Descriptive coding applied to variable, class, protocol, method and constant names