Italo EPICOCO

Italo EPICOCO

Ricercatore Universitario

Settore Scientifico Disciplinare ING-INF/05: SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI.

Dipartimento di Ingegneria dell'Innovazione

Centro Ecotekne Pal. O - S.P. 6, Lecce - Monteroni - LECCE (LE)

Ufficio, Piano terra

Telefono +39 0832 29 7304 +39 0832 29 7235

Area di competenza:

Ricercatore nel settore disciplinare ING-INF05 "Sistemi di elaborazione delle informazioni"
Attività di ricerca svolta nell'ambito del data mining, calcolo ad alte prestazioni, calcolo parallelo e distribuito

Orario di ricevimento

Lunedi' dalle 9.30 alle 12.30 previo appuntamento concordato tramite email  presso lo studio al secondo piano edificio "La Stecca" - Facoltà di Ingegneria - campus Ecotekne - Lecce

Recapiti aggiuntivi

office: +39 0832.29.7235
HPC Lab: +39 0832 297304
fax: +39 0832.29.7235

Visualizza QR Code Scarica la Visit Card

Curriculum Vitae

Italo Epicoco ha conseguito la laurea in Ingegneria Informatica nel febbraio 1998 presso il Politecnico di Milano.

Per tutto il 1998 ha lavorato presso i laboratori di ricerca del Politecnico di Milano per lo studio di metodologie di progettazione di circuiti VLSI orientata alla testablità e alla sintesi ottimale.

Dal dicembre 2002 ha assunto la posizione di ricercatore presso l’Università del Salento. Nel giugno 2003 ha conseguito il titolo di dottore di ricerca presso l’ISUFI di Lecce. Dal dicembre 2002 e' membro della Computer Society - IEEE

I principali ambiti di ricerca in cui è coinvolto riguardano lo studio delle problematiche relative al calcolo parallelo e distribuito ed in particolare alle problematiche relative alla gestione di risorse eterogenee in ambienti di Grid Computing ed ambienti collaborativi. Di particolare interesse risulta l'attivita' svolta nell'ambito del Centro Euromediterraneo per i Cambiamenti Climatici per l'ottimizzazione, parallelizzazione e benchmarking di modelli climatici su piattaforme massicciamente parallele. Durante la sua carriera ha pubblicato oltre 30 articoli su riviste internazionali, e’ stato autore di 3 book chapter

Scarica curriculum vitae

Didattica

A.A. 2022/2023

ARTIFICIAL INTELLIGENCE APPLICATIONS

Degree course COMPUTER ENGINEERING

Course type Laurea Magistrale

Language INGLESE

Credits 9.0

Teaching hours Ore totali di attività frontale: 81.0

Year taught 2022/2023

For matriculated on 2021/2022

Course year 2

Structure DIPARTIMENTO DI INGEGNERIA DELL'INNOVAZIONE

Subject matter ARTIFICIAL INTELLIGENCE

Location Lecce

FONDAMENTI DI INFORMATICA

Corso di laurea INGEGNERIA DELL'INFORMAZIONE

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 9.0

Ripartizione oraria Ore totali di attività frontale: 81.0

Anno accademico di erogazione 2022/2023

Per immatricolati nel 2022/2023

Anno di corso 1

Struttura DIPARTIMENTO DI INGEGNERIA DELL'INNOVAZIONE

Percorso PERCORSO COMUNE

Sede Lecce

A.A. 2021/2022

FONDAMENTI DI INFORMATICA

Corso di laurea INGEGNERIA DELL'INFORMAZIONE

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 9.0

Ripartizione oraria Ore totali di attività frontale: 81.0

Anno accademico di erogazione 2021/2022

Per immatricolati nel 2021/2022

Anno di corso 1

Struttura DIPARTIMENTO DI INGEGNERIA DELL'INNOVAZIONE

Percorso PERCORSO COMUNE

Sede Lecce

MOBILE APPLICATIONS DEVELOPMENT

Degree course DIGITAL HUMANITIES

Course type Laurea Magistrale

Language INGLESE

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

Year taught 2021/2022

For matriculated on 2021/2022

Course year 1

Structure DIPARTIMENTO DI BENI CULTURALI

Subject matter COMUNE/GENERICO

A.A. 2020/2021

FONDAMENTI DI INFORMATICA I

Corso di laurea INGEGNERIA DELL'INFORMAZIONE

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 54.0

Anno accademico di erogazione 2020/2021

Per immatricolati nel 2020/2021

Anno di corso 1

Struttura DIPARTIMENTO DI INGEGNERIA DELL'INNOVAZIONE

Percorso PERCORSO COMUNE

Sede Lecce

MOBILE APPLICATIONS DEVELOPMENT

Degree course DIGITAL HUMANITIES

Course type Laurea Magistrale

Language INGLESE

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

Year taught 2020/2021

For matriculated on 2020/2021

Course year 1

Structure DIPARTIMENTO DI BENI CULTURALI

Subject matter COMUNE/GENERICO

A.A. 2019/2020

FONDAMENTI DI INFORMATICA I

Corso di laurea INGEGNERIA DELL'INFORMAZIONE

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 54.0

Anno accademico di erogazione 2019/2020

Per immatricolati nel 2019/2020

Anno di corso 1

Struttura DIPARTIMENTO DI INGEGNERIA DELL'INNOVAZIONE

Percorso PERCORSO COMUNE

Sede Lecce

MOBILE APPLICATIONS DEVELOPMENT

Degree course EUROPEAN HERITAGE, DIGITAL MEDIA AND THE INFORMATION SOCIETY

Course type Laurea Magistrale

Language INGLESE

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

Year taught 2019/2020

For matriculated on 2019/2020

Course year 1

Structure DIPARTIMENTO DI BENI CULTURALI

Subject matter INTERNAZIONALE

A.A. 2018/2019

FONDAMENTI DI INFORMATICA

Corso di laurea INGEGNERIA DELL'INFORMAZIONE

Tipo corso di studio Laurea

Lingua ITALIANO

Crediti 7.0

Docente titolare Italo EPICOCO

Ripartizione oraria Ore totali di attività frontale: 63.0

  Ore erogate dal docente Italo EPICOCO: 54.0

Anno accademico di erogazione 2018/2019

Per immatricolati nel 2018/2019

Anno di corso 1

Struttura DIPARTIMENTO DI INGEGNERIA DELL'INNOVAZIONE

Percorso PERCORSO COMUNE

Sede Lecce

MOBILE APPLICATIONS DEVELOPMENT

Degree course EUROPEAN HERITAGE, DIGITAL MEDIA AND THE INFORMATION SOCIETY

Course type Laurea Magistrale

Language INGLESE

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

Year taught 2018/2019

For matriculated on 2018/2019

Course year 1

Structure DIPARTIMENTO DI BENI CULTURALI

Subject matter INTERNAZIONALE

Torna all'elenco
ARTIFICIAL INTELLIGENCE APPLICATIONS

Degree course COMPUTER ENGINEERING

Subject area ING-INF/05

Course type Laurea Magistrale

Credits 9.0

Teaching hours Ore totali di attività frontale: 81.0

For matriculated on 2021/2022

Year taught 2022/2023

Course year 2

Semestre Secondo Semestre (dal 01/03/2023 al 09/06/2023)

Language INGLESE

Subject matter ARTIFICIAL INTELLIGENCE (A182)

Location Lecce

Students are expected to have the following background: Knowledge of basic computer science principles and skills, at a level sufficient to write a reasonably non-trivial computer program. Familiarity with the basic probability theory. Familiarity with the basic linear algebra. Good knowledge of the contents of first level courses on Informatics.

The course will briefly introduc the multi and many cores processors with a focus on GPUs. The course will provide a broad introduction to Machine Learning and Neural Networks Topics which include: Linear regression, Linear regression with multiple variables, Regularization, Logistic regression, Neural Networks, Advice for Machine Learning, Machine Learning system design, Support Vector Machines. Hands-off are also organized to provide students the capacity to develop specific use cases, using the Python language and Jupiter Notebooks.

KNOWLEDGE AND UNDERSTANDING:

By the end of the course, students will gain knowledge of the python programming and basic theoretical knowledge of Machine Learning as well as the main python libraries for machine learning.

APPLYING KNOWLEDGE AND UNDERSTANDING:

The students will know how to use and analize data and will be able to develop Machine Learning applications.

MAKING JUDGEMENTS

The students will also be able to critically assess the different Machine Learning approaches and evaluate the efficiency and accuracy of the results.

COMMUNICATION SKILLS:

By the end of the course, students will be able to use a clear language and an adequate scientific terminology to argue on the topics dealt with in the course.

LEARNING SKILLS:

