Guida degli insegnamenti

Syllabus

Partially translatedTradotto parzialmente
[3I084] - FONDAMENTI DI INFORMATICAFUNDAMENTALS OF COMPUTER SCIENCE [Cognomi M-Z]
Aldo Franco DRAGONI
Lingua di erogazione: ITALIANOLessons taught in: ITALIAN
Laurea - [IT04] INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE First Cycle Degree (3 years) - [IT04] COMPUTER AND AUTOMATION ENGINEERING
Dipartimento: [040040] Dipartimento Ingegneria dell'InformazioneDepartment: [040040] Dipartimento Ingegneria dell'Informazione
Anno di corsoDegree programme year : 1 - Secondo Semestre
Anno offertaAcademic year: 2018-2019
Anno regolamentoAnno regolamento: 2018-2019
Obbligatorio
Crediti: 9
Ore di lezioneTeaching hours: 72
TipologiaType: B - Caratterizzante
Settore disciplinareAcademic discipline: ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

LINGUA INSEGNAMENTO LANGUAGE

Italiano

Italian


PREREQUISITI PREREQUISITES

nessuno

none


MODALITÀ DI SVOLGIMENTO DEL CORSO DEVELOPMENT OF THE COURSE

I contenuti teorici sono affidati principalmente alle lezioni videoregistrate dal docente e rese disponibili sul sito di e_learning, oltre che ai testi consigliati. In aula vengono sinteticamente richiamati i contenuti teorici, dopodiché viene effettuata una sessione di domande e risposte. La maggior parte del tempo è spesa con esercitazioni pratiche di programmazione in C++ utilizzando il Laptop oppure lo Smartphone dello studente.

The theoretical content is mainly based on video lessons available on the e_learning site and recommended texts. The theoretical contents are briefly recalled in the classroom, after which a question and answer session is carried out. Most of the time you spend practical programming exercises in C++ using your Laptop or Smartphone.


RISULTATI DI APPRENDIMENTO ATTESI LEARNING OUTCOMES
Conoscenze e comprensione.

L'insegnamento mira a dare le basi dell'Informatica e della programmazione di un elaboratore elettronico digitale. Esso si pone due
obiettivi: 1. introdurre consapevolmente lo studente ai concetti base dell’architettura di un calcolatore e della rappresentazione binaria
dell’informazione. 2. spiegare come si elabora l'informazione digitale, cioè fornire i rudimenti della programmazione di un elaboratore
digitale e dei linguaggi di programmazione utilizzando il paradigma imperativo e introducendo gli elementi di quello ad oggetti e del
linguaggio Assembly.


Capacità di applicare conoscenze e comprensione.

Alla conclusione del corso gli studenti saranno in grado di codificare correttamente l'informazione in formato digitale e formulare
semplici problemi computazionali in forma di algoritmi e tradurli in programmi usando correttamente la sintassi di un linguaggio di
programmazione


Competenze trasversali.

la capacità di pianificare i passi da svolgere per risolvere un problema contribuiranno a sviluppare l'autonomia di giudizio e il pensiero
comutazionale degli studenti.


Knowledge and Understanding.

The course aims to give the basics of Computer Science and digital electronic computer programming. It has two objectives: 1.
consciously introduce students to the basic concepts of computer architecture and binary encoding. 2. explain how to process digital
information, that is, provide the elements of digital computer programming and of programming languages using the imperative
paradigm and introducing the elements of object-oriented and Assembly programming


Capacity to apply Knowledge and Understanding.

At the end of the course, students will be able to properly encode the information into digital format and making simple computational
problems in the form of algorithms and translate them into programs using correct syntax of a programming language


Transversal Skills.

The ability to plan the steps to be done to solve a problem will help to develop the autonomy of judgment and computational thinking
skills of students.



PROGRAMMA PROGRAM

