Il corso di Introduzione alla Programmazione ha l'obiettivo di fornire le prime basi di programmazione, dando una particolare enfasi agli aspetti di ragionamento scientifico e pensiero computazionale. Il corso prevede attività di didattica frontale affiancate a laboratori guidati che servono per approfondire e consolidare gli argomenti visti in classe.

Il corso ha un forte connotato applicativo, lo studente è incoraggiato ad affrontare problemi di complessità crescente in autonomia.

  • Obiettivi e contenuti
    • OBIETTIVI FORMATIVI
      - Fornire la conoscenza di base dei concetti fondamentali della programmazione imperativa con linguaggi di programmazione classici: macchina virtuale; codifica dei dati e delle istruzioni; modello Von Neumann; linguaggio formale, analisi lessicale, sintattica e semantica; algoritmo; tipo di dato; asserzione invariante; complessità di calcolo. - Imparare ad usare un linguaggio di programmazione imperativo e un ambiente testuale di sviluppo di programmi, come per esempio il linguaggio C oppure C++ (limitato alla parte non object-oriented), con un editor di testi, il compilatore GCC e GNU Make. - Imparare a progettare, realizzare e far funzionare un programma sequenziale di piccole dimensioni partendo dalle specifiche informali fornite dall'utente.
      OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO
      • Principi del pensiero computazionale
      • La conoscenza di base dei concetti fondamentali della programmazione imperativa con linguaggi di programmazione classici 
      • Introduzione ad un linguaggio di programmazione imperativo e un ambiente testuale di sviluppo di programmi, come per esempio il linguaggio C oppure C++ (limitato alla parte non object-oriented), con un editor di testi, compilazione ed esecuzione da linea di comando.
      • Principi di progettazione, realizzazione e validazione di un programma sequenziale di piccole dimensioni partendo dalle specifiche informali fornite dall'utente. 
      • Capacità di produrre codice corretto e comprensibile; capacità di comprendere, utilizzare, modificare codice prodotto da altri
      PROGRAMMA/CONTENUTO

      l corso è formato da una parte di lezioni teoriche che si svolgono in aula e da una consistente parte pratica di programmazione che si svolge in laboratorio. La data di inizio del laboratorio verrà comunicata in aula. 

      Argomenti trattati in aula

      • Introduzione al corso, al pensiero computazionale e alla programmazione.
      • Ambienti di programmazione e linguaggi formali.
      • Programmazione imperativa: variabili e istruzioni; assegnazione; input/output; condizionale; cicli; tipi base; array/vettori/tabelle; stringhe; funzioni e procedure e relativi meccanismi di passaggio dei parametri; costruttori di tipi di dato ed incapsulamento dell'informazione; allocazione dinamica di dati sullo heap; vettori dinamici; strutture di lista semplice, ordinata, doppia e circolare; ricorsione ed iterazione.
      • Algoritmi su sequenze di elementi e loro implementazione: ordinamento e ricerca
      TESTI/BIBLIOGRAFIA

      Le lezioni saranno in gran parte svolte con l'ausilio di slide. Le slide possono essere utilizzate come traccia ma *non* sono sufficienti per la preparazione dell'esame.

      • Durante le lezioni si farà in gran parte riferimento al libro: D.S. Malik Programmazione in C++ Apogeo, 2011, ISBN 978-88-503-2967-0
      • Va benissimo anche (ed e' consigliato come testo di riferimento): B. Stroustrup, Programming: Principles and Practice Using C++, Addison-Westley, 2009, ISBN 978-0321543721. 1272 pagine (disponibile solo in inglese - ce ne sono alcune copie in biblioteca)
        Quest'ultimo libro tratta però un programma molto più ampio di quello coperto dal corso. 
      URL Aula web
      INTRODUZIONE ALLA PROGRAMMAZIONE
      https://dibris.aulaweb.unige.it/
  • Chi
  • Come
    • MODALITA' DIDATTICHE
      • Lezioni frontali in aula
      • Laboratori guidati
      • Esercizi erogati tramite aulaweb

       Vista l'importanza culturale di questo insegnamento (alla base di tutti gli insegnamenti di informatica del corso di laurea) la frequenza è particolarmente consigliata e incoraggiata. 

      MODALITA' D'ESAME

      L'esame si compone di tre parti

      1. quattro quiz brevi sulla teoria, sostituibili con una prova scritta
      2. una prova di laboratorio
      3. verifiche in itinere 

      Maggiori dettagli sul meccanismo di valutazione verranno forniti sul modulo aulaweb del corso

  • Dove e quando
    • URL Aula web
      INTRODUZIONE ALLA PROGRAMMAZIONE
      https://dibris.aulaweb.unige.it/
      RICEVIMENTO STUDENTI
      Francesca Odone

      Su appuntamento; disponibile anche senza appuntamento per questioni brevi 

      Stefano Rovetta

      Su appuntamento; disponibile anche senza appuntamento per questioni brevi

      Maura Cerioli

      Su appuntamento o via mail.

      Appelli
      Data Ora Tipo Luogo Note
      17 gennaio 2018 9:00 Scritto Genova Aula 505+508
      19 gennaio 2018 9:00 Laboratorio Genova Laboratori SW1 + SW2 + aula 217
      6 febbraio 2018 9:00 Scritto Genova Aula 505+508
      7 febbraio 2018 9:00 Laboratorio Genova Laboratori SW1 + SW2 + aula 217
      19 giugno 2018 9:00 Scritto Genova Aula 505+508
      20 giugno 2018 9:00 Laboratorio Genova Laboratori SW1 + SW2 + aula 217
      10 luglio 2018 9:00 Scritto Genova Aula 505+508
      11 luglio 2018 9:00 Laboratorio Genova Laboratori SW1 + SW2 + aula 217
      4 settembre 2018 9:00 Scritto Genova Aula 505+508
      5 settembre 2018 9:00 Laboratorio Genova Laboratori SW1 + SW2 + aula 217
  • Contatti