WeChat:lovexc60
Choose ONE of the following three topics:
Blockchain, a cryptographic tool, is extensively used in Fintech applications nowadays for protecting chronological order of transactions.
The blocks, essentially contains information, are “linked” together by enforcing a specific relationship between blocks. That is, a block must contain a “fingerprint”, which is a hash value, of the data of the previous block. A hash function can condense arbitrary message (the block information) to a fixed size (e.g., 160 bits) and produces a fingerprint of the message.
After a block is added to the end of the chain, it can neither be removed or modified. If there are malicious changes to the transaction data, it can be detected by checking the hash value stored in the next block.
In short, blockchain is essentially a linked list data structure, which links the transaction data stored in blocks. And the integrity of the blocks can be verified by using hash values.
Develop a C++ program that allows the addition of new blocks, each includes certain information, defined by yourself, to the chain. Also, the program should be able to display the chain data in a number of ways, (e.g., by block number, the data of the whole chain, the hash values of a particular block). Also, provide a function that allows the users to check the integrity of the data stored in the chain. For the hash function, adopt the source code here.
Linear regression is a mathematical technique that helps find out the relationship between one or more predictor variable(s) and one outcome variable. One usage is that in supervised machine learning, the model is trained to find the best-fit line between the independent and dependent variable.
Develop a C++ program that will introduce the concept of linear regression and give at least 3 examples (from beginner level to advanced level) for illustration purpose. Imagine that you are teaching your classmates, but you are only allowed to use your program to teach them on behalf of you. Your program should allow certain interactivity, which may include allowing users to choose the (sub-)concepts to learn, and inputting data (with guidelines by the program) and have a visual representation of the calculation and the outcomes.
Suppose we have a type of virus that causes severe respiratory syndrome and can transmit to other people if they get close. The virus causes severe illness that is more likely in elderly patients and those with certain underlying medical conditions.
Develop a C++ program for scientists to study the impact of vaccination by developing a simulator. In the simulator, N users will walk in an area of X meter * X meter. Some users randomly walk (i.e., random direction with random step length), and others walk along straight lines. When a user reaches the boundary of the area, the user may change the walking direction to a random direction within the area and continue.
When two users move closer within C meters, the virus can transmit to another user. Initially we have R contagious users and V vaccinated users among the total of N users. We assume that vaccinated users will not be transmitted or become contagious (CLAIM: which may not be the case in reality).
In your program, it receives inputs from scientists, e.g., N, X, C, R, and V. You may add other variables for scientists, e.g., walking speed, social distancing rules, percentage of users that violates the social distancing rules, possibility of virus transmission within C meters, etc.
The program receives inputs from scientists and visualizes users with different colors indicating their status (e.g., vaccinated, contagious, others). (You can use external libraries for text/background coloring for this topic) The users’ locations, their statuses, and total number of users in different statuses should be updated in the simulation.
Your program MUST be implemented using text-based mode only. No GUI is allowed.
You are only allowed to use the techniques and libraries introduced in this course. For string manipulation, you are allowed to use any of the C-string or string object approaches. If you need to use other build-in/external libraries other than those specified above, seek the consent from the lecturers first and provide with proper justification.
Put your source files (e.g., .cpp and .h) in a single folder, which is named as your student ID,that can be recognized properly in VS Code. The source file that is the entry point (i.e., it contains the main()) of your program should be named as main.cpp.
It should contain a description of the project, including the problem statement, the objectives of the program, program design, and structure of the program. Justify your design properly.
Also, include a user manual so that “non-programmer” user knows how to use your program.
The report should contain at least 5 pages and at most 10 pages.
A 5-minute video that demonstrates and describes your implementation and how it can achieve the project outcome(s).