Students will be able to classify, schematize, summarize and process the acquired knowledge. The students will have the appropriate skills to develop and widen their knowledge of machine learning approach with particular regard to the use of reference documentation and other information available online.

The course consists of frontal lessons using slides made available to students via the elearnign plartform. The frontal lessons are aimed at improving students' knowledge and understanding through the presentation of theories, models and methods. The exercises are aimed at understanding the algorithms and models presented and require a practical programming skill with the tool and software presented.

Oral exam. During the exam the student will present a short project based on machine learnging approach; he/she is, then, asked to illustrate theoretical topics in order to verify his/her knowledge and understanding of the selected topics.

Dates for the exams will be published on the official University web site.

Students may contact the instructor by email or at the end of class meetings or through MSTeams chat.

GPU arhcitecture and GPU programming

Introduction to Python

Machine Learning: What we will learn on Machine Learning.
Supervised Learning Algorithms: - Linear Regression - Classihcation.
Hypothesis Function for Linear Regression: - Representation of the hypothesis function for
regression problems.
Linear Regression with one variable - Cost Function: - Analysis of the hypothesis function
and the Cost Function - Use of graph for their interpretation (3 hours).
Countour Plots: Use of the Contour plots to have a better intuition of the Cost Function (3
hours).
Minimization of the Cost Function-Gradient Descent Algorithm: Use of the Gradient Descent
to minimize the Cost Function (3 hours).
Linear Regression with multiple features: Hypothesis function for Multivariate Linear
regression (3 hours).
Gradient Descent for Multivariate Linear Regression: Cost Function and Gradient Descent
Algorithm for Multivariate Linear Regression (3 hours).
Feature Scaling: Practical tricks for making Gradient Descent work well.
Learning Rate: Another practical tricks for making Gradient Descent work well.
Features and Polynomial Regression: How to use the machinery of Linear Regression to ht
very complicated, even very non linear functions.
Normal Equation: - Normal Equation as a better way to solve for the optimal value of the
Linear Regression parameters - Advantages and disadvantages of Gradient Descent and
Normal Equation methods.
Normal Equation and Non-Invertibility: Cases of Non-Invertibility.
Logistic Regression: How do we develop a Classihcation Algorithm?
Logistic Regression - Hypothesis Representation: Mathematical formula dehning the
hypothesis for Logistic Regression and its probabilistic interpretation.
Decision Boundaries: - What Decision Boundaries mean? - Example for non-linear Decision
Boundaries.
Logistic Regression-Cost Function: - Cost Function for Logistic Regression - Simplihed Cost
Function and Gradient Descent.
Multi-class Classihcation: One-versus-all Classihcation.
Overhtting and Regularization: - The problem of Overhtting - Regularization - Regularized
Cost Function.
Neural Networks: Non Linear hypothesis, Neurons and the brain, Model representation,
Multi-class classihcation, Cost Function & Backpropagation algorithm
Advice for Applying ML: Model selection &Training_Validation_Test sets
Machine learning system design_Error analysis, Trading off precision and recall

Introduction to Machine Learning with Python: A Guide for Data Scientists

ARTIFICIAL INTELLIGENCE APPLICATIONS (ING-INF/05)
FONDAMENTI DI INFORMATICA

Corso di laurea INGEGNERIA DELL'INFORMAZIONE

Settore Scientifico Disciplinare ING-INF/05

Tipo corso di studio Laurea

Crediti 9.0

Ripartizione oraria Ore totali di attività frontale: 81.0

Per immatricolati nel 2022/2023

Anno accademico di erogazione 2022/2023

Anno di corso 1

Semestre Primo Semestre (dal 19/09/2022 al 16/12/2022)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Non vi è alcuna propedeuticità.

Il corso mira a fornire sia elementi di teoria dell’informatica che i principi e le basi per la programmazione. Partendo dal concetto di macchina programmabile in grado di svolgere operazioni seguendo una sequenza codificata di istruzioni elementari si passa alla strutturazione di un algoritmo e quindi alla competenze che permettono di scomporre un problema “complesso” per la macchina in una sequenza di operazioni “elementari”. Durante il corso verranno inoltre studiati gli algoritmi di ordinamento e di ricerca più noti con l’obiettivo di illustrare come differenti scelte nella risoluzione di uno stesso problema possano incidere sull’efficienza di un algoritmo e sui tempi di esecuzione al calcolatore. Si affornteranno infine elementi sull'architettura dei calcolatori.

Strutturare i dati in modo opportuno è uno dei principali fattori che influenzano l’efficienza di un algoritmo. Durante il corso si studieranno le strutture dati base quali le liste. Infine il corso fornirà gli strumenti per lo sviluppo di applicazioni attraverso ambienti di programmazione integrati IDE utilizzando il linguaggio C e alcuni cenni sull’analisi della complessità computazionale degli algoritmi.

Conoscenze e comprensione
I risultati attesi di apprendimento prevedono che al termine del corso gli studenti siano in grado di:

1) illustrare le principali caratteristiche dell’architettura di un calcolatore;
2) comprendere le metodologie di rappresentazione e codifica dell’informazione;
3) progettare e implementare un algoritmo;
4) riconoscere ed applicare gli elementi caratterizzanti un linguaggio di programmazione procedurale strutturato (tipi dato, strutture di controllo, funzioni e procedure, gestione dei file e strutture dinamiche);
5) riconoscere le principali strutture dati dinamiche (liste, code, alberi) e i principali algoritmi di oridnamento e di ricerca;
6) analizzare, interpretare, comprendere e produrre listati di codice in linguaggio C utilizzando degli appositi ambienti di programmazione (IDE).
7) comprendere l'architettura hardware dei calcolatori

Capacità di applicare conoscenze e comprensione
Gli studenti saranno in grado di applicare le conoscenze acquisite in diversi ambiti appicativi ed in generale per la risoluzione al computer di processi e sistemi. 

Autonomia di giudizio
Il corso favorisce l'autonomia di giudizio degli studenti attraverso l'analisi critica di problemi computazionali per i quali trovare soluzioni software in grado di risolverlo. Diverse soluzioni proposte dagli studenti sono poste a confronto e valutate criticamente dagli studenti stessi.

Abilità comunicative
È fondamentale che gli studenti siano in grado di comunicare con un pubblico vario e composito, non omogeneo culturalmente, in modo chiaro, logico ed efficace, utilizzando gli strumenti metodologici acquisiti e le loro conoscenze scientifiche e, in particolar modo, il lessico di specialità.
Il corso favorisce lo sviluppo delle abilità inerenti le capacità di esporre in termini precisi e formali le proprietà e le caratteristiche di aloritmi e la descrizione di possibili soluzioni algoritmiche a problemi reali.

Le lezioni teoriche si svolgeranno in aula utilizzando slide con esempi alla lavagna. Le esercitazioni si svolgeranno in laboratorio informatico con esercizi svolti direttamente al computer inerenti la programmazione in linguaggio C.

Le lezioni saranno inoltre registrate sulla piattaforma Microsoft Teams

 

Le slide del corso saranno disponibili sulla piattaforma formazioneonline all'indirizzo: https://formazioneonline.unisalento.it/course/view.php?id=717
Utilizzare le proprie credenziali di ateneo per accedere alla piattaforma formazioneonline; successivamente si usi la password "fondainfo1" per accedere ai contenuti del corso di Fondamenti di Informatica I

 

L’esame è composto da una prova scritta durante la quale si verificheranno le capacità acquisite nella progettazione di un algoritmo, nel riconoscimento delle principali strutture dati e degli algoritmi di base visti a lezione e nell'analisi della complessità computazionale di un algoritmo oltre agli aspetti teorici affrontati nel corso. Durante la prova scritta non sarà consentito l’uso di manuali nè altro materiale di supporto.

Oltre alla prova scritta ci sarà una prova orale/programmazione alla quale si accede solo dopo aver superato la prova scritta. Durante la prova di programmazione verrà valutata la capacità pratica nello sviluppare un semplice programma eseguibile al calcolatore in linguaggio C. La prova di programmazione dura 1 ora, il programma realizzato durante la prova di programmazione verra’ quindi discusso appena terminata la prova. Durante la prova di programmazione si può usare il proprio computer e tutti i manuali e le fonti online utili a risolvere l’esercizio assegnato.

Le date degli appelli d'esame sono disponibili al seguente link: calendario esami di profitto