Codifica binaria dei testi: ASCII, ISO_8859/1-15, UNICODE, UTF-8.
Codifica binaria dei suoni, delle immagini e dei video.
Codifica dei numeri Naturali, Interi e Reali; lo standard IEEE-754. Endianess. Principali operazioni aritmetiche.
Architettura di Von Neumann. Architettura funzionale di un microprocessore (IA-32). Memorie di Massa.
Programmazione in Assembly: operandi, istruzioni, direttive dati, etichette, sottoprogrammi, Stack, "call" e "ret", programmazione modulare, I/O, compilazione.
Evoluzione dei Linguaggi Imperativi e Programmazione strutturata.
Concetto di algoritmo, di linguaggio di programmazione, di programma, compilatore, interprete, sintassi, semantica, errori a tempo di compilazione e di esecuzione.
Software, copyright e copyleft.
Programmazione in C/C++.
Tipi di dato fondamentali. Costanti. Variabili . Dichiarazione e definizione. Istruzione di assegnamento. Operazioni con il tipo int, unsigned, float e double, bool, char, enum. Operazioni con tipi misti e conversioni di tipo: implicite, esplicite.
Operatori. Precedenza ed associatività. Assegnamento. Operatori aritmetici e assegnamento composto. Operatori relazionali e logici. Operatori condizionale e virgola.
Input/Output. Il concetto di “flusso” , lettura e scrittura modo testo. Flusso di input con caratteri o numeri. Flusso di output. Redirezione dei flussi.
Blocchi e visibilità degli identificatori, spazio dei nomi (namespace), direttiva using.
Programmazione strutturata. Strutture di controllo. Istruzione composta (blocco). if (cond) istr, if (cond) istr1 else istr2. switch. while (cond) istr, do istr while (cond), for (iniz; cond; passo)istr. Cicli annidati. Istruzioni di salto: break, continue, goto. Teorema di Böhm-Jacopini.
Definizione, dichiarazione e chiamata di una funzione. Procedure. Passaggio di argomenti ad una funzione “per valore”. Funzione e stack. Funzioni ricorsive. Argomenti di default. Funzioni inline. Storage classes
Funzioni di libreria e compilazione modulare. Sovraccaricamento delle funzioni
Puntatori e operazioni coi puntatori. Puntatori a puntatori. Passaggio di puntatori a funzioni e restituzione argomenti puntatori. Riferimenti e passaggio “per riferimento”. Restituzione argomenti riferimento. Riferimento: dietro le quinte. Puntatori a funzioni
Definizione di vettori e accesso agli elementi di un vettore. Limiti dei vettori in C++. Vettori di caratteri, stringhe ed I/O. Vettori multidimensionali. Vettori come argomenti di funzione. Vettori e aritmetica dei puntatori.
Dichiarazione di un tipo struct e accesso ai suoi campi. Vettori di strutture e algoritmi di ordinamento: insertion sort, selection sort, bubble sort, quick sort.
Memoria dinamica in C++: new, delete. Liste semplici e principali 6 funzioni: inserimento in testa, estrazione dalla testa, inserimento in fondo, estrazione dal fondo, inserimento ordinato, estrazione di un elemento dato. Gestione dell’overflow dello heap.
Header files e librerie. Compilazione header file. Problema inclusioni multiple e compilazione condizionale (header guards). Argomenti del main().
Object Oriented Programming: dalla struct alla class. Oggetti. Attributi e metodi. Specificatori di accesso, information hiding/incapsulamento. Costruttore e distruttore. Header files ed intestazioni di classe.
Classi derivate e tipi di ereditarietà. Ereditarietà multipla e binding dinamico. Funzioni virtuali e Polimorfismo. Vantaggi del polimorfismo
Cenni di complessità computazionale, spaziale e temporale.
Cenni alla correzione dei programmi (“debugging”).

