Academic year
2018/2019 Syllabus of previous years
Official course title
Course code
CT0442 (AF:283223 AR:163578)
On campus classes
ECTS credits
Degree level
Bachelor's Degree Programme
Educational sector code
2nd Semester
Course year
Go to Moodle page
The course aims at introducing the basic elements of imperative programming to devise algorithmic solutions to simple problems.

The student will learn and understand the foundations of computer science for what concerns imperative languages and basic algorithms. Moreover, the student will understand problem solvability and the ability to select suitable methods for problem analysis and modeling.
At the end of the course the student must be able to use a professional programming environment, to edit, debug, compile and run programs on Unix-like and Windows platforms. In particular, he/she must know how to:
1. formalize a problem of limited complexity (providing the specification);
2. designing one or more solutions to it (developing corresponding algorithms);
3. implement these solutions using imperative programming languages;
4. verify the execution of the proposed programs with appropriate test cases.
Basic elements of logic. Elementary notions of programming (assignments, iterations).
Variables and elementary types of the C language.
Assignment and expressions in C.
Iterations in C.
Single and multi-dimensional arrays.
Functions, parameter passing by copy and by reference.
Global and local environments. Automatic variables.
Problem solving: decomposition of problems, top-down and bottom-up solution methodologies.
Memory addresses and pointers.
Structured types.
Dynamic memory: explicit allocation and deallocation.
Abstract data types: sets, lists and stacks
Dynamic data structures.
I/O based on streams.
Pointers to functions.
- A. Kelley, I. Pohl. C didattica e programmazione. Ed. Pearson-Addison Wesley, 2004.
- B. Kernighan, D. Ritchie. Il Linguaggio C, Ed. Pearson-Prentice Hall, 2004.
The exam consists of a written test, in the the weekly laboratory assignments and a final project.

Description of the written exam for FULL TIME students:
The written test aims to evaluate the student's problem solving skills, the knowledge of the C language and the ability to code the algorithm devised as solution. This part of the exam can be taken in two ways:
With a single written exam on the scheduled dates. This exam will have an initial test with multiple choice questions to assess the student's theoretical knowledge. If the test is passed, the exercises in the second part of the exam will be evaluated.
With two intermediate exams, one during the course and the second one at the same time of the first exam call. Also in this case the exam will consist of a preliminary test to evaluate the theoretical knowledge followed by exercises.

Description of laboratory exercises and final project:
The laboratory exercises aim to develop the student's problem solving skills, the knowledge of the C language and the ability to code the solution algorithm devised in the programming language. The final project aims to evaluate the ability to apply the skills acquired to the solution of more structured problems.

The criteria for the evaluation of the laboratory part differs according to the type of student. For FULL-TIME students it is mandatory to deliver the laboratory exercises that will be assigned during the course and the final project. The laboratory part is sufficient if at least 60% of the exercises and the final project are sufficient. The evaluation of the project contributes to the determination of the final score of the course. PART-TIME students can choose whether to take the exam in full-time student mode or replace the laboratory part with an oral exam.

STUDENTS WITH CERTIFIED HEALTH PROBLEMS OR PARTICIPATING IN STUDENTS' EXCHANGE PROGRAMS OR STUDYING ABROAD may fulfill the requirements of the laboratory part with alternative tests which will be agreed with the teachers.
Lectures and laboratory exercises.
written and oral
Definitive programme.