- Architettura di Von Neumann, concetto di algoritmo, macchina astratta (4 ore)
- Rapresentazione delle informazioni (10 ore)
- Porte logiche e algebra booleana (2 ore)
- Reti combinatorie (4ore)
- Bistabili e reti sequenziali (4 ore)
- Processore e unità aritmetico-logica (4 ore)
- Gerarchia della memoria (4 ore)
- Pipeline e parallelismo a livello di istruzione (4 ore)
- Linguaggio assembler (5 ore)
- Strutturare un algoritmo (6 ore)
- Costrutti del linguaggio C, variabili e tipi di dato, funzioni, array puntatori e gestione dinamica della memoria (12 ore)
- Funzioni ricorsive (4 ore)
- Tipi di dato astratto: Pila, Coda, Lista, Heap Tree (8 ore)
- Cenni su analisi della complessità computazionale (2 ore)
- Algoritmi di ordinamento: insertion sort, selection sort, bubble sort, merge sort, quick sort, heap sort (8 ore)

[1] B. W. Kernighan, D. M. Ritchie, “Il linguaggio C. Principi di programmazione e manuale di riferimento. Ediz. MyLab. Con Contenuto digitale per download e accesso on line”, ISBN-13: 978-8891908230
[2] Dino Mandrioli, Stefano Ceri, Licia Sbattella, Paolo Cremonesi, Gianpaolo Cugola, “Informatica: Arte e Mestiere  4° Ed.”, McGraw-Hill,, 2014. ISBN: 9788838668487.
[3] Dispense fornite dal docente presenti nellap piattaforma formazioneonline (si rimanda alla sezione "metodi didattici" per l'indicazione del link alla piattaforma)

FONDAMENTI DI INFORMATICA (ING-INF/05)
FONDAMENTI DI INFORMATICA

Corso di laurea INGEGNERIA DELL'INFORMAZIONE

Settore Scientifico Disciplinare ING-INF/05

Tipo corso di studio Laurea

Crediti 9.0

Ripartizione oraria Ore totali di attività frontale: 81.0

Per immatricolati nel 2021/2022

Anno accademico di erogazione 2021/2022

Anno di corso 1

Semestre Primo Semestre (dal 20/09/2021 al 17/01/2022)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Non vi è alcuna propedeuticità.

Il corso mira a fornire sia elementi di teoria dell’informatica che i principi e le basi per la programmazione. Partendo dal concetto di macchina programmabile in grado di svolgere operazioni seguendo una sequenza codificata di istruzioni elementari si passa alla strutturazione di un algoritmo e quindi alla competenze che permettono di scomporre un problema “complesso” per la macchina in una sequenza di operazioni “elementari”. Durante il corso verranno inoltre studiati gli algoritmi di ordinamento e di ricerca più noti con l’obiettivo di illustrare come differenti scelte nella risoluzione di uno stesso problema possano incidere sull’efficienza di un algoritmo e sui tempi di esecuzione al calcolatore. Si affornteranno infine elementi sull'architettura dei calcolatori.

Strutturare i dati in modo opportuno è uno dei principali fattori che influenzano l’efficienza di un algoritmo. Durante il corso si studieranno le strutture dati base quali le liste. Infine il corso fornirà gli strumenti per lo sviluppo di applicazioni attraverso ambienti di programmazione integrati IDE utilizzando il linguaggio C e alcuni cenni sull’analisi della complessità computazionale degli algoritmi.

Conoscenze e comprensione
I risultati attesi di apprendimento prevedono che al termine del corso gli studenti siano in grado di:

1) illustrare le principali caratteristiche dell’architettura di un calcolatore;
2) comprendere le metodologie di rappresentazione e codifica dell’informazione;
3) progettare e implementare un algoritmo;
4) riconoscere ed applicare gli elementi caratterizzanti un linguaggio di programmazione procedurale strutturato (tipi dato, strutture di controllo, funzioni e procedure, gestione dei file e strutture dinamiche);
5) riconoscere le principali strutture dati dinamiche (liste, code, alberi) e i principali algoritmi di oridnamento e di ricerca;
6) analizzare, interpretare, comprendere e produrre listati di codice in linguaggio C utilizzando degli appositi ambienti di programmazione (IDE).
7) comprendere l'architettura hardware dei calcolatori

Capacità di applicare conoscenze e comprensione
Gli studenti saranno in grado di applicare le conoscenze acquisite in diversi ambiti appicativi ed in generale per la risoluzione al computer di processi e sistemi. 

Autonomia di giudizio
Il corso favorisce l'autonomia di giudizio degli studenti attraverso l'analisi critica di problemi computazionali per i quali trovare soluzioni software in grado di risolverlo. Diverse soluzioni proposte dagli studenti sono poste a confronto e valutate criticamente dagli studenti stessi.

Abilità comunicative
È fondamentale che gli studenti siano in grado di comunicare con un pubblico vario e composito, non omogeneo culturalmente, in modo chiaro, logico ed efficace, utilizzando gli strumenti metodologici acquisiti e le loro conoscenze scientifiche e, in particolar modo, il lessico di specialità.
Il corso favorisce lo sviluppo delle abilità inerenti le capacità di esporre in termini precisi e formali le proprietà e le caratteristiche di aloritmi e la descrizione di possibili soluzioni algoritmiche a problemi reali.

Le lezioni teoriche si svolgeranno in aula utilizzando slide con esempi alla lavagna. Le esercitazioni si svolgeranno in laboratorio informatico con esercizi svolti direttamente al computer inerenti la programmazione in linguaggio C.

Le lezioni saranno erogate anche a distanza attraverso la piattaforma Teams di Microsoft registrandosi al team con il codice accl62h

Per le istruzioni sull'accesso alla piattaforma Teams si rimanda alla guida disponibile su:
https://www.unisalento.it/lezioni-online

 

Le slide del corso saranno disponibili sulla piattaforma formazioneonline all'indirizzo: https://formazioneonline.unisalento.it/course/view.php?id=717
Utilizzare le proprie credenziali di ateneo per accedere alla piattaforma formazioneonline; successivamente si usi la password "fondainfo1" per accedere ai contenuti del corso di Fondamenti di Informatica I

L’esame è composto da una prova scritta durante la quale si verificheranno le capacità acquisite nella progettazione di un algoritmo, nel riconoscimento delle principali strutture dati e degli algoritmi di base visti a lezione e nell'analisi della complessità computazionale di un algoritmo oltre agli aspetti teorici affrontati nel corso. Durante la prova scritta non sarà consentito l’uso di manuali nè altro materiale di supporto. Tale prova puo' essere sostituita da equivalente prova orale in forma telematica con esercizi da svolgere sul momento.

Oltre alla prova scritta ci sarà una prova orale/programmazione alla quale si accede solo dopo aver superato la prova scritta. Durante la prova di programmazione verrà valutata la capacità pratica nello sviluppare un semplice programma eseguibile al calcolatore in linguaggio C. La prova di programmazione dura 1 ora, il programma realizzato durante la prova di programmazione verra’ quindi discusso appena terminata la prova. Durante la prova di programmazione si può usare il proprio computer e tutti i manuali e le fonti online utili a risolvere l’esercizio assegnato. La prova di programmazione puo' essere svolta in presenza in laboratorio oppure in modalita' telematica su piattaforma Teams di Microsoft

Le date degli appelli d'esame sono disponibili al seguente link: calendario esami di profitto

- Architettura di Von Neumann, concetto di algoritmo, macchina astratta (4 ore)
- Rapresentazione delle informazioni (10 ore)
- Porte logiche e algebra booleana (2 ore)
- Reti combinatorie (4ore)
- Bistabili e reti sequenziali (4 ore)
- Processore e unità aritmetico-logica (4 ore)
- Gerarchia della memoria (4 ore)
- Pipeline e parallelismo a livello di istruzione (4 ore)
- Linguaggio assembler (5 ore)
- Strutturare un algoritmo (6 ore)
- Costrutti del linguaggio C, variabili e tipi di dato, funzioni, array puntatori e gestione dinamica della memoria (12 ore)
- Funzioni ricorsive (4 ore)
- Tipi di dato astratto: Pila, Coda, Lista, Heap Tree (8 ore)
- Cenni su analisi della complessità computazionale (2 ore)
- Algoritmi di ordinamento: insertion sort, selection sort, bubble sort, merge sort, quick sort, heap sort (8 ore)

