( english version )
Fundamental concepts of Informatics and Programming Laboratory ( 9 CFU )
Prof. Michele Tomaiuolo
     Tel. 0521 905712 - Fax. 0521 905723           E-mail. tomamic@ce.unipr.it           Home page. http://www.ce.unipr.it/people/tomamic

Finalità
Learning the basic concepts of computer science and being able to develop simple computer programs, following the object-oriented paradigm. The main programming language used in this course is C++.

Lezioni in aula, con l'ausilio di presentazioni già disponibili agli studenti. Soluzione di esercizi in aula. Esercizi di programmazione in laboratorio.
Lessons in classroom, presenting slides which are provided in advance to students. Solution of exercises in classroom. Programming exercises in laboratory.

Programma
Content
Introduction to computer science: data representation, languages and abstract machines, computer systems, software development. Programming in C++: data types and control structures, data collections and streams, functions, classes and objects, graphical interfaces, memory management

Extended program
Introduction to computer science (26 hours, in classroom)
1. Introduction: computer science, problems, algorithms, object-oriented systems.
2. Data representation: two’s complement and floating point notations; boolean algebra; text representation, ASCII and Unicode encoding, HTML and CSS; image and sound representation.
3. Languages and abstract machines: finite state automata; regular expressions; Touring machine; von Neuman architecture; programming languages and paradigms; computational complexity, searching and sorting algorithms.
4. Computer systems: operating systems; relational databases, SQL; computer networks, World Wide Web, HTTP, PHP, Javascript, AJAX.
5. Software development: development methodologies and software quality; debugging; versioning; contracts, assertions, exceptions; testing.

Object-oriented programming (22 hours, in classroom)
1. The C++ language: program structure. elementary data types, constants, variables, expressions, condictions, cycles, nesting.
2. Data collections and streams: vectors, matrices, maps; reading and writing data, console, files, strings.
3. Functions: scope of identificators, parameter passing methods, stack and activation records, recursion.
4. Classes and objects: encapsulation, dynamic allocation of objects, associations among classes; inheritance and polimorphism.
5. Graphical interfaces: Qt libraries, layout of elements, buttons, menus; signaling mechanisms, events, timers, scenes with animated elements.
6. Memory management: iterators, pointers, arrays, arrays of characters, dynamic memory management.

Attività d'esercitazione
The laboratory exercitations are central for the course. The proposed exercises deal with the same general matters of classroom lessons. Their objective is introducing the principles of object-oriented programming, leading the student to the solution of problems with a growing level of complexity.

Modalità d'esame
The examination consists of a test about theory (brief exercizes and quizes to answer in about half an hour), a programming test (an object-oriented program in C++, to develop in about 3 hours) and a talk. A constant and particularly effective participation to exercitations could exonerate from the final programming test.

Propedeuticità
None. However, the student is supposed to know the basic operations of computers and Internet - the equivalent of modules 1, 2, 3 and 7 of ECDL (European Computer Driving Licence) Syllabus.

Testi consigliati
D. Mandrioli, S. Ceri et al.: Informatica arte e mestiere - McGraw-Hill (2008) - 978-8838664298
B. Eckel: Thinking in C++, vol. 1 - Prentice-Hall (2000) - 978-0139798092
B. Stroustrup: Programming: Principles and Practice Using C++ - Addison-Wesley (2009) - 978-0321543721

Testi d'approfondimento
J.G. Brookshear: Informatica. Una panoramica generale. Pearson (2012).
U. Avalle, L. Console, M. Ribaudo. Introduzione all'informatica. UTET (2010).
E. Clementini: Fondamenti di Informatica – Programmazione strutturata in C++. Carocci (2006).
A. Koenig, B.E. Moo: Accelerated C++: Practical Programming by Example. Addison-Wesley (2000).
H. Schildt: C++: A Beginner's Guide. McGraw-Hill (2003).
S. Prata: C++ Primer Plus. Addison-Wesley (2011).
L.J. Aguilar: Fondamenti di programmazione in C++. McGraw-Hill (2008).
B. Eckel: Thinking in C++, vol. 2. Prentice-Hall (2003) – 978-0131225527.
 
stampa il programma ~ torna indietro