1.1 Project Aim
Almost every computer language has floating point data types and allows basic arithmetic operations, such as addition, multiplication, division and remainder, to operate on objects of this type. Unfortunately, the execution of these operations will generally give an approximate answer rather than an exact answer as a result of the different formats of representing numbers (integers, floats and doubles). For instance, the expression (a*b)* c = a*(b*c) is true in standard arithmetic but not usually true in floating point arithmetic.
A typical computer program can involve millions of arithmetic operations each of which may have a small error. Therefore, the errors that can be negligible in each arithmetic operation can be devastating when accumulated over a long calculation. The aim of this project is to illustrate the consequences of the above observation on computer arithmetic and also the effects of this on the design and implementation of software.
A second aim is to build an online interactive tutorial, based on the above observations, to allow computing students to learn “what every programmer should know about floating point arithmetic”.
1.2 Objectives, Minimum Requirements and Deliverables
1.2.1 The Objectives of the project are as follow:
1. To achieve a superior understanding of the concept of computer arithmetic and its effects on the design and implementation of software.
2. To provide a practical illustration by producing a number of java programs that demonstrate various issues and consequences of using computer arithmetic. These will form the basis of java applets, which will be used as part of the online interactive tutorial.
3. To select and follow an appropriate methodology to produce the desired product
(i.e. the interactive tutorial).
4. To design the interactive tutorial website taking account its content, structure and
its visual aspects.
5. To implement the design using a suitable methodology.
6. To evaluate the completed website in terms of usability, functionality and check
that it has fulfilled the project requirements.
1.2.2 The Minimum Requirements and Deliverables of the project are as follow:
1. Achieving a good understanding of the concepts and consequences of floating point and integer arithmetic.
2. Implementing a basic tutorial that can be built upon incrementally.
3. The interactive tutorial website should provide some interactive illustration based upon applets that will be created from java code examples.
4. This interactive tutorial website should be able to help Computing students to learn more about floating point arithmetic issues in programming.
1.2.3 The Deliverables of the project is:
1. An interactive tutorial website that demonstrates the concept of computer arithmetic and its consequences especially on the design and implementation of software.
2. The final project report that includes detailed chapters of all the phases and tasks involved in this project including the current chapter and the back ground chapter.
1.2.4 The Suggested Enhancements are:
1. Additional interactive features to create enhanced versions of the tutorial in an incremented manner.
2. Some hyperlink keywords could be included in the website so user can click on them for further information.
3. A forum might be included in the website to provide advice to users having problems, allow information and knowledge exchange and encourage collaboration in development of new issues and exchange them between users.
1.3 Project Schedule
The project schedule consists of numbers of tasks plus three milestones, which will be all fit, carried out and achieved during the two semesters. The ratio of modules taken place in this year is five in the first semester to three in the second semester. Therefore, greet deal of effort in this project will be performed during the second semester due to the availability of time. This is the list of tasks to be fulfilled in this project:
1. Research into the concept of computer arithmetic and the matters involved:
Floating point and integer arithmetic.
2. Create java program examples:
Implement a number of the examples into java code to demonstrate the consequences.
3. Search into how to create web applets with java:
Read an introduction on the subject of how to create java applets. Create some basic java applets and embed them in a webpage.
4. Research into how the interactive tutorial will be delivered: Examine and evaluate a range of existing online tutorials. Employ this evaluation on delivering the interactive tutorial.
5. Implementing a basic tutorial that can be built upon incrementally: Implementation should follow up an appropriate methodology. Build a basic tutorial with certain contents such as part of floating point
Implement on it the associated java applets. Use this preliminary website to build upon incrementally.
6. Evaluate and test the produced interactive tutorial:
A number of tests are carried out such as: unit testing and system testing. Evaluate the completed website in terms of usability and functionality. Improvements to the website will be based upon the outcome of the evaluation.
7. Write up the work:
Sections of the final report will be written during each phase of the project