[1] B. W. Kernighan, D. M. Ritchie, “Il linguaggio C. Principi di programmazione e manuale di riferimento. Ediz. MyLab. Con Contenuto digitale per download e accesso on line”, ISBN-13: 978-8891908230
[2] Dino Mandrioli, Stefano Ceri, Licia Sbattella, Paolo Cremonesi, Gianpaolo Cugola, “Informatica: Arte e Mestiere  4° Ed.”, McGraw-Hill,, 2014. ISBN: 9788838668487.
[3] Dispense fornite dal docente presenti nellap piattaforma formazioneonline (si rimanda alla sezione "metodi didattici" per l'indicazione del link alla piattaforma)

FONDAMENTI DI INFORMATICA (ING-INF/05)
MOBILE APPLICATIONS DEVELOPMENT

Degree course DIGITAL HUMANITIES

Subject area ING-INF/05

Course type Laurea Magistrale

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

For matriculated on 2021/2022

Year taught 2021/2022

Course year 1

Semestre Primo Semestre (dal 20/09/2021 al 14/01/2022)

Language INGLESE

Subject matter COMUNE/GENERICO (999)

There are no prerequisites; indeed, the course is meant for students without previous programming experience.

The course covers all of the fundamental aspects related to the development of a mobile application using Apple iOS. Meant for students without previous programming experience, the course starts covering the new programming language Swift, using the integrated development environment Xcode. After introducing the Swift programming language and the use of Xcode to develop a simple application, the students will create a basic prototype application, and, gradually, they will implement the application by adding new features until they implement a real, usable application.

The course aims to provide students with the skills required to develop a mobile application using Apple iOS. Therefore, at the end of this course the students will know:

  • The programming language Swift;
  • The integrated development environment Xcode;
  • The fundamental iOS frameworks and their related APIs.

Moreover, at the end of this course the students will acquire the following expertise and technical capabilities:

  • Develop, starting from an initial project idea, a mobile application using Apple iOS;
  • Problem solving;
  • Reading technical documentation;
  • Team working.

– Classroom lectures;
– Laboratory exercises;
– Team work.

The course is based on classroom lectures and laboratory exercises (for a total of 42 hours), in which the students are directly involved. Moreover, there will be some team work assigned, in order for the students to solve exercises and small homework projects. Attending the lectures is strongly advised, since the course is mainly based on the hands on approach.

The lectures can be also given through the platform Microsft Teams at the following link:

https://teams.microsoft.com/l/team/19%3ab79bb99079484236b17f116d3fe160c6%40thread.tacv2/conversations?groupId=1cf8388e-bc1c-4c54-9750-c462ba328895&tenantId=8d49eb30-429e-4944-8349-dee009bdd7da

Students will be evaluated through an oral exam. The students will be required to discuss a project assigned to them. The exam will evaluate how much the students have reached the following didactic aims:

  • Knowledge of the Swift programming language;
  • Ability to design and implement a mobile application using Apple iOS.

Evaluation will take into account the assigned project, the exposition, the formal correctness and the ability to argue and support the student’s theses.

The exam sessions are available through this link: exam sessions

Swift Playgrounds
Build First App
Introduction to Auto Layout
Designing UI Using StackViews
Introduction to Prototyping
Creating a SimpleTable-based App
Using UI AlertController
Introduction to NavigationController and Segue
Introductionto Object-Oriented Programming
Self Sizing Cells and Dynamic Type
Working with Maps
Introduction to StaticTableViews, UIImagePickerController and NSLayoutConstraint
Working with CoreData

Textbook:

Simon Ng, Beginning iOS 10 Programming with Swift. AppCoda

http://www.appcoda.com/swift/

 

Additional, useful references:

The Swift Programming Language. Apple Inc.

Simon Ng, Intermediate Swift and iOS 10 Programming. AppCoda

http://www.appcoda.com/intermediate-swift-programming-book/

MOBILE APPLICATIONS DEVELOPMENT (ING-INF/05)
FONDAMENTI DI INFORMATICA I

Corso di laurea INGEGNERIA DELL'INFORMAZIONE

Settore Scientifico Disciplinare ING-INF/05

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 54.0

Per immatricolati nel 2020/2021

Anno accademico di erogazione 2020/2021

Anno di corso 1

Semestre Secondo Semestre (dal 01/03/2021 al 11/06/2021)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Non vi è alcuna propedeuticità.

Il corso mira a fornire sia elementi di teoria dell’informatica che i principi e le basi per la programmazione. Partendo dal concetto di macchina programmabile in grado di svolgere operazioni seguendo una sequenza codificata di istruzioni elementari si passa alla strutturazione di un algoritmo e quindi alla competenze che permettono di scomporre un problema “complesso” per la macchina in una sequenza di operazioni “elementari”. Durante il corso verranno inoltre studiati gli algoritmi di ordinamento e di ricerca più noti con l’obiettivo di illustrare come differenti scelte nella risoluzione di uno stesso problema possano incidere sull’efficienza di un algoritmo e sui tempi di esecuzione al calcolatore.

Strutturare i dati in modo opportuno è uno dei principali fattori che influenzano l’efficienza di un algoritmo. Durante il corso si studieranno le strutture dati base quali le liste. Infine il corso fornirà gli strumenti per lo sviluppo di applicazioni attraverso ambienti di programmazione integrati IDE utilizzando il linguaggio C e alcuni cenni sull’analisi della complessità computazionale degli algoritmi.

Conoscenze e comprensione
I risultati attesi di apprendimento prevedono che al termine del corso gli studenti siano in grado di:

1) illustrare le principali caratteristiche dell’architettura di un calcolatore;
2) comprendere le metodologie di rappresentazione e codifica dell’informazione;
3) progettare e implementare un algoritmo;
4) riconoscere ed applicare gli elementi caratterizzanti un linguaggio di programmazione procedurale strutturato (tipi dato, strutture di controllo, funzioni e procedure, gestione dei file e strutture dinamiche);
5) riconoscere le principali strutture dati dinamiche (liste, code, alberi) e i principali algoritmi di oridnamento e di ricerca;
6) analizzare, interpretare, comprendere e produrre listati di codice in linguaggio C utilizzando degli appositi ambienti di programmazione (IDE).

Capacità di applicare conoscenze e comprensione
Gli studenti saranno in grado di applicare le conoscenze acquisite in diversi ambiti appicativi ed in generale per la risoluzione al computer di processi e sistemi. 

Autonomia di giudizio
Il corso favorisce l'autonomia di giudizio degli studenti attraverso l'analisi critica di problemi computazionali per i quali trovare soluzioni software in grado di risolverlo. Diverse soluzioni proposte dagli studenti sono poste a confronto e valutate criticamente dagli studenti stessi.

Abilità comunicative
È fondamentale che gli studenti siano in grado di comunicare con un pubblico vario e composito, non omogeneo culturalmente, in modo chiaro, logico ed efficace, utilizzando gli strumenti metodologici acquisiti e le loro conoscenze scientifiche e, in particolar modo, il lessico di specialità.
Il corso favorisce lo sviluppo delle abilità inerenti le capacità di esporre in termini precisi e formali le proprietà e le caratteristiche di aloritmi e la descrizione di possibili soluzioni algoritmiche a problemi reali.

Le lezioni teoriche si svolgeranno in aula utilizzando slide con esempi alla lavagna. Le esercitazioni si svolgeranno in laboratorio informatico con esercizi svolti direttamente al computer inerenti la programmazione in linguaggio C.

Le lezioni saranno erogate anche a distanza attraverso la piattaforma Teams di Microsoft registrandosi al team con il codice accl62h

Per le istruzioni sull'accesso alla piattaforma Teams si rimanda alla guida disponibile su:
https://www.unisalento.it/lezioni-online

 

Le slide del corso saranno disponibili sulla piattaforma formazioneonline all'indirizzo: https://formazioneonline.unisalento.it/course/view.php?id=717
Utilizzare le proprie credenziali di ateneo per accedere alla piattaforma formazioneonline; successivamente si usi la password "fondainfo1" per accedere ai contenuti del corso di Fondamenti di Informatica I

L’esame è composto da una prova scritta durante la quale si verificheranno le capacità acquisite nella progettazione di un algoritmo, nel riconoscimento delle principali strutture dati e degli algoritmi di base visti a lezione e nell'analisi della complessità computazionale di un algoritmo oltre agli aspetti teorici affrontati nel corso. Durante la prova scritta non sarà consentito l’uso di manuali nè altro materiale di supporto. Tale prova puo' essere sostituita da equivalente prova orale in forma telematica con esercizi da svolgere sul momento.

Oltre alla prova scritta ci sarà una prova orale/programmazione alla quale si accede solo dopo aver superato la prova scritta. Durante la prova di programmazione verrà valutata la capacità pratica nello sviluppare un semplice programma eseguibile al calcolatore in linguaggio C. La prova di programmazione dura 1 ora, il programma realizzato durante la prova di programmazione verra’ quindi discusso appena terminata la prova. Durante la prova di programmazione si può usare il proprio computer e tutti i manuali e le fonti online utili a risolvere l’esercizio assegnato. La prova di programmazione puo' essere svolta in presenza in laboratorio oppure in modalita' telematica su piattaforma Teams di Microsoft

 

