代写CMT304 Analog, Differentiable and Machine Programming代做Python编程
- 首页 >> WebModule Code: CMT304
Module Title: Programming Paradigms
Assessment Title: Analog, Differentiable and Machine Programming
Assignment
The attached measurements .csv file contains measurements obtained from the analog cir- cuit below. It is a csv file where the first column contains the time and the second col- umn the voltage measurement at x in the circuit (1, 000 datapoints from time 0 to 2π).
This circuit consists of analog computing components we used with LTSpice in the module (ic indicates a non-inverting integrator, + a summer, - an inverter and AB a multiplier). The data in the csv file are noisy voltage measurements from this circuit. Information about the values a, textttb, and x0 is not available.
This assignment is about analysing the data with differentiable programming techniques and some questions about the approach as given by the tasks below, aligned with the contents of part three of the module. It is a simple example to demonstrate your understanding of the programming paradigms involved. There are of course other approaches one can use to analyse the data, but this is not asked for.
The example has been kept simple to avoid the need of high computational resources. This should be executable with reasonable CPU resources without GPU; you can of course also use the Linux machines in the COMSC Linux lab.
Task 1 (worth 40%): Write a python program using differentiable programming techniques to approximate the measurement data in measurements .csv with a parameterised function fp : R '→ R, t → x. You may use pytorch, tensorflow or jax for this (or maybe a combi- nation of these packages; using numpy and matplotlib for supporting functionality is fine – any other packages are not needed; check with the coursework setter if in doubt). You are free to choose any function type (some analytical function, a neural network, etc), but you may want to consider the circuit diagram to choose a suitable function and its parameterisa- tion. Your code can produce the results in any suitable format, on the terminal or in files (do not submit these). You should report these results with Task 2. Submit a single python file solving this task. Assume measurements .csv is in the directory the python file is executed from.
Task 2 (worth 40%): Justify the function and the parameterisation you have used to match the data and explain what you can learn from this about the circuit given your results from Task 1. Or, if you cannot conclude anything, explain why not. Write a short report about this of up to 400 words.
Task 3 (worth 20%): Under the assumption that the analysis program for Task 1 needs to be very efficient on a CPU, explain whether the performance of a particular part of your code could be improved by implementing it in assembly (there is no need to provide code, only the concept). If you do not see any use for this, explain why not instead. Make sure you refer to your specific code and state any assumptions about the hardware, if applicable; generic arguments are not needed. Write a short report about this of up to 400 words.
Submit your answers to Task 2 and 3 in a single PDF file, with clear headings indicating the task. The word limits for Task 2 and Task 3 are an upper limit, not a target length. Text longer than the word limit for each point may be ignored.
Learning Outcomes Assessed
• Explain the conceptual foundations, evaluate and apply various programming paradigms, such as logic, functional, scripting, filter-based programming, pattern matching and quantum computing, to solve practical problems.
• Discuss and contrast the issues, features, design and concepts of a range of program- ming paradigms and languages to be able to select a suitable programming paradigm to solve a problem