Programming techniques

Course objectives

Obiettivi generali: Basic knowledge about the architecture and organization of a computer. Development of skills on the definition of algorithms to solve problems. Foundations of programming, using C as reference language. Familiarity with the definition and use of data structures, both elementary (such as arrays) and more complex (such as data tables, linked lists and binary trees). Capability to apply the above mentioned knowledge to solve problems of low and medium complexity, entailing the selection and definition of suitable algorithms and the implementation of small-medium size software systems. Obiettivi specifici: Knowledge and understanding: Knowledge about the structured programming methodology. Programming and problem solving skills, involving the definition and implementation of data structures/programs suitable to solve problems. Knowledge about notable algorithms, and skilled selection of the best suited algorithm for a problem. Technical skills in the management of program modules, data structures of progressive complexity (from static defined data structures to dynamically managed data structures). Visualization and comprehension of the principles on which a computer run programs. Applying knowledge and understanding: Use of programming environments to implement programs. Definition of algorithms and modularized programs to solve a problem. Skills related to the design and implementation of small/medium software systems. Skills related to the comprehension of the execution of a program, to be applied in program testing activity. Making judgements: Being able to assess the correctness and appropriateness of a function or a program built by modules. These skills are developed during the autonomous in-depth analysis fostered by the learning materials, and during the lab activities. These skills are deepened with the production, description, and discussion with the teacher, of homework. Communication: Being able to describe and share the lines of design and implementation of a program, explaining the decisions taken about the representation in the program of relevant data of the problem. The homework duties require to provide the teacher with a short description of the solution, so to put on trial the communication capabilities of the student. Learning skills: Structured programming is explained and described as a step toward further advanced programming methodologies, to foster awareness that there is more to see and one should not settle on what was learned so far. The activities fostered by the course, such as the autonomous in depth analysis, and the design and implementation of small and less small programs, as requested by the homework, allow to develop such comprehension and trains the student to do her/his own update, in this area, autonomously in the future.

Channel 1
MARCO TEMPERINI Lecturers' profile

Program - Frequency - Exams

Course program
Part I - Basic architecture: Von Neumann, RAM, bus, peripherals and central unit, CPU, I/O. - Information coding: characters, integers, reals - Operating system - types and variables, operators and expressions, instructions and functions - parameter passing: call by value and call by reference - visibility and life span, in a program - standard library functions - external memory and files: generalized file, binary fie, text file - phases in the production of a program: editing, compiling, linking, execution - programming of algorithms for vectors and matrices- programs with I/O - search and sort algorithms: linear search, binary search, bubble sort, selection sort. Part II About C programming - dynamic allocation of memory: malloc, free; realloc - static and dynamic arrays; character strings with "exact" allocation - struct construct - pointers and data structures - recursion: models to define recursive programs and to interpret them About software development methodology - quality of software; - test techniques for a program About advanced data structures - table data structure (array of structures). - dynamic data structures: linked lists and trees
Prerequisites
This is about foundations of computer programming. Prerequisites are those cultural abilities coming from the fruitful attendance to high school. We use basic concepts in mathematics and set theory. It could be useful to have notions about the use of a computer to manage email, word processing, navigating the web.
Frequency
not mandatory, while very much suggested
Exam mode
Learner's evaluation is based on - an intermediate exam, ranging over basic competences studied during the first part of the course; - a final exam, written part, consisting in the production of answers to three questions involving the discussion of concepts in the course, and the production of data structure definitions and software implementation of functions, in relation to a stated programming problem; - a final exam, oral part, where the written part is discussed and some more questions can be answered by the learner.
Lesson mode
Sequence of lectures and laboratory activities, in the lab, if available, or via network Three homework activities allow to verify the actual possibility to participate in the final exam.
  • Lesson code1035370
  • Academic year2024/2025
  • CourseInformation Engineering
  • CurriculumElettronica
  • Year1st year
  • Semester2nd semester
  • SSDING-INF/05
  • CFU9
  • Subject areaIngegneria informatica