Per le istruzioni sull'uso della piattaforma Teams di Microsoft si rimanda alla guida disponibile su:

https://drive.google.com/file/d/11SVWGyWOnEoNwoPXwg5gsDmQuhj68gVy/view

Le date degli appelli d'esame sono disponibili al seguente link: calendario esami di profitto

- Architettura di Von Neumann, concetto di algoritmo, macchina astratta (4 ore)
- Rapresentazione delle informazioni (10 ore)
- Strutturare un algoritmo (6 ore)
- Costrutti del linguaggio C, variabili e tipi di dato, funzioni, array puntatori e gestione dinamica della memoria (12 ore)
- Funzioni ricorsive (4 ore)
- Tipi di dato astratto: Pila, Coda, Lista, Heap Tree (8 ore)
- Cenni su analisi della complessità computazionale (2 ore)
- Algoritmi di ordinamento: insertion sort, selection sort, bubble sort, merge sort, quick sort, heap sort (8 ore)

[1] B. W. Kernighan, D. M. Ritchie, “Il linguaggio C. Principi di programmazione e manuale di riferimento. Ediz. MyLab. Con Contenuto digitale per download e accesso on line”, ISBN-13: 978-8891908230
[2] Dino Mandrioli, Stefano Ceri, Licia Sbattella, Paolo Cremonesi, Gianpaolo Cugola, “Informatica: Arte e Mestiere  4° Ed.”, McGraw-Hill,, 2014. ISBN: 9788838668487.
[3] Dispense fornite dal docente presenti nellap piattaforma formazioneonline (si rimanda alla sezione "metodi didattici" per l'indicazione del link alla piattaforma)

FONDAMENTI DI INFORMATICA I (ING-INF/05)
MOBILE APPLICATIONS DEVELOPMENT

Degree course DIGITAL HUMANITIES

Subject area ING-INF/05

Course type Laurea Magistrale

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

For matriculated on 2020/2021

Year taught 2020/2021

Course year 1

Semestre Primo Semestre (dal 21/09/2020 al 15/01/2021)

Language INGLESE

Subject matter COMUNE/GENERICO (999)

There are no prerequisites; indeed, the course is meant for students without previous programming experience.

The course covers all of the fundamental aspects related to the development of a mobile application using Apple iOS. Meant for students without previous programming experience, the course starts covering the new programming language Swift, using the integrated development environment Xcode. After introducing the Swift programming language and the use of Xcode to develop a simple application, the students will create a basic prototype application, and, gradually, they will implement the application by adding new features until they implement a real, usable application.

The course aims to provide students with the skills required to develop a mobile application using Apple iOS. Therefore, at the end of this course the students will know:

  • The programming language Swift;
  • The integrated development environment Xcode;
  • The fundamental iOS frameworks and their related APIs.

Moreover, at the end of this course the students will acquire the following expertise and technical capabilities:

  • Develop, starting from an initial project idea, a mobile application using Apple iOS;
  • Problem solving;
  • Reading technical documentation;
  • Team working.

– Classroom lectures;
– Laboratory exercises;
– Team work.

The course is based on classroom lectures and laboratory exercises (for a total of 42 hours), in which the students are directly involved. Moreover, there will be some team work assigned, in order for the students to solve exercises and small homework projects. Attending the lectures is strongly advised, since the course is mainly based on the hands on approach.

The lectures can be also given through the platform Microsft Teams at the following link:

https://teams.microsoft.com/l/team/19%3ab79bb99079484236b17f116d3fe160c6%40thread.tacv2/conversations?groupId=1cf8388e-bc1c-4c54-9750-c462ba328895&tenantId=8d49eb30-429e-4944-8349-dee009bdd7da

Students will be evaluated through an oral exam. The students will be required to discuss a project assigned to them. The exam will evaluate how much the students have reached the following didactic aims:

  • Knowledge of the Swift programming language;
  • Ability to design and implement a mobile application using Apple iOS.

Evaluation will take into account the assigned project, the exposition, the formal correctness and the ability to argue and support the student’s theses.

The exam can be done also thorugh the Microsoft teams platform. Details on the connections can be found at the following link:
https://drive.google.com/file/d/11SVWGyWOnEoNwoPXwg5gsDmQuhj68gVy/view

The exam sessions are available through this link: exam sessions

Swift Playgrounds
Build First App
Introduction to Auto Layout
Designing UI Using StackViews
Introduction to Prototyping
Creating a SimpleTable-based App
Using UI AlertController
Introduction to NavigationController and Segue
Introductionto Object-Oriented Programming
Self Sizing Cells and Dynamic Type
Working with Maps
Introduction to StaticTableViews, UIImagePickerController and NSLayoutConstraint
Working with CoreData

Textbook:

Simon Ng, Beginning iOS 10 Programming with Swift. AppCoda

http://www.appcoda.com/swift/

 

Additional, useful references:

The Swift Programming Language. Apple Inc.

Simon Ng, Intermediate Swift and iOS 10 Programming. AppCoda

http://www.appcoda.com/intermediate-swift-programming-book/

MOBILE APPLICATIONS DEVELOPMENT (ING-INF/05)
FONDAMENTI DI INFORMATICA I

Corso di laurea INGEGNERIA DELL'INFORMAZIONE

Settore Scientifico Disciplinare ING-INF/05

Tipo corso di studio Laurea

Crediti 6.0

Ripartizione oraria Ore totali di attività frontale: 54.0

Per immatricolati nel 2019/2020

Anno accademico di erogazione 2019/2020

Anno di corso 1

Semestre Secondo Semestre (dal 02/03/2020 al 05/06/2020)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Non vi è alcuna propedeuticità.

Per l'analisi della complessità computazionele degli algoritmi sono richieste conoscenze di analisi matematica quali:
- studio di funzioni e analisi asintotica,
- serie numeriche.

Il corso mira a fornire sia elementi di teoria dell’informatica che i principi e le basi per la programmazione. Partendo dal concetto di macchina programmabile in grado di svolgere operazioni seguendo una sequenza codificata di istruzioni elementari si passa alla strutturazione di un algoritmo e quindi alla competenze che permettono di scomporre un problema “complesso” per la macchina in una sequenza di operazioni “elementari”. Durante il corso verranno inoltre studiati gli algoritmi di ordinamento e di ricerca più noti con l’obiettivo di illustrare come differenti scelte nella risoluzione di uno stesso problema possano incidere sull’efficienza di un algoritmo e sui tempi di esecuzione al calcolatore.

Strutturare i dati in modo opportuno è uno dei principali fattori che influenzano l’efficienza di un algoritmo. Durante il corso si studieranno le strutture dati base quali le liste. Infine il corso fornirà gli strumenti per lo sviluppo di applicazioni attraverso ambienti di programmazione integrati IDE utilizzando il linguaggio C e alcuni cenni sull’analisi della complessità computazionale degli algoritmi.

Conoscenze e comprensione
I risultati attesi di apprendimento prevedono che al termine del corso gli studenti siano in grado di:

1) illustrare le principali caratteristiche dell’architettura di un calcolatore;
2) comprendere le metodologie di rappresentazione e codifica dell’informazione;
3) progettare e implementare un algoritmo;
4) riconoscere ed applicare gli elementi caratterizzanti un linguaggio di programmazione procedurale strutturato (tipi dato, strutture di controllo, funzioni e procedure, gestione dei file e strutture dinamiche);
5) riconoscere le principali strutture dati dinamiche (liste, code, alberi) e i principali algoritmi di oridnamento e di ricerca;
6) effettuare l'analisi della complessità computazionale di un algoritmo;
7) analizzare, interpretare, comprendere e produrre listati di codice in linguaggio C utilizzando degli appositi ambienti di programmazione (IDE).

Capacità di applicare conoscenze e comprensione
Gli studenti saranno in grado di applicare le conoscenze acquisite in diversi ambiti appicativi ed in generale per la risoluzione al computer di processi e sistemi. 

Autonomia di giudizio
Il corso favorisce l'autonomia di giudizio degli studenti attraverso l'analisi critica di problemi computazionali per i quali trovare soluzioni software in grado di risolverlo. Diverse soluzioni proposte dagli studenti sono poste a confronto e valutate criticamente dagli studenti stessi.

Abilità comunicative
È fondamentale che gli studenti siano in grado di comunicare con un pubblico vario e composito, non omogeneo culturalmente, in modo chiaro, logico ed efficace, utilizzando gli strumenti metodologici acquisiti e le loro conoscenze scientifiche e, in particolar modo, il lessico di specialità.
Il corso favorisce lo sviluppo delle abilità inerenti le capacità di esporre in termini precisi e formali le proprietà e le caratteristiche di aloritmi; le analisi su complessità computazionali di codice sorgente in linguaggio C; descrizione di possibili soluzioni algoritmiche a problemi reali.

