Error message
User error : Failed to connect to memcache server: druportbe01:11211 in dmemcache_object() (line 415 of /production/drupal/dim_prod/drupal/d7cl4/prod/unich/releases/7/web/sites/all/modules/contrib/memcache/dmemcache.inc ).
Single discipline educational activity
Course Sheet Academic Year of enrolment:
Professor and Collaborators:
Hours of classroom activity:
Prerequisites:
Mathematics and Physics Analysis; Recommended Physics-Technique and Engineering Geology regarding the selected phenomenology for the development of the softwares
Objectives
Contents The technological structure of the current society is based on information technology. The preparation of an engineer cannot be separated from some basic knowledge and programming skills. Therefore the content of the course is specific to a Computer Science for engineering and in particular for the Engineering of Buildings. Accordingly, the course takes particular care of the fundamental bases of Computer Science, but, above all, of programming through some important languages commonly used in technical and scientific environments, namely C ++, Fortran, Matlab. Both the programming structures common to these types of languages and their specificities are given and discussed. The selected educational approaches are typical of those followed in areas such as "problem solving" and "training on job". Therefore, the path for the acquisition of the fundamental aspects of programming is based on the progressive development, during the course, of simple softwares related to some important aspects of physical-mathematical-numerical engineering modeling. In this regard, the following topics were selected: Matrix inversion; Eigenvalue search; Finite element and volume methods (F.E.M. and F.V.M.) with aspects of 1D numerical calculation and brief outline of 2D and 3D problems; Solutions of boundary and initial problems, expressed by means of the relative differential equations related to: Filtration and Consolidation, Diffusion and Advective Heat Exchange, Wave Propagation, Vibrations; Interpolations; Fourier Analysis. A first part of the course, in conjunction with the informatic aspects, is devoted to obtain and to present the numerical models selected for the construction of the related softwares.
A brief mention is also given to the parallel programming based on Graphical Processing Units (G.P.U.). Short seminars (informative only) are also planned on Python and Java languages.
Extended Syllabus 1) Introduction to the construction of a mathematical model. Some specific examples for Engineering, through differential equations concerning: Consolidation; Filtration; Conductive and convective heat exchange; Fluid dynamics 1D and outline of 2D and 3D fluid dynamics; Oscillations.
2) Transformation of the mathematical model in numerical models. Integration of the mathematical models described in point 1) through Finite Element Method (F.E.M.) and Finite Volume Method (F.E.M.). Newmark method for the solution of Oscillation Equation.
3) Notes on the methods of Interpolation and Fourier Analysis.
4) Architecture of computer systems. Processes and processors. Problems, algorithms and programs. Programming languages. Computer architecture. Von Neumann model. Fixed positional numerical systems. Basic conversions. Representation of negative numbers in form and sign and in two's complement. Representation of real numbers in normalized floating point. ASCII code. Boolean algebra and main logic functions.
5) Programming environments -C ++, Fortran 90, Matlab.
6) Programming elements. Algorithm development. Concept of variable. Elementary operations: reading, writing (IO) assignment and comparison. File Opening.
7) Flow diagrams. Pseudo-code. Control structure IF, THEN, ELSE, Cycles with pre-condition and post-condition.
8) Control structures. Algorithm design with cycles. Control on input data.
9) Basic C ++, Fortran and Matlab constructs.
10) Structure of a program. Statements and part of instructions. Declaration of variables. Type classification. Simple types, internal representation and operations. Numerical and conditional expressions. Assignment instruction. Compound education. Binary selection. Standard input / output functions. Cyclic instructions (WHILE, DOWHILE, FOR). Construction of nested cycles.
11) Programming with structured types. Array type: definition and memory representation. Type declarations with typedef. Programs on vectors. Two-dimensional arrays. Programs on matrices. Type string Type struct. File type. Primitives for sequential file management.
12) Programming with functions. Subroutines. Top-down design. Parametrics. Declaration of functions. Global variables. Local variables. Formal and current parameters. Passing parameters by reference and by value. Memory usage. Life cycle of variables. Visibility of the variables. Masking of variables. Recursion.
13. Fundamental algorithms. Sequential search. Binary search. Insertion and deletion in an ordered array.
14. Programming with pointers. Static management and dynamic memory management. Pointer type. Operations with pointers: assignment, new, delete, reference, dereferencing. Null constant. Use of pointers. Dynamic array creation. Similarity between arrays and pointers. Dynamic creation of matrices. Connected structures in dynamic memory. Linked lists with pointers.
15. Software development in C ++, Fortran and Matlab of the numerical models of points 1), 2) and 3) and their comparison, through the CodeBlocks and Matlab Compilers.
Recommended Bibliography Programming:
-Herbert Schildt. Guida al Linguaggio C++. MacGraw-Hill, 1996.
-Guido Buzzi Ferraris. Microsoft Visual C++ Applicazioni Scientifiche. Mondadori Informatica, 2000.
-William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery. Numerical Recipes in C++. Cambridge University Press, 2002.
-William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery, Michael Metcalf.
Numerical Recipes in Fortran 90. The Art of Parallel Scientific Computing. Cambridge University Press. 1997.
-Holly Moore, Matlab per l’Ingegneria (traduzione di Bassetti). Editore Pearson, Collana Prentice Hall, 2008.
Teaching Methods Teaching methods: Classroom lectures and exercises, with active involvement of students in order to encourage curiosity and spirit of investigation. Short seminars (informative only) are also planned on Python and Java languages.
Evaluation methods Verification of learning:
Written and oral exam. The written test consists of exercises and open questions, with the construction of simple softwares, in the three selected languages, for the development of an assigned algorithm. The oral exam consists in the discussion of the written test with extension to the whole program. The final grade will include the evaluation of the written test plus the oral test, but not as an arithmetic average, but as a global score.
Contacts/More Information Other information: The days of students reception are fixed. Additional appointments are foreseen after agreement.