Final Year Project Handbook - Computer Science - National ...
Final Year Project Handbook - Computer Science - National ...
Final Year Project Handbook - Computer Science - National ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
2012/2013 <br />
<strong>Final</strong> <strong>Year</strong> <strong>Project</strong> <br />
<strong>Handbook</strong> <br />
Department of <strong>Computer</strong> <strong>Science</strong> <br />
<strong>National</strong> University of Ireland, Maynooth <br />
Academic <strong>Year</strong> 2012/2013 <br />
1
2012/2013 <br />
Special Note on Plagiarism <br />
Reference the university policy at <br />
http://examinations.nuim.ie/documents/plagiarism.pdf <br />
which is included as an appendix to the handbook <br />
Presenting the work of others as your own is not acceptable. <br />
A reader must be able to clearly distinguish between <br />
your own work and the work of others. <br />
If you use the work of others, either as a direct copy, or summarising or <br />
using their ideas, you must (a) cite their work at every place where you <br />
make use of it, and (b) include a full reference to their work <br />
(see Appendix B for details). <br />
All projects will be submitted to “Turnitin” to assist the Department <br />
in ensuring that your work is original. <br />
Offenders will be subject to disciplinary action. <br />
2
2012/2013 <br />
Table of Contents <br />
1. INTRODUCTION ...................................................................................................................................... 5 <br />
1.1 OVERVIEW .................................................................................................................................................. 5 <br />
1.2 LEARNING OUTCOMES .................................................................................................................................. 5 <br />
1.3 LEARNING METHODS .................................................................................................................................... 5 <br />
1.4 ASSESSMENT ............................................................................................................................................... 5 <br />
1.5 PROJECT TYPES ............................................................................................................................................ 6 <br />
2. THE IMPORTANCE OF FINAL YEAR PROJECTS ........................................................................................... 7 <br />
2.1 RESPONSIBILITY ........................................................................................................................................... 7 <br />
2.2 RECOMMENDED READING ............................................................................................................................. 7 <br />
3. PROJECT ORGANISATION ........................................................................................................................ 7 <br />
3.1 PROJECT PROPOSAL ...................................................................................................................................... 7 <br />
3.2 PROGRESS REPORTS ..................................................................................................................................... 8 <br />
3.4 INTERIM REPORT ....................................................................................................................................... 8 <br />
3.5 FINAL REPORT ............................................................................................................................................. 8 <br />
4. PLANNING YOUR PROJECT ...................................................................................................................... 8 <br />
4.1 PROJECT PLANNING ................................................................................................................................... 9 <br />
5 EXECUTING YOUR PROJECT ..................................................................................................................... 9 <br />
5.1 READING YOUR WAY INTO THE TOPIC .............................................................................................................. 9 <br />
5.2 PROBLEM ANALYSIS .................................................................................................................................... 10 <br />
5.3 SOLUTION................................................................................................................................................. 11 <br />
5.4 DESIGN .................................................................................................................................................... 12 <br />
5.5 IMPLEMENTATION ...................................................................................................................................... 12 <br />
5.6 SOLUTION EVALUATION ............................................................................................................................... 13 <br />
6 DOCUMENTATION ................................................................................................................................ 14 <br />
6.1 DOCUMENTING YOUR PROJECT .................................................................................................................... 14 <br />
6.2 DOCUMENTING YOUR WORK ........................................................................................................................ 14 <br />
6.5 PROJECT REPORT ....................................................................................................................................... 15 <br />
6.6 PROJECT PRESENTATION ......................................................................................................................... 17 <br />
7. ASSESSMENT OF YOUR PROJECT ............................................................................................................... 17 <br />
7.1 PROJECT DELIVERABLES ............................................................................................................................... 17 <br />
7.2 ASSESSMENT CRITERIA ................................................................................................................................ 18 <br />
7.3 ADDITIONAL INFORMATION .......................................................................................................................... 18 <br />
APPENDIX A: GENERAL PROJECT INFORMATION ........................................................................................... 19 <br />
DEADLINES ........................................................................................................................................................... 19 <br />
REPORT LENGTH .................................................................................................................................................... 19 <br />
HOW TO SUBMIT YOUR REPORT ............................................................................................................................... 19 <br />
FINAL YEAR PROJECT CO-‐ORDINATOR ........................................................................................................................ 19 <br />
APPENDIX B: WHAT IS RESEARCH ............................................................................................................... 20 <br />
APPENDIX C: A VERY SHORT GUIDE TO GOOD WRITING† ............................................................................. 21 <br />
APPENDIX D: GIVING PRESENTATIONS ......................................................................................................... 22 <br />
APPENDIX E: TYPICAL STRUCTURE OF A FINAL YEAR DEVELOPMENT PROJECT REPORT ................................. 23 <br />
APPENDIX F: TYPICAL STRUCTURE OF A FINAL YEAR RESEARCH PROJECT REPORT ........................................ 27 <br />
APPENDIX G: TITLE PAGE AND DECLARATION ............................................................................................... 31 <br />
APPENDIX H: PROJECT PLANNING ................................................................................................................ 33 <br />
G.1 TASKS ...................................................................................................................................................... 33 <br />
G.2 THE PROJECT PLAN .................................................................................................................................... 33 <br />
G.3 UPDATING THE PROJECT PLAN ...................................................................................................................... 34 <br />
APPENDIX I: DESIGN ..................................................................................................................................... 36 <br />
APPENDIX J: TESTING ................................................................................................................................... 38 <br />
APPENDIX K: SOFTWARE ENGINEERING DOCUMENTS .................................................................................. 39 <br />
3
2012/2013 <br />
APPENDIX L: FINAL YEAR PROJECT PROPOSAL TEMPLATE ............................................................................. 40 <br />
APPENDIX M: FINAL YEAR PROJECT MARKING FORM ................................................................................... 41 <br />
APPENDIX N:UNIVERSITY POLICY ON PLAGIARISM ....................................................................................... 43 <br />
4
2012/2013 <br />
1. INTRODUCTION <br />
The final year project is one of the most important aspects of your degree. It provides you with an opportunity <br />
to apply the principles learned in different modules, and integrate material learned at different stages of the <br />
course. There may also be a need for additional, domain-‐specific knowledge for your project, which will <br />
necessitate additional study. <br />
1.1 OVERVIEW <br />
You will execute a significant project in an area of relevance to <strong>Computer</strong> <strong>Science</strong> and Software Engineering. <br />
Every project is unique, but this will generally involve: <br />
1. Planning your project. <br />
2. Executing your project. <br />
3. Documenting your work. <br />
4. Critically assessing your project. <br />
You are expected to produce something significant in your project: a software implementation, the evaluation <br />
of your solution to a research problem, or an evaluation of existing solutions. <br />
1.2 LEARNING OUTCOMES <br />
On successful completion of the module, you should be able to apply your knowledge and understanding of <br />
computer science and software engineering to analysing problems, creating and evaluating solutions, and <br />
critically assessing your own work. You should also be able to prepare project plans, give presentations, and <br />
write reports. <br />
1.3 LEARNING METHODS <br />
The final year project is a self-‐learning exercise, under the guidance of your supervisor. The following six <br />
learning elements form the basis of your project: knowledge, understanding, applying, analysing, evaluating, <br />
and creating. <br />
During your project, you are expected to use these as follows: <br />
• Develop an understanding of the technical domain knowledge on which your project is based <br />
• Apply your knowledge and understanding in executing the project <br />
• Analyse a problem <br />
• Create a solution (“synthesis”) <br />
• And evaluate your work <br />
1.4 ASSESSMENT <br />
Semester 1 <br />
• Interim Report and Presentation <br />
Semester 2 <br />
5
2012/2013 <br />
• <strong>Final</strong> Report, Presentation, and Demonstration <br />
The submission deadlines for this year are shown in Appendix A. <br />
1.5 PROJECT TYPES <br />
There are two types of <strong>Final</strong> <strong>Year</strong> <strong>Project</strong>: the Development <strong>Project</strong> and the Research <strong>Project</strong>. <br />
1.5.1 DEVELOPMENT PROJECTS <br />
The objective of this type of project is to develop a system that meets a set of user needs. This may take many <br />
forms, for example: an application, a server, a program, a library, a collection of programs, an embedded <br />
system, a hardware-‐software system, plug-‐ins, extensions, modifications to existing software etc. <br />
The focus is on following sound software engineering principles, and evaluating your work thoroughly. <br />
The main output is your report. This shows that the system you have developed is of suitable quality, and <br />
solves the user needs. <br />
You will do background research into both the technology and the marketplace. You will evaluate the success <br />
of your system in terms of how well it meets the user’s needs. The system you develop is the principle output <br />
of your project. You must test your software to make sure it works correctly, and then evaluate how well it <br />
meets the user’s needs. <br />
Development projects are based on the principles of quality software development, which can be summarized <br />
as follows: <br />
1. Understand what is needed <br />
2. Design a solution <br />
3. Design and implement a system to realize the solution <br />
4. Verify that the implementation matches the design <br />
5. Validate that the implementation correctly realizes your solution <br />
6. Evaluate how well the solution solves the problem <br />
You only have a limited amount of time available, so you may decide with your supervisor that you are going to <br />
put equal emphasis on each of the software development steps, or just emphasise one (for example analysis or <br />
testing) and put less emphasis on the others. Make sure your project report clearly identifies this decision. <br />
1.5.2 RESEARCH PROJECTS <br />
The objective of the research project is to solve a research-‐oriented problem. This may take the form of <br />
evaluating the effectiveness of existing solutions, modifying existing solutions, or even developing a new <br />
solution to the problem. In any case, your evaluation of the solution is the key output. <br />
The focus is on following sound experimental techniques, and evaluating the solution thoroughly. <br />
The main output is your report. This shows how well the solution you have worked on solves the problem. <br />
You will do background research into the domain area, and a literature review of existing publications to <br />
develop a sound basis for your work. You will evaluate the success of your solution, using experimental <br />
methods, in terms of how well it solves the research problem. The solution you develop is the principle output <br />
of your project; any software you develop is a tool to evaluate your solution. You must test your software to <br />
make sure it correctly implements your solution before you run experiments to evaluate its effectiveness. <br />
6
2012/2013 <br />
Experimental research in computer science and software engineering is based on the scientific method, which <br />
can be summarized as follows: <br />
1. Formulate a hypothesis (that your solution solves a problem against selected criteria) <br />
2. Select meaningful measurements <br />
3. Design and conduct experiments, and collect the results <br />
4. Use statistical methods to analyse the data <br />
5. Interpret and explain the results <br />
6. Evaluate any threats to the validity of the research results <br />
7. Use the results to confirm or refute your hypothesis <br />
You will probably put a significant amount of effort into solving the problem. You only have a limited amount <br />
of time available, so you must decide with your supervisor how you are going to balance the time for solving <br />
the problem against implementing and testing your solution. Note that untested software is a threat to the <br />
validity of your results! <br />
2. THE IMPORTANCE OF FINAL YEAR PROJECTS <br />
You will continue to gain experience after you graduate, but the final year project will be your first exposure to <br />
a significant computer science and software engineering project. It is essential that you learn from this <br />
exposure, and practice all of the methodologies involved. It is also important that you learn not just how to <br />
apply what you know, but also to apply it with judgement, with the ability to assess what you are doing and to <br />
be critical of it. <br />
Your final year project is also an important element in determining your final degree grade. Also, for borderline <br />
cases, examiners may use your project performance in deciding your overall result. <br />
2.1 RESPONSIBILITY <br />
It is important to note that you are responsible for your project. Your supervisor will provide you with guidance <br />
and feedback, but you must put in the effort to achieve a successful project. So work hard on your final year <br />
project, while balancing your time and effort with your taught modules. <br />
2.2 RECOMMENDED READING <br />
The following provide reference material that you may find useful during your project: <br />
q<br />
q<br />
q<br />
q<br />
q<br />
q<br />
“The Essence of Computing <strong>Project</strong>s”, by C. W. Dawson, Prentice-‐Hall, (latest edition) <br />
“A Lightweight Software Development Process for Student <strong>Project</strong>s”, NUIM-‐CS-‐TR-‐2005-‐09 <br />
“Testing Guidelines for Student <strong>Project</strong>s “, NUIM-‐CS-‐TR-‐2005-‐05 <br />
“CS353 Guidelines for Condensed Software Development Documentation” Version 1.0.0, September <br />
27th 2010 <br />
“Guidelines for Documents Produced by Students <strong>Project</strong>s in Software Engineering”, NUIM-‐CS-‐TR-‐<br />
2002-‐05 <br />
“Document Templates for Student <strong>Project</strong>s in Software Engineering”, NUIM-‐CS-‐TR-‐2002-‐06 <br />
All technical reports are available on the Department of <strong>Computer</strong> <strong>Science</strong> website. <br />
3. PROJECT ORGANISATION <br />
There are a number of organizational matters you should be aware of to complete your project successfully. <br />
3.1 PROJECT PROPOSAL <br />
7
2012/2013 <br />
Before being accepted for a project, you must submit a “Proposal” to your intended supervisor. This must <br />
describe the aims of the project and discuss the methodology you intend to use in achieving those aims. See <br />
the FYP Proposal Template in the Appendix for details. <br />
Supervisors suggest both specific projects, and project areas, on the departmental website. Review these <br />
carefully, and then go and talk to potential supervisors who have indicated projects that sound of interest to <br />
you. <br />
3.2 PROGRESS REPORTS <br />
Your supervisor may require you to submit periodic, written progress reports. A typical report might contain: <br />
1. The project title <br />
2. Your name <br />
3. A short description of your progress since the previous report <br />
4. A summary of the work you expect to complete before the next report <br />
3.4 INTERIM REPORT <br />
You will be required to submit an interim report, and make a short presentation on your project, at the end of <br />
Semester 1. <br />
The report should describe the background material/literature review for your project, detail the problem <br />
description, and summarise your approach. <br />
This presentation should consist of five slides (See Appendix D: Giving Presentations): <br />
• Goals of your <strong>Project</strong> <br />
• Overview of Background <br />
• Progress to Date <br />
• Problems Encountered <br />
• Planned Next Steps <br />
3.5 FINAL REPORT <br />
You will submit a final report at the end of your project. See Appendix D for suggested report structures. <br />
4. PLANNING YOUR PROJECT <br />
One of them most important things you will learn when doing your project is the need to manage your time. <br />
<strong>Final</strong> <strong>Year</strong> <strong>Project</strong>s are completely different from smaller projects you may have undertaken. They require a <br />
considerable amount of time: <br />
q<br />
q<br />
q<br />
Single Honours 1 <strong>Science</strong> students should spend 240 hours (accounting for 25% of final year marks) <br />
CSSE students should spend 240 hours (accounting for 25% of final year marks) <br />
Double Honours <strong>Science</strong> students should spend 80 hours, normally in the first semester (accounting for <br />
16.7% of final year marks) <br />
1 Including special entry courses: <strong>Computer</strong> <strong>Science</strong> & Theoretical Physics, HDipCS, etc. <br />
8
2012/2013 <br />
Begin your project early, work consistently at it, and track your progress. A project plan helps you to thinking <br />
about all the things you need to do, their inter-‐relationships, and the time each will take. <br />
4.1 PROJECT PLANNING <br />
In order to plan your project, you should identify the tasks you need to complete. It helps to organise these by <br />
major activities (as described, for example, in Sections 1.5.1/1.5.2). <br />
For each activity, you should list the tasks. <br />
For each task, you should identify the following: <br />
• Title <br />
• Brief description of the work to be done <br />
• Identify what the output or deliverable will be <br />
• Estimate the start and end dates <br />
• Identify the dependencies (what tasks cannot be started, or completed, until this task is completed) <br />
• Identify the key risks to completing the task on time, and what “contingency” action you will take if <br />
you are unable to do this <br />
Refer to Appendix G for more details. <br />
5 EXECUTING YOUR PROJECT <br />
It is important that you take a systematic, problem-‐solving approach to your project: understanding the <br />
problem, designing a solution, implementing the solution, testing the code, and finally evaluating your <br />
solution. <br />
Depending on the approach you take, you may start some of these activities before completing previous ones. <br />
You may also break the problem into smaller problems, and address these in turn. You must discuss your <br />
individual project with your supervisor to identify the priority of the different activities for your project. <br />
Your project report is a record of how you addressed solving the problem, and records the results of the <br />
various activities. The documentation should not take up much time if you have approached these activities in <br />
a well-‐structured way. <br />
It is critical that all material in your report be your own work. You must not use direct quotes in your report, <br />
even if you have cited the source. If you want to include results from other people’s work, then you must <br />
express it in your own words, and cite the source. This does not mean merely replacing words with synonyms; <br />
it means rewriting it completely to show your understanding of the material. Cutting and pasting any material <br />
directly into your report or plagiarism – a severe academic offence. <br />
5.1 READING YOUR WAY INTO THE TOPIC <br />
At the outset you need to learn as much as possible about the area in which you’ll be doing the project, as <br />
quickly and efficiently as possible. Structure your research, and avoid “reading much but learning little”. <br />
q<br />
q<br />
Collect any papers, articles, book chapters you can on the area and make a copy for your own personal <br />
archive. <br />
Make sure you keep a detailed record of the source of everything you read. Typically, you need to record <br />
the title of the article, the authors, the name of the magazine/journal/book, the volume and number of <br />
the journal or magazine, the publisher, the year it was published, and the page numbers. If it’s a chapter in <br />
a book and the author of the chapter is different from the editor of the book, you need to record both sets <br />
of names. Incomplete references are not acceptable -‐ you must provide all information necessary to get a <br />
copy of that article. You will include all this information at the end of your project report in the <br />
9
2012/2013 <br />
“References” section. (Note: A URL alone is not acceptable as a reference, but you may include URLs to <br />
assist the reader in accessing a copy to read). <br />
q<br />
Not all the articles you collect will be equally relevant or important. Consequently, it’s not efficient to give <br />
each of them the same attention. But it’s not easy to know how relevant it is until you read it. So how do <br />
you proceed To solve this dilemma, you should know that there are three levels of reading: <br />
1. Shallow Reading: you just read the article quickly to get an impression of the general idea. Read it <br />
twice. This should take a half-‐an-‐hour to an hour. <br />
2. Moderate Reading: Read the article in detail and understand all of the main concepts; this will <br />
probably require you to read it several times and take a couple of hours to assimilate. <br />
3. Deep Reading: Here you make an in-‐depth study of the article. This may take you several hours or <br />
even a couple of days. After many careful readings, you should know as much about the topic as the <br />
author. <br />
The way to proceed with your ‘reading in’ is to: <br />
q<br />
q<br />
q<br />
q<br />
q<br />
Shallow read everything and write a 5-‐line summary of the article. <br />
If you think the article is directly relevant to your project, label it, and put it on a list of articles to be read <br />
at the next level, i.e. Moderate Reading. <br />
Read all the labelled articles and write a 1-‐page summary. <br />
If the article is going to be used directly in the project, e.g. as a basis for a hardware design or a software <br />
algorithm, then you need to add it to your list of articles to be read at the next level, i.e. Deep Reading. <br />
Read all the Deep-‐Read articles and write extensive notes on them. <br />
Note that the ‘reading in’ phase of the project can last quite a long time (there’s a lot of reading and writing to <br />
be done) and it can overlap partially with some of the other early tasks). <br />
<strong>Final</strong>ly, it is very important to realise that, in order to fully understand anything that you read, you must write it <br />
up in your own words. If you can’t express or speak about a given idea, then you haven’t truly understood it in <br />
any useful way. This is so important, it’s worth saying a third time: <br />
Writing is an Essential Part of Understanding <br />
This is why, in all of the above guidelines, you see recommendations to write things down. (See the section on <br />
documenting your research). <br />
5.2 PROBLEM ANALYSIS <br />
Having chosen your project, you will have in your possession a short description of what is involved in the <br />
project. You will realise by now that this is completely insufficient for you as a basis for doing the project. <br />
Consequently, your next task must be to find out exactly – and completely – what the project entails. This isn’t <br />
as easy as it sounds. You might think that you should just ask your supervisor and he or she should tell you. It <br />
doesn’t work like that. Quite often, a supervisor won’t have an exact (and complete) model of what is required <br />
– supervisors are just like clients and customers in the business and industrial world. It is your job to help your <br />
supervisor identify exactly what he wants. That’s what good computer science practitioners do: they help <br />
people understand what they want and then they build it for them. Here’s how you do it. <br />
1. Talk to your supervisor <br />
10
2012/2013 <br />
2. Write down everything he or she says (by ‘write down’ I mean take notes of his or her words) <br />
3. Write up everything he or she says (by ‘write up’ I mean express what your supervisor said in your own <br />
words). <br />
4. Consult with your supervisor to make sure you have understood them (show your supervisor your write-up,<br />
and ask for their feedback). <br />
5. Read into the problem area, to see what others have done. This will generally highlight a number of <br />
opportunities and pitfalls. <br />
6. Document what you think is required, including functional and non-‐functional requirements. <br />
7. Or, build a prototype of what you think is required. <br />
8. Go back to your supervisor and ask for her or his comments. <br />
9. Return to step 1, and keep returning until you are both happy with your requirements document. <br />
This all translates into one simple rule: find out what you want the final system to do, write it down, and get <br />
everyone involved to agree to it… in writing. Make sure you include all relevant detail: every single aspect of <br />
what’s wanted should be teased out and agreed: what it does, what it doesn’t do, how the user is to use it or <br />
how it communicates with the user, what messages it displays, how it behaves when the user asks it to do <br />
something it expects, and especially how it behaves when the user asks it to do something it doesn’t expect. <br />
For a development project, this process is called requirements elicitation -‐ you have to work actively with the <br />
client to find out what they really want (as opposed to what they initially say they want, which is a completely <br />
different thing). It is important, as it is the basis of all your work that follows, but it will probably only take up <br />
about 10% of your project time. The User Requirements Document provides a template for how you may <br />
present the results of this work. <br />
For a research project, this is probably going to be a longer activity. It is half of your research work: the other <br />
half is creating a solution. You should consult with your supervisor how best to present the results of this work <br />
– it will form the core of your “background” or “literature review” of your report. <br />
For both types of project, a key output is your problem statement: a clear and concise description of the <br />
problem you are solving in your final year project. <br />
5.2.1 MODELLING YOUR PROBLEM <br />
This is the foundation of all science: the creation of a rigorous – usually mathematical – description of the <br />
problem to be addressed. For example, if your problem concerned with packet routing, you might represent it <br />
using a graph and deploy formal graph theoretic tools for its analysis; if your problem is concerned with signal <br />
analysis, you might choose a Fourier representation or an Eigen-‐vector representation and deploy the <br />
appropriate theorems in Fourier analysis or linear system theory. If your problem is to do with building a <br />
database, you will probably model the system with an entity-‐relationship diagram and validate the model by <br />
normalisation. <br />
Be careful not to involve design decisions in your analysis. Sometimes the design solution wall fall out naturally <br />
from the analysis, but if you are making decisions then you have moved to the “Solution” activity as described <br />
in the next section. <br />
5.3 SOLUTION <br />
Having developed a clear understanding of the problem, you now need to invent or design a solution. <br />
For a research project, this is the most important element of your work. You will probably do some theoretical <br />
development, and usually prove or at least demonstrate the effectiveness of your solution using analytical <br />
techniques. You will document this in your project report. <br />
For a development project, you will be analysing the problem, deciding what inputs your solution must accept, <br />
and the functionality and storage required to produce the outputs. Do not concern yourself with details of the <br />
interface yet – you will be designing them next. <br />
11
2012/2013 <br />
For both types of projects, you will need to work out the requirements for input data, processing, and output <br />
data. You can document your work by producing a “User Requirements Specification”. <br />
5.4 DESIGN <br />
You must do at least two different types of design. The first is to design a software ‘product’ that realises your <br />
solution to the problem. This will identify the details of the inputs and outputs, and identify any processing and <br />
storage requirements. For example, you will design your GUI screens here. This is traditionally called a <br />
“Software Requirements Specification”, as it specifies the requirements that your software must meet. <br />
The second is to design the software to implement this product. This will show how the inputs are handled, <br />
how the processing is done, how internal data storage is achieved, and how the outputs are generated. Do not <br />
confuse these two: at the software design stage you should not, for example, be making decisions about what <br />
the GUI will look like, but rather how you are going to implement it given the programming <br />
language/environment you are using. <br />
Typically you need to use two levels of abstraction for your software design: <br />
1. a high-‐level design, showing the architecture of your solution (e.g. the major classes, and how they <br />
interact with each other) <br />
2. a detailed design, showing the details of the software components (e.g. the attributes and methods <br />
for each class). <br />
Use an incremental implementation approach. Don’t attempt to build the entire system in one go in the hope <br />
that, when you switch it on or run it, it will work. This is the so-‐called “Big Bang” approach (everything comes <br />
into existence at one instant) and its name is very appropriate, for it almost always results in initial chaos. <br />
It is much better to design, code, and test each software feature individually and add them to an ever <br />
expanding system. In general, it is best to complete the high-‐level design first, but then design, code, and test <br />
in an incremental manner. <br />
See Appendix I for more details. <br />
5.5 IMPLEMENTATION <br />
Your implementation consists of writing the code and testing it. <br />
5.5.1 CODING <br />
When re-‐using code that you did not write, you must create a separate file containing this code. All such <br />
reused code must be properly documented and also properly tested before use, and this testing must be <br />
documented. It is prohibited to mix your code with reused code in any file. <br />
You will be expected to submit your source code for assessment. Make sure it is clearly structured, conforms <br />
to your coding standard, and is well documented and commented. Make sure that any code that is not <br />
completely your own work is clearly identified. Source code should by submitted along with your project <br />
report. <br />
5.5.2 SOFTWARE TESTING <br />
There are two aspects to software testing: verification and validation. <br />
q<br />
Verification ensures you have “built the system correctly”. That is, that the software correctly <br />
implements your solution. For your project, you will normally carry this out at two different levels: <br />
unit testing, and system testing. <br />
12
2012/2013 <br />
q<br />
Validation ensures that you have “built the correct system”. That is, that your solution as realised in <br />
the software does actually solve the original problem. <br />
Software testing should usually be automated (using, for example, CPPUnit or JUnit) for speed of execution, <br />
reliability, and repeatabilty. Unit testing should always be automated. System testing can usually be automated <br />
using various test tools (e.g. web test tools such as Webpagetest, or GUI test tools such as Abbot/Costello or <br />
Visual Studio Test Professional). <br />
Appendix J gives more details on testing. <br />
Read NUIM-‐CS-‐TR-‐2005-‐05 for more details on how you might go about testing your software. <br />
5.6 SOLUTION EVALUATION <br />
Having developed an implementation of your solution, and demonstrated that it works correctly, you now <br />
need to evaluate how well it works in solving the original problem. <br />
5.6.1 DEVELOPMENT PROJECTS <br />
<strong>Final</strong>ly, we ask: have I built the best system Again, the hallmark of good computer science: we seek to assess <br />
the systems performance and compare it to that of other similar systems. Ideally, you should identify some <br />
quantitative metric by which to compare the systems, since numbers are the best and perhaps the only way to <br />
objectively describe performance -‐ for example, the mean time between failures (MTBF). Quite often, we use <br />
statistical measures as our comparative metric, e.g. the mean and standard deviation of some performance <br />
measure when the system is subjected to a large variety of input parameters and conditions. <br />
Evaluation is the act of measuring how well (using quantitative measures) your software system works. Note <br />
that testing your software is different from running your software to get results. Testing your software makes <br />
sure that it is doing what it is supposed to do. Validating your software makes sure that what it is supposed to <br />
do actually solves the original problem. Evaluating your software explores how well your software operates. <br />
Address these three issues separately. <br />
You need to identify the different ‘metrics’ which you need to measure to evaluate your solution. Some of the <br />
obvious ones, which you should normally include, are: <br />
q<br />
q<br />
performance (throughput, latency, memory/disk usage, etc) <br />
stability under load (also called stress testing) <br />
5.6.2 RESEARCH PROJECTS <br />
A research project fundamentally consists of a “hypothesis” and experiments to either confirm or refute it. <br />
Your hypothesis is that your solution solves the problem – you will need to formulate a more detailed wording <br />
for your project however. You implement your solution in code, and run experiments against it. By collecting <br />
the results, and analysing them using statistical methods (usually), you can then either prove or refute the <br />
hypothesis. You must be careful about “threats to validity” – consider how valid your results are, and how far <br />
can you generalise them. <br />
If you have done some theoretical development during your research, which you are evaluating with a <br />
software implementation, then your verification is testing individual functions or classes to make sure they <br />
perform as specified, validation is making sure that the system meets the requirements, and evaluation is <br />
measuring how well your system works. <br />
13
2012/2013 <br />
5.6.3 MAINTAINABILITY AND RE-‐USE <br />
In the normal course of events in a computer science project, there comes a time when the system is <br />
commissioned and it becomes operational. As time passes, it is necessary to monitor the performance of the <br />
system and make adjustments and, occasionally, to replace it. It is almost inevitable, too, that the <br />
requirements will change with time and this, in turn, will necessitate alterations and upgrades. Typically, this <br />
phase is not of major concern in a final year project but it’s as well to be aware of it since the majority of the <br />
life of a system is spent in this phase of its life-‐cycle. <br />
6 DOCUMENTATION <br />
We noted earlier that writing is an essential part of understanding. We note it again here but in a different <br />
sense. In this case, writing is essential in order for others to understand what you have done. There are two <br />
reasons why you want others to understand your work: <br />
1. So that you can be given credit for it (your final mark depends on it); <br />
2. So that others can carry on your work and develop or maintain your system. <br />
It is extremely important that you document your work at every stage of your project. We saw already that <br />
documentation is essential in the initial reading-‐in, requirements, and specification phases but it is equally <br />
important in the design, implementation, test, and maintenance phases. <br />
The best way to organise your writing is to keep a a log book of all work in progress. You should go out and buy <br />
a hard-‐cover notebook and write everything you do on the project into this log book every day. Every thought <br />
and observation you have on your project should go into this book, along with notes of meetings with your <br />
supervisor, results, theoretical developments, calculations, everything. This log book will become an invaluable <br />
source of material when you come to write up your project in the final report. It will also provide relevant <br />
material for your monthly reports. You should submit the log-‐book to your supervisor at the end of the project. <br />
However, don’t wait until the end of the project to begin the process of formal documentation. At the end of <br />
each phase of the project (or at the end of each task) you should write up any documentation and reports <br />
related to that phase. These will, in turn, contribute to your final report. <br />
<strong>Final</strong>ly, there is one other form of documentation that you will have to create during your project. This is the <br />
final presentation. <br />
6.1 DOCUMENTING YOUR PROJECT <br />
Your assessment is primarily based on the quality of the work you have done, as expressed through the report <br />
you produce. <br />
6.2 DOCUMENTING YOUR WORK <br />
The main reason for documenting the work you have done for your final year project is assessment. For this <br />
reason it is important that this is: concise, precise, and complete. A suggested report layout is included in <br />
Appendix: Typical Structure of a <strong>Final</strong> <strong>Year</strong> <strong>Project</strong> -‐ but remember it is the content that is most important. <br />
Note that this does not mean that you just simply have to fill in the gaps in a general report template. The <br />
standard structure simply provides you with a place to start as you begin to design the final structure and <br />
content of your documents. You will still have to do quite a lot of work to make it fit your own project <br />
A second reason for documenting your work is to provide experience for the future: be it in industrial <br />
development, or research, or another setting. You will need to produce documentation and reports in almost <br />
all careers, and the final year project provides you with an opportunity to experience this in a guided and <br />
supervised context. <br />
14
2012/2013 <br />
Note that for some projects the research will provide the basis for your software development; in other <br />
projects, your software development will provide the basis for evaluating your own theoretical developments. <br />
In either case, the research must be well performed, and the software must be developed and tested in a <br />
systematic manner. <br />
Reference technical report NUIM-‐CS-‐TR2003-‐09 for additional details of how to document your work in a <br />
structured manner. <br />
6.5 PROJECT REPORT <br />
Your final report is a critical part of your project. It defines what you have done and why you have done it. It is <br />
the chief way that your project is examined and assessed and it on the basis of the report that you will be <br />
assessed. <br />
In writing your <strong>Final</strong> Report, you will need to decide on its content and on its structure. We will look at both of <br />
these aspects in turn, beginning with the content. We will conclude with a few guidelines on good writing <br />
practice. <br />
6.5.1 CONTENT OF THE REPORT <br />
Clearly, the content of the report is going to vary from project to project and it is difficult to make any strict <br />
recommendations. However, we can make a few general observations about the content of your report. A <br />
computer science project is an exercise in the well-‐judged application of knowledge in the solution of some <br />
problem. Your final year project provides you with an opportunity to demonstrate your ability to use your <br />
judgement. This means that you must show your skill at: Assimilating, Synthesising, and Critically Appraising <br />
all material relevant to the computer science project. <br />
Your main opportunity to display your talents at assimilation and synthesis comes when you write the project <br />
report. Needless to say, synthesis means that you must write the text yourself, expressing your understanding <br />
of the material in your own words. <br />
There is a strict page limit on your final year project, so you must determine the most significant information <br />
that needs to be included in your project. You need an appropriate balance between the different facets of <br />
your project to give your readers (and markers) a clear picture of what you have achieved and how you <br />
achieved it. <br />
Resist the temptation, no matter how strong, to copy sentences or paragraphs (or whole sections) from other <br />
books or articles. Copying is not synthesis and it demonstrates neither your assimilation of material nor your <br />
understanding of it. If you do come across a sentence or paragraph which is so good that is just has to be used, <br />
then do so and include it as a direct quotation, providing a proper reference to the original source. Presenting <br />
the work of others as your own work will not be tolerated. In particular, copying material from the web and <br />
presenting it as your own work is expressly forbidden. Offenders will be penalised. <br />
It is extremely important that you also appraise, or assess, your own work critically, i.e. with objectivity and <br />
with a view to seeing how it could be improved. Such honest criticism does not mean you will receive fewer <br />
marks; in fact, it is likely that you will receive more. Typically, you exercise your talents of critical appraisal at <br />
the end of the report in a discussion chapter but you can also exercise it throughout the report wherever it <br />
seems appropriate. Note that this exercise of critical appraisal is different from the testing processes of <br />
verification, validation, and evaluation, which refer to the functionality of the system you have designed. The <br />
critique you write applies less to the system and more to the overall objectives, methodologies, findings and <br />
ultimate outcome of the project. <br />
15
2012/2013 <br />
6.5.2 STRUCTURE OF THE REPORT <br />
The structure of your report is critical to the impact you make in your writing. Remember that you are trying to <br />
convey a message to the reader and, since this message is likely to be quite complicated, you must assist him <br />
or her by making your points clearly and in a logical order. Think of it as telling an exciting story: you want to <br />
tell enough early on to attract the reader’s interest but not too much otherwise he will become confused. You <br />
want to build up to a climax, incrementally revealing more and more of your message, but doing so in a way <br />
which builds on what you have already said. This is what we mean by a logical structure: breaking up the ‘story’ <br />
into a sequence of messages which follow naturally one from the other and which lead to an interesting <br />
conclusion (i.e. a conclusion you couldn’t have guessed from reading page 1). A clear structure will help you <br />
avoid repeating (or contradicting) yourself. Structure also makes sure that the reader knows what part the <br />
current information plays in the overall thesis. <br />
You should design your own report to the level of detail given in the proposed structure, adapting it to your <br />
own particular needs. Note that you should do this before you start writing anything. It’s just like designing a <br />
piece of software: the sooner you start coding, the longer it will take (and the more likely it is to be wrong). Try <br />
to achieve modularity and independence amongst your chapters and sections. At the same time, remember <br />
you are trying to convey a convincing message to the reader. Again, it’s like telling a good story: you have to <br />
keep the reader interested and he has to be able to follow the story-‐line (which means there has to be one: <br />
make sure there is). Keep the thread of the story going continuously, from section to section, and from chapter <br />
to chapter by providing link sentences or paragraphs: at the end of a chapter, for example, remind the reader <br />
of the important messages, tell him why they are important, and then say what you need to look at next, and <br />
why, in order to continue with the story. That’s your cue for the next chapter. A typical outline of a final year <br />
project report is provided in the following pages. <br />
A typical report would consist of a front page and declaration, an abstract, a table of contents, and the <br />
following chapters: <br />
• Introduction <br />
• <strong>Project</strong> Planning <br />
• Background and Problem Statement <br />
• Solution <br />
• Software Implementation <br />
• Experiments and Results <br />
• Conclusions <br />
Followed by a References section. <br />
Details of the size of your report etc. are given in Appendix A. Detailed examples of report layouts are given in <br />
Appendices E and F. <br />
Note that copyright of the projects rests with the University as do all intellectual property rights associated <br />
with the project. In essence, this means that the report is confidential to the University and may not be copied, <br />
published, or otherwise disseminated without the prior written permission of the University. <br />
16
2012/2013 <br />
6.6 PROJECT PRESENTATION <br />
Your final presentation should consist of five slides – suggested titles are: <br />
• Introduction <br />
o Give a very brief description of your project goals. <br />
o Describe the motivation for your project. <br />
• Background <br />
o Describe the background to your work. <br />
o Identify previous work your based your work on. <br />
o Show you understand the “context” of your work. <br />
• The Problem <br />
o Describe the problem. <br />
o Include technical details. <br />
• The Solution <br />
o Describe the solution(s) you developed and/or evaluated. <br />
o Include technical details. <br />
o Identify any threats to the validity of the solution. <br />
• Evaluation <br />
o Summarise how you evaluated the solution. <br />
o Summarise the results of your evaluation of the solution. <br />
o Evaluate how well you executed your project -‐ for example: <br />
§ how well you understood new knowledge <br />
§ how well you learned to use new tools <br />
§ how well you evaluated the solution <br />
7. ASSESSMENT OF YOUR PROJECT <br />
Your project is assessed on the deliverables using the criteria shown below. <br />
7.1 PROJECT DELIVERABLES <br />
You will be marked on the following project deliverables: <br />
1. <strong>Final</strong> <strong>Year</strong> <strong>Project</strong> Report <br />
2. Attachments <br />
2.1. Source code <br />
2.2. Full details of any models developed <br />
2.3. All project planning documents and records <br />
2.4. Full details of your software testing (verification and validation), including test cases etc. <br />
2.5. Full details of your experiments (metrics, experimental setup, experiments, data, results, analysis) <br />
2.6. Copies of your presentations <br />
3. Supporting Material <br />
3.1. Executable files <br />
3.2. Spreadsheets <br />
3.3. Data files <br />
3.4. Databases <br />
3.5. etc. <br />
4. <strong>Project</strong> Presentations (interim and final) <br />
5. <strong>Project</strong> Demonstration <br />
17
2012/2013 <br />
7.2 ASSESSMENT CRITERIA <br />
Your project will be assessed on your demonstration of the following: <br />
Category <br />
Knowledge & Understanding <br />
Nominal <br />
Weighting <br />
18% <br />
Note <br />
Analysis <br />
18% <br />
Application <br />
18% <br />
Must add to 90% <br />
Synthesis <br />
18% <br />
Evaluation <br />
18% <br />
Presentations 10% Always 10% <br />
The relative weight of each of the first 5 categories is tailored by your supervisor to match your project. <br />
See Appendix M for details. <br />
7.3 ADDITIONAL INFORMATION <br />
In special cases, the External Examiner may ask to interview students on the final year project. <br />
18
2012/2013 <br />
APPENDIX A: GENERAL PROJECT INFORMATION <br />
DEADLINES <br />
Deliverable <br />
Submit your project acceptance form <br />
Deliver your interim presentation <br />
Deliver progress reports: monthly <br />
Submit your final report to Moodle <br />
Deliver your final presentation <br />
Demonstrate your work <br />
Provisional Dates <br />
October 1st, 2012 <br />
TBD <br />
Monthly: Oct 19th, Nov 23rd, Dec 21st <br />
March 22 nd 2013 <br />
April 2-‐3, 2013 <br />
April 10th 2012 <br />
The marks awarded for reports submitted after the deadline will be reduced by 2% for every day (or any part of <br />
a day) that they are late -‐ up to a maximum of 14% deduction for projects 7 days overdue. <strong>Project</strong>s will not be <br />
accepted later than one week past the deadline. <br />
REPORT LENGTH <br />
• Your final report, in PDF format, must not exceed either 40 pages or 12,000 words. <br />
• The report page layout should be A4, using 12 Point Time New Roman, 1.5 line spacing, and leaving <br />
left and right margins of approximately 25mm. You can use Word, Latex, or any other suitable tool to <br />
prepare your report: consult with your supervisor first. <br />
• This total includes everything in the report: the front page, table of contents, contents, index, figures, <br />
references, etc. <br />
• Attachments (source code, models, planning documents and records, software testing details and <br />
results, experiment details and results, etc. in PDF format) do not contribute to this page count. <br />
• Overdue, oversized or otherwise unsatisfactory reports will be penalised (by up to 20%). <br />
HOW TO SUBMIT YOUR REPORT <br />
Completed final year project reports must be uploaded to Moodle (use module CS440 for all courses). You <br />
must submit two files: <br />
1. The Report, as a PDF file. <br />
2. The Attachments and Supporting Material, including your source code, as a single ZIP file: <br />
a. This file may only contain only two folders at the top level “\attachments“ and “\supporting”. <br />
b. Every file in /attachments must be in PDF format, with no sub-‐folders. The contents are as <br />
described above for “Attachments”. <br />
c. You may use sub-‐folders in /supporting, and include any file type as required. You must <br />
include a file README.TXT describing the folder contents in detail, how to run any binary <br />
programs included, etc. Note that if you use non-‐standard file types, or required special <br />
software tools to use these files, they may not be assessed. <br />
In addition, you must also submit your project log-‐book to your supervisor. <br />
FINAL YEAR PROJECT CO-‐ORDINATOR <br />
q<br />
Prof. Ronan Reilly, Callan room 2.23 <br />
19
2012/2013 <br />
APPENDIX B: WHAT IS RESEARCH <br />
The book “Practical Research: Planning and Design” by Paul Leedy lists eight characteristics of research: <br />
1. Research originates with a question or a problem. <br />
2. Research requires a clear articulation of a goal. <br />
3. Research follows a specific plan of procedure. <br />
4. Research usually divides the principal problem into more manageable sub-‐problems. <br />
5. Research is guided by the specific research problem, question, or hypothesis. <br />
6. Research accepts certain critical assumptions. These assumptions are underlying theories or ideas <br />
about how the world works. <br />
7. Research requires the collection and interpretation of data in attempting to resolve the problem that <br />
initiated the research. <br />
8. Research is, by its nature, cyclical; that is, it requires multiple passes in order to find the best solution. <br />
This should set the ‘context’ for your project. It should provide a summary of technical aspects of your project, <br />
and also provide a review of relevant research in the area. Make good use of proper references to cite the <br />
papers, books, and other material you have read. Your literature review should show that you understand the <br />
area that your project work will be in, both from a technical viewpoint, and from a viewpoint of relevant <br />
research in the area. If you undertake any theoretical developments as part of your research, these may derive <br />
from your literature review or may originate from a distinct requirements elicitation process. <br />
In <strong>Computer</strong> <strong>Science</strong> publications, a citation will normally take the form of a number in square brackets, such <br />
as [1]. An alternative form is to use author’s name and a year in square brackets, such as [Brown 2010]. In your <br />
references, you must have a list of these, and then the full details for each so that the reader can look it up – <br />
you must include the publication title, author, year and publisher. Note that just a URL is not acceptable as the <br />
only content. <br />
Book: Author(s). Book title. Location: Publishing company, year, pp. <br />
Example: W.K. Chen. Linear Networks and Systems. Belmont, CA: Wadsworth, 1993, pp. 123-‐35. <br />
Article in a Journal: Author(s). “Article title”. Journal title, vol., pp, date. <br />
Example: G. Pevere. “Infrared Nation.” The International Journal of Infrared Design, vol. 33, pp. 56-‐99, Jan. <br />
1979. <br />
Articles from Conference Proceedings (published): Author(s). “Article title.” Conference proceedings, year, pp. <br />
Example: D.B. Payne and H.G. Gunhold. “Digital sundials and broadband technology,” in Proc. IOOC-‐ECOC, <br />
1986, pp. 557-‐998. <br />
Electronic Journal: Author. (year, month). “Article title.” Journal title. [Type of medium]. Vol. (issue), pages. <br />
Available: site/path/file [date accessed]. <br />
Example: A. Paul. (1987, Oct.). “Electrical properties of flying machines.” Flying Machines. [On-‐line]. 38(1), pp. <br />
778-‐998. Available: www.flyingmachjourn/properties/fly.edu [Dec. 1, 2003]. <br />
World Wide Web: Author(s)*. “Title.” Internet: complete URL, date updated* [date accessed]. <br />
Example: M. Duncan. “Engineering Concepts on Ice. Internet: www.iceengg.edu/staff.html, Oct. 25, 2000 [Nov. <br />
29, 2003]. <br />
20
2012/2013 <br />
APPENDIX C: A VERY SHORT GUIDE TO GOOD WRITING† <br />
q<br />
Use short sentences and make sure the sentences are complete. <br />
A complete sentence usually has a subject followed by a verb and an object. For example:<br />
“The compiler identified two syntax errors.” We can add other words to enhance the<br />
descriptiveness and richness of the sentence: “The C++ compiler identified two subtle<br />
syntax errors but, unfortunately, it was unable to find the semantic errors in my program.”<br />
If you remove all ancillary words, you should be left with a valid sentence; if not, then you <br />
haven’t written the sentence correctly. It’s a good idea to check all your sentences this way. <br />
q<br />
q<br />
q<br />
q<br />
q<br />
q<br />
q<br />
q<br />
q<br />
Good writing strikes a balance between short sentences and longer ones. Just as in speaking, the <br />
full stops mean pauses: too many pauses and the text sounds disconnected, too few and it can <br />
be hard to follow the story line. Strike a balance: favour brevity over complexity. <br />
Use pictures and diagrams, with a self-‐contained explanatory caption for each. Never refer to a <br />
picture or diagram in the main text without saying what it is. For example, never say “Figure 2.3 <br />
shows the results of the noise test” and then carry on to another topic. Help the reader. <br />
Summarise the content of the figure in a short sentence: “Figure 2.3 shows the results of the <br />
noise test which demonstrate the robustness of the system to Gaussian noise with a standard <br />
deviation of 2.3 or less.” If you have copied the figure you must cite the source. <br />
Make the paragraph your unit of construction. Each paragraph should contain sentences about a <br />
given subject. If the subject changes, start a new paragraph. <br />
Omit unnecessary words – they distract the reader. Don’t write: “This is a system the <br />
performance of which is very useful”. Instead, write: “This is a useful system”. <br />
Write in a way that comes naturally. Speak the sentence. If it sounds correct, trust your ear and <br />
use the sentence. If it sounds unnatural, rewrite it. <br />
Be clear in your expression. If the idea you are trying to convey is getting lost in a sea of words <br />
and phrases, draw a line through the sentence and start again. Avoid unusual words, unless they <br />
have a specific meaning that is important to your sentence. <br />
Don’t take short-‐cuts. Explain what you mean. Don’t leave the reader to struggle trying to figure <br />
out what the real meaning is of a complex sentence; he may conclude there is none. Explain all <br />
acronyms the first time you use them. <br />
Revise and rewrite. It is unlikely that you will manage to find the best way of expressing an idea <br />
with your first attempt. Be prepared to revise it, again and again. <br />
<strong>Final</strong>ly, if you want to learn how to write a good report, you need to do two things: you need to <br />
read other good reports and you need to practise your own writing. <br />
† Adapted from “The Elements of Style” by W. Strunk & E.B. White, Macmillan 1979. <br />
21
2012/2013 <br />
APPENDIX D: GIVING PRESENTATIONS <br />
You should have learned something about presentation skills during your time in the University.<br />
Nonetheless, a few pointers may help you give a professional and impressive presentation.<br />
q<br />
q<br />
q<br />
q<br />
q<br />
q<br />
q<br />
q<br />
q<br />
q<br />
q<br />
Don’t depend too much on PowerPoint slides: your speech is the presentation and the slides <br />
support you (not the other way around). Do NOT just read the text from slides – it is very boring <br />
for the audience. Use slides to show other aspects of your research (for example, diagrams, <br />
animations, screen-‐shots, photographs, diagrams, etc.). These make a presentation more <br />
interesting. <br />
Take your time: pause frequently. Sometimes, the best thing to say is nothing. Short one-‐second <br />
rests create dramatic impact and also give your audience time to assimilate what you’ve said. Of <br />
course, you also have to maintain continuity and flow; otherwise people forget what you are <br />
talking about. It’s a question of balance. <br />
Use a microphone (and practice using it before your presentation). <br />
Arrive early and make sure you know where all the equipment is. Know how to use it. <br />
Copy your presentation onto the machine before your session. <br />
Look at the audience, not at your slides. <br />
<strong>Project</strong> your voice (but don’t shout). <br />
Smile: enjoy giving your presentation. <br />
Be confident: you’ve done some great work – here is your opportunity to get credit for it. <br />
The people in the audience are on your side (though sometimes they disguise it well!) They want <br />
you to succeed. If they ask you a question you don’t understand, say so and ask their help. Ask <br />
them to explain, and ask nicely. If you still don’t understand, don’t bluff. Admit your ignorance <br />
and suggest ways of how you will overcome that lack of knowledge. <br />
Nobody knows everything; but that’s no excuse for not trying to know everything. A <br />
knowledgeable person knows enough to do his job well, a wise person knows that he doesn’t <br />
know everything, and an intelligent person knows how to find out what he doesn’t know. Be <br />
knowledgeable, wise, and intelligent: be a computer scientist. <br />
22
2012/2013 <br />
APPENDIX E: TYPICAL STRUCTURE OF A FINAL YEAR DEVELOPMENT PROJECT REPORT <br />
Note: text in bold you may keep as headings. Text in italics is guidelines that you must replace. <br />
Title Page <br />
This page should be formatted as shown in APPENDIX: TITLE PAGE <br />
Declaration <br />
This page should be formatted as shown in APPENDIX: DECLARATION <br />
Abstract <br />
q<br />
q<br />
Use approximately 300 words to summarise the subject matter of the report, the problem being <br />
solved, the motivation for solving it, the approach taken, your findings and conclusions. <br />
Complete the abstract after you have completed the rest of the report. It normally takes several <br />
revisions to achieve a good abstract. <br />
Acknowledgements <br />
q<br />
You may acknowledge help from friends and colleagues, from your supervisor, staff, department and <br />
university, and from your parents and family. <br />
Table of Contents <br />
q<br />
List the Chapters and top-‐level Sections, giving the page numbers. Generate this automatically, not by <br />
hand. <br />
Chapter 1 Introduction <br />
Every chapter should start with an introductory paragraph to summarise the content. This tells the<br />
reader both how this chapter follows on from previous chapters, and what to expect in the chapter. Do<br />
not just repeat the table of contents for the chapter!<br />
1.1 Goals<br />
State what was to be achieved in the project<br />
1.2 Motivation<br />
Describe why the problem is worth solving<br />
1.3 Method<br />
Summarise how was the project was carried out<br />
1.4 Overview<br />
Give a brief summary of the technical area<br />
1.5 Report Overview<br />
Summarise what material you will cover and how is it arranged<br />
Chapter 2 Background and Problem Statement <br />
Introductory paragraph<br />
2.1 Introduction<br />
In your own words, provide a description of the problem domain<br />
2.2 Literature Review<br />
Present the ‘state-of-the-art’ of product/systems in this area. You should organise this in some<br />
other way than by company or by date in order to show your understanding!<br />
2.3 Problem Statement<br />
Clearly state the problem that you are attempting to solve in your project<br />
23
2012/2013 <br />
Chapter 3 <strong>Project</strong> Management <br />
Introductory paragraph<br />
3.1 Approach<br />
Discuss how you planned the project, and why you planned it the way you did<br />
3.2 Initial <strong>Project</strong> Plan<br />
Show your initial project plan in the form of a Gantt Chart and a brief description, showing<br />
planned dates. If your task names are not self-explanatory, provide a table to explain the<br />
tasks.<br />
3.3 Problems and Changes to the Plan<br />
Identify problems you faced that caused you to change the plan, and justify the changes.<br />
3.4 <strong>Final</strong> <strong>Project</strong> Record<br />
Show your final project plan in the form of a Gantt Chart and a brief description, showing<br />
actual dates.<br />
You should include your full project plan, all intermediate plans, and status reports (see <strong>Project</strong> Plan)<br />
in an appendix.<br />
Chapter 4 Analysis <br />
Introductory Paragraph – this is where you describe and analyse the problem in detail<br />
4.1 Problem Modelling<br />
Breakdown the problem into the different “user tasks” that the “user” needs to perform in<br />
order to “solve” their problem. Summarise the tasks here, perhaps describing a few key ones<br />
in more detail, and identifying the inputs and outputs for each. You might find it useful to<br />
include a summary “User Case” diagram.<br />
4.2 Non-Functional Requirements<br />
Summarise any requirements that the user has for security, reliability, maintainability,<br />
portability, performance etc.<br />
Include full analysis details (see User Requirements Specification), with Use Case Diagrams, State<br />
Machines, and Activity Diagrams in the Appendix. <br />
Chapter 5 Product/System Design <br />
Introductory paragraph – this is where you describe your solution to the problem<br />
5.1 Introduction<br />
Discuss how you designed the software, identify different design options, and justify why you<br />
picked the one used<br />
6.2 Product Features<br />
Identify and summarise the key product features. For a GUI these are the main commands that<br />
the user can give. For a networked system, these are the main protocol messages accepted.<br />
For an embedded system these are the main external events that the system must respond to<br />
6.3 User Interface<br />
For each product feature, state what each user interface component must do (state the inputs,<br />
actions, and outputs). Include a detailed design for each screen in the Appendix.<br />
6.4 Interfaces to External Hardware and Software<br />
For each product feature, identify the key inputs, actions, and outputs to each important item<br />
of external hardware or software. Include a detailed design in the Appendix.<br />
6.5 Non-Functional Requirements<br />
Summarise requirements on your product/system for security, reliability, maintainability,<br />
portability, performance etc. You should review your software design against these<br />
requirements.<br />
6.6 Data Storage<br />
Summarise what data must be placed in persistent store within the product/system, and what<br />
relationships must be maintained.<br />
24
2012/2013 <br />
6.7 Design Verification<br />
Summarise how your product/system design satisfies the user requirements. One way is to<br />
“walk through” a few key user tasks, using Sequence Diagrams to show how the combination<br />
of features allows the user to achieve the task.<br />
Include full design details (see Product Design Document) in the Appendix. <br />
Chapter 6 Software Design <br />
Introductory paragraph<br />
6.1 Introduction<br />
Discuss how you designed the software, identify different design options, and justify why you<br />
picked the one used<br />
6.2 High Level Design<br />
Summarise the top level objects and their relationships (e.g. UML Class Diagrams)<br />
6.3 Detailed Design<br />
Summarise the object contents (e.g. Javadoc specifications for Methods and Attributes)<br />
6.4 Design Verification<br />
Summarise how your design satisfies the product/system design requirements. One way is to<br />
“walk through” a few key product features, showing how the combination of classes allows<br />
the feature to be supported.<br />
Include full design details (see Software Design Specification) in the Appendix.<br />
Chapter 7 Implementation <br />
Introductory paragraph<br />
7.1 Introduction<br />
Discuss your choice of language, tools and platform.<br />
7.2 Coding<br />
Where not obvious, discuss how you translated the detailed design into code (for example:<br />
how you decide to code association classes and two-way associations).<br />
7.3 Verification<br />
Summarise how you tested the code (unit test and system test). Discuss the techniques you<br />
used to select test cases and test data. Summarise the test results, showing that the software<br />
satisfied the detailed design, and that the product/system satisfies the product/system design.<br />
7.4 Validation<br />
Summarise how you showed that the solution satisfies the user requirements. This normally<br />
consists of manual execution of each user task.<br />
Include full source code and testing details (see Software Testing Document and Software Product<br />
Validation) in the Appendix.<br />
Chapter 8 Evaluation <br />
Introductory paragraph<br />
8.1 Metrics<br />
Identify and describe the metrics you used to evaluate your software.<br />
8.2 Experimental Setup<br />
Describe the experimental setup for each metric, and how you obtained the measurements.<br />
8.3 The Experiments<br />
Describe the inputs for each experiment<br />
8.4 Results<br />
Summarise the output data, and the statistical or other techniques to deduce your results.<br />
Summarise your results, including tables or graphs as appropriate with a brief description of<br />
each. Where possible, compare your results with other products/systems.<br />
8.5 Validity<br />
25
2012/2013 <br />
Identify any possible threats to the validity of your results, and discuss each.<br />
Include detailed data and results in the Appendix.<br />
Chapter 9 Discussion and Conclusion <br />
References<br />
Introductory paragraph<br />
9.1 Solution Review<br />
Discuss how well your solution solves the problem, based on your results from Chapter 8.<br />
9.2 <strong>Project</strong> Review<br />
Discuss how well you addressed the project, and what you might do differently if you were to<br />
do it again. In particular, make sure to identify how you handled any problems that arose<br />
during the project.<br />
9.3 Key Skills<br />
Identify key skills that you learnt during the project, and clearly describe how you applied<br />
these, and how you might apply them differently if you were to do a similar project.<br />
9.3 Future Work<br />
Discuss any proposals for completion of the project, or for enhancements, or for re-design of<br />
your solution or software.<br />
9.4 Conclusion<br />
Summarise the project and your solution in one or two paragraphs.<br />
Include a list of references cited in the report here. Either use the [numbered] or [name’date] convention.<br />
Appendices (in a ZIP file)<br />
q Source Code (including all scripts, makefiles, XML, HTML, etc.) <br />
q If possible, include a compiled executable with running instructions <br />
q Reading reports <br />
q Interim Progress Reports <br />
q <strong>Project</strong> Plan Document <br />
q User Requirement Document (Development <strong>Project</strong>) or Theoretical Development (Research <strong>Project</strong>) <br />
q Product/System Design Document <br />
q Software High-‐Level Design <br />
q Detailed Software Designs (for example, if using Java, include the Javadoc output files here) <br />
q Software Test Documents (tests & test results) <br />
q Software Evaluation Results <br />
q Any additional outputs that you created during the project <br />
This is an outline report structure. Many projects will vary from this. Consult with your project supervisor to <br />
create the most appropriate structure for your report! <br />
26
2012/2013 <br />
APPENDIX F: TYPICAL STRUCTURE OF A FINAL YEAR RESEARCH PROJECT REPORT <br />
Note: text in bold you may keep as headings. Text in italics is guidelines that you must replace. <br />
Title Page <br />
This page should be formatted as shown in APPENDIX: TITLE PAGE <br />
Declaration <br />
This page should be formatted as shown in APPENDIX: DECLARATION <br />
Abstract <br />
q<br />
q<br />
Use approximately 300 words to summarise the subject matter of the report, the problem being <br />
solved, the motivation for solving it, the approach taken, your findings and conclusions. Clearly identify <br />
any original contributions your work has made to the field. <br />
Complete the abstract after you have completed the rest of the report. It normally takes several <br />
revisions to achieve a good abstract. <br />
Acknowledgements <br />
q<br />
You may acknowledge help from friends and colleagues, from your supervisor, staff, department and <br />
university, and from your parents and family. <br />
Table of Contents <br />
q<br />
List the Chapters and top-‐level Sections, giving the page numbers. Generate this automatically, not by <br />
hand. <br />
Chapter 1 Introduction <br />
Every chapter should start with an introductory paragraph to summarise the content. This tells the<br />
reader both how this chapter follows on from previous chapters, and what to expect in the chapter. Do<br />
not just repeat the table of contents for the chapter!<br />
1.1 Goals<br />
State what was to be achieved in the project<br />
1.2 Motivation<br />
Describe why the problem is worth solving<br />
1.3 Method<br />
Summarise how was the project was carried out<br />
1.4 Overview<br />
Give a brief summary of the technical area<br />
1.5 Report Overview<br />
Summarise what material you will cover and how is it arranged<br />
Chapter 2 Background and Problem Statement <br />
Introductory paragraph<br />
2.1 Introduction<br />
In your own words, provide a description of the problem domain<br />
2.2 Literature Review<br />
Present the ‘state-of-the-art’ of research in this area. You should organise this in some other<br />
way than by author or by date in order to show your understanding!<br />
2.3 Problem Statement<br />
27
2012/2013 <br />
Chapter 3 <strong>Project</strong> Management <br />
Clearly state the problem that you are attempting to solve in your project<br />
Introductory paragraph<br />
3.1 Approach<br />
Discuss how you planned the project, and why you planned it the way you did<br />
3.2 Initial <strong>Project</strong> Plan<br />
Show your initial project plan in the form of a Gantt Chart and a brief description, showing<br />
planned dates. If your task names are not self-explanatory, provide a table to explain the<br />
tasks.<br />
3.3 Problems and Changes to the Plan<br />
Identify problems you faced that caused you to change the plan, and justify the changes.<br />
3.4 <strong>Final</strong> <strong>Project</strong> Record<br />
Show your final project plan in the form of a Gantt Chart and a brief description, showing<br />
actual dates.<br />
You should include your full project plan, all intermediate plans, and status reports (see <strong>Project</strong> Plan)<br />
in an appendix.<br />
Chapter 4 Analysis and Solution <br />
Introductory Paragraph – this is where you describe and analyse the problem in detail<br />
4.1 Problem Modelling<br />
This is the foundation of all science: the creation of a rigorous – usually mathematical –<br />
description of the real physical problem to be addressed. For example, if your problem<br />
concerned with packet routing, you might represent it using a graph and deploy formal graph<br />
theoretic tools for its analysis; if your problem is concerned with signal analysis, you might<br />
choose a Fourier representation or an Eigen-vector representation and deploy the appropriate<br />
theorems in Fourier analysis or linear system theory. If your problem is to do with building a<br />
database, you will probably model the problem with an entity-relationship diagram. Your<br />
model should identify the inputs that your solution should accept, and the outputs that it<br />
should produce.<br />
4.2 Solution<br />
This is the most critical section of your report. Describe your solution, identifying different<br />
options and their pros and cons. Show, preferably mathematically, how your solution solves<br />
the problem. Provide a model of your solution that clearly identifies the computation required<br />
to produce the outputs from the inputs.<br />
If you need extra space, then include full analysis details in the Appendix. <br />
Chapter 5 Product/System Design <br />
Introductory paragraph – this is where you describe the realisation of your solution to the problem<br />
5.1 Introduction<br />
Discuss how you designed the software, identify different design options, and justify why you<br />
picked the one used<br />
6.2 Product Features<br />
Identify and summarise the key product features. For a GUI these are the main commands that<br />
the user can give. For a networked system, these are the main protocol messages accepted.<br />
For an embedded system these are the main external events that the system must respond to<br />
6.3 User Interface<br />
For each product feature, state what each user interface component must do (state the inputs,<br />
actions, and outputs). Include a detailed design for each screen in the Appendix.<br />
6.4 Interfaces to External Hardware and Software<br />
28
2012/2013 <br />
For each product feature, identify the key inputs, actions, and outputs to each important item<br />
of external hardware or software. Include a detailed design in the Appendix.<br />
6.5 Non-Functional Requirements<br />
Summarise requirements on your product/system for security, reliability, maintainability,<br />
portability, performance etc. You should review your software design against these<br />
requirements.<br />
6.6 Data Storage<br />
Summarise what data must be placed in persistent store within the product/system, and what<br />
relationships must be maintained.<br />
6.7 Design Verification<br />
Summarise how your product/system design implements your solution. One way is to “walk<br />
through” different applications of the solution, using Sequence Diagrams to show how the<br />
combination of features allows the product/system to produce the correct output.<br />
Include full design details (see Product Design Document) in the Appendix. <br />
Chapter 6 Software Design <br />
Introductory paragraph<br />
6.1 Introduction<br />
Discuss how you designed the software, identify different design options, and justify why you<br />
picked the one used<br />
6.2 High Level Design<br />
Summarise the top level objects and their relationships (e.g. UML Class Diagrams)<br />
6.3 Detailed Design<br />
Summarise the object contents (e.g. Javadoc specifications for Methods and Attributes)<br />
6.4 Design Verification<br />
Summarise how your design satisfies the product/system design requirements. One way is to<br />
“walk through” a few key product features, showing how the combination of classes allows<br />
the feature to be supported.<br />
Include full design details (see Software Design Specification) in the Appendix.<br />
Chapter 7 Implementation <br />
Introductory paragraph<br />
7.1 Introduction<br />
Discuss your choice of language, tools and platform.<br />
7.2 Coding<br />
Where not obvious, discuss how you translated the detailed design into code (for example:<br />
how you decide to code association classes and two-way associations).<br />
7.3 Verification<br />
Summarise how you tested the code (unit test and system test). Discuss the techniques you<br />
used to select test cases and test data. Summarise the test results, showing that the software<br />
satisfied the detailed design, and that the product/system satisfies the product/system design.<br />
7.4 Validation<br />
Summarise how you showed that the solution satisfies the user requirements. This normally<br />
consists of manual execution of each user task.<br />
Include full source code and testing details (see Software Testing Document and Software Product<br />
Validation) in the Appendix.<br />
Chapter 8 Evaluation <br />
Introductory paragraph<br />
8.6 Metrics<br />
Identify and describe the metrics you used to evaluate your software.<br />
29
2012/2013 <br />
8.7 Experimental Setup<br />
Describe the experimental setup for each metric, and how you obtained the measurements.<br />
8.8 The Experiments<br />
Describe the inputs for each experiment<br />
8.9 Results<br />
Summarise the output data, and the statistical or other techniques to deduce your results.<br />
Summarise your results, including tables or graphs as appropriate with a brief description of<br />
each. Where possible, compare your results with other products/systems.<br />
8.10 Validity<br />
Identify any possible threats to the validity of your results, and discuss each. Make sure to<br />
explicitly cover the threat to validity that would be introduced if you software did not actually<br />
implement your solution correctly.<br />
Include detailed data and results in the Appendix.<br />
Chapter 9 Discussion and Conclusion <br />
References<br />
Introductory paragraph<br />
9.1 Solution Review<br />
Discuss how well your solution solves the problem, based on your results from Chapter 8.<br />
9.2 <strong>Project</strong> Review<br />
Discuss how well you addressed the project, and what you might do differently if you were to<br />
do it again. In particular, make sure to identify how you handled any problems that arose<br />
during the project.<br />
9.3 Key Skills<br />
Identify key skills that you learnt during the project, and clearly describe how you applied<br />
these, and how you might apply them differently if you were to do a similar project.<br />
9.3 Future Work<br />
Discuss any proposals for completion of the project, or for enhancements, or for re-design of<br />
your solution or software.<br />
9.4 Conclusion<br />
Summarise the project and your solution in one or two paragraphs.<br />
Include a list of references cited in the report here. Either use the [numbered] or [name’date] convention.<br />
Appendices (in a ZIP file)<br />
q Source Code (including all scripts, makefiles, XML, HTML, etc.) <br />
q If possible, include a compiled executable with running instructions <br />
q Reading reports <br />
q Interim Progress Reports <br />
q <strong>Project</strong> Plan Document <br />
q User Requirement Document (Development <strong>Project</strong>) or Theoretical Development (Research <strong>Project</strong>) <br />
q Product/System Design Document <br />
q Software High-‐Level Design <br />
q Detailed Software Designs (for example, if using Java, include the Javadoc output files here) <br />
q Software Test Documents (tests & test results) <br />
q Software Evaluation Results <br />
q Any additional outputs that you created during the project <br />
This is an outline report structure. Many projects will vary from this. Consult with your project supervisor to <br />
create the most appropriate structure for your report! <br />
30
2012/2013 <br />
APPENDIX G: TITLE PAGE AND DECLARATION <br />
<strong>Project</strong> Title <br />
Optional Subtitle <br />
Full Name <br />
<strong>Final</strong> <strong>Year</strong> <strong>Project</strong> -‐ 2012 <br />
B.Sc. Single/Double Honours in <br />
<strong>Computer</strong> <strong>Science</strong>/<strong>Computer</strong> <strong>Science</strong> and Software Engineering <br />
(delete where not applicable) <br />
Department of <strong>Computer</strong> <strong>Science</strong> <br />
<strong>National</strong> University of Ireland, Maynooth <br />
Co. Kildare <br />
Ireland <br />
A thesis submitted in partial fulfilment of the requirements for the B.Sc. Single/Double Honours in <strong>Computer</strong> <br />
<strong>Science</strong>/<strong>Computer</strong> <strong>Science</strong> and Software Engineering. <br />
Supervisor: Dr. A.N. Other <br />
31
2012/2013 <br />
Declaration <br />
I hereby certify that this material, which I now submit for assessment on the program of <br />
study leading to the award of B.Sc. Single/Double Honours in <strong>Computer</strong> <strong>Science</strong>/<strong>Computer</strong> <br />
<strong>Science</strong> and Software Engineering, is entirely my own work and has not been taken from the <br />
work of others -‐ save and to the extent that such work has been cited and acknowledged <br />
within the text of my work. <br />
Signed: _________________________________ <br />
Date: _________________ <br />
32
2012/2013 <br />
APPENDIX H: PROJECT PLANNING <br />
<strong>Project</strong>s are complex and require careful thought and analysis to identify manageable tasks. Each unit of work <br />
in a project is called a task. A large task may be divided into sub-‐tasks. If necessary, sub-‐tasks may in turn be <br />
broken into sub-‐sub-‐tasks. <br />
G.1 TASKS <br />
The following is a guide to identifying the tasks for a project plan <br />
q<br />
q<br />
q<br />
Identify and number all the major tasks, use the typical project major activities shown previously as a <br />
starting point <br />
Break large tasks into sub-‐tasks (as a rule of thumb, each sub-‐task should take about 1 week to complete). <br />
Give these unique numbers of the form task-‐number.sub-‐task-‐number. A task with sub-‐tasks is referred to <br />
as a “summary” task. <br />
For each task, and sub-‐task, which is NOT a summary task: <br />
Ø As discussed above, provide a unique, numerical task identifier of the form taskNumber or <br />
taskNumber.subtaskNumber or taskNumber.subtaskNumber.subsubtaskNumber. <br />
Ø Estimate how much effort you expect it to take (this is the work in hours) and over what period you <br />
will spread that effort (this is the duration in days). <br />
Ø Identify the required inputs – information, software, hardware, and, most important of all, any <br />
outputs from previous tasks in your project. <br />
Ø Identify the expected results (also called the outputs or deliverables) of the task. <br />
Ø Identify a course of action to take if the task fails for some reason (e.g. the software/hardware doesn’t <br />
arrive in time). <br />
q<br />
Now identify the order in which you should undertake the tasks. In this, you will have to consider the <br />
relationships between each task, and the use of the outputs of some tasks as inputs to others. Some tasks <br />
will overlap – often you won’t be able to complete one task until you have completed another. <br />
G.2 THE PROJECT PLAN <br />
In drawing up your project plan, you should use a standard project management tool (such as Microsoft <br />
<strong>Project</strong>, or Gantt<strong>Project</strong>. These tools make it easier to draw the schedule, make changes, and track your <br />
progress. However, they won’t do the planning for you, i.e. they can’t identify tasks, subtasks, effort, duration, <br />
etc. That’s something you have to do yourself. You should be able to make a first attempt at this by the time <br />
you’ve finished reading the handbook. <br />
Most projects can be best presented using the following two techniques: <br />
1. a table of tasks, with dates, durations, and work for each (see Fig. 1) <br />
2. a Gantt chart (see Fig. 2) <br />
You should use “summary tasks” to summarise or represent major activities. The work, duration, start-‐date <br />
and end-‐date of a summary task are calculated automatically, so don’t enter them manually! <br />
It is clearest to produce one top-‐level plan to show activities and major tasks, with only the top-‐level tasks <br />
shown, and then develop additional more detailed plans for each activity. Otherwise your Gantt chart probably <br />
33
2012/2013 <br />
wont fit on a single page. These more detailed plans will usually be drawn up once you get nearer to the <br />
activity or task in question, and have a clearer idea of exactly you will go about it. You may even need to break <br />
it into sub-‐tasks once you have clearer understanding of the work involved. <br />
Make sure to put a date and revision number on every plan you produce. <br />
Figure 1: An Example of a GANTT Chart using Microsoft <strong>Project</strong>. <br />
Task Table<br />
Activities & Tasks<br />
Start Date<br />
Duration<br />
[days]<br />
Work<br />
[days] End Date<br />
1 PREPARATION Mon,30-Sep-02 64 45 days Mon,02-Dec-02<br />
1.1 Initial reading Mon,30-Sep-02 19 15 days Fri,18-Oct-02<br />
1.2 Review the literature Mon,21-Oct-02 12 10 days Fri,01-Nov-02<br />
1.3 Exploratory programming Mon,04-Nov-02 19 15 days Fri,22-Nov-02<br />
1.4 Prepare requirements specification Mon,25-Nov-02 5 5 days Fri,29-Nov-02<br />
1.5 Update the project plan Mon,02-Dec-02 1 1 days Mon,02-Dec-02<br />
2 DEVELOPMENT Tue,03-Dec-02 60 40 days Fri,31-Jan-03<br />
2.1 Develop system design Tue,03-Dec-02 7 5 days Mon,09-Dec-02<br />
2.2 Develop basic program Tue,10-Dec-02 7 5 days Mon,16-Dec-02<br />
2.3 Add support for feature Tue,17-Dec-02 7 5 days Mon,23-Dec-02<br />
2.4 Add support for feature Tue,24-Dec-02 7 5 days Mon,30-Dec-02<br />
Christmas Break Tue,31-Dec-02 5 Fri,27-Dec-02<br />
2.5 Extend feature Mon,30-Dec-02 5 5 days Fri,03-Jan-03<br />
2.6 Add and Mon,06-Jan-03 12 10 days Fri,17-Jan-03<br />
2.7 Enhance the GUI Mon,20-Jan-03 5 5 days Fri,24-Jan-03<br />
2.8 Fix major faults Mon,27-Jan-03 5 5 days Fri,31-Jan-03<br />
3 WRITEUP Mon,03-Feb-03 26 20 days Fri,28-Feb-03<br />
3.1 Prepare project report Mon,03-Feb-03 24 18 days Wed,26-Feb-03<br />
3.2 Prepare demonstration Thu,27-Feb-03 1 1 days Thu,27-Feb-03<br />
3.3 Prepare presentation Fri,28-Feb-03 1 1 days Fri,28-Feb-03<br />
<strong>Project</strong> Summary<br />
Start Date<br />
End Date<br />
Duration<br />
Workdays<br />
Total Work Hours<br />
Work/day<br />
Mon,30-Sep-02<br />
Fri,28-Feb-03<br />
151 days<br />
105 days<br />
240 hours<br />
2.3 hours<br />
Work/week 11.4 hours<br />
<br />
Figure 2: An Example of a Task Table <br />
G.3 UPDATING THE PROJECT PLAN <br />
34
2012/2013 <br />
You will probably need to update the plan once you have fully understood the requirements and done some <br />
exploratory programming. You may need to make further updates at each stage of the project in order to plan <br />
in more detail. Modify the plan as necessary, making sure to update the version number and the version <br />
control history sections each time. do NOT delete the old Gantt charts from your plan, but rather add the new <br />
ones. <br />
Your final plan should contain two Gantt charts in the body of the document, the first one and the last one. A <br />
historical record of all the interim Gantt charts should be included as an appendix. Make sure to discuss <br />
significant changes, and the reasons for them, in your project report. <br />
Your report should include both your original timetable (best shown as a Gantt Chart), and your final project <br />
plan (which is in effect a record of when each task was actually worked on and completed). <br />
35
2012/2013 <br />
APPENDIX I: DESIGN <br />
I.1 PRODUCT DESIGN <br />
Design a “product” to encapsulate your solution. In many cases this will be an application with a GUI interface <br />
– but there are many other types of programs. Design software to realise this product. And finally code the <br />
program, and test it against the design and product specifications. <br />
The natural conclusion of requirements analysis is the system specification. This specification shows what the <br />
system will do to meet the user requirements. It says what the system will do, under what conditions, and <br />
what it will not do. In writing the specification, you should begin with the requirements document and then <br />
you should design and specify the following: <br />
1. The system functionality <br />
2. The operational parameters (conditions under which your system will operate) <br />
3. Failure modes and actions on failure <br />
4. Limitations & restrictions <br />
5. Detail the system interface (user interface, network interface, etc.) <br />
You should then validate the specification against the requirements, and you should get the explicit agreement <br />
of your supervisor that all is in order. If it isn’t, then you must go back to requirements if necessary and revise <br />
them and the specifications (with your supervisor’s agreement on everything). After this, you validate again, <br />
and you keep doing this until everyone agrees. <br />
Presenting your design results: see the “Product Design Specification” template. <br />
I.2 SOFTWARE DESIGN <br />
With your model in hand, you are now in a position to design your system using whatever design methodology <br />
is appropriate for the area (and these will inevitably be specific to the particular area). That said, there are a <br />
few general guidelines that apply to all areas: <br />
q<br />
q<br />
q<br />
q<br />
q<br />
Identify several design options and compare them <br />
Analyse your design to ensure it is technically feasible (i.e. validate its realizability). Remember, you <br />
can’t always build everything you design, either for theoretical reasons (e.g. NP-‐completeness) or for <br />
pragmatic reasons (the required hardware is not installed). <br />
Analyse your design to ensure it meets the specifications (i.e. verify that it does what is required) <br />
Choose the best design. You will have to define what ‘best’ means for your particular project. It might <br />
mean the cheapest to manufacture, it might mean the fastest, and it might mean the smallest – it all <br />
depends. It’s up to you to identify the test for optimality. <br />
Note that this is the hallmark of good computer science (and software engineering): the practice of <br />
qualitative and quantitative assessment of different options. <br />
Make use of existing Open Source software where appropriate. <br />
Presenting your design results: see the “Software Design Specification” templates. <br />
I.2.1 <br />
HIGH-‐LEVEL DESIGN <br />
For a high-‐level design you should identify the principle software components and what their relationship to <br />
each other is. You should verify your design by showing how, in principle, these components can act together <br />
to meet the software requirements specification. <br />
36
2012/2013 <br />
For example, in an object-‐oriented implementation, you would use UML Class Diagrams to identify the <br />
components and their relationships, and Sequence Diagrams to show how they work together to meet the <br />
requirements. <br />
I.2.2 <br />
DETAILED DESIGN <br />
For a detailed design, you should design the internal details of each component in the code. <br />
For example, in an object oriented implementation, you might use Javadoc to specify the attributes and <br />
methods for the Classes to meet the high-‐level design. You may, in some cases, also specify the algorithm to be <br />
used. <br />
37
2012/2013 <br />
APPENDIX J: TESTING <br />
J.1 UNIT TESTING <br />
In unit testing you execute a “unit” of code (for Object-‐Oriented code this is normally a Class), using its <br />
programming interface, and make sure that the outputs are as “expected” for the particular inputs. If you don’t <br />
do this, then your code may well work under the limited set of tests achieved by testing the entire system, but <br />
may still have many faults which may result in failure of the code. This can result in the software crashing, or <br />
even worse giving corrupt results. For both development and research projects it is therefore important to do <br />
at least a minimal level of unit test. <br />
Note that to enable unit testing your need to consider “design for testability”. The key issue for most <br />
programs is to separate your interface and functional code. This both makes your design more modular, so you <br />
could move to a different interface relatively easily, and allows you to test the functionality separately from <br />
the interface. For example, if you embed calls to the GUI in your functional code to display the results, then <br />
you cannot test the functionality. However, if the GUI code calls the functional code to get and display the <br />
results, then you can easily test the functionality separately. <br />
J.2 SYSTEM TESTING <br />
In system testing you execute the entire system, using its system, interface (i.e. the GUI, a network interface, <br />
the driver interfaces to hardware) and make sure that the outputs are as “expected” for the particular inputs. <br />
If you don’t do this, then your “units” may be operating correctly individually, but may not be working together <br />
correctly as a system. Again, this can result in the software crashing, or even worse giving corrupt results. For <br />
both development and research projects it is therefore important to do at least a minimal level of system test. <br />
Some systems, especially for development projects, will have well defined responses to input stimuli. For <br />
example, clicking on a particular button in the GUI may be required to pop up a particular window. Other <br />
system, especially for research projects, may have less well defined responses. For example, drawing a image <br />
with all the edges highlighted. For this, it is suggested that you establish some “ground truths”, or standard test <br />
data, derived from analysis to ensure that the software is actually implementing your solution before you start <br />
evaluating how well your solution works. <br />
J.3 PRODUCT VALIDATION <br />
With “forward engineering” working from problem to solution to implementation you can expect the <br />
implementation to solve the problem to a certain extent. But this is not always the case. Problems usually <br />
result from poor understanding of the original requirements, or inadequate problem analysis. Validation makes <br />
sure that the system actually solves the problem that it was intended to. Even if the system has passed system <br />
testing, that has really made sure that the system responds correctly to each individual input, rather than it <br />
actually solving the problem. <br />
For a development project, validation is the act of determining whether your software system meets the user’s <br />
needs. For example: can you actually book an airline ticket with your program. <br />
For a research project, validation is ensuring that the solution basically solves the problem. For example: is <br />
every edge in an image highlighted <br />
Validation will invariably involve manual testing, with a user inputting a series data or commands, and then <br />
examining the output to make sure it solves the problem. You will also be assessed on a validation test of your <br />
software by your supervisor and second reader. So make sure that you understand the requirements well, that <br />
the software operates correctly, and it has adequate documentation (or ease-‐of-‐use) to allow its functionality <br />
to be easily tested. <br />
38
2012/2013 <br />
APPENDIX K: SOFTWARE ENGINEERING DOCUMENTS <br />
You may document the results of your software engineering work in the following documents (see the CS353 <br />
Documentation Guidelines): <br />
1. <strong>Project</strong> Plan <br />
2. User Requirements Specification <br />
3. Product Design Specification <br />
4. Software Design Specification (High Level) <br />
5. Software Design Specification (Low Level) <br />
6. Software Testing Document <br />
7. Software Product Validation Document <br />
39
2012/2013 <br />
APPENDIX L: FINAL YEAR PROJECT PROPOSAL TEMPLATE <br />
Note: this is provided for information only. Use the latest version of the template from the website. <br />
NUIM <strong>Final</strong> <strong>Year</strong> <strong>Project</strong> <br />
PROJECT PROPOSAL <br />
Please send this form electronically to the <strong>Final</strong> <strong>Year</strong> <strong>Project</strong> Co-‐ordinator by email prior to working <br />
on your project. You MUST send this document using your Department of <strong>Computer</strong> <strong>Science</strong> or <br />
University email address – emails from outside the NUIM domain will be ignored. <br />
Student Name: <br />
Student Number: <br />
Supervisor Name: <br />
TITLE <br />
Your title should ideally pose a question that your project will investigate, or <br />
should succinctly describe the purpose of the project. <br />
OUTLINE of TOPIC <br />
and RELEVANCE to <br />
SOFTWARE <br />
ENGINEERING <br />
and/or COMPUTER <br />
SCIENCE <br />
APPROACH <br />
You should succinctly describe your topic and the relevance to Software <br />
Engineering and/or <strong>Computer</strong> <strong>Science</strong>. It is essential that you describe your <br />
proposed project in the context of your work placement (200-‐300 words <br />
maximum). You should clearly outline the Specification of Requirements for the <br />
project. <br />
You should describe your approach to your project including an overview of <br />
major activities. You should include a provisional work schedule identifying <br />
major interim deliverables (300 words maximum). You should include a Gantt <br />
(or similar) Chart detailing a timetable of work, including contingency planning. <br />
REFERENCES and <br />
RESOURCES <br />
You should provide at least two appropriate key references here (e.g. <br />
conference/journal publications, or books, or course material). Do not include a <br />
bibliography; you must specifically reference these works in the previous two <br />
sections. You are discouraged from referencing non-‐peer reviewed sources such <br />
as corporate or project websites, unless specifically appropriate. You also should <br />
detail resources required, and skills development required for the project. <br />
SECOND READER <br />
RESPONSE <br />
Leave Blank. <br />
40
2012/2013 <br />
APPENDIX M: FINAL YEAR PROJECT MARKING FORM <br />
Student Name:<br />
Title of <strong>Project</strong>:<br />
Supervisor:<br />
1st Reader<br />
2nd Reader:<br />
Section<br />
Category<br />
Valid<br />
Range<br />
Given<br />
Values<br />
Marks<br />
Awarded<br />
Grade<br />
Report,<br />
Attachments 1 ,<br />
Demonstration<br />
90%<br />
Knowledge and Understanding 10-25 18<br />
Application 10-25 18<br />
Analysis 10-25 18<br />
Synthesis 10-25 18<br />
Evaluation 10-25 18<br />
<strong>Project</strong><br />
Presentation 10%<br />
Interim Presentation 5 5<br />
<strong>Final</strong> Presentation 5 5<br />
TOTAL 100 0<br />
Examiner’s Comments <br />
See next page for marking guidelines. <br />
(1) Attachments and Supporting Material as detailed in section 7.1 “<strong>Project</strong> Deliverables” <br />
41
2012/2013 <br />
The project is assessed on the Report, Attachments, Presentation, Demonstration, and any <br />
other supporting material, based on the following criteria. <br />
• Learning Outcome: Knowledge & Understanding <br />
o<br />
o<br />
Description: mark reflects how well the student shows that they have <br />
developed an understanding of the technical domain knowledge on which the <br />
project is based. This includes both material from their computer science <br />
course and that acquired by the student as part of the project. <br />
Performance Indicators: Memorize, Recite, Name, Identify, Describe, Explain, <br />
Classify, Discuss. <br />
• Learning Outcome: Application <br />
o Description: mark reflects how well the student has applied their knowledge <br />
and understanding in executing the project. This includes technical <br />
application and project organisation. <br />
o Performance Indicators: Apply, Choose, Employ, Operate, Practice. <br />
• Learning Outcome: Analysis <br />
o<br />
o<br />
Description: mark reflects how well the student has applied analytical skills, <br />
including statistical analysis, to the project. This may be as applied to <br />
analysing the problem, to analysing their solution, and to analysing their <br />
project execution. <br />
Performance Indicators: Compare, Contrast, Calculate, Test, Analyze. <br />
• Learning Outcome: Synthesis <br />
o Description: mark reflects how well the student has created a solution. This <br />
includes both the abstract solution, and the implementation. <br />
o Performance Indicators: Construct, Compose, Create, Design, Propose. <br />
• Learning Outcome: Evaluation <br />
o Description: mark reflects how well the student has evaluated their work. <br />
This includes software testing (‘verification’), evaluation of the effectiveness <br />
of their solution (e.g. through experiments or system ‘validation’), and overall <br />
evaluation of their project execution. <br />
o Performance Indicators: Argue, Assess, Defend, Judge, Evaluate. <br />
42
2012/2013 <br />
APPENDIX N:UNIVERSITY POLICY ON PLAGIARISM <br />
Guidance for Students <br />
It is recognised that nearly all assignments and essays draw on the work of others: <br />
published research and critical commentary, lecturers’ notes and hand-‐outs, etc. The <br />
effective use and evaluation of existing material are among the skills that students are <br />
expected to develop. <br />
Material is cited in order to contribute to a larger line of argument, or to be subjected to <br />
scrutiny, or to be combined with other material in order to arrive at new perspectives; <br />
value should be added by some original thinking in the way in which it is used. In all <br />
cases, the source of the material (an idea or opinion, a quote, data, etc) must be <br />
acknowledged in a standard form of referencing. <br />
Plagiarism is the passing off of another person’s work as your own. It includes copying <br />
without acknowledgement from a published source (print or electronic), or from <br />
unpublished sources (e.g. another student’s essay or notes). Plagiarism occurs when <br />
material is copied word for word, but not only in that circumstance. Plagiarism also <br />
occurs when the substance or argument of a text is copied even with some verbal <br />
alterations, such as in paraphrase or <br />
translation, without acknowledgement. <br />
Plagiarism includes using material from books or periodicals, from the internet, from <br />
grind tutors, or from other students, without full acknowledgement of the sources. <br />
Copying and collusion are related to plagiarism. Copying occurs when a student copies <br />
work from a peer, with or without the consent of the original author. Collusion is when <br />
students collaborate to present work as if it were individual and original. Both copying <br />
and collusion are forms of plagiarism. <br />
In instances where two or more purportedly original assignments show clearly <br />
derivative similarities that are unacknowledged, they shall both or all be treated as <br />
plagiarism unless the contrary can be demonstrated. <br />
Plagiarism in any form of assignment contributing to marks or a grade for a course is a <br />
serious offence. It is a form of cheating on several counts: the perpetrator is attempting <br />
to obtain credit for work not done, and is also attempting to benefit from work done by <br />
somebody else. Plagiarism undercuts the whole thrust of scholarly enquiry that is the <br />
essence of education. <br />
Plagiarism will be severely penalised wherever it is detected. Students submitting <br />
assignments, essays, dissertations or any form of work for assessment may be required <br />
to sign a declaration that the material in question is wholly their own work except <br />
where indicated by referencing or acknowledgement. <br />
Students are reminded that any student submitting written work for continuous <br />
assessment can be asked by the marker or the department to take a supplementary test. <br />
43
2012/2013 <br />
This may take the form of an oral examination on the assignment in question and <br />
related issues, or the writing of a paper in controlled conditions. <br />
Students should provide adequate and accurate referencing for their assignments. <br />
Gordon Harvey, Writing with Sources: A Guide for Students, (Hackett Publishing <br />
Company, 1998) is one of a number of booklets outlining good practice in reference and <br />
citation. <br />
Disciplinary Consequences <br />
Plagiarism is a form of academic dishonesty and will be treated with the utmost <br />
seriousness wherever discovered. <br />
Examiners, tutors and markers are required to report instances of suspected plagiarism <br />
to the relevant Head of Department concerned. <br />
PLAGIARISM <br />
Any student submitting written work for continuous assessment can be asked by the <br />
marker or the department to take a further test. This may take the form of an oral <br />
examination on the assignment in question and related issues, or the writing of a test <br />
paper in controlled conditions. <br />
Requiring a student to take such a test does not necessarily imply that plagiarism is <br />
suspected. <br />
In instances where an element forming part of an assignment (from a phrase or <br />
sentence up to a paragraph or two) is found to be plagiarised, marks will be deducted <br />
for that assignment, there will be no possibility of submitting a “make-‐up” assignment, <br />
and previous and subsequent work submitted in connection with the course may be <br />
subject to particular scrutiny. While the amount of marks deducted will be <br />
proportionate to the extent of the plagiarised material, the deduction may be severe. <br />
In instances where a significant part or all of an assignment is found to be plagiarised, <br />
zero marks may be awarded for that assignment, there may be no possibility of <br />
submitting a “makeup” assignment, and previous and subsequent work submitted in <br />
connection with the course may be subject to particular scrutiny. In serious cases the <br />
plagiarism will be reported to the Supervisor of Examinations and the Committee of <br />
Discipline. <br />
Plagiarism in postgraduate or research material is a particularly serious offence. <br />
Penalties imposed may involve suspension or expulsion from the course and from the <br />
University, in addition to deduction of marks. Early offenders may be required to attend <br />
educative classes. <br />
44