00819 - Programming (CL.A)

Academic Year 2025/2026

  • Moduli: Antonella Carbonaro (Modulo 1) Mirko Ravaioli (Modulo 2)
  • Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2)
  • Campus: Cesena
  • Corso: First cycle degree programme (L) in Computer Science and Engineering (cod. 6673)

Learning outcomes

After completing the course, the student has a strong knowledge of programming using C language and the analysis of some fundamental problems and related algorithms solvers.

Course contents

The Programming course is designed to provide students with strong skills in computer programming. No prior knowledge of computer science is required. The course begins with an introduction to the algorithmic approach to problem-solving using computers. Then, through the use of the C programming language, presented in a detailed and accessible manner, regardless of students’ previous experience, the course addresses key problems, data structures, and algorithms.

The C Language

Memory organization, addresses, words, pointers. Data types and data structures. C language: goals and features. Structure of a C program: headers, declarations, libraries. Pointers and pointer arithmetic. Arrays and matrices and their memory representation. Data structures: lists, stacks, queues, trees. Standard and user-defined functions. Parameter passing. Recursive functions. Input/output functions. File handling functions. Dynamic memory management functions. String functions

Algorithm Design and Analysis

Data types; algebraic specification and implementation: arrays, lists, stacks, queues, trees. Algorithms with data structures: construction, searching, and sorting
Course Structure

The Programming course is divided into two distinct modules, designed to support a complete and progressive learning experience:

Module 1 – Lectures (in-class)

This module takes place entirely in the classroom and systematically covers all topics in the syllabus. Lectures guide students through the fundamental theoretical concepts of programming, providing the foundation needed for hands-on practice.

Module 2 – Laboratory (on-site)

The second module is fully dedicated to laboratory activities. Here, students have the opportunity to apply what they have learned in class by writing code, solving exercises, and working on small projects. The goal is to reinforce theoretical knowledge through guided, hands-on experience.

Readings/Bibliography

Required for exam preparation:
Copies of the lecture slides and the teaching materials provided by the instructor on the course website.

Recommended reading:
Programming in C – Kim N. King – Apogeo, 2009.

Further reading:
Introduction to Algorithms – T. H. Cormen, C. E. Leiserson, R. L. Rivest – MIT Press, Cambridge, 1990.

Teaching methods

Teaching methods:
Lectures, classroom exercises, and laboratory sessions.

Given the nature of the activities and the teaching methods adopted, attendance to this course requires all students to have previously completed Modules 1 and 2 of the safety training for study environments, available in e-learning format at [https://elearning-sicurezza.unibo.it/ ].

Assessment methods

he learning assessment consists of a written exam followed by an oral exam.

The written exam is designed to assess the student’s programming skills in the C language, particularly the ability to implement efficient algorithms, as well as the knowledge covered by the course syllabus.

In order to be admitted to the mandatory oral exam, students must obtain a passing grade on the written exam (i.e., a score of at least 18 out of 30). The oral exam, also graded on a 30-point scale, is intended to verify the student’s understanding of the course contents.

The final grade, expressed in thirtieths, takes into account the results of both the written and oral exams.

Although attendance is not mandatory, active participation in lectures and lab sessions is strongly recommended, as it provides essential support for effectively and progressively acquiring the course content.

Teaching tools

All materials used during lectures and laboratory exercises are also made available in electronic format and can be accessed through the University's online platforms dedicated to the course.

Office hours

See the website of Antonella Carbonaro

See the website of Mirko Ravaioli

SDGs

Quality education Industry, innovation and infrastructure

This teaching activity contributes to the achievement of the Sustainable Development Goals of the UN 2030 Agenda.