I'm Keyvan Nayyeri, a 25 years old Ph.D. student at
the Computer Science department of
the University of Texas at San Antonio.
I'm also
a Software Architect and Developer and previously held a B.Sc.
degree in Applied Mathematics.
This is my blog where I publish content about various topics specifically Programming Languages and Compilers, Software
Engineering, and Programming.
Fahrenheit Marketing is a top-dog Austin Web Design firm offering a complete portfolio of online services.
In the first post of this series I wrote about the educational project that we’re going to build on top of the iPhone/iPod Touch platform for our graduate Software Engineering class and gave a quick overview of the elements of iPhone development.
An infancy of our project was to choose a good idea regarding the requirements defined by our instructor and some other requirements that we had in our team. In this post I’m going to describe this idea and different aspects of its implementation in regards to the educational nature of this project.
We formed up a group of four students for this project. Apparently, we didn’t know each other and were not aware of the level of knowledge and experience of other team members. Our instructor, Dr. Shonle, requested us to work on the idea of this project after putting some general requirements on what we can do. We also had our own limitations as individuals and as a team. This part of the project was a critical part because we had to be careful and choose an idea that can meet the requirements and can be implemented in a timely manner with the effort that we could put into that.
We had two types of requirements: those imposed by our instructor and those imposed by our internal limitations.
Our instructor had defined the following limitations for our project:
Besides, we had our own limitations as individuals or as a team:
Having the abovementioned requirements in mind, we decided to share our ideas and describe them, so each team member submitted an idea to our internal Wiki. We received eight ideas:
We discussed pros and cons of each idea and nominated two ideas for our project: Secure PIN and Reverse Polish Notation calculator.
The Secure PIN had a sweet and noble idea that had a good level of flexibility and had a very sweet nature that could replace the default PIN authentication mechanism in iPhone/iPad Touch but the implementation of the user interface and algorithm could become challenging somewhere in the middle. Fortunately, one of the team members had implemented this in C# as a Windows Forms application but we had no idea how difficult it can become if we try to implement the same APIs in Objective-C with Cocoa. One drawback for this idea was that it’s very difficult to replace the default PIN mechanism in iPhone operating system, so the idea couldn’t become practical.
The Reverse Polish Notation was a straightforward idea that was known to all team members and all the team members seemed to have a good level of knowledge and background to understand and implement it, and we couldn’t find any major drawback for that except the fact that there were many other calculators with different implementations available for the platform.
One advantage of this idea was its nature to be split in different modules to be implemented by different team members. This was an important point for our course.
The Reverse Polish Notation (abbreviated as RPN) is one of the common notations used in mathematics and Computer Science to represent mathematical expressions. RPN uses a postfix notation for expressions to evaluate them. In some circumstances, this notation is handy in calculating mathematical expressions.
This notation is common in Data Structures and many other aspects of Computer Science such as Programming Languages and Compilers. The basic idea is to push operands in a stack and pop them to apply an operator to them.
First we have to define the community that this application serves to. This community can be either as wide as all iPhone/iPod Touch users or as limited as the group of developers interested in learning the programming for this platform by reading examples and codes.
As a calculator, this idea can be helpful for those who want to use the Reverse Polish Notation in their calculations on iPhone and this is the practical aspect of this idea.
As an educational project that may be released as an open source work, it can help others learn some aspects of iPhone development by reading the code. This project is specifically a good showcase of data structures implementation in Objective-C and iPhone.
One of the advantages of this idea is that it can be started as a simple core by implementing arithmetic expressions and then can be expanded in an incremental manner to have other mathematical operations and/or memory storage features.
This project can be broken to smaller modules in various ways, but one of the simplest and most straightforward ways for our group was to divide it in the following modules to be assigned to our group members:
This is a very good separation that can help our team members work on their assigned parts individually and then combine them in a single application easily.
We built an initial prototype of a horizontal user interface for this system.
Basically, the user interface consists of two half: the left half is the user input area to get numbers and operators, and the right half is the output area to show the stack and the result of calculations.
Hopefully, we start implementing this project this week and we will use a source control system along with FugBugz as our bug tracking software. Our plan is to build and test our initial modules then combine and test them as a whole. After that, we are going to expand these core features by adding the future expansion points described above.
Fahrenheit Marketing is your resource for Search Engine Optimization in Austin.
Dew Dump - February 16, 2010 | Alvin Ashcraft's Morning Dew
Feb 16, 2010 11:50 AM
#
Keyvan Nayyeri
Feb 22, 2010 5:10 PM
#
Keyvan Nayyeri
Mar 19, 2010 8:38 AM
#
Keyvan Nayyeri
Apr 08, 2010 10:14 PM
#
Keyvan Nayyeri
Apr 19, 2010 3:13 PM
#
Keyvan Nayyeri
Apr 30, 2010 10:33 PM
#
Keyvan Nayyeri
May 03, 2010 12:42 PM
#
Keyvan Nayyeri
May 06, 2010 10:42 AM
#
Leave a Comment