00819 - Programming (CL.B)

Academic Year 2025/2026

  • Moduli: Paola Salomoni (Modulo 1) Roberto Girau (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

At the end of the course, the student will have a basic understanding of programming in the C language, as well as the ability to analyze some fundamental problems and their corresponding solution algorithms.

Course contents

The Programming course aims to provide basic competence in computer programming. No prior knowledge of computer science is required. Initially, a basic description of the algorithmic approach to problem-solving using computers is provided. Subsequently, using the C language, which is described in detail regardless of any prior knowledge the students may have, some fundamental problems and some of the main and most interesting solving algorithms are analyzed.

The C Language

  • Organization of computer memory: addresses, words, pointers.
  • Data types: integers, floats, double, char, string.
    Data structures: arrays, matrices, lists.
  • The C language: purposes and main characteristics.
  • Structure of a C program: including headers, variable declarations, libraries.
  • Elementary data types in C: integers, floating point, double, small int, long, char.
  • Pointers and pointer arithmetic.
  • Arrays and matrices and their memory representation.
  • Complex data structures: lists, trees.
  • Library functions and user-defined functions.
  • Parameter passing by value and by address to functions.
  • Recursive functions.
  • Input/output functions, file functions, functions for direct memory management, string functions.

Algorithm Design and Analysis

  • Data types; algebraic specification and implementation: vectors, lists, stacks, queues.
  • Algorithms with data structures: construction, search, and sorting in linear lists; management of queues and stacks.

Readings/Bibliography

Brian W. Kernighan, Dennis M. Ritchie. Linguaggio C. Jackson libri.

Copies of the presentations used in class and notes provided by the lecturerers.

Teaching methods

Lectures, classroom exercises, computer exercises.

Given the type of activities and the teaching methods adopted, attendance of this course requires all students to have previously completed Modules 1 and 2 of the safety training for study environments [https://corsi.unibo.it/laurea/IngegneriaScienzeInformatiche/formazione-obbligatoria-su-sicurezza-e-salute], available in e-learning mode.

Assessment methods

The Programming course exam consists of three parts: the completion of various assignments (on a weekly basis), a written test, and a subsequent oral exam. All details are available on the Virtuale platform.

Teaching tools

All materials used during lectures and lab exercises are also made available in electronic format on the Virtuale platform.

Office hours

See the website of Paola Salomoni

See the website of Roberto Girau