11.01.2015 Views

Final Year Project Handbook - Computer Science - National ...

Final Year Project Handbook - Computer Science - National ...

Final Year Project Handbook - Computer Science - National ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!