Guida degli insegnamenti

Syllabus

Partially translatedTradotto parzialmente
[3I084] - FONDAMENTI DI INFORMATICAFUNDAMENTALS OF COMPUTER SCIENCE [Cognomi A-L]
PAOLO SERNANI
Lingua di erogazione: ITALIANOLessons taught in: ITALIAN
Laurea - [IT04] INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE First Cycle Degree (3 years) - [IT04] COMPUTER AND AUTOMATION ENGINEERING
Anno di corsoDegree programme year : 1 - Secondo Semestre
Anno offertaAcademic year: 2019-2020
Anno regolamentoAnno regolamento: 2019-2020
Obbligatorio
Crediti: 9
Ore di lezioneTeaching hours: 72
TipologiaType: A - Base
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 disponibili sul sito di e_learning e 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.

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 concettuali dell'Informatica e della programmazione di un elaboratore elettronico digitale. Esso si pone due obiettivi:
1. introdurre consapevolmente lo studente alla rappresentazione digitale dell’informazione ed all’architettura funzionale di un calcolatore
2. spiegando come quest’ultimo elabori quell'informazione digitale, fornendo cioè i concetti fondamentali della “programmazione” di un elaboratore digitale: dal “linguaggio macchina” del processore al più diffuso linguaggio di programmazione evoluto, cioè il C/C++, utilizzando sia i concetti base della “programmazione imperativa” (C) che quelli della “programmazione ad oggetti” (C++).


Capacità di applicare conoscenze e comprensione.

Grazie al portale per l’ “e-learning” messo a disposizione dall’Ateneo, ogni argomento teorico è impartito mediante videolezioni tenute dal docente scaricabili sui propri “devices”. L’apprendimento dei contenuti teorici viene verificato in aula tramite esercizi online ed approfondito mediante scrittura, compilazione ed esecuzione di programmi in C/C++ direttamente sui propri dispositivi. Alla conclusione del corso gli studenti sono quindi in grado di formulare semplici problemi computazionali in forma di algoritmi e tradurli in programmi usando la sintassi del C/C++.


Competenze trasversali.

L’acquisita capacità di pianificare i passi da svolgere per risolvere un dato problema, arrivando a concepire per esso un algoritmo risolutivo, contribuisce a sviluppare la capacità di “problem solving” dello studente. Questa capacità è il fulcro delle competenze e delle abilità che deve possedere un progettista in qualunque settore dell’attività umana, dai campi prettamente tecnici a quelli più umanistici.


Knowledge and Understanding.

The aim of the course is to provide the conceptual basis for computer science and the programming of a digital computer. It has two objectives:
1. consciously introduce the student to the digital representation of information and the functional architecture of a computer
2. explaining how the latter processes that digital information, that is, providing the fundamental concepts of the "programming" of a digital processor: from the "machine language" of the processor to the most widespread evolved programming language, that is the C/C++, using both the basic concepts of "imperative programming" (C) and those of "object programming" (C++).


Capacity to apply Knowledge and Understanding.

Thanks to the portal for "e-learning" made available by the University, every theoretical subject is imparted through video lectures held by the teacher that can be downloaded on his "devices". The learning of theoretical contents is verified in the classroom through online exercises and deepened directly on your devices by writing, compiling and executing programs in C/C++. At the end of the course students are then able to formulate simple computational problems in the form of algorithms and translate them into programs using the syntax of C/C++.


Transversal Skills.

The acquired ability to plan the steps to be taken to solve a given problem, going so far as to devise a solution algorithm for it, helps to develop the student's problem solving ability. This ability is at the heart of the skills and abilities that a designer must possess in any area of human activity, from the purely technical fields to the more humanistic ones.



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. 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. Software, copyright e copyleft. Tipi di dato fondamentali. Conversioni di tipo. Funzioni di libreria. Assegnamento. Operatori aritmetici, logici e relazionali. Il concetto di I/O-stream e file-stream. Istruzioni condizionali. Istruzioni ripetitive. Istruzioni di salto. Teorema di Bohm-Jacopini. Il concetto di funzione. Funzioni ricorsive. Puntatori e riferimenti. Passaggio argomenti per valore e per riferimento. Array. Stringhe. Array come argomenti di funzioni. Il tipo struct. Memoria dinamica: new e delete. Liste semplici e principali operazioni con le liste. Alberi. Nozioni basilari di Programmazione Orientata agli Oggetti

Binary encoding of sounds (WAW, MP3), images (BMP, GIF, JPEG) and videos (MPEG2, MPEG4, DIVx, XVID). Unsigned, Integers and Real Numbers (IEEE754). Arithmetic Operations in binary.Von Neumann Architecture. Functional Architecture of a microprocessor (IA-32). Storage: magnetic and optical. CD-ROM, CD-R, CD-RW, DVDAssembly programming: operands, instructions, directives, labels, subroutines, Stack, "call" and "ret", modular programming, I/O, compilation. Imperative languages evolution and structured programming. Software, copyright and copyleft. Foundamentals of data Structure. Casting. Library functions. Assignment. Arithmentic, logical and relational operators. I/O-stream and file-stream. Conditional Instructions. Cyclic instructions. Jumping. Theorem of Bohm-Jacopini. Functions. Recursive functions. Pointers and references. Parameettrss pasinghrough values and through references. Array. Strings. Array as parameters to functions. Struct. Dynamic memory: new and delete. Lists, trees. Notions of Object Oriented Programming


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

https://learn.univpm.it

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

https://learn.univpm.it

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 E-LEARNING

NO

NO


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

 


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