mail unicampaniaunicampania webcerca

    Lelio CAMPANILE

    Insegnamento di FUNDAMENTALS OF PROGRAMMING

    Corso di laurea in DATA ANALYTICS

    SSD: INF/01

    CFU: 6,00

    ORE PER UNITÀ DIDATTICA: 56,00

    Periodo di Erogazione: Primo Semestre

    Italiano

    Lingua di insegnamento

    INGLESE

    Contenuti

    In questo corso si affrontano i concetti basilari della programmazione di un calcolatore, quali:
    - la rappresentazione delle informazioni e dei dati;
    - la progettazione e la modellazione di un algoritmo
    - i processi di codifica ed esecuzione di un algoritmo in un programma
    -valutazione delle prestazioni e della complessità computazionale
    -codifica in linguaggio Python.

    Testi di riferimento

    Cay Horstmann, Rance D. Necaise. Python- Introduction to Programming. 2023, Maggioli Editore.

    Data Structures & Algorithms in Python - John Canning,Alan Broder, 2023 Ed.

    Obiettivi formativi

    Obiettivi:
    1) Gli studenti devono essere in grado di progettare un algoritmo per un problema dato, utilizzando gli strumenti e gli standard di rappresentazione appropriati (ad esempio, diagrammi di flusso);
    2)gli studenti devono conoscere le strutture dati più importanti e le strategie per ottimizzarne la gestione;
    3)gli studenti devono essere in grado di progettare e implementare nel linguaggio di programmazione Python algoritmi utilizzando le strutture appropriate come unità funzionali (funzioni), strutture di controllo (sequenze, cicli e condizioni) e variabili semplici e strutturate;
    4) gli studenti devono comprendere il significato della complessità computazionale di un algoritmo, sia nella dimensione temporale che spaziale.

    Prerequisiti

    Conoscenze basilari sull'utilizzo di un calcolatore e di strumenti di editing.

    Metodologie didattiche

    Lezioni frontali, spiegazioni teoriche, esempi pratici, laboratori pratici, lezioni aggiuntive fornite come video e materiali di studio ed esempi.

    Metodi di valutazione

    - Project Work di Programmazione e Verifica con Colloquio Orale.

    Programma del corso

    Prima parte: Fondamenti di programmazione
    -Algoritmi
    -Problemi
    -Misure di complessità
    --Variabili
    -Tipi di dati
    -Strutture di dati
    - Rappresentazione degli algoritmi:
    Diagrammi FlowChart e PseuCode.


    Seconda parte: Fondamenti di programmazione in linguaggio Python

    Introduzione alla programmazione. Definizioni di base: Programmazione, codifica, algoritmo, calcolo e complessità computazionale. Panoramica del ciclo di programmazione: Definizione del problema, progettazione dell'algoritmo, codifica, test e debug, distribuzione. Programmazione strutturata: 1) Programmazione procedurale; 2) Programmazione orientata agli oggetti. Panoramica sui linguaggi di programmazione: Linguaggi imperativi e dichiarativi. Compilatori e interpreti.
    Programmazione strutturata (Parte 1): Moduli, sottomoduli, funzioni, procedure. Principio del divide et impera. Composizione, cooperazione e orchestrazione di moduli.
    Programmazione strutturata (Parte 2): Teorema di Bohm-Jacopini. Sottoprogrammi; principali strutture di controllo: sequenza, condizione, iterazione.
    Ciclo di programmazione con un caso pratico di matematica. "Equazioni di secondo grado": Definizione del problema; identificazione di una soluzione; descrizione di una soluzione. Formalizzazione di una soluzione come algoritmo.
    Formalizzazione di un algoritmo: Pseudo-codice; diagrammi di flusso: Sintassi e semantica; strumenti software per implementare i diagrammi di flusso. Caso di studio: Modellazione del ciclo di lavoro di un distributore di caramelle e implementazione tramite pseudocodice e diagrammi di flusso.
    Introduzione al linguaggio di programmazione Python. Ambiente Python.
    Strutture di dati (DS): classificazione e tipologie principali, statiche e dinamiche. DS lineari e DS non lineari. Array, liste collegate. Rappresentazione della memoria principale della macchina.
    Strutture dati a matrice, stack, heap, coda.
    DS ad albero: alberi binari.
    Albero DS: Albero di dati a ricerca binaria.

    Set e mappe: HashMap DS.
    Strategie di visita DS.
    Teoria della complessità di calcolo. Complessità spaziale. Complessità temporale.
    Fondamenti dei problemi di complessità computazionale: Macchine di Turing.

    - Configurazione dell'ambiente Python
    - Nozioni di base della riga di comando
    - Variabili. Tipi di dati
    -Operazioni aritmetiche e logiche
    -Strutture di controllo
    -Strutture di iterazione
    -Funzioni e moduli
    -Funzione principale
    -Importazione di moduli esterni
    -Compilazione ed esecuzione di uno script Python
    -Esercizi pratici

    English

    Teaching language

    English

    Contents

    This course covers the basic concepts of computer programming, such as:
    - the representation of information and data;
    - the design and modeling of an algorithm; and
    - the processes of coding and executing an algorithm in a program
    -evaluation of performance and computational complexity
    -coding in the Python language.

    Textbook and course materials

    Cay Horstmann, Rance D. Necaise. Python- Introduction to Programming. 2023, Maggioli Editore.

    Data Structures & Algorithms in Python - John Canning,Alan Broder, 2023 Ed.

    Course objectives

    Goals:
    1) the students must be able to design an algorithm for a given problem, using the appropriate representation tools and standards (e.g., FlowCharts);
    2)the students must be aware of the most important data structures and the strategies for optimizing its managing;
    3)the students have to be able to design and implement in the Python Programming language algorithms by using the appropriate structures as functional units (functions), control structures (sequence, loops and conditions), and simple and structured variables;
    4)the students have to undestand the meaning of the computational complexity of an algorithm, both in the time and spacial dimensions.

    Prerequisites

    Basic knowledge of using a computer and editing applications.

    Teaching methods

    Frontal Lectures, theory explanations, practical examples, practical labs, additional lectures provided as video and study materials and examples.

    Evaluation methods

    - Project Work and Oral Assessment.

    Course Syllabus

    First Part: Fundamentals of Programming
    -Algorithms
    -Problems
    -Complexity Measures
    --Variables
    -Data Types
    -Data Structures
    - Algorithm Representation:
    FlowChart Diagrams and PseuCode.


    Second Part: Fundamentals of Programming in Python language

    Introduction to Programming. Basic Definitions: Programming, Coding, Algorithm, Computation and Computational Complexity. Programming Cycle Overview: Problem Statement, Algorithm Design, Coding, Testing and Debugging, Deployment. Structured programming: 1) Procedural programming; 2) Object Oriented Programming. Programming Languages Overview: Imperative and declarative languages. Compilers and Interpreters.
    Structured programming (Part 1):Modules, Submodules, Functions, Procedures. Divide et Impera principle. Modules Composition, Cooperation and Orchestration.
    Structured programming (Part 2): Bohm-Jacopini Theorem. Subprograms; Main Control structures: sequence, condition, iteration.
    Programming Cycle by a practical Case Study from math. "Second degree equations": Problem Definition; Identifying a Solution; Describing a Solution. Formalizing a Solution as an Algorithm.
    Algorithm Formalization: PseudoCode; FlowCarts: Syntax and Semantics; Software tools to implement FlowCharts. Case Study: Modeling the duty cicle of a Sweeties Dispenser and implenting by using pseudocode and flowcharts.
    Introduction to Python Programming Language. Python Environment.
    Data Structures (DS): Classification and Main Typologies.Static vs Dynamic. Linear DS and Non-Linear DS. Arrays, Linked List. Machine Main Memory Representation.
    Matrix, Stack, Heap, Queue Data Structures.
    Tree DS: Binary Trees.
    Tree DS: Binary Search Data Tree.

    Set and Map: HashMap DS.
    DS Visiting Strategies.
    Computation Complexity Theory. Space Complexity. Time Complexity.
    Fundamentals of Problems in Computation Complexity: Turing Machines.

    - Python Environment Setup
    - Command Line Basics
    - Variables. Data Types
    -Arithmetical and Logic Operations
    -Control Structures
    -Iteration Structures
    -Functions and Modules
    -Main Function
    -External Modules Importing
    -Compiling and Excution of a Python script
    -Practical Exercises

    facebook logoinstagram buttonyoutube logotype