The Programming module, 12 CFU, constitutes an introductory to programming, that is to the methodologies and techniques for the development, analysis and implementation of algorithms. The course introduces the C language, used for the realization of the software products foreseen in the laboratory activities (in groups) and in the individual projects of the students.
Knowledge and understanding: The student must demonstrate knowledge and understanding of the basic methodologies for the development and analysis of algorithms, the C programming language and its development environment.
Applying knowledge and understanding: The student must demonstrate to be able to use their acquired knowledge to computationally solve simple application problems, even when they appear in concrete contexts, to develop algorithms and analyze them from the point of view of correctness and complexity, to use consciously the C programming language in order to efficiently implement an algorithm. These skills are also expressed in an in-depth and conscious use of calculation tools and advanced computer laboratories.
Making judgements: The student must be able to independently evaluate and interpret the results of an algorithm and its implementation in C language.
Communication skills: The student must be able to write a presentation report of an algorithm and to document its implementation in C language, also by working in a group, using advanced writing / documentation tools and correctly using the basic terminology of the Computer science, also in English.
Learning skills: The student must be able to autonomously update and deepen specific topics and applications of C programming.
Algorithm - Algorithms for human performers - Algorithms for calculating and solving simple arithmetic problems (2h).
Variables and types: Variables in programming (4h).
Introduction to C language - General aspects of C language and "execution" of a C program - Variables and types in C - Pointers in C - Input / output in C (6h).
Control constructs - Selection construct - Repetition constructs - Selection constructs in C - Repetition constructs in C. 6h.
Functions and procedures - Organization of algorithms as functions - Organization of algorithms as procedures - Function in C - Function C that return multiple values (8h).
Incremental approach - Function C for basic arithmetic problems and for basic application problems (6h).
Data structures - Generalities on the concept of structured array type - Function in C for basic problems with 1D and 2D arrays (8h).
Arrays and sets - Functions in C for basic operations on sets - Enumerative types and derived types in C (6h).
Strings and word processing - Elementary operations on strings - C strings - The C string library - Development of C functions for word processing (8h).
Efficiency of algorithms - Time and space complexity of an algorithm - Tractability and intractability of problems (6h).
Array sorting - Sorting algorithm by insertion - Sorting algorithm by selection - Function development in C for sorting and examples of use (8h).
Recurring formulas - Fibonacci formula - Development of functions in C for recurring formulas and examples of use (6h).
Divide et impera - Function in C for binary search and doubling algorithms (6h).
Recursive programming - Recursive algorithm for binary search - recursive algorithms based on the incremental and divide-and-conquer approaches - Development of recursive functions in C (8h).
Data structures: records - General information on the concept of structured type - structured data types in C (4h).
Security breaches in C. Typical errors: buffer overflows and string manipulation. Safe programs in C (4h).
Algorithm (2h). Variables and types (4h). Introduction to C language - General aspects of C language and "execution" of a C program - Variables and types in C - Pointers in C - Input / output in C (6h). Control constructs - Selection construct - Repetition constructs - Selection constructs in C - Repetition constructs in C (6h). Function and procedures (8h). Incremental approach (6h). Data structures - General information on the concept of type array - Algorithms with arrays (8h). Arrays and sets - union, intersection, inclusion, subtraction and equality algorithms (6h). Strings and word processing - Basic operations on strings (8h). Efficiency of the algorithms (6h). Array Sorting - Sorting Algorithms (8h). Recurring formulas - Fibonacci formula (6h). Divide and conquer approach - Basic idea of “divide and conquer (6h). Recursive algorithms - Recursive programming techniques (8h). Data structures in C (4h). Guidelines for safe programming in C (4h)
Teaching consists in a total of 96-hours lectures (12 CFU) of frontal lessons, divided in two modules (6 CFU each), Programming and Laboratory of Programmin respectively. The teaching takes place in the classroom or laboratory and it is organised in 2-hours lessons scheduled according to the academic calendar. Each lecture can be a theoretical and practical lesson, given by the teacher and related to one of the topics of the course. The theoretical lessons aim at giving the student the knowledge base of programming in C language. The laboratory lessons start from the theoretical notions acquired by the students to provide their feasible implementations. During the course, practical lessons are provided. They are collegial in nature, take place in the classroom and are given by the teacher who proposes solutions to practical exercises meant to verify the adoption and implementation of the theoretical topics presented in the previous lessons. The resolution of such exercises allows the students to verify his/her understanding of the theoretical concepts and his/her ability to proposed alternative implementations.
KELLEY, I. POHL; “C: didattica e programmazione”, Pearson Education Italia, 2004.
Programmazione in C - Kim N. King - Apogeo, 2009.
The achievement of the teaching objectives is certified by passing an exam with an evaluation out of thirty. the exam includes a written or practical laboratory test and an oral test. The written or practical laboratory test is preparatory to the oral test. The test has the function of evaluating the student's ability to understand in facing a practical programming problem and of putting the concepts of the course into practice through algorithmic design and related coding in C language. The written or practical test is considered passed. with the achievement of the minimum score of 18/30.
The oral exam consists of an interview with questions and discussion on the theoretical and methodological contents indicated in the teaching program. It is aimed at ascertaining the level of knowledge and understanding achieved by the student, as well as verifying the ability to present and summarize, using the appropriate terminology and the ability to organize autonomously on the same theoretical topics. The two tests (written or practical and oral) will contribute equally to the final evaluation of the student
There are 2 ongoing tests, respectively at the middle and at the end of the teaching period, carried out with the same modalities, objectives and evaluation of the written or practical test. Passing the ongoing tests, with an evaluation out of thirty obtained as the weighted average of the 2 ongoing tests, gives direct access to the subsequent oral test in the normal exam sessions.
Attending classes is strongly suggested. E-learning contents will be provided on the elearning.uniparthenope.it page. At the same platform free material produced by the instructor will be made available.