Skip to content

Università Liedia de Bulsan

Fondamenti di Programmazione

Semester 1-2 · 42426 · Corso di laurea in Ingegneria elettronica e dell’Informazione · 11CFU · EN


The course refers to the basic educational activities and belongs to the scientific area of Computer Science.
The course is designed for acquiring professional skills and knowledge.
The objective of the course is to teach the fundamental principles of programming, with a focus on structured programming, and tools to support the development of software.
Students will learn how to solve computational problems with well-designed programs The learning will be based on examples and practical assignments, from very simple ones to more complex.
The final objective for the student is to acquire the ability to translate a set of functional and non-functional requirements into a software solution.

Dozenc: Sergio Tessaris, Rosella Gennari
Teaching assistants: Muhammad Bilal Khan

Ores de ensegnament: 70
Ores de laboratore: 60
Oblianza de frecuenza: Strongly recommended

Argomenc dl curs
Module 1: Module 1 introduces the fundamental concepts of programming and computational problem solving through Python and simple physical-computing platforms (e.g., Raspberry Pi Pico). The focus is on acquiring transferable programming skills while interacting with sensors and simple embedded systems. 1. Introduction to computing systems and programming 1.1. Hardware and software 1.2. Basic computer organisation 1.3. Data hierarchy and data representation 1.4. Machine language, assembly language, and high-level programming languages 1.5. Introduction to Python: interactive mode, script mode, and Jupyter notebooks 2. Fundamentals of algorithm and program design 2.1. Algorithms: input, output, definiteness, finiteness, and effectiveness 2.2. Algorithm specification and design using pseudocode and flowcharts 2.3. Fundamental notions of correctness, termination, and computational cost 2.4. Programs and programming paradigms 2.5. Structured programming paradigm: sequencing, selection, and iteration 3. Fundamental programming constructs in Python 3.1. Basic data types 3.2. Variables, constants, operators, and expressions 3.3. Standard input/output handling 3.4. Control-flow structures 3.5. Error and exception handling 4. Basic data structures in Python 4.1. Lists 4.2. Tuples 4.3. Dictionaries 4.4. Sets 5. Functions, modules, and code reuse 5.1. Functions and subroutines 5.2. Parameters and return values 5.3. Variable scope 5.4. Modules and packages 6. File handling and Physical Computing with MicroPython 6.1. File input/output 6.2. Programming microcontroller-based systems using MicroPython (e.g., Raspberry Pi Pico/Pico W, ESP32) 6.3. Acquisition of data from sensors and input devices 6.4. Processing and storage of acquired data 6.5. Displaying data and display devices _______________________ Module 2: The following topics will be covered by focusing on the C programming language and its specific features. Differences and similarities with Python will be outlined. 1. Introduction to C programming and toolchain 1.1. Understanding and using the compiler toolchains 1.2. Understanding cross-compilation 1.3. Tools to support modern software development 2. C language: syntax and data types 2.1. C standards 2.2. Control flow 2.3. Basic and derived types 3. C memory management and activation record 3.1. C memory organisation 3.2. Dynamic memory management 4. C programming techniques 4.1. Organisation of software artifacts in C 4.2. Effective use of C constructs and data types 4.3. Defensive programming techniques 5. Debugging and software testing 5.1. Techniques and strategies for effective debugging of code 5.2. Debugging tools 5.3. Unit testing

Modalité de ensegnament
Lectures, exercises, laboratory activites

Obietifs formatifs
The course refers to the basic educational activities and belongs to the scientific area of Computer Science. The course is designed for acquiring professional skills and knowledge. The objective of the course is to teach the fundamental principles of programming, with a focus on structured programming, and tools to support the development of software. Students will learn how to solve computational problems with well-designed programs The learning will be based on examples and practical assignments, from very simple ones to more complex. The final objective for the student is to acquire the ability to translate a set of functional and non-functional requirements into a software solution.

Obietifs formatifs y competenzes da arjonje (informazions suplementares)
Knowledge and understanding • Know the fundamental principles of programming. • Know different programming paradigms and models of computation. • Have a solid knowledge of the most important data structures and programming techniques. Applying knowledge and understanding • Be able to solve problems using programming. • Be able to develop small and medium size programs starting from given requirements. Making judgements • Be able to collect and interpret useful data and to judge information systems and their applicability. • Be able to identify an appropriate programming paradigm and data structures to solve a given problem. Communication skills • Be able to describe and motivate the software design choices. • Be able to properly document a software artifact to ensure its integration in more complex systems. Learning skills Be able to learn how to use different procedural programming languages in autonomy, by identifying and understanding the relevant literature.

Sort de ejam
MODULE 1: ASSESSMENT Module 1 is assessed through a written examination and, for attending students, an optional laboratory project. NOTA BENE: "attending students" are students who attend at least 70% of the ENTIRE course. The written examination consists of two parts: * Part I: theoretical questions and Python programming exercises; * Part II: MicroPython programming exercises related to physical-computing applications. Attending students are eligible to submit an optional mini-project developed during the laboratory activities. The project may contribute up to 3 additional marks to the final Module 1 grade (see details below). The mark of the project remains valid for one academic year and cannot be carried forward beyond that period. The mark of the written examination is valid only for the examination session in which it is achieved. ---------------------------------------------- MODULE 2: ASSESSMENT Assessment is divided in two parts: 1. Written final closed-book exam, with review questions about the lecture material and programming exercises. The results of the written exam are only valid for the session of the examination. 2. Lab practical assignments to be submitted online; contributions will be valid for 1 academic year and cannot be carried over beyond that time-frame.

