FONDAMENTI DI INFORMATICA F - O
Academic Year 2024/2025 - Teacher: LUCA LEONARDIExpected Learning Outcomes
Knowledge and understanding
At the end of the course, the students will have acquired: Knowledge about the information representation inside computers and about the computer architecture. Understanding of how computers work. Knowledge about base software and operating systems. Understanding of algorithms.Knowledge about programming languages, compilers, and interpreters. Knowledge about computer networks. Knowledge about structured programming and C programming.
Applying knowledge and understanding.
At the end of the course, the student will have acquired the ability to develop C programs for solving engineering calculation problems or for complex data structure management (archives, warehouses, etc.). They will also be able to apply the acquired knowledge to the selection of both the HW/SW components and the development tools suitable for the problem to be solved.
Making judgements.
At the end of the course, while developing programs, the students will be able to autonomously make the suitable design choices based on the requirements. Such an ability is refined through the classroom exercises during the course and the programming tests at the examinations.
Communication skills.
At the end of the course, the students will have acquired mastery of computer engineering terminology. They will be able to present the computer architecture and software structure, the computer networks and structured programming concepts to both a specialist and a non-specialist audience, explaining the design choices made to solve the problems in a clear and unambiguous way.
Learning skills.
At the end of the course, the students will be able to autonomously extend their computer engineering knowledge and competences going through the relevant literature and reading papers published on specialialized magazines. They will also be able to improve their programming skills, also in other programming languages than C, by studying tutorials, programming guides and manuals.
Course Structure
The course is based on lectures, which also include the development of exercises by the lecturers. The course also includes programming exercises carried out by the students, also taking advantage of the multimedia rooms at the University premises. The above described methods of running the course allow the achievement of the pre-established training objectives, which include the acquisition of knowledge and the ability to apply knowledge.
Should teaching be carried out in mixed mode or remotely, it may be necessary to introduce changes with respect to previous statements, inline with the programme planned and outlined in the syllabus.Required Prerequisites
Attendance of Lessons
Detailed Course Content
Information Representation. Numbering systems and conversion algorithms. Integer and floating point numbers. (*)
Computer architecture. The computer structure: central memory, central unit, elementary operation of the computer. (*)
Operating System. Translation and execution of programs. Programming Environment. Compilers vs. interpreters. Operating System. (*)
Algorithms and Programs. Automatic data processing. Algorithms and programs. Programming languages. The design of a program. (*)
Computer Networks and the Internet. Computer networks. Local area networks. Wide area networks. Internet and the most popular network applications. (*)
The ‘’C’’ programming language: Syntax and semantics. Control: Assignment. Control structures. Data Types in C: simple types (int, char, float, double) and structured (arrays and strings, structures). The pointer type. Functions. Scope of identifiers. Declarations and scope of identifiers. Local variables, global and static. Techniques for binding of parameters. Recursion. Files: text files and binary files. (*)
Sorting and searching algorithms. Sequential and binary search. Sorting algorithms. (*)
Dynamic memory allocation. (*)
Data Structures. Lists. (*)
Textbook Information
- A. Bellini, A. Guidi, "Linguaggio C - guida alla programmazione", 4a Edition (or 5a Ed. or 6a Ed., at the student's choice), McGraw-Hill
- Lecture notes. Avalable online on Studium (https://studium.unict.it) on the course section.
Course Planning
Subjects | Text References | |
---|---|---|
1 | Information Representation. Bynary numbering system, Hexadecimal and Octal numbering systems. Numerical conversionalgorithms. Integer and floating point number representation. ASCII code. | - Lecture notes provided by the lecturer. - Textbook: Appendix D. |
2 | Computer architecture and basic computer operations. Instruction execution steps. Interrupts. Boolean algebra. | - Lecture notes provided by the lecturer. - Textbook: Chapter 1. |
3 | Operating System. CPU management policies, central memory andmass memory management policies. | - Lecture notes provided by the lecturer. - Textbook: Chapter 2. |
4 | Algorithms and Programs. Programming languages. Translation andexecution of programs. Linker. Flow charts. | - Lecture notes provided by the lecturer. - Textbook: Chapters 3 and 4. |
5 | The ‘’C’’ programming language. Data Types. Variables. Storage classes. Constants. Operators. Control structures. Instructions for selection, iteration, jump, expressions, program blocks. Preprocessor directives: include, define. | Textbook: Chapters 5,6,7,8,9,23. |
6 | Array. Pointers. Array pointers. Strings. Structures. Arrays of structures.Reading and writing of characters and strings. Formatted I/O. Textfiles. Dynamic memory allocation. Pointers to structures. | Textbook: Chapters 10, 13, 14, 16. |
7 | Functions. return instruction. parameter passing. Recursion. Local variables. Variable scope and lifetime. | Textbook: Chapters 11, 15, 17, 19, 20. |
8 | Sorting and searching algorithms. | Textbook: Chapters 12. |
9 | Linear data structures: Lists. | Textbook: Chapters 21. |
10 | Exercises on the covered topics. | - Lecture notes provided by the lecturer. |
Learning Assessment
Learning Assessment Procedures
The student reservation on the University portal is mandatory.
Should teaching be carried out in mixed mode or remotely, it may be necessary to introduce changes with respect to previous statements, in line with the program planned out in the syllabus.
Two tests are foreseen during the course. The first one consists of questions on the theoretical part and is one hour long. The second test, carried out on the computer, consists of multiple programming tasks and is two hours long.
The scores of each question and task are explicitly indicated in the assignment text.
The students who will have passed the two tests, i.e., who obtained a mark greater than or equal to 18/30 in each of the two tests, can either accept the proposed mark (i.e., the average of the marks of the two tests) or, upon request, try to improve the evaluation by integrating the two tests with an oral exam to be taken in any regular exam session (before the end of the academic year).
Examples of frequently asked questions and / or exercises
The ability to develop C language programs for the management of complex data structures will be assessed through questions about:
- The implementation of multiple choice menus.
- The use of functions and passing parameters.
- The implementation of arrays of structures.
- The implementation of lists.
- The use of recursion through examples of recursive functions.
The questions in the theory section may be similar to, but not limited to, those listed below:
- What is the difference between data and information?
- What are the fundamental elements of the architecture of computing systems?
- How to perform basic conversions between the various numbering systems (decimal, binary, hexadecimal, octal)?
- What are the main components of the CPU?
- What are interrupts?
- What is a register?
- What is the Program Counter used for?
- What is an algorithm?
- What is the difference between algorithms and programs?
- What is the difference between the Internet and the Web?
- What is a network protocol?
- What are the main differences between central memory and mass memory?
- Describe the memory hierarchy.
- What is an Operating System? What is its role in a computing system?
- What does multiprogramming mean?
- What is the scheduler and what is its purpose?
- What does file system mean?
- Define the concept of process.
- What is the difference between process and program?
- Describe the state diagram of a process.
- What is the Assembler language?
- What is the difference between compilers and interpreters?
- What is a flowchart and what is it used for?