Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

Department of Electrical Engineering and Electronics

ELEC362

Project

DataViz version 0.2

Module

ELEC362

Coursework name

Project

Component weight

50%

Semester

1

HE Level

5

Lab location

personal computers/laptops, university remote computer

Work

Individual

*Estimated time to finish

40 hours (coding and testing)

Assessment method

Individually

Submission format

Online via VITAL

Submission deadline

09:00 on the 8th of January

Late submission

Standard university penalty applies

Resit opportunity

None except for extenuating circumstance

Marking policy

Marked and moderated independently

Anonymous marking

No (the marker needs to link the code to the report)

Feedback

via CANVAS

Expected release of marks date

15 business days from the deadline

Learning outcomes

LO2: Using C++ to implement GUI-based software.

LO3: Using online documentation for self-learning.

*Note: This estimate may vary based on the need to debug your application. Make sure you start working on the project as soon as possible.

The concept:

The long term aim of the project is to develop a fully functional software, known as DataViz, for plotting and processing datasets, which will be eventually deployed and released for all students in the department to use in their reports, data processing, and as a show case of an authentic experience of software development for the students of ELEC362. The development is planned over 5 years, which started in 2022. Each year the cohort of ELEC362 will be asked to make a major upgrade to the software (will be referred to as the control version in this report).

Each header file of every class in the control version (source files) of the project contains a comment explaining what the purpose of the class is. The features currently available in the app can be found   under “Help” menu.

Upgrades required for this year:

For this year you are asked to implement the following upgrades to DataViz 0.0 (the control version) to end up with DataViz 0.2:

-      Introduce a way in the app allowing the user to change the width of the curve, its colour, and its style*.

-      Update the design of the help window so that it becomes organised into sections which are easy to add to and expand in the future.

-      Introduce a way in the app where the names of loaded Datasets can be made available to the user, so that they can add a comment to describe what each dataset represents.

-      Define another mean in the app to enable the user to draw a dataset.

-       Introduce a way in the app where it allows multiple datasets to be plotted into a single graph window *.

-      Create an entry “Function” under the menu “Analysis”, which should allow the user to input a mathematical expression containing the names of datasets. For example, “D1*exp(-D2)” .   For this purpose, use the classes defined in the header atmsp.h (An example test project showing how to use this header file has been uploaded to CANVAS)*.

-      Adding a feature for a histogram plot (you can generate thehistogramin GSL and plot it in QCustomPlot viaQCPBarsclass).

You may assume that all the datasets in the app will have the same x-coordinates. To refer to what asterisks mean please refer to the last question in FAQ section.

After you are done with the upgrade; make sure that:

-      All the features you add are working well.

-      You updated the help window in the app to include instructions on how to use the app after the features you added.

-      You handled a range of potential errors that may be experienced in the updated app.

It is an expectation from everyone to consult Qt documentation to find any functions or classes that might be useful for the implementation of the project. Finally, you should make the programme as

Note: The mark will be based on how your application behaves on a computer in

the lab. Check your app on one of the computers in the lab to make sure it works

as you expect before submitting your work. Make sure compiling your app is

straightforward and does not need any special compilation instructions.

professional as possible. Imagine this project as a real-life project given to you, and that in the next years, it will be developed further by other students.

Note for Mac OS users: You can develop the application based on Mac version of the app. The application will be tested and marked on a Windows machine. You should verify that your app works as it should on one of the computers in the lab before submission, to avoid any potential cross-platform issue, if you have any problems, please let me know.

Suggested approach to be followed:

Start by implementing the simplest tasks. For more advanced tasks, a good idea is to learn how to implement these features in an empty app. Once that works, you can adapt the code from the empty project into the control version. Note that is merely a suggestion and it has no impact on your mark whether you followed it or not.

If you are unsure contact the module coordinator for any assistance.

The deliverables

Every submission should consist of the project’s files in a zip file + the code copied-pasted in a PDF file. The name of the zip file as well as the report must be your name (MohammadHasan.zip and MohammadHasan.pdf). The PDF file must not be zipped.

Industrial Relevance

Data visualisation and processing applications are essential tool in all fields of industry and academia, which apply to all fields of science from physics, chemistry and engineering to social sciences. The tasks given in this project are essential part of famous software including:

matplkdlb      prism

Mapping the project to modules’ material:

Aspect

Where it is covered

Creating child windows or child dialogs.

Lecture 14, Lecture 16

Saving object in vectors in Qt

Week 9 lab

Error handling

week 10 lab

Dealing with string sequences

Week 8 lab

Implementing mouse functionality

Lecture 16

Implementing a functionality using different methods

Lecture 16

Controlling the style, layout and GUI design

Lecture 15

Implementing input widgets functionality

Lecture 14, week 8 lab

Online documentation for Qt

https://doc.qt.io

Source for free icons and photos

https://thenounproject.com/

Online documentation for QCustomPlot

https://www.qcustomplot.com/ind ex.php/introduction

Online documentation for GSL

https://www.gnu.org/software/gsl /doc/html/index.html

Questions and Answers:

Q: Should I learn the entire code in the control version?

A: No, you should be able using the material taught in this module to find the relevant part of the code where you need to edit, get familiar with that part to update it. You are not expected to know how everything works from the previous year.

Q: The control version has a lot of codes from elsewhere such as GSL, QCustomPlot, and ATMSP. Should I learn all of that?

A: No, you need to only know the bit that you need.

Q: What if I have a better idea than the control version? Or if I want to modify it?

A: Any improvement is welcome, ranging from creatin an icon for the project to designing a   better startup screen, to making more general modifications to the code. However, if you do something that is not part of the required upgrades, the benefit to you is that you will get an acknowledgment in the about section. Your mark will be based only on the required upgrades listed above. If you are interested in doing this, please consult the module coordinator before you start working on it.

Q: How will the markers know how my design works if there is no report?

A: By referring to the updated help window in the app. You should make sure that it is updated in such a way that reflects how the upgraded app should be used.

Q: what if I only did some of the features requested? Will my mark in the three marking criteria be affected?

A: Meeting all the requirements will primarily affect MC1.  Some the requirements require

more work than others, which were labelled with an asterisk *. Not doing these may impact   other MC as well. If you want to prioritise task, make sure you do the ones with asterisk first.