Criters de valutazion
PASS CRITERIA A student passes the course only if they: obtain a passing grade (minimum 18/30) in both Module 1 and Module 2; and complete all compulsory assessment components by the specified deadlines. ---------------------------------- MARKING SCHEME The final course grade is the weighted average of the grades obtained in Module 1 (60%) and Module 2 (40%). Module 1 (0–30): Written examination: graded on a scale from 0 to 30. Optional laboratory project: attending students (minimum 70% attendance) may submit a project developed during the laboratory activities. The project may contribute up to 3 additional marks to the Module 1 grade. Module 2 (0–30): The mark for Module 2 ranges from 0 to 30: the assignments count for 40%, and the written exam counts for 60% of the mark. ---------------------------------- EVALUATION CRITERIA Written examinations are assessed on the basis of correctness, completeness, and clarity. Assignments and projects are assessed on the basis of: quality of the solution, according to the criteria presented in class and documented in the course materials; problem-solving skills; communication skills; critical-thinking skills. ---------------------------------- NOTA BENE 1. All assignments/projects must be submitted by the specified deadline. Failure of doing so will result in an incomplete submission and non-admission to the final evaluation. 2. In the case of Module 2, only the assignments, clearly indicated beforehand, will contribute to the mark. 3. The award of cum laude is jointly decided by the course lecturers and can be granted only to students who obtain a grade of 30/30 in both Module 1 and Module 2.

Bibliografia obligatora

Material is provided during the course.



Bibliografia aconsieda

Material is provided during the course.



Deplù informazions
Subject Librarian: David Gebhardi, David.Gebhardi@unibz.it and Ilaria Miceli, Ilaria.Miceli@unibz.it


Descargar cie PDF

Obietifs per n svilup sostenibel
Chesta ativité didatica deida da arjunje chisc obietifs per n svilup sostenibel

4 9

Modules

Semester 1 · 42426A · Corso di laurea in Ingegneria elettronica e dell’Informazione · 6CFU · EN

Module A — Fondamenti di Programmazione I

The course refers to the basic educational activities and belongs to the scientific area of Computer Science.
The course is designed for acquiring professional skills and knowledge.
The objective of the course is to teach the fundamental principles of programming, with a focus on structured programming, and tools to support the development of software.
Students will learn how to solve computational problems with well-designed programs The learning will be based on examples and practical assignments, from very simple ones to more complex.
The final objective for the student is to acquire the ability to translate a set of functional and non-functional requirements into a software solution.

Dozenc: Rosella Gennari
Teaching assistants: Muhammad Bilal Khan

Ores de ensegnament: 40
Ores de laboratore: 20

Argomenc dl curs
1. Introduction to computing systems and programming: hardware and software; basic computer organisation; data hierarchy and data representation; machine language, assembly language, and high-level programming languages. Introduction to Python: interactive mode, script mode, and Jupyter notebooks. 2. Fundamentals of algorithms and program design: algorithms (input, output, definiteness, finiteness, and effectiveness); algorithm specification and design using pseudocode and flowcharts; fundamental notions of correctness, termination, and computational cost; programs and programming paradigms, with a focus on the structured programming paradigm. 3. Fundamental programming constructs in Python: basic data types, variables, constants, operators and expressions; standard input/output handling; control-flow structures (sequencing, selection, and iteration); error and exception handling. 4. Basic data structures in Python: lists, tuples, dictionaries, and sets. 5. Functions, modules, and code reuse in Python: functions and subroutines (with and without parameters; with and without return values); variable scope; modules and packages. 6. File handling and physical computing with MicroPython: file input/output; programming microcontroller-based systems (e.g., Raspberry Pi Pico/Pico W, ESP32); acquisition of data from sensors and input devices; processing and storage of acquired data; displaying data through display devices.

Modalité de ensegnament
Interactive lectures, guided exercises and quizzes, hands-on Python and MicroPython laboratory activities, and optional project work.

Bibliografia obligatora

Made available in the course repository



Bibliografia aconsieda

Made available in the course repository



Semester 2 · 42426B · Corso di laurea in Ingegneria elettronica e dell’Informazione · 5CFU · EN

Module B — Fondamenti di Programmazione II

The course refers to the basic educational activities and belongs to the scientific area of Computer Science.
The course is designed for acquiring professional skills and knowledge.
The objective of the course is to teach the fundamental principles of programming, with a focus on structured programming, and tools to support the development of software.
Students will learn how to solve computational problems with well-designed programs The learning will be based on examples and practical assignments, from very simple ones to more complex.
The final objective for the student is to acquire the ability to translate a set of functional and non-functional requirements into a software solution.

Dozenc: Sergio Tessaris
Teaching assistants: Muhammad Bilal Khan

Ores de ensegnament: 30
Ores de laboratore: 20

Domanda d'informaziun