PROCEDURAL PROGRAMMING
PROGRAMMAZIONE PROCEDURALE
A.Y. | Credits |
---|---|
2023/2024 | 9 |
Lecturer | Office hours for students | |
---|---|---|
Marco Bernardo | Thursday 16:00 - 18:00 or on demand |
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
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 typical concepts of imperative programming of procedural nature, together with a methodology for developing small-size software systems and verifying their correctness.
Program
01. Introduction to Computer Programming
01.01 Basic Definitions in Informatics
01.02 A Brief 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 Brief History of the Language 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 Induction Principle and 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 Non-Local Identifiers
06. Data Types
06.01 Data Type Classification and Operator sizeof
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 Scalar 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 Computation State and Hoare Triples
07.02 Weakest Precondition and Dijkstra Rules
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 Brief History of Linux
08.02 File Management and Major Commands 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 and Modification of C Programs and Libraries
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 except for the exam of Logic Networks and the exam of Computer Architecture.
Learning Achievements (Dublin Descriptors)
Knowledge and understanding
Students will acquire the fundamental knowledge in the field of computer programming, especially with respect to the imperative programming paradigm of procedural nature exemplified through the language ANSI C, and will become familiar with the terminology for constant definitions, variable declarations, arithmetical-logical expressions, programming statements, functions, parameters, libraries, and data types. Moreover, they will learn a methodology for developing small-size software systems, as well as the technique of Hoare triples for verifying their correctness.
Applying knowledge and understanding
Students 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, they will know how to carry it out through an imperative programming language of procedural nature.
Making judgements
Students 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
Students will be able to appropriately use the terminology of imperative programming languages of procedural nature. Furthermore, they will know how 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
Students will acquire the capacity of learning the syntactical and semantical features of any imperative programming language of procedural nature.
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
Supporting Activities
Multiple choice questions for the self-evaluation of the preparation level are available inside the Moodle platform for blended learning. During the teaching period two mark-free assessments will take place too, aimed at ascertaining the average preparation level and identifying those who need support.
Teaching, Attendance, Course Books and Assessment
- Teaching
Theory lectures and laboratory exercises.
- Attendance
Although not mandatory, course attendance is strongly recommended.
- 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).
- Assessment
Project, written exam, and oral exam.
The project, which has to be developed by groups of two on a problem that changes at each exam session, consists of implementing an ANSI C program or library for that problem by following the methodology for developing software "in the small" presented during the course. The project 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; project resubmission in the same exam session can take place only once per session and in this case a 4/30 penalty is applied to the mark of the newly submitted project because the group 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, even if the written or oral exam is taken but not passed, until the third exam session after the one in which the project is submitted.
The written exam, which can be individually taken only after passing the project and changes at each exam call, 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 individually taken only after passing the project and the written exam and takes place on the same day as the written exam, 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 › www.sti.uniurb.it/bernardo/teaching/prog_proc/
- Disability and Specific Learning Disorders (SLD)
Students who have registered their disability certification or SLD certification with the Inclusion and Right to Study Office can request to use conceptual maps (for keywords) during exams.
To this end, it is necessary to send the maps, two weeks before the exam date, to the course instructor, who will verify their compliance with the university guidelines and may request modifications.
Additional Information for Non-Attending Students
- Teaching
Same as attending.
- Attendance
Same as attending.
- Course books
Same as attending.
- Assessment
Same as attending.
- Disability and Specific Learning Disorders (SLD)
Students who have registered their disability certification or SLD certification with the Inclusion and Right to Study Office can request to use conceptual maps (for keywords) during exams.
To this end, it is necessary to send the maps, two weeks before the exam date, to the course instructor, who will verify their compliance with the university guidelines and may request modifications.
« back | Last update: 05/01/2024 |