FONDAMENTI DI INFORMATICA A - E
Academic Year 2024/2025 - Teacher: GAETANO PATTIExpected 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 of developing 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 themultimedia 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.
Student Reception may be also carried out online, by appointment.
Required Prerequisites
Attendance of Lessons
Detailed Course Content
Asterisks (*) indicate the minimum skills.
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 Ed o 5a Ed., 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 conversion algorithms. 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. Interrupt. Boolean algebra. | - Lecture notes provided by the lecturer. - Textbook: Chapter 1. |
3 | Operating System. CPU management policies, central memory and mass memory management policies. | - Lecture notes provided by the lecturer. - Textbook: Chapter 2. |
4 | Algorithms and Programs. Programming languages. Translation and execution 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. Instruction 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. Struct arrays. Reading and writing of characters and strings. Formatted I/O. Text files. Dynamic memory allocation. Pouinters 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. | Textbook: Case studies III and IV. - Lecture notes provided by the lecturer |
Learning Assessment
Learning Assessment Procedures
The course final exam consists of a written assignment (mandatory) and an oral test (optional). The written assignment, two hours long, consists of a programming task to be developed on a computer, which scores up to 24/30 marks, and of a theory section, made up of one or multiple open-ended questions that score 6/30 marks in total. The programming task consists of multiple jobs, whose scores are explicitly indicated in the assignment text (e.g., 3 functions scoring up to 6 marks each, etc.). The written task is passed with a total mark greater than or equal to 18/30. Students can integrate the written examination with an oral one to be taken in any regular exam session (before the end of the academic year).
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 programs in C language for the management of complex data structures will be assessed through questions concerning:
- The implementation of multiple choice menus.
- The use of functions and passing of parameters.
- The implementation of array structs.
- The implementation of lists.
- Tne 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 algorithm and program?
- 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 task?
- 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?
- Whati is the difference between compilers and interpreters?
- What is a flowchart and what is it used for?