FISICA ED ASTRONOMIA "Ettore Majorana"PhysicsAcademic Year 2022/2023

9795851 - PROGRAMMAZIONE AD OGGETTI E BIG DATA

Teacher: Marco RUSSO

Expected Learning Outcomes

The student will acquire:

Furthermore, with reference to the so-called Dublin Descriptors, this course helps to acquire the following soft skills:

Knowledge and understanding:

The primary objective of the course is the students' acquisition of the "philosophy" of object-oriented programming regardless of the programming language. Another goal is to understand the software bottlenecks to be implemented in order to optimize in terms of speed/memory. Another objective is to know how to disseminate the knowledge acquired and/or developed through its software in written form. Lastly, it is intended, optionally, to provide the rudiments of artificial intelligence.

Applying knowledge and understanding:

It is intended to provide students with the following skills:

Making judgments.

Through the examination of numerous code examples and a substantial practical component that involves carrying out computer exercises, the learner will be able, both autonomously and cooperatively, to analyze problems and design and implement the related software solutions. to objects and optimized in speed and / or memory.

Communication skills. 

The student will acquire the necessary communication skills and expressive appropriateness in the use of technical verbal language in the context of computer object programming. Optionally he will acquire acne communication skills in the field of artificial intelligence. Learning skills. The course aims to provide the learner with the necessary theoretical and practical methodologies to be used in research and professional contexts with particular attention to the physical field.

Course Structure

Frontal lessons and practical exercises.

Should the circumstances require online or blended teaching, appropriate modifications to what is hereby stated may be introduced, in order to achieve the main objectives of the course.

Required Prerequisites

Very thorough knowledge of the C language with particular regard to pointers.

Attendance of Lessons

Mandatory

Detailed Course Content

* Definition of Big Data
  * Aspects of Big Data addressed in this course:
    o Through the optimization of the programs in speed and / or memory
      you can get huge gains!
      = Optimization of already written code.
      = Optimization of the code already in the design phase of the same.
    o Hierarchy of memories.
     > Optimized RAM access
     > Programming to take advantage of CACHE.
     > Lookup tables
    o How to make good or bad use of SIMD processors and / or GPUs.
    o Parallel calculation: when and when not.

- Object-oriented programming: a language-independent programming style
  * From structured C to C++.
    > Review of variables, addresses, arrays and pointers in C.
    > Passing values ​​to functions and discussion of references
    > Pointers to functions
    > Dynamic memory allocation
    > The creation of libraries, headers, object files and linking.
    > What does object-oriented programming mean
    > The concept of code reusability and modifiability of the same
    > Classes, data hiding and abstract data types
    > Class-level members
    > Constructors and destructors of objects
    > Inheritance
    > Polymorphism
    > Programming examples of type objects: stack, queue and tree
    > Examples where classes with different trade-offs are implemented
      memory / speed and comparison with C ++.
  * Once you have thoroughly learned the basic concepts of ad programming
    objects it is easy to switch to any native object language.
    An example is C ++
    > Pros and Cons of a Native Object Language
    > Quick overview of the concepts previously illustrated
      all implemented in C++
    > Further aspects of C++: overloading operators, templates, etc.

Textbook Information

Notes provided in class. These notes, the code developed in class and any other material useful for the course will be available on the teacher's website: superpippo.ct.infn.it/~marco/didattica.

Course Planning

 SubjectsText References
1AllNotes and handouts provided by the teacher

Learning Assessment

Learning Assessment Procedures

Practical thesis carried out in agreement with the teacher. Once the topic has been agreed, in total temporal freedom on the part of the student, an appropriate object code in C is created. Together with the code, a written report, preferably in latex, is expected to be delivered. Both the code and the report will be considered in the final evaluation of the student.

Versione in italiano