Binary encoding of texts: ASCII, ISO_8859/1-15, UNICODE, UTF-8.
Binary encoding of sounds, images and videos.
Coding of Natural, Whole and Real numbers; the IEEE-754 standard. Endianess. Main arithmetical operations.
Architecture by Von Neumann. Functional architecture of a microprocessor (IA-32). Mass Memories.
Programming in Assembly: operands, instructions, data directives, labels, subprograms, stacks, "call" and "ret", modular programming, I/O, compilation.
Evolution of Imperative Languages and Structured Programming.
Concept of algorithm, programming language, program, compiler, interpreter, syntax, semantics, errors at compilation and execution time.
Software, copyright and copyleft.
Programming in C/C++.
Basic data types. Constant. Variables . Declaration and definition. Assignment instruction. Operations with the type int, unsigned, float and double, bool, char, enum. Operations with mixed types and type conversions: implicit, explicit.
Operators. Precedence and associativity. Assignment. Arithmetic operators and compound assignment. Relational and logical operators. Conditional and comma operators.
Input/Output. The concept of "flow" reading and writing mode text. Input stream with characters or numbers. Output flow. Redirection of flows.
Blocks and visibility of identifiers, namespace, directive using.
Structured programming. Control structures. Compound instruction (block). if (cond) istr, if (cond) istr1 else istr2. switch. while (cond) istr, do istr while (cond), for (iniz; cond; passo)istr. Nested cycles. Jumping Instructions: break, continue, goto. Böhm-Jacopini's theorem.
Definition, declaration and call of a function. Procedures. Switching arguments to a "by value" function. Function and stack. Recursive functions. Default topics. Inline functions. Storage classes
Library functions and modular compilation. Overload of functions
Pointers and pointer operations. Pointers to pointers. Switching pointers to functions and returning pointers topics. References and passage "for reference". Return reference topics. Reference: behind the scenes. Function pointers
Definition of carriers and access to carrier elements. Vector limits in C++. Character, string and I/O carriers. Multidimensional vectors. Vectors as function arguments. Vectors and arithmetic of the pointers.
Declaration of a struct type and access to its fields. Structure vectors and sorting algorithms: insertion sort, selection sort, bubble sort, quick sort.
Dynamic memory in C++: new, delete. Simple and main lists 6 functions: head insertion, head extraction, bottom insertion, bottom extraction, tidy insertion, extraction of a given element. Management of heap overflow.
Header files and libraries. Compiling header files. Problem of multiple inclusions and conditional compilation (header guards). Topics of the main().
Object Oriented Programming: from struct to class. Objects. Attributes and methods. Access specifiers, information hiding/encapsulation. Builder and destroyer. Header files and class headings.
Derived classes and types of inheritance. Multiple inheritance and dynamic binding. Virtual functions and polymorphism. Advantages of polymorphism
Notes on computational, spatial and temporal complexity.
Remarks on the correction of programs ("debugging").


MODALITÀ DI SVOLGIMENTO DELL'ESAME DEVELOPMENT OF THE EXAMINATION
Modalità di valutazione dell'apprendimento.

L'apprendimento viene valutato sulla base di due prove. La prima di programmazione in C++ e la seconda di esercizi sulla teoria della rappresentazione delle informazioni e della programmazione in C++.


Criteri di valutazione dell'apprendimento.

Viene valutata la capacità di programmare, cioè quella di concepire algoritmi per risolvere problemi ed implementarli in C++.


Criteri di misurazione dell'apprendimento.

Normalmente la prova di programmazione vale 18/30 e quella di teoria vale 12/30.


Criteri di attribuzione del voto finale.

per la valutazione finale si sommano i voti riportati nelle due prove


Learning Evaluation Methods.

Learning is assessed on the basis of two tests. The first is programming in C++ and the second is exercises on the theory of information representation and programming in C++.


Learning Evaluation Criteria.

The ability to program is evaluated, that is to conceive algorithms to solve problems and implement them in C++.


Learning Measurement Criteria.

Normally the programming test is worth 18/30 and the theory test is worth 12/30.


Final Mark Allocation Criteria.

for the final evaluation, the marks obtained in the two tests will be added together



TESTI CONSIGLIATI RECOMMENDED READING

Luis Joyanes Aguilar, "Fondamenti di programmazione in C++", The McGraw-Hill Companies.
John R. Hubbard, "Programmare in C++, seconda edizione, (470 esercizi svolti)", The McGraw-Hill Companies
Materiale didattico disponibile sul sito https://learn.univpm.it/course/view.php?id=7095

Luis Joyanes Aguilar, "Fondamenti di programmazione in C++", The McGraw-Hill Companies.
John R. Hubbard, "Programmare in C++, seconda edizione, (470 esercizi svolti)", The McGraw-Hill Companies
e-learning https://learn.univpm.it/course/view.php?id=7095


E-LEARNING E-LEARNING

SI

YES


Scheda insegnamento erogato nell’A.A. 2018-2019
Le informazioni contenute nella presente scheda assumono carattere definitivo solo a partire dall'A.A. di effettiva erogazione dell'insegnamento.
Academic year 2018-2019

 


Università Politecnica delle Marche
P.zza Roma 22, 60121 Ancona
Tel (+39) 071.220.1, Fax (+39) 071.220.2324
P.I. 00382520427