Le lezioni teoriche si svolgeranno in aula utilizzando slide con esempi alla lavagna. Le esercitazioni si svolgeranno in laboratorio informatico con esercizi svolti direttamente al computer inerenti la programmazione in linguaggio C.

Le slide del corso saranno disponibili sulla piattaforma moodle all'indirizzo: http://sara.unisalento.it/moodle
Utilizzare l'accesso "come ospite" e password "fondainfo"

L’esame è composto da una prova scritta durante la quale si verificheranno le capacità acquisite nella progettazione di un algoritmo, nel riconoscimento delle principali strutture dati e degli algoritmi di base visti a lezione e nell'analisi della complessità computazionale di un algoritmo oltre agli aspetti teorici affrontati nel corso. Durante la prova scritta non sarà consentito l’uso di manuali nè altro materiale di supporto.

Oltre alla prova scritta ci sarà una prova orale/programmazione alla quale si accede solo dopo aver superato la prova scritta. Durante la prova di programmazione verrà valutata la capacità pratica nello sviluppare un semplice programma eseguibile al calcolatore in linguaggio C. La prova di programmazione dura 1 ora, il programma realizzato durante la prova di programmazione verra’ quindi discusso appena terminata la prova. Durante la prova di programmazione si può usare il proprio computer e tutti i manuali e le fonti online utili a risolvere l’esercizio assegnato.

 

Sessione straordinaria Marzo 2020 - Esame On-Line

Solo per la sessione straordinaria di Marzo 2020 l'esame si svolera' online secondo le modalita' di seguito descritte:

 

Connessione
-----------
Per sostenere l'esame e' necessario collegarsi al Team appositamente creato per l'esame attraverso il seguente link

https://teams.microsoft.com/l/team/19%3adc47a9aec5154b69b3c984f5f32f6236@thread.tacv2/conversations?groupId=f6a6a806-3539-4462-a204-be5c73c34752&tenantId=8d49eb30-429e-4944-8349-dee009bdd7da

il Team e' aperto al pubblico e quindi tutti coloro che hanno il link potranno assistere all'esame.

All'orario prestabilito per l'esame si procede con l'appello degli studenti candidati (solo coloro che sono prenotati sul sistema ESSE3 potranno sostenere l'esame) nel seguente modo: il presidente della commissione contatterà' ad uno ad uno in una chiamata privata i singoli candidati che dovranno attivare microfono e telecamera, ed esibire documento di riconoscimento davanti alla telecamera. In caso di non riconoscimento del volto, l’esame non avrà luogo.

Dopo il riconoscimento si interrompe la chiamata privata e si procede con l'esame all'interno del Team e quindi alla "presenza" di tutti coloro che sono collegati.

Durante tutto lo svolgimento dell'esame e' richiesto che la telecamera e il microfono dei candidati restino sempre attivi, mentre coloro che assistono all'esame dovranno disabilitare microfono e telecamera.

Alla fine della seduta d’esame il docente comunicherà, sempre in chiamata privata, come nel caso del riconoscimento, il voto al candidato e procederà regolarmente con la verbalizzazione online.

NON E' ASSOLUTAMENTE CONSENTITA LA REGISTRAZIONE DELL'ESAME IN NESSUN MOMENTO.

Argomenti e svolgimento dell'esame
----------------------------------
L'esame si svolgerà' alla stessa stregua della prova pratica svolta in laboratorio, i candidati si dovranno collegare con un browser web al link, che verra' comunicato dal docente durante l'esame, dal quale scaricare la traccia di programmazione. Si ha a disposizione un'ora di tempo per realizzare un programma scritto in c che risponda al quesito della traccia. Durante tutto lo svolgimento dell'esame bisogna restare collegati al Team con videocamera e microfono attivati. La consegna del file sorgente in C avverrà' sempre attraverso la pagina web dell'esame; si procedera' quindi all'analisi degli elaborati e all'interrogazione dei candidati, uno alla volta in sessione pubblica.
 

 

Le date degli appelli d'esame sono disponibili al seguente link: calendario esami di profitto

- Architettura di Von Neumann, concetto di algoritmo, macchina astratta (4 ore)
- Rapresentazione delle informazioni (10 ore)
- Strutturare un algoritmo (6 ore)
- Costrutti del linguaggio C, variabili e tipi di dato, funzioni, array puntatori e gestione dinamica della memoria (10 ore)
- Funzioni ricorsive (2 ore)
- Tipi di dato astratto: Pila, Coda, Lista (8 ore)
- Cenni su analisi della complessità computazionale (4 ore)
- Algoritmi di ordinamento: insertion sort, selection sort, bubble sort, merge sort, quick sort (6 ore)
- Algoritmi di ricerca: ricerca esaustiva, ricerca dicotomica (4 ore)

[1] B. W. Kernighan, D. M. Ritchie, “Il linguaggio C. Principi di programmazione e manuale di riferimento. Ediz. MyLab. Con Contenuto digitale per download e accesso on line”, ISBN-13: 978-8891908230
[2] Dino Mandrioli, Stefano Ceri, Licia Sbattella, Paolo Cremonesi, Gianpaolo Cugola, “Informatica: Arte e Mestiere  4° Ed.”, McGraw-Hill,, 2014. ISBN: 9788838668487.
[3] Dispense fornite dal docente all’indirizzo http://sara.unisalento.it/moodle

FONDAMENTI DI INFORMATICA I (ING-INF/05)
MOBILE APPLICATIONS DEVELOPMENT

Degree course EUROPEAN HERITAGE, DIGITAL MEDIA AND THE INFORMATION SOCIETY

Subject area ING-INF/05

Course type Laurea Magistrale

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

For matriculated on 2019/2020

Year taught 2019/2020

Course year 1

Semestre Primo Semestre (dal 23/09/2019 al 17/01/2020)

Language INGLESE

Subject matter INTERNAZIONALE (A56)

There are no prerequisites; indeed, the course is meant for students without previous programming experience.

The course covers all of the fundamental aspects related to the development of a mobile application using Apple iOS. Meant for students without previous programming experience, the course starts covering the new programming language Swift, using the integrated development environment Xcode. After introducing the Swift programming language and the use of Xcode to develop a simple application, the students will create a basic prototype application, and, gradually, they will implement the application by adding new features until they implement a real, usable application.

The course aims to provide students with the skills required to develop a mobile application using Apple iOS. Therefore, at the end of this course the students will know:

  • The programming language Swift;
  • The integrated development environment Xcode;
  • The fundamental iOS frameworks and their related APIs.

Moreover, at the end of this course the students will acquire the following expertise and technical capabilities:

  • Develop, starting from an initial project idea, a mobile application using Apple iOS;
  • Problem solving;
  • Reading technical documentation;
  • Team working.

– Classroom lectures;
– Laboratory exercises;
– Team work.

The course is based on classroom lectures and laboratory exercises (for a total of 42 hours), in which the students are directly involved. Moreover, there will be some team work assigned, in order for the students to solve exercises and small homework projects. Attending the lectures is strongly advised, since the course is mainly based on the hands on approach.

Students will be evaluated through an oral exam. The students will be required to discuss a project assigned to them. The exam will evaluate how much the students have reached the following didactic aims:

  • Knowledge of the Swift programming language;
  • Ability to design and implement a mobile application using Apple iOS.

Evaluation will take into account the assigned project, the exposition, the formal correctness and the ability to argue and support the student’s theses.

The exam sessions are available through this link: exam sessions

Swift Playgrounds
Build First App
Introduction to Auto Layout
Designing UI Using StackViews
Introduction to Prototyping
Creating a SimpleTable-based App
Using UI AlertController
Introduction to NavigationController and Segue
Introductionto Object-Oriented Programming
Self Sizing Cells and Dynamic Type
Working with Maps
Introduction to StaticTableViews, UIImagePickerController and NSLayoutConstraint
Working with CoreData

Textbook:

Simon Ng, Beginning iOS 10 Programming with Swift. AppCoda

http://www.appcoda.com/swift/

 

Additional, useful references:

The Swift Programming Language. Apple Inc.

Simon Ng, Intermediate Swift and iOS 10 Programming. AppCoda

http://www.appcoda.com/intermediate-swift-programming-book/

MOBILE APPLICATIONS DEVELOPMENT (ING-INF/05)
FONDAMENTI DI INFORMATICA

Corso di laurea INGEGNERIA DELL'INFORMAZIONE

Settore Scientifico Disciplinare ING-INF/05

Tipo corso di studio Laurea

Crediti 7.0

