00819 - Programming

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 Systems Technologies (cod. 6007)

Learning outcomes

At the end of the course, the student has a basic understanding of programming using the C language, both from a conceptual and practical perspective, for the development of medium-complexity software applications. In particular:

  • they possess the methodological foundations for the analysis and development of software systems according to the imperative  paradigm
  • they are familiar with programming techniques, both conceptually and practically, and are able to apply them to real-world cases of medium complexity
  • they know and can use fundamental data structures and related algorithms
  • they have fundamental knowledge of the functional aspects of modern object-oriented languages.

Course contents

The Programming course is designed to provide strong competence in 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, using the C programming language — which is explained in detail without assuming any prior knowledge — the course analyzes several fundamental problems and some of the main and most interesting solution algorithms.

Topics covered include memory organization in a computer (addresses, words, pointers), data types, data structures, the structure of a program, inclusion of headers and libraries, pointers and pointer arithmetic, arrays and matrices and their memory representation, complex data structures, library functions and user-defined functions, parameter passing, recursive functions, input/output functions, file-handling functions, functions for direct memory management, and string functions. The course also covers algorithm design and analysis.


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