COMPUTER PROGRAMMING I AND LAB. PROGRAMMING I
The two integrated modules (programming I and Programming laboratory I, 12 CFU, single examination) are an introductory path to programming, i.e. 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 group) and in the individual projects of the pupils.
Knowledge and understanding: The student must show that they know and understand the basic methodologies for algorithms development and analysis, the programming language C and its development environment.
Ability to apply knowledge and understanding: The student must demonstrate that he knows how to use his acquired knowledge to solve omputationally 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 consciously use the programming language C in order to efficiently implement an algorithm. These capacities are also extrinected in a thorough and aware use of the computational tools and the advanced computer labs.
Autonomy of judgement: the student must be able to know how to evaluate and interpret independently the results of an algorithm and its implementation in C language.
Communicative skills: The student must be able to write an algorithm presentation report and document its implementation in C language, also working in a group, using advanced writing/documentation tools and using The basic terminology of computer science, also in English language.
Learning skills: The student needs to be able to update themselves and investigate specific topics and applications in C programming independently.
More information about the syllabus is available on the e-learning Platform (Dept of Science and Technology, page of the course)
Variables and Types. 4h
Introduction to the C language - Variables and types in C - Pointers in C – Input/ output in C. 6h
Selection and repeat control constructs. 6h
Functions and procedures. 8h
Incremental approach – Algorithms for calculating sums, determining the maximum, searching. 6h
Data Structures – Elementary algorithms with arrays - Sequential Search - Fusion - Basic Algorithms on 2D Arrays - Function in C for basic problems with 1D and 2D arrays. 8h
Arrays and sets – union, intersection, inclusion, subtraction, and equality - Enumeration types and derived types in C. 6h
Strings and Word Processing – Text Analysis Algorithms - The C.8h String Library
Algorithm Efficiency – Definition of Time and Space Complexity – Asymptotic Complexity – Complexity Classes. 4h
Array sorting – Sorting algorithms by insertion and selection. 8h
Recurring Formulas – Fibonacci formula. 6h
Divide and conquer approach – Binary Search Algorithm - Efficiency Analysis - Algorithms divide and conquer for sum and maximum of an array. 6h
Recursive algorithms – Recursive binary search - recursive algorithms of incremental and divide and conquer type. 8h
Struct in C. 3h
Pseudo-notional numbers and stochastic simulations.3h
Lectures of the teacher, lectures of the teacher in a computing laboratory with the support of tutors;
Group exercises in the classroom and in the laboratory under the direction of the teacher aimed at problem solving. Microsoft TEAMS code: iziyqrh
A. KELLEY, I. POHL; “A Book on C". Addison Wesley. ISBN 0-201-18399-4
A. CIARAMELLA, G. GIUNTA: “Manuale di programmazione in C”, (in Italian) 2009. Scaricabile dalla piattaforma di e-learning del Dipartimento di Scienze e Tecnologie.
All classes and all laboratory activities are available as animated presentations in Flash format with the audio of commentary by the teacher,
streamed through the e-learning platform of the Department of Science and Technology; The slides (. pdf and. pps) of all classes are available on the same platform, along with online self-assessment quizzes, exercises, in-depth projects and various notes for the laboratory.
The objective of the verification procedure is to quantify, for each student, the level of achievement of the previously indicated training objectives.
The verification procedure consists of mid-term test (with eventual exemption from the final programming test), in an individual project (20% of the vote), a programming test (20% of the vote) and an oral exam (60% of the vote). The positive outcomes of all three verifications (project, programming test, oral exam) are necessary for passing the exam. The mid-term test assess the level of knowledge of the algorithms based on the incremental approach and described by iterative programming, the ability to perform a complexity analysis of these algorithms and the ability to write a program in C, organized as a collection of functions. The oral exam verifies the level of knowledge of the algorithms based on the divide-and-conquer approach and described by means of recursive programming techniques, and the ability to use array and struct in programming and to analyze the complexity of those algorithms. The programming test evaluates the ability to write a program in C, suitably organized as a collection of functions. The project verifies the ability to fully address and solve a problem by developing an algorithm, even based on stochastic simulation, implementing it in a program, and writing an explanatory report accompanied by a critical testing process.
Lectures are in Italian. The professors are fluent in English and available to interact with students in English, also during the examination.