Docente titolare Italo EPICOCO

Ripartizione oraria Ore totali di attività frontale: 63.0

  Ore erogate dal docente Italo EPICOCO: 54.0

Per immatricolati nel 2018/2019

Anno accademico di erogazione 2018/2019

Anno di corso 1

Semestre Secondo Semestre (dal 04/03/2019 al 04/06/2019)

Lingua ITALIANO

Percorso PERCORSO COMUNE (999)

Sede Lecce

Non vi è alcuna propedeuticità.

Per l'analisi della complessità computazionele degli algoritmi sono richieste conoscenze di analisi matematica quali:
- studio di funzioni e analisi asintotica,
- serie numeriche.

Il corso mira a fornire sia elementi di teoria dell’informatica che i principi e le basi per la programmazione. Partendo dal concetto di macchina programmabile in grado di svolgere operazioni seguendo una sequenza codificata di istruzioni elementari si passa alla strutturazione di un algoritmo e quindi alla competenze che permettono di scomporre un problema “complesso” per la macchina in una sequenza di operazioni “elementari”. Durante il corso verranno inoltre studiati gli algoritmi di ordinamento e di ricerca più noti con l’obiettivo di illustrare come differenti scelte nella risoluzione di uno stesso problema possano incidere sull’efficienza di un algoritmo e sui tempi di esecuzione al calcolatore.

Strutturare i dati in modo opportuno è uno dei principali fattori che influenzano l’efficienza di un algoritmo. Durante il corso si studieranno le strutture dati base quali le liste e gli alberi. Infine il corso fornirà gli strumenti per lo sviluppo di applicazioni attraverso ambienti di programmazione integrati IDE utilizzando il linguaggio C e alcuni cenni sull’analisi della complessità computazionale degli algoritmi.

Conoscenze e comprensione
I risultati attesi di apprendimento prevedono che al termine del corso gli studenti siano in grado di:

1) illustrare le principali caratteristiche dell’architettura di un calcolatore;
2) comprendere le metodologie di rappresentazione e codifica dell’informazione;
3) progettare e implementare un algoritmo;
4) riconoscere ed applicare gli elementi caratterizzanti un linguaggio di programmazione procedurale strutturato (tipi dato, strutture di controllo, funzioni e procedure, gestione dei file e strutture dinamiche);
5) riconoscere le principali strutture dati dinamiche (liste, code, alberi) e i principali algoritmi di oridnamento e di ricerca;
6) effettuare l'analisi della complessità computazionale di un algoritmo;
7) analizzare, interpretare, comprendere e produrre listati di codice in linguaggio C utilizzando degli appositi ambienti di programmazione (IDE).

Capacità di applicare conoscenze e comprensione
Gli studenti saranno in grado di applicare le conoscenze acquisite in diversi ambiti appicativi ed in generale per la risoluzione al computer di processi e sistemi. 

Autonomia di giudizio
Il corso favorisce l'autonomia di giudizio degli studenti attraverso l'analisi critica di problemi computazionali per i quali trovare soluzioni software in grado di risolverlo. Diverse soluzioni proposte dagli studenti sono poste a confronto e valutate criticamente dagli studenti stessi.

Abilità comunicative
È fondamentale che gli studenti siano in grado di comunicare con un pubblico vario e composito, non omogeneo culturalmente, in modo chiaro, logico ed efficace, utilizzando gli strumenti metodologici acquisiti e le loro conoscenze scientifiche e, in particolar modo, il lessico di specialità.
Il corso favorisce lo sviluppo delle abilità inerenti le capacità di esporre in termini precisi e formali le proprietà e le caratteristiche di aloritmi; le analisi su complessità computazionali di codice sorgente in linguaggio C; descrizione di possibili soluzioni algoritmiche a problemi reali.

Le lezioni teoriche si svolgeranno in aula utilizzando slide con esempi alla lavagna. Le esercitazioni si svolgeranno in laboratorio informatico con esercizi svolti direttamente al computer inerenti la programmazione in linguaggio C.

Le slide del corso saranno disponibili sulla piattaforma moodle all'indirizzo: http://sara.unisalento.it/moodle
Utilizzare l'accesso "come ospite" e password "fondainfo"

L’esame è composto da una prova scritta durante la quale si verificheranno le capacità acquisite nella progettazione di un algoritmo, nel riconoscimento delle principali strutture dati e degli algoritmi di base visti a lezione e nell'analisi della complessità computazionale di un algoritmo oltre agli aspetti teorici affrontati nel corso. Durante la prova scritta non sarà consentito l’uso di manuali nè altro materiale di supporto.

Oltre alla prova scritta ci sarà una prova orale/programmazione alla quale si accede solo dopo aver superato la prova scritta. Durante la prova di programmazione verrà valutata la capacità pratica nello sviluppare un semplice programma eseguibile al calcolatore in linguaggio C. La prova di programmazione dura 1 ora, il programma realizzato durante la prova di programmazione verra’ quindi discusso appena terminata la prova. Durante la prova di programmazione si può usare il proprio computer e tutti i manuali e le fonti online utili a risolvere l’esercizio assegnato.

 

Sessione straordianria Marzo 2020 - Esame online

Solo per la sessione straordinaria di Marzo 2020 l'esame si svolgera' online secondo le modalita' di seguito indicate:

 

Connessione
-----------
Per sostenere l'esame e' necessario collegarsi al Team appositamente creato per l'esame attraverso il seguente link

https://teams.microsoft.com/l/team/19%3a828a043ba8494e919376de7c9b3314b1%40thread.tacv2/conversations?groupId=6f273141-fde8-4870-abb7-62648fbdb7d6&tenantId=8d49eb30-429e-4944-8349-dee009bdd7da

il Team e' aperto al pubblico e quindi tutti coloro che hanno il link potranno assistere all'esame.

All'orario prestabilito per l'esame si procede con l'appello degli studenti candidati (solo coloro che sono prenotati sul sistema ESSE3 potranno sostenere l'esame) nel seguente modo: il presidente della commissione contatterà' ad uno ad uno in una chiamata privata i singoli candidati che dovranno attivare microfono e telecamera, ed esibire documento di riconoscimento davanti alla telecamera. In caso di non riconoscimento del volto, l’esame non avrà luogo.

Dopo il riconoscimento si interrompe la chiamata privata e si procede con l'esame all'interno del Team e quindi alla "presenza" di tutti coloro che sono collegati.

Durante tutto lo svolgimento dell'esame e' richiesto che la telecamera e il microfono dei candidati restino sempre attivi, mentre coloro che assistono all'esame dovranno disabilitare microfono e telecamera.

Alla fine della seduta d’esame il docente comunicherà, sempre in chiamata privata, come nel caso del riconoscimento, il voto al candidato e procederà regolarmente con la verbalizzazione online.

NON E' ASSOLUTAMENTE CONSENTITA LA REGISTRAZIONE DELL'ESAME IN NESSUN MOMENTO.

Argomenti e svolgimento dell'esame
----------------------------------
L'esame si svolgerà' alla stessa stregua della prova pratica svolta in laboratorio, i candidati si dovranno collegare con un browser web al link, che verra' comunicato dal docente durante l'esame, dal quale scaricare la traccia. Si ha a disposizione un'ora di tempo per svolgere un esercizio a scelta tra Word oppure Excel. Durante tutto lo svolgimento dell'esame bisogna restare collegati al Team con videocamera e microfono attivati. La consegna del file (.doc oppure .xls) avverrà' sempre attraverso la pagina web dell'esame; si procedera' quindi all'analisi degli elaborati e all'interrogazione dei candidati, uno alla volta in sessione pubblica.

Le date degli appelli d'esame sono disponibili al seguente link: calendario esami di profitto

- Macchina di Turing, architettura di Von Neumann, concetto di algoritmo, macchina astratta (4 ore)
- Rapresentazione delle informazioni (10 ore)
- Strutturare un algoritmo (6 ore)
- Costrutti del linguaggio C, variabili e tipi di dato, funzioni, array puntatori e gestione dinamica della memoria (12 ore)
- Funzioni ricorsive (2 ore)
- Tipi di dato astratto: Pila, Coda, Lista (8 ore)
- Cenni su analisi della complessità computazionale (4 ore)
- Algoritmi di ordinamento: insertion sort, selection sort, bubble sort, merge sort, quick sort (8 ore)
- Algoritmi di ricerca: ricerca esaustiva, ricerca dicotomica (4 ore)
- Alberi binari di ricerca (2 ore)
- Alberi Heap (3 ore)

