34
Programmazione 1 Introduzione al corso Stefano Gualandi, @famo2spaghi Studio E14, Dipartimento di Matematica Blog: http://stegua.github.io

Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Programmazione 1Introduzione al corso

Stefano Gualandi, @famo2spaghi

Studio E14, Dipartimento di Matematica

Blog: http://stegua.github.io

Page 2: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Due questionari

1. Raccolta dati anagrafici per creazione account neilaboratori di ingegneria

2. Questionario conoscitivo perchè capire le vostreconoscenze in ambito informatico

3. Andare all’indrizzo:

http://mate.unipv.it/gualandi/programming/

Page 3: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Informazioni generali

• Siti del corsohttp://matematica.unipv.it/gualandi/programming

https://github.com/mathcoding/programming

• Orario lezioni:• Martedi 11h00/12h00 – Aula Beltrami, Dip. Matematica

• Givoedi 11h00/13h00 – Aula B3, Ingegneria

• Venerdi 11h00/13h00 – Aula C2, Ingegneria

• Tutorato: sarà attivato a partire da metà ottobre

Page 4: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Informazioni generali

• Esame: • Prova di programmazione in aula informatica

• Durata 2h30m

• A breve, saranno online i testi degli esercizi d’esamedell’anno precedente (2017/18, 2018/19) per un totale di 12 appelli

• Ricevimento:• In qualsiasi momento potete richiedere ricevimento

via email (usate l’email @universitadipavia.it!)

Page 5: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Comunicazioni con il docente

• Usare sempre l’email di ateneo

[email protected]

• Cercare di essere precisi nel fare le domande

• Non avere timore di venire a ricevimento

Page 6: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Testi di riferimento1. Slides e script usati a lezione (in italiano), reperibili sul sito

2. Testo di riferimento (in inglese)

3. Libro in italiano:PENSARE DA INFORMATIVO – IN PYTHONhttps://www.python.it/doc/Howtothink/Howtothink-html-it/index.htm

Page 7: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Metodi di Insegnamento: Active Learning

https://www.insidehighered.com/news/2019/09/09/study-how-smooth-talking-professors-can-lull-students-thinking-theyve-learned-more

Page 8: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Obiettivi del corso

1. Introdurre i concetti fondamentali di programmazione

2. Insegnare ad usare la programmazione come supporto alla risoluzione di problemi

3. Insegnare un linguaggio di programmazionemultiparadigma

Page 9: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Obiettivi del corso

1. Introdurre i concetti fondamentali di programmazione

2. Insegnare ad usare la programmazione come supporto alla risoluzione di problemi

3. Insegnare un linguaggio di programmazionemultiparadigma

4. Stimolare la vostra curiosità e fantasia

Page 10: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Obiettivi del corso

1. Introdurre i concetti fondamentali di programmazione

2. Insegnare ad usare la programmazione come supporto alla risoluzione di problemi

3. Insegnare un linguaggio di programmazionemultiparadigma

4. Stimolare la vostra curiosità e fantasia

5. Stimolare la vostra curiosità e fantasia

Page 11: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Obiettivi del corso

1. Introdurre i concetti fondamentali di programmazione

2. Insegnare ad usare la programmazione come supporto alla risoluzione di problemi

3. Insegnare un linguaggio di programmazionemultiparadigma

4. Stimolare la vostra curiosità e fantasia

5. Stimolare la vostra curiosità e fantasia

6. Stimolare la vostra curiosità e fantasia

Page 12: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Obiettivi del corso

1. Introdurre i concetti fondamentali di programmazione

2. Insegnare ad usare la programmazione come supporto alla risoluzione di problemi

3. Insegnare un linguaggio di programmazionemultiparadigma

4. Stimolare la vostra curiosità e fantasia

5. Stimolare la vostra curiosità e fantasia

6. Stimolare la vostra curiosità e fantasia

7. Coding is fun!

Page 13: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

https://www.codingame.com

Page 14: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

http://movielens.org

Page 15: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Machine Learning (at Google)

Page 16: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Machine Learning (at Google)

Page 17: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Programma del corso

• Introduzione ai linguaggi di programmazione

• Elementi di Programmazione funzionale

• Elementi di Programmazione procedurale

• Elementi di Programmazione orientata agli oggetti

• Cenni di complessità algoritmica

• Algoritmi di ricerca e di ordinamento

• Algoritmi di programmazione dinamica

NOTA: Python è usato come esempio di linguaggio di programmazione, non è il vero obiettivo del corso.

Page 18: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Risoluzione di problemi

• Formalismo per rappresentare un problema (e.g. grafi)

• Definizione formale del problema e degli obiettivi (e.g., quale funzione obiettivo?)

• Soluzione ammissibile, soluzione ottima

• Problema risolvibile/non risolvibile al calcolatore(complessità computazionale)

• Tempo di esecuzione vs. Tempo di sviluppo

Page 19: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Linguaggi di progammazione

• Perchè Python?• Semplice e divertente!

• Alternative:• Julia - http://julialang.org/

• R - http://www.r-project.org/

• C/C++ - http://en.cppreference.com

• Haskell - http://www.haskell.org/

• C# - google-it-yourself

• Java - http://www.java.com

Page 20: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

import antigravity

Page 21: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente
Page 22: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Perchè Python?

PRO:• È interattivo (interpretato, non compilato)• È semplice (no gestione diretta della memoria)• È semplice programmare delle visualizzazioni• È un linguaggio multiparadigma• Ha un elevato numero di librerie semplici da installare

CONTRO:1. Non é efficiente come un linguaggio compilato2. L'identazione del codice fa parte della semantica3. L'identazione del codice fa parte della semantica4. L'identazione del codice fa parte della semantica

Page 23: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Linguaggio Interpretato vs. Compilato

Page 24: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente
Page 25: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Ambiente di lavoro Python• A lezione e in laboratorio si farà riferimento a Python

>= 3.4 (attenzione a non scaricare o usare la versione di Python 2.7)

• Ambiente di riferimento Anaconda/Python >= 3.4:https://www.continuum.io/downloads

• Editors:• CONSIGLIATO: Spyder3 (installato con Anaconda)

• Sublime Text - http://www.sublimetext.com/

• Vim o Emacs

• Visual Code o Visual Studio (windows)

Page 26: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente
Page 27: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

“E' l'istess...“ Spyder3 1/2

Page 28: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

“E' l'istess...“ 1/2

Page 29: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Corsi online (self-paced)

• Coursera:http://www.coursera.org/learn/python

• Udacity:http://www.udacity.com/course/programming-foundations-with-python--ud036

• EDX:http://www.edx.org/course/learn-program-using-python-utarlingtonx-cse1309x

• Learn to code the hard way:http://learncodethehardway.org/python/

Page 30: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Altre risorse utili 1/2

GitHub Education Pack:http://education.github.com/pack

Page 31: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Altre risorse utili 2/2

Amazon Web Services educate:http://aws.amazon.com/education/awseducate/

Page 32: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

Competizioni• http://www.kaggle.com• http://www.crowdanalytix.com

Page 33: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

SymPy: Symbolic Mathematics

Page 34: Programmazione 1Informazioni generali •Esame: •Prova di programmazione in aula informatica •Durata 2h30m •A breve, saranno online i testi degli esercizi d’esame dell’annoprecedente

SymPy: Symbolic Mathematics