IN/0156 - FUNDAMENTALS OF COMPUTER SCIENCE
Academic Year 2021/2022
Free text for the University
MATTEO FRASCHINI (Tit.)
- Teaching style
- Lingua Insegnamento
|[70/89] ELECTRICAL, ELECTRONIC AND COMPUTER ENGINEERING||[89/10 - Ord. 2016] ELETTRICA||6||60|
|[70/89] ELECTRICAL, ELECTRONIC AND COMPUTER ENGINEERING||[89/20 - Ord. 2016] ELETTRONICA||6||60|
|[70/89] ELECTRICAL, ELECTRONIC AND COMPUTER ENGINEERING||[89/30 - Ord. 2016] INFORMATICA||6||60|
The main objective of the Fundamentals of Computer Science course is to give an overview of basic concepts of computer science, along with methods and tools to code using C programming language.
Knowledge and understanding. At the end of the course the student will be able to understand the organization and the working logic of modern information systems, to develop algorithms for the solution of problems of medium complexity and encode them in C language.
Applying knowledge and understanding. At the end of the course the student will have demonstrated to be able to apply this knowledge and understanding skills to define and develop solutions to problems related to their field of study.
Making judgements. The student will be able to interpret, evaluate and express independent judgments in relation to issues related to the fundamental principles of computer science and C programming.
Communication skills. The student will be able to communicate information, ideas, problems and solutions to specialists and non-specialist interlocutors.
Learning skills. At the end of the course the student will have developed the necessary skills to undertake new programming paradigms and / or new languages, with a high degree of autonomy.
Knowledge of elementary calculus and algebra. Familiarity with computer use.
• Binary Representation of Numbers: natural, integer, fractional and real numbers.
• Character encoding. Coding of images, sounds and video.
• Concept of algorithm, languages and computer systems. Applications of computer science and its subject areas. Coding algorithms.
• The core of the C language, first examples of C.
• Structured data in C, the design of programs in C.
• Structure of C programs: definitions, variables, constants, statements
• Classification of data types.
• Predefined simple types: int, float, double, char.
• Simple user-defined types: redefinitions, enumerations.
• Structured types: arrays, structs, pointers.
• Arrays, pointers and pointer arithmetic.
• Expressions and strong typing.
• Selection Statements: if-else, switch.
• Loop statements: for, do-while loop.
• Functions: definition, call, execution. Parameter passing.
• Practical use of functions.
• System functions, header, scanf.
• The management of dynamic memory: allocation and de-allocation of memory in C
• File Operations in C. Reading and writing to and from files
• Abstract data types.
• Fundamentals of computer architecture.
• Fundamentals of Operating System.
• Introduction to computer security: basic concepts about computer security. Cyber attacks. Basics of authentication and encryption.
Lectures: 48 hours.
Lectures with exercises (C language): 12 hours.
The teaching activity will be mainly delivered in presence, integrated with online strategies, in order to guarantee its use in an innovative and inclusive way
Verification of learning
The exam is organised as both theory and C language questions. The exam is made through a written examination, including open-ended questions, closed, multiple choice questions,
resolution of exercises for converting between binary, octal, hexadecimal, decimal numbers. The C language part is about writing C code, and / or interpret a C program, and / or answering questions about C language.
The written examination is indispensable. A further oral examination is required for students that obtain a score in the range between 16 and 20, optional for students that obtain a higher score.
In case of oral examination, the final score will be balanced as follows: 30% for oral examination, 70% for written examination. Further information during the pandemic period are available at the following link: https://elearning.unica.it/course/view.php?id=65
Bellini, Guidi. Linguaggio C. McGraw-Hill
Dennis M. Ritchie, Brian W. Kernighan, “C Language", Pearson.
D. Mandrioli et al., "Informatica: arte e mestiere", Mc. Graw Hill Italia, Milano
E. Burattini et al., Che C serve? APOGEO
J. Glenn Brookshear, Fondamenti di Informatica e Programmazione in C. Pearson
The tools to support teaching can be found on the website https://matteogithub.github.io/teaching/ and Moodle (https://elearning.unica.it/course/view.php?id=65).
Among them there are:
- the slides shown in class
- conversion exercises between numbers in different formats, with the solution
- C language exercises, with their solutions
- examples of written examinations, with solutions