Università degli Studi di Urbino Carlo Bo / Portale Web di Ateneo


A.Y. Credits
2018/2019 9
Lecturer Email Office hours for students
Marco Bernardo Wednesday 16.00 - 18.00
Teaching in foreign languages
Course with optional materials in a foreign language English
This course is entirely taught in Italian. Study materials can be provided in the foreign language and the final exam can be taken in the foreign language.

Assigned to the Degree Course

Applied Informatics (L-31)
Date Time Classroom / Location
Date Time Classroom / Location

Learning Objectives

The objective of this course is to illustrate the basic principles, the techniques, and the tools for programming computer applications, through the presentation of the concepts typical of procedural imperative programming.


01. Introduction to computer programming
  01.01 Basic definitions in informatics
  01.02 A bit of history of informatics
  01.03 Elements of computer architecture
  01.04 Elements of operating systems
  01.05 Elements of programming languages and compilers
  01.06 A methodology for developing software "in the small"

02. Procedural programming: the language ANSI C
  02.01 A bit of history of C
  02.02 Format of a program with a single function
  02.03 Library inclusion
  02.04 Function main
  02.05 Identifiers
  02.06 Predefined data types: int, double, char
  02.07 Library functions for interactive input/output
  02.08 Library functions for file-based input/output

03. Expressions
  03.01 Symbolic constant definition
  03.02 Variable declaration
  03.03 Arithmetical operators
  03.04 Relational operators
  03.05 Logical operators
  03.06 Conditional operator
  03.07 Assignment operators
  03.08 Increment/decrement operators
  03.09 Operator comma
  03.10 Type of the expressions
  03.11 Precedence and associativity of the operators

04. Statements
  04.01 Assignment statement
  04.02 Compound statement
  04.03 Selection statements: if, switch
  04.04 Repetition statements: while, for, do-while
  04.05 Statement goto
  04.06 Fundamental theorem of structured programming

05. Procedures
  05.01 Format of a program with several functions on a single file
  05.02 Function declaration
  05.03 Function definition and formal parameters
  05.04 Function invocation and actual parameters
  05.05 Statement return
  05.06 Parameters and result of function main
  05.07 Passing parameters by value and by reference
  05.08 Recursive functions
  05.09 Stack-based sequential execution model
  05.10 Format of a program with several functions on several files
  05.11 Scope of local and nonlocal identifiers

06. Data types
  06.01 Data type classification and sizeof operator
  06.02 Type int: representation and variants
  06.03 Type double: representation and variants
  06.04 Mathematical library functions
  06.05 Type char: representation and library functions
  06.06 Enumerated types
  06.07 Type conversions and cast operator
  06.08 Arrays: representation and indexing operator
  06.09 Strings: representation and library functions
  06.10 Structures and unions: representation and dot operator
  06.11 Pointers: operators and library functions

07. Correctness of procedural programs
  07.01 Hoare triples
  07.02 Determining the weakest precondition
  07.03 Verifying the correctness of iterative procedural programs
  07.04 Verifying the correctness of recursive procedural programs

08. Laboratory activities in Linux
  08.01 A bit of history of Linux
  08.02 File management in Linux
  08.03 The editor gvim
  08.04 The compiler gcc
  08.05 The maintenance utility make
  08.06 The debugger gdb
  08.07 Implementation of the C programs introduced in the lectures

Bridging Courses

There are no mandatory prerequisites.

It is recommended to take the exam of Procedural Programming after taking the exam of Logic, Algebra and Geometry and before taking all the other exams of informatics.

Learning Achievements (Dublin Descriptors)

Knowledge and understanding
The student will acquire the fundamental knowledge in the field of computer programming, especially for the procedural imperative programming paradigm exemplified through the ANSI C language, and will become familiar with the terminology for constant definitions, variable declarations, arithmetical-logical expressions, programming statements, functions, parameters, libraries, and data types. Moreover, the student will know a methodology for developing small-size software systems, as well as the technique of Hoare triples for verifying their correctness.

Applying knowledge and understanding
The student will be able to design and develop small-size software systems by means of the application of a methodology that covers problem analysis, algorithm design, and program implementation, testing, verification, and maintenance. As far as the implementation phase is concerned, the student will know to carry it out through a procedural imperative programming language.

Making judgements
The student will be able to evaluate and compare alternative designs of the same small-size software system, as well as to analyze and contrast alternative implementations of the same software design.

Communication skills
The student will be able to appropriately use the terminology of procedural imperative programming languages. Furthermore, the student will know to illustrate the main characteristics of the design and the implementation of a small-size software system, including the production of the software system documentation in terms of technical report, internal comments, and user manual.

Learning skills
The student will acquire the capacity of learning the syntactical and semantical features of any procedural imperative programming language.

Teaching Material

The teaching material prepared by the lecturer in addition to recommended textbooks (such as for instance slides, lecture notes, exercises, bibliography) and communications from the lecturer specific to the course can be found inside the Moodle platform › blended.uniurb.it

Didactics, Attendance, Course Books and Assessment


Theory lectures and laboratory exercises.


Although strongly recommended, course attendance is not mandatory.

Course books

Hanly, Koffman, "Problem Solving and Program Design in C", Addison-Wesley, 2016
(Hanly, Koffman, "Problem Solving e Programmazione in C", Apogeo, 2013).

Kernighan, Ritchie, "The C Programming Language", Prentice Hall, 1988
(Kernighan, Ritchie, "Il Linguaggio C", Pearson/Prentice Hall, 2004).


Project, written exam, and oral exam.

The project, which changes at each exam session, consists of implementing an ANSI C program or library by following the methodology for developing software "in the small" presented during the course. It has to be submitted at least 10 days before the written exam. In case of late submission, a 3/30 penalty is applied for each day after the deadline.  Should the project be resubmitted in a subsequent exam call, the mark of the previously submitted project is canceled; if the resubmission takes place in the same exam session, a 5/30 penalty is applied to the mark of the newly submitted project because the developers can benefit from the correction of the previously submitted project. The project is passed if the mark is at least 18/30; the mark is valid until the third exam session after the one in which the project is submitted.

The written exam, which changes at each exam call and can be taken only if the project has been passed, consists of 8 questions plus 2 exercises to carry out in 90 minutes. It is passed if the mark is at least 18/30; the mark is valid only for the exam call in which the written exam is taken.

The oral exam, which can be taken only if the project and the written exam have been passed, consists of a discussion of the project and of the written exam, plus further questions. If passed, it determines an adjustment between -5/30 and 5/30 of the average of the two previous marks, thus yielding the final mark.

For further information about projects and written exams › www.sti.uniurb.it/bernardo/teaching/prog_proc/


The course offers additional e-learning facilities on the Moodle platform › elearning.uniurb.it

« back Last update: 07/10/2018


Questo contenuto ha risposto alla tua domanda?

Il tuo feedback è importante

Raccontaci la tua esperienza e aiutaci a migliorare questa pagina.

Se sei vittima di violenza o stalking chiama il 1522

Il 1522 è un servizio pubblico promosso dalla Presidenza del Consiglio dei Ministri – Dipartimento per le Pari Opportunità. Il numero, gratuito è attivo 24 h su 24, accoglie con operatrici specializzate le richieste di aiuto e sostegno delle vittime di violenza e stalking.

Posta elettronica certificata



Performance della pagina

Università degli Studi di Urbino Carlo Bo
Via Aurelio Saffi, 2 – 61029 Urbino PU – IT
Partita IVA 00448830414 – Codice Fiscale 82002850418
2021 © Tutti i diritti sono riservati