[1] Cormen, Leiserson, Rivest, Stein, “Introduction to Algorithms. Third edition”, The MIT Press.
[2] Dino Mandrioli, Stefano Ceri, Licia Sbattella, Paolo Cremonesi, Gianpaolo Cugola, “Informatica: Arte e Mestiere  4° Ed.”, McGraw-Hill,, 2014. ISBN: 9788838668487.
[3] B. W. Kernighan, D. M. Ritchie, “Il linguaggio C. Principi di programmazione e manuale di riferimento”, Pearson, 2 edizione 2004, ISBN: 887192200X
[4] Dispense fornite dal docente all’indirizzo http://sara.unisalento.it/moodle

FONDAMENTI DI INFORMATICA (ING-INF/05)
MOBILE APPLICATIONS DEVELOPMENT

Degree course EUROPEAN HERITAGE, DIGITAL MEDIA AND THE INFORMATION SOCIETY

Subject area ING-INF/05

Course type Laurea Magistrale

Credits 6.0

Teaching hours Ore totali di attività frontale: 42.0

For matriculated on 2018/2019

Year taught 2018/2019

Course year 1

Semestre Primo Semestre (dal 24/09/2018 al 25/01/2019)

Language INGLESE

Subject matter INTERNAZIONALE (A56)

There are no prerequisites; indeed, the course is meant for students without previous programming experience.

The course covers all of the fundamental aspects related to the development of a mobile application using Apple iOS. Meant for students without previous programming experience, the course starts covering the new programming language Swift, using the integrated development environment Xcode. After introducing the Swift programming language and the use of Xcode to develop a simple application, the students will create a basic prototype application, and, gradually, they will implement the application by adding new features until they implement a real, usable application.

The course aims to provide students with the skills required to develop a mobile application using Apple iOS. Therefore, at the end of this course the students will know:

  • The programming language Swift;
  • The integrated development environment Xcode;
  • The fundamental iOS frameworks and their related APIs.

Moreover, at the end of this course the students will acquire the following expertise and technical capabilities:

  • Develop, starting from an initial project idea, a mobile application using Apple iOS;
  • Problem solving;
  • Reading technical documentation;
  • Team working.

– Classroom lectures;
– Laboratory exercises;
– Team work.

The course is based on classroom lectures and laboratory exercises (for a total of 42 hours), in which the students are directly involved. Moreover, there will be some team work assigned, in order for the students to solve exercises and small homework projects. Attending the lectures is strongly advised, since the course is mainly based on the hands on approach.

Students will be evaluated through an oral exam. The students will be required to discuss a project assigned to them. The exam will evaluate how much the students have reached the following didactic aims:

  • Knowledge of the Swift programming language;
  • Ability to design and implement a mobile application using Apple iOS.

Evaluation will take into account the assigned project, the exposition, the formal correctness and the ability to argue and support the student’s theses.

The exam sessions are available through this link: exam sessions

Swift Playgrounds
Build First App
Introduction to Auto Layout
Designing UI Using StackViews
Introduction to Prototyping
Creating a SimpleTable-based App
Using UI AlertController
Introduction to NavigationController and Segue
Introductionto Object-Oriented Programming
Self Sizing Cells and Dynamic Type
Working with Maps
Introduction to StaticTableViews, UIImagePickerController and NSLayoutConstraint
Working with CoreData

Textbook:

Simon Ng, Beginning iOS 10 Programming with Swift. AppCoda

http://www.appcoda.com/swift/

 

Additional, useful references:

The Swift Programming Language. Apple Inc.

Simon Ng, Intermediate Swift and iOS 10 Programming. AppCoda

http://www.appcoda.com/intermediate-swift-programming-book/

MOBILE APPLICATIONS DEVELOPMENT (ING-INF/05)

Pubblicazioni

Book Chapter

 


M. Mirto, M. Passante, I. Epicoco, G. Aloisio “An Interoperable Grid Workflow Management System” book chapter in “Managed Grids and Cloud Systems in the Asia- Pacific Research Community”, Editors: Simon C. Lin; Eric Yen, Publisher: Springer- Verlag New York Inc (2010)

M. Mirto, I. Epicoco, M. Cafaro, S. Fiore, M. Passante, A. negro and G. Aloisio, “ProGenGrid: A Grid Problem Solving Environment for Bioinformatics”, in Handbook of Research on Computational Grid Technologies for Life Sciences, Biomedicine, and Healthcare, Mario Cannataro (Editor), pp. 577-613, IGI Global, 2009

I. Epicoco et al., “The LIBI Grid Platform for Bioinformatics”, in Handbook of Research on Computational Grid Technologies for Life Sciences, Biomedicine, and Healthcare, Mario Cannataro (Editor), pp. 577,-613, , IGI Global, 2009

M. Cafaro, I. Epicoco, G. Quarta, Sandro Fiore, G. Aloisio, “Design and Implementation of a Grid Computing Environment for Remote Sensing”, in “High-Performance Computing in Remote Sensing”, A. Plaza and C. Chang (Eds), pp. 281-308, Chapman & Hall/CRC, 2008

G. Aloisio, M. Cafaro, I. Epicoco, "A Grid Software Process", in "Grid Computing: Software Environments and Tools", Jose C. Cunha and Omer F. Rana (Eds), pp. 75-98, Springer-Verlag, 2006

G. Aloisio, M. Cafaro, I. Epicoco, J. Nabrzyski, "The EU GridLab Project: A Grid Application Toolkit and Testbed", in "Engineering the Grid: Status and Perspective", pp. 123-138, L. T. Yang, Jack Dongarra, Adolfy Hoisie, Beniamino Di Martino and Hans Zima (Eds), American Scientific Publisher 2006

Journals

M. Cafaro, I. Epicoco, S. Fiore, D. Lezzi, S. Mocavero, G. Aloisio, “Near Real-Time Parallel Processing and Advanced Data Management of SAR Images in Grid Environments”, Journal of Real-Time Image Processing, Special issue on architectures and techniques for real-time processing of remotely sensed images, Volume 4, Number 3, pp. 219-227

M. Cafaro, I. Epicoco, M. Mirto, D. Lezzi, G. Aloisio, "The Grid Resource Broker Workflow Engine", Concurrency and Computation: Practice and Experience, Special Issue: 2nd International Workshop on Workflow Management and Applications in Grid Environments (WaGe2007), Volume 20, Issue 15, pp. 1725 - 1739

M. Mirto, S. Fiore, I. Epicoco, M. Cafaro, S. Mocavero, E. Blasi, G. Aloisio, "A Bioinfomatics Grid Alignment Toolkit", Future Generation Computer Systems, Elsevier, Volume 24, Number 7, pp. 752-762, 2008

G. Aloisio, M. Cafaro, G. Carteni, I. Epicoco, S. Fiore, D. Lezzi, M. Mirto , S. Mocavero, "The Grid Resource Broker Portal", Concurrency and Computation: Practice and Experience, Special Issue on Grid Computing Environments, Volume 19, Issue 12 (2007), pp. 1663-1670

G. Aloisio, M. Cafaro, S. Fiore, I. Epicoco, M. Mirto, S. Mocavero, "Performance Analysis of Information Services in a Grid Environment", in the Journal of Systemics, Cybernetics and Informatics (JSCI), Volume 2, Number 5 (2002)

G. Aloisio, M. Cafaro, I. Epicoco, "Early experiences with the GrifFTP protocol using the GRB-GSIFTP library", Future Generation Computer Systems, Volume 18, Number 8 (2002), pp. 1053-1059, Special Issue on Grid Computing: Towards a New Computing Infrastructure, North-Holland

G. Aloisio, M. Cafaro, E. Blasi, I. Epicoco, "The Grid Resource Broker, a Ubiquitous Grid Computing Framework", Journal of Scientific Programming, Volume 10, Number 2 (2002), pp. 113-119, Special Issue on Grid Computing, IOS Press, Amsterdam

Proceedings

I. Epicoco, S. Mocavero, G. Aloisio "Experience on the parallelization of the OASIS3 coupler" Proceedings of 8th Australasian Symposium on Parallel and Distributed Computing (AusPDC 2010), 18-22 January 2010

I. Epicoco, S. Mocavero, G. Aloisio “Oasis3: an MPI1/2 per-field parallel approach” Proceedings of the OASIS User meeting 2009, Toulouse, France, May 25-26, 2009

M. Mirto, M. Cafaro, I. Epicoco, G. Aloisio, "Advances in the ProGenGrid Workflow Management System", IEEE Proceedings of the 1st International Workshop on High Performance Data Grid (HPDataGrid'08), held in conjunction with the 9th International Conference on Parallel and Distributed Computing, Applications and Technologies (PDCAT'08), 1-4 December 2008 - Dunedin, New Zealand, pp. 538-543

 

 

Risorse correlate

Documenti