Skip to content

Freie Universität Bozen

Grundlagen der Programmierung

Semester 1-2 · 42426 · Bachelor in Elektro- und Informationstechnik · 11KP · 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.

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

Vorlesungsstunden: 70
Laboratoriumsstunden: 40
Anwesenheitpflicht: Strongly recommended

Themen der Lehrveranstaltung
Module 1: 1. Introduction to: hardware and software, with computer organisation; data hierarchy; machine languages, assembly languages, high-level programming languages. Introduction to Python: interactive mode, script mode, Jupyter. 2. Introduction to different programming paradigms, focusing on the structured programming paradigm. 3. Structured programming: basic data types, variables, constants, operators and expressions; standard input/output handling; control flow structures; file and error handling. 4. Basic data structures/types of Python: (1) lists, (2) dictionaries, (3) tuples, (4) sets. 5. Subroutines and functions in Python (with/without parameters; with/without return). 6. Basics on modules and packages in Python. The above will be delivered meanwhile acquiring practical knowledge, through programming exercises, of how to program a simple physical-computing board with a Python-based language (e.g., Raspberry PicoH or PicoWH, ESP32, running MicroPython). Programming exercises cover the following: - how to perceive data via basic physical input devices (e.g., temperature sensor, humidity sensor), - how to process and store data, - how to plot data depending on their features. 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

Unterrichtsform
Lectures, exercises, laboratory activites

Bildungsziele
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.

Bildungsziele und erwartete Lernergebnisse (zus. Informationen)
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.

Art der Prüfung
Module 1 Attending students are those that - attend at least 70% of the exercise classes of the module, i.e., at least 14 hours (hard constraint), - participate in class with a positive and reflective attitude, - show a committment in tackling the class exercises for learning, taking due care of deadlines and instructions. The assessment is as follows: - For the lecture part: a written, closed-book exam with closed-ended and open-ended questions for all students; - For the exercise part: a programming project for attending students; a written exam for non-attending students. The results of written exams are only valid for the session of the examination. The result of the project will be valid for 1 academic year and cannot be carried over beyond that time-frame. - Note: in case of a positive outcome, the intermediate exam, assignments and project work are valid for 1 academic year only and cannot be carried over beyond that time-frame. Module 2 Assessment will be the same for attending and non-attending students. It’s divided in two parts: 1. Written final exam, with review questions about the lecture material (closed-ended questions and closed-book exam). 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.

Bewertungskriterien
A student passes the exam only if the student has a positive result (i.e., not less than 18) and tackles all parts of the exam (see Assessment above) by the appointed deadlines. The result is the average of the marks for Modules 1 and 2. The marks for Modules 1 and 2 are given as follows: - the mark for Module 1 ranges from 0 to 30: the assignments/projects count for 20% (min is 0, max is 6), and the written exam for 80% of the mark (min is 0, max is 24); - the mark for Module 2 ranges from 0 to 30: the assignments count for 60%, and the written exam counts for 40% of the mark: o All assignments must be submitted before the date of the written exam, failure of doing so will result in an incomplete submission and non-admission to the final evaluation; o Only some of the assignments, clearly indicated beforehand, will contribute to the mark. Laude is jointly decided by the course lecturers in case the marks for both modules is 30. E.g., suppose marks per Module are as follows: - Module 1’s mark is 28 (25 for the written exam, 3 for the project); - Module 2’s mark is 30. The result for the student is then 29, the average of 28 and 30. Written exam questions are evaluated in terms of correctness and clarity. Assignments/projects are evaluated in terms of: - quality, according to the criteria illustrated and explained in class, and recorded in the companion materials (e.g., code quality criteria), - displayed problem-solving skills, - displayed communication skills, - displayed critical-thinking skills.

Pflichtliteratur

Material is provided during the course.



Weiterführende Literatur

Material is provided during the course.



Weitere Informationen
Subject Librarian: David Gebhardi, David.Gebhardi@unibz.it and Ilaria Miceli, Ilaria.Miceli@unibz.it


Als PDF herunterladen

Ziele für nachhaltige Entwicklung
Diese Lehrtätigkeit trägt zur Erreichung der folgenden Ziele für nachhaltige Entwicklung bei.

4 9

Modules

Semester 1 · 42426A · Bachelor in Elektro- und Informationstechnik · 6KP · EN

Module A — Grundlagen der Programmierung 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.

Lehrende: Rosella Gennari
Teaching assistants: Muhammad Bilal Khan

Vorlesungsstunden: 40
Laboratoriumsstunden: 20

Themen der Lehrveranstaltung
1. Introduction to: hardware and software, with computer organisation; data hierarchy; machine languages, assembly languages, high-level programming languages. Introduction to Python: interactive mode, script mode, Jupyter. 2. Introduction to different programming paradigms, focusing on the structured programming paradigm. 3. Structured programming: basic data types, variables, constants, operators and expressions; standard input/output handling; control flow structures; file and error handling. 4. Basic data structures/types of Python: (1) lists, (2) dictionaries, (3) tuples, (4) sets. 5. Subroutines and functions in Python (with/without parameters; with/without return). 6. Basics on modules and packages in Python. The above will be delivered meanwhile acquiring practical knowledge, through programming exercises, of how to program a simple physical-computing board with a Python-based language (e.g., Raspberry PicoH or PicoWH, ESP32, running MicroPython). Programming exercises cover the following: - how to perceive data via basic physical input devices (e.g., temperature sensor, humidity sensor), - how to process and store data, - how to plot data depending on their features.

Unterrichtsform
Frontal lectures, exercises, projects.

Pflichtliteratur

Made available in the course repository



Weiterführende Literatur

Made available in the course repository



Semester 2 · 42426B · Bachelor in Elektro- und Informationstechnik · 5KP · EN

Module B — Grundlagen der Programmierung 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.

Lehrende: Sergio Tessaris
Teaching assistants: Muhammad Bilal Khan

Vorlesungsstunden: 30
Laboratoriumsstunden: 20

Infoanfrage