Fundamentals of Computer Programming

Undergraduate degree programme | Academic year 2025-2026

Administrative information

Lecturers Prof. P. L. Montessoro
Prof. D. Palma
Credits 6 ECTS
Contact hours 48 hours
Teaching period First semester
Level Undergraduate
Scientific sector ING-INF/05

Aims and learning outcomes

The course aims to provide students with the fundamental concepts of computer programming and problem-solving using the C programming language. Emphasis is placed on algorithm design, data processing, hardware architectures, and software organisation, with particular attention to the precise use of technical terminology. Students will acquire the ability to design efficient algorithms and data structures and to implement them in C with correctness, readability, and modularity. In parallel, the course develops problem-solving skills by training students to decompose complex problems into simpler subcomponents, to structure coherent interactions between modules, and to formalise specifications within collaborative development environments.

Teaching methods

The course is delivered in a blended e-learning format via the University of Udine's Moodle platform, with all teaching materials available online. Teaching methods include lectures, in-class exercises, and hands-on laboratory activities.

Assessment methods

The assessment consists of a written exam (3 hours) covering both "Computer Programming" and "Data Structures and Algorithms", in which students are required to write three computer programs. The written exam is followed by an oral exam, where students discuss their solutions and answer questions on course topics. Both assessments aim to verify the acquisition of the skills and knowledge required by the course.

Topics

  • Introduction
    Fundamentals of electronic data processing; computer organisation; batch processing, multiprogramming and time-sharing; local, distributed, and client/server processing; machine language, assembler, and high-level programming languages; compilers, interpreters, and linkers; memory concepts (main memory, secondary storage, cache, memory hierarchies); introduction to concurrent programming (concurrent C).
  • Information representation and coding
    Fundamental units of information, positional notation, and representations of positive and negative integers; floating-point representations of real numbers: IEEE 754 standard; BCD and Gray codes; arithmetic overflow; text encoding: ASCII, Unicode; image representation (bitmap, raster, RGB, and YUV colour models); video encoding principles and formats; audio encoding: sampling theorem, sampling, quantisation, audio formats.
  • Error detection and correction
    Concepts of data reliability and integrity; error detection techniques: parity bits, frame check sequence (FCS), cyclic redundancy check (CRC); error correction techniques: Hamming codes, polynomial codes, convolutional codes; applications in communication systems and data storage.
  • Compression techniques
    General principles of data compression; lossless compression (Huffman coding, Shannon-Fano codes, LZ77, LZW algorithms); lossy compression (DCT, DFT, quantisation); compression standards: JPEG for images, MPEG for video, MP3, and AAC for audio.
  • Programming and algorithms
    Concept of algorithm and methods of representation (flow charts, pseudocode); principles of structured programming; modularity, readability, maintainability, and reusability; fundamental control structures; basic data structures: arrays and strings, multi-dimensional arrays; classical algorithms: linear and binary search, elementary sorting (bubble, selection, insertion), efficient sorting (quicksort, mergesort, heapsort); recursion and analysis of recursive algorithms; computational complexity and big O notation; introduction to software engineering.
  • C language
    Structure of a C program; identifiers, basic data types, constants and variables; expressions and operators; assignment statements; control structures: if, switch, while, for, do-while; functions: declaration, definition, parameter passing by value and by reference, local and global variables, stack frames; C standard library: input/output, mathematics functions, string manipulation functions; arrays and pointers; pointer arithmetic; arrays of pointers and pointers to functions; dynamic memory management; structures (struct), unions (union), and user-defined types (typedef, enum); file handling: opening, reading, writing, closing; modular program organisation (multiple source files, header files); defensive programming and error handling; debugging techniques; implementation in C of primary data structures (linked lists, stacks, queues, binary trees); engineering applications, signal and multimedia processing algorithms for images and audio.

Reading list

  1. P. Deitel and H. Deitel, “C How to Program”, 9th edition, Pearson, 2022
  2. K. N. King, “C Programming: A Modern Approach”, 2nd edition, W. W. Norton & Company, 2008

Note

The laboratory part is mandatory and must be successfully completed in order to pass the exam.