Learning outcomes of the course unit
The course aims at providing basic tools for developing advanced programming projects. Style will be mainly informal: stress will be on acquiring problem solving skills more than on formal foundations of programming.
Main subject will be the introduction to C++ object-oriented programming. Main emphasys will be put on problem solving examples, with reference to basic numerical analysis techniques which can be useful to physicists.
A brief introduction will be provided to the usage of highly integrated numerical enviroments (Matlab) and (subject to time availability) basics of symbolic computation (Mathematica). Once again, emphasys will be put on problem solving, mainly approaching subjects useful for a physicist.
Students should have attended the courses of Laboratorio di Informatica and Programmazione 1.
Course contents summary
The course will cover more advanced subjects with respect to the introduction to computer programming which is made available by the courses of Laboratorio di Informatica and Programmazione 1. Basic contents are as follows:
Introduction to tools for developing and benchmarking programs (the utilities make, ar, gprof).
Introduction to object-oriented programming. Tools available in the C++ enviroment: objects, classes, methods at work in basic numerical analysis techniques (cases of study taken from what can be useful to a physicist).
Highly integrated programming enviroments: the Matlab programming language. A case of study: data analysis.
Basics of simbolic computing: usage of the Mathematica enviroment (this is an extra, subject to time availability).
Students will mainly make use of notes provided by the lecturer (available on the web toghether with the codes which are developed during the lectures) and of references available under the GNU license on the web.
Extra material that can be useful (but not essential):
a general introduction like the classical B. Stroustrup, 'The C++ language ' (Addison-Wesley: original english edition reccomended!);
any C++ manual the student could already own (maybe from a previously attended programming course);
Matlab (MathWorks) and Mathematica (Wolfram Media) reference manuals.
Each subject will be approached via a short, but self-contained program. Students will take part in this plan. They will be required to contribute to developing and/or verifying programs.
Every lecture will be held in the computer lab (PC's available to the students).
For the final examination students will be required to produce a program which is supposed to solve a particular problem. This (short) project will be presented toghether with a short report. The problems among which students will make their choice are mainly based on subjects already covered in the lectures. A brief outline for the solution will be anyway made available to the students. Details (including when the students will provide their project) can be agreed with the lecturer on a case by case basis.