-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathcontent.php
More file actions
354 lines (288 loc) · 15.2 KB
/
content.php
File metadata and controls
354 lines (288 loc) · 15.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
<div id="content">
<h1>Computing Methods for Physics</h1>
<div class="post news-cont">
<?php include("Didattica/cmp/news.html") ?>
</div>
<div class="post">
<h2 class="title">Accademic year 2020/21</h2>
Students that intend to attend this course in Fall 2020 are kindly invited
to <a href="https://www.phys.uniroma1.it/fisica/archivionotizie/questionario-le-matricole-e-gli-iscritti-aa-2020/21">fill this form</a> and register on
<a href="https://classroom.google.com/c/MTM3MDE2MjEyMzYw?cjc=bvcru2c">google classroom code: bvcru2c</a>
for all future communications.
<p>Detailed information available on
<a href="https://corsidilaurea.uniroma1.it/it/users/shahramrahatlouuniroma1it">catalogo dei corsi di studio</a>.</p>
<h2 class="title">Orario Lezioni</h2>
<p><b>Lectures start on Tuesday 29 September 2020</b></p>
<ul>
<li> Tuesday 12-14, Aula 6 , Nuovo Edificio di Fisica</li>
<li> Friday 12-14, Aula 6 , Nuovo Edificio di Fisica</li>
<li> Lab Sessions: there will be about 5-6 lab sessions on Monday 9-12
in Laboratorio di Calcolo, Nuovo Edificio di Fisica.
The dates will be fixed once the number of students attending the course is fixed.</li>
</ul>
<?php /*
<h2 class="title">Student survey</h2>
<p>Please fill this informal <a href="https://docs.google.com/forms/d/e/1FAIpQLScMwRWGDYLbphrKOBqoEToqhGm-L4pg8DO7x8cAKFUt3dficw/viewform?usp=sf_link">survey module</a> by Tuesday 1 Oct to help me with the organisation of the course and lab sessions.</p>
<p>You must use your uniroma1 credentials. In case of problems, please restart your browser or log out of your private google account before accessing the form.</p>
<h2 class="title">Evaluation of the course by students (OPIS)</h2>
<p>All students attending the course are kindly invited to fill the short survey on the
evaluation of the course (OPIS) using the following code number.</p>
<img src="Didattica/cmp/OPIS-CMP.png" width=95%>
<p>See the <a href="https://www.uniroma1.it/sites/default/files/field_file_allegati/vadevecum_opis_eng_27_11_2018_002_modalita_compatibilita.pdf">instructions</a> on filling the survey.</p>
*/ ?>
<h2 class="title">Material</h2>
(Old websites: <a href="index.php?link=Didattica&sublink=2018.cmp">2018</a>,
<a href="index.php?link=Didattica&sublink=2019.cmp">2019</a>)
<!-- begin lectures -->
<ul>
<li>
Lec 01, 29/9: Introduction to the course
</li>
<?php /*
Lec 01, 24/9: Introduction to the course (<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec00/introduction.pdf">introduction</a>). Introduction to C++.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec01/lec01.pdf">pdf</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec01/examples">examples</a>)
</li>
<li>Lec 02, 27/9: References and pointers in C++. Constant. Namespace. Introduction to Class.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec02/lec02.pdf">pdf</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec02/examples">examples</a>)
</li>
<li>
Lec 03, 1/10: Classes and objects in C++. Interface and attributes. Constructors. Separating interface and implementation. Header and source files.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec03/lec03.pdf">pdf</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec03/examples">examples</a>)
</li>
<li>
Lec 04, 4/10: Header and source files. Dynamic memory allocation. Destructor. Using class std::vector.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec04/lec04.pdf">pdf</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec04/examples">examples</a>)
</li>
<li>
Lec 05, 8/10: Destructor. const member functions. Default arguments for functions.
Applications in C++. Arguments from command line. external libraries. Introduction to ROOT.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec05/lec05.pdf">pdf</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec05/examples">examples</a>)
</li>
<li>
Lec 06, 15/10:
Numerical convolution: Gaussian detector resolution and monochromatic source. Gaussian convolution of
exponential decay length distribution.
Dynamically allocated object as data members. Overloading operators. Adding operators to class Datum.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec06/lec06.pdf">pdf</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec06/examples">examples</a>)
</li>
<li>
Lec 07, 18/10: Overloading operators and friend methods. Static data members and
methods. Application to compute weighted average.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec07/lec07.pdf">pdf</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec07/examples">examples</a>)
</li>
<li>
Lec 08, 22/10:
Example of static data member in class Datum. Enumerators. use case for
std::map, std::pair, and std::vector. class Vector3D.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec08/lec08.pdf">pdf</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec08/examples">examples</a>)
</li>
<li>
Lec 09, 25/10:
Input/Output with TTree and TFile. Random Generators in ROOT. Using ROOT classes for functions and fitting.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec09">md</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec09/examples/">examples</a>)
</li>
<li>
Lab 01, 28/10: Design and implementation of a class for Complex numbers and their algebra.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lab/sessions.md">md</a>)
</li>
<li>
Lec 10, 29/10, Data storage with TTree. Input and output. Branches with variable size.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec10/lec10.md">md</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec10/examples/">examples</a>)
</li>
<li>
Lec 11, 5/11:
Input/Output of custom class objects with TTree. Reading of TTree created by others: Application for analysis of TTree.
Creating custom analysis class.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec11/lec11.md">md</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec11/examples">examples</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/misc/ROOT.md">ROOT setup and configuration</a>)
</li>
<li>
Lec 12, 8/11:
Object oriented programming: Inheritance. Base and derived class.
Polymorphism with virtual methods.
Examples of Shape, Particle, Person, Function and their use case.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec12/lec12.pdf">pdf</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec12/examples">examples</a>)
</li>
<li>
Lab 02, 11/11 9:30-12:00:
finishing Complex class and exercises with ROOT.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lab/sessions.md">md</a>)
</li>
<li>
Lec 13, 12/11:
Polymorphism: abstract class. Applications.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec13/lec13.pdf">pdf</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec13/examples">examples</a>)
Strategy pattern: examples and applications: Numerical integration methods. custom Function class.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec13/strategy.md">md</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec13/examples1">examples</a>)
</li>
<li>
Lab 03, 18/11 9:30-12:00:
Implement numerical integration methods with the Strategy Pattern.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lab/sessions.md">md</a>)
</li>
<li>
Lec 14, 19/11:
Composition pattern: examples and applications: leaf and composites in graphical applications.
Example of a solar system simulation with composite objects.
Examples in high energy phyiscs: tracks, photons, electrons, jets.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec14/lec14.md">md</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec14/examples">examples</a>)
</li>
<li>
Lec 15, 22/11:
Templates and generic programming in C++. Template functions and classes.
STL containers. Error handling with exceptions.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec15/lec15.pdf">pdf</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec15/examples">examples</a>)
</li>
<li>
Lab 04, 25/11 9:30-12:00:
Input of TTree from file, use of MakeClass for analysis, plots of kinematic variables and invariant mass.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lab/sessions.md">md</a>)
</li>
<li>
Lec 16, 26/11:
Makefile: usage and examples with implicit rules. (<a href="https://github.com/rahatlou/CMP/tree/CMP2019/makefile/makefile.md">md</a>)
Introduction to Python. Main differences with C/C++.
Introduction to <a href="https://jupyter.org">jupyter</a>.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec16/lec16.md">md</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec16/examples">examples</a>)
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/misc/DownloadNotebook.md">HOWTO download the lecture notebook</a>)
</li>
<li>
Lec 17, 29/11:
Makefile: custom recipes, variables and functions, building libraries. (<a href="https://github.com/rahatlou/CMP/tree/CMP2019/makefile/makefile.md">md</a>, <a href="https://github.com/rahatlou/CMP/tree/CMP2019/makefile/examples/">examples</a>)
Basics of python: semantics, flow control, data types, functions, modules.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec17/lec17.ipynb">jupyter notebook</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec17/examples">examples</a>)
</li>
<li>
Lab 05, 2/12 9:30-12:00: study of energy loss by ionisation and the Bragg peak in matter
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lab/sessions.md">md</a>)
</li>
<li>
Lec 18, 3/12: data types in python: sequences. Lists, Tuples. Example of
plotting with matplotlib. Dictionaries.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec18/lec18.ipynb">jupyter notebook</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec18/examples">examples</a>)
</li>
<li>
Lec 19, 6/12: Data types in python: Dictionaries and sets. Comprehensions.
data analysis with sets, lists, dicts. Plotting a histogram. NumPy arrays:
revisiting motion of a body under gravity. Animated plots with matplotlib.
Function with multiple return values in python
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec19/lec19.ipynb">jupyter notebook</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec19/examples">examples</a>)
</li>
<li>
Lab 06, 9/12 9:30-12:00: motion in 3D with friction
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lab/sessions.md">md</a>)
</li>
<li>
Lec 20, 10/12: Numpy and array-oriented programming with ndarray. Example of random walk with arrays.
File I/O and handling in python. Functions with variable number of arguments.
Command line arguments for python programs.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec20/lec20.ipynb">jupyter notebook</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec20/examples">examples</a>)
</li>
<li>
Lab 07, 16/12 9:30-12:00: python
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lab/sessions.md">md</a>)
</li>
<li>
Lec 21, 17/12: Classes, inheritance, and polymorphism in Python
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec21/lec21.ipynb">jupyter notebook</a>,
<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec21/examples">examples</a>)
</li>
<li>
Lec 22, 20/12:
Brief introduction to Machine Learning and its applications.
Types of Machine Learning and main challenges. Examples.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec22/lec22.md">md</a>)
</li>
<li>
Lec 23, 10/1: Binary classification with with scikit-learn. Precision and recall.
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec23/classification-example.ipynb">jupyter notebook</a>)
</li>
<li>
Lec 24, 13/1 9:30-12:00: Binary classification: the ROC curve. examples in particle physics
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/lec23/classification-example.ipynb">jupyter notebook</a>)
</li>
<li>
Lab 08, 15/1 13:00-16:00: Implemenation of a vicinity sensor with Arduino using an ultrasonic module
(<a href="https://github.com/rahatlou/CMP/tree/CMP2019/arduino/arduino.md">md</a>)
</li>
*/ ?>
</ul> <!-- end of lectures -->
<h2 class="title">Useful resources</h2>
<ul>
<li> VirtualBox:
If you have a windows or MacOS machine you can use a virtual
linux machine.
<ol>
<li>Install the free
<a href="https://www.virtualbox.org">virtual box application</a></li>
<li>In your browser download the <a
href="http://labcalc.fisica.uniroma1.it/docenti/rahatlou/public_html/VM/Ubuntu18.04-cmp-64bit.ova">Ubuntu18.04-cmp-64bit.ova</a>
which is a virtual machine based on Ubuntu 18.04, and has ROOT
and python tools already installed, and the bash and csh
environements configured.</li>
<li>You can now double-click on this ova file
(image of a vitual machine) and you you see Ubuntu starting
up in a window</a>
<li> the system will start up without asking for
username and password. The user is called <em>student</em>
and the password is <em>physics</em>. You will only need
the password to update or add new packages for example for
python.
</li>
</ol>
</li>
<li>C++ compiler for Windows: you can <a href="https://tutorials.visualstudio.com/cpp-console/install">install the free version of Visual Studio</a></li>
<li>C++ compiler for Mac OS: it is available for free as part of XCode. You need to install the "command line tools". See for example <a href="http://www.edparrish.net/common/macgpp.php">these simple instructions</a>.
<li>C++: useful C++ reference guides <a
href="http://www.cplusplus.com">Cplusplus.com</a>,
<a href="https://www.cppreference.com/">cppreference.com</a></li>
<li>ROOT: framework for data analysis. Checkout the
website at <a href="http://root.cern.ch" >root.cern</a>. The <a href="https://root.cern.ch/guides/reference-guide" >reference
guid</a>e is all you need to navigate exisiting
classes. You can browse it online or download on your
machine. See also the <a href="https://root.cern.ch/downloading-root" >installation guide</a> for setting up
your machine. Unless you have special needs (e.g. old operating system) you should use the PRO version.
<br>
See a <a
href="https://github.com/rahatlou/CMP/blob/master/misc/ROOT.md">short summary on setting up ROOT</a> on
your machine. </li>
<li>Arduino: the official arduino website
<a href="https://www.arduino.cc"
>https://www.arduino.cc</a> is a good starting point
for beginners</li>
<li>Python: the <a href="https://www.python.org/" >official python</a> website is a good
resource for introduction to Python. Check out also <a
href="https://pythonprogramming.net"
>https://pythonprogramming.net</a> for targgetted and
specific tutorials. </li>
<li>jupyter: open-source web application for writing
documents and live code in many languages, including
C++ and python. A good starting point is <a href="https://jupyter.org" >https://jupyter.org</a> </li>
<li>scikit-learn: is a kit for machine-learning in
python. Valuable info available at their webiste <a href="http://scikit-learn.org" >http://scikit-learn.org</a> </li>
<li>pandas: Python Data Analysis Library: provides high-performance, easy-to-use data structures
and data analysis tools in python. Details at <a href="http://pandas.pydata.org">http://pandas.pydata.org</a></li>
</ul> <!-- useful resources -->
</div> <!--- end of post -->
</div> <!-- end of content -->