FOUNDATIONS OF COMPUTER SCIENCE M - Z
Academic Year 2022/2023 - 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. Knowledge about
handling text documents and spreadsheets. Basic knowledge of database design
and management.
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. Finally, the
student will be able to manage text documents and spreadsheets, as well as to
design simple databases.
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.Required Prerequisites
Attendance of Lessons
Attendance is mandatory.
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. (*)
Management of text documents. (*)
Spreadsheet design and management. (*)
Introduction to databases design and management. (*)
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 | Management of text documents. | - Lecture notes provided by the lecturer. |
10 | Spreadsheets. | - Lecture notes provided by the lecturer. |
11 | Introduction to databases. | - Lecture notes provided by the lecturer. |
12 | 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 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?