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 program is available in e-learning platform.
The concept of Algorithm – Algorithms for human executors-algorithms for calculating and solving simple arithmetic problems. 2h
The idea of Variable – Variables and types: The basics of variables in programming- assignment operation - read/view operation - Basic operations on variables in programming. 4h
Introduction to the C language – programming languages: Machine language and high - level languages and translator programs -general aspects of the C language and "execution" of a C-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 – organizing algorithms as functions - organizing algorithms as procedures - function in C - function C that return multiple values. 8h
Incremental approach – algorithms for calculating sums - algorithm for determining the maximum element in a set of input data - algorithm for
determining the membership of a value to a set of input data (search algorithm)- Algorithms for calculating sums of powers and of the maximum
common divisor-Function C for basic arithmetic problems and for basic application problems. 6h
Data structures – General information about the concept of the structured type array - elementary algorithms with arrays - sequential array search - merging. 8h
Other algorithms on arrays - algorithm for determining the equality of two arrays - basic algorithms on 2d arrays - Functions in C for basic solving problems with 1d and 2d arrays. 8h
Arrays and sets – algorithms for merging, intersecting, including, subtracting and equality - functions in C for basic operations on sets -
enumerative types and derived types in C. 6h
Strings and word processing – Elementary operations on strings: concatenation, extraction - text analysis and pattern-parsing algorithms - strings in C - strings of char in C - the string library of functions in C. 8h
Algorithm's efficiency – Definition of time and space complexity of an algorithm – time complexity and space complexity - asymptotic complexity –
complexity classes - optimality of algorithms - treatability and untreatability of problems. 4h
Sorting arrays – Insertion sort- selection sort algorithm - developing functions in C for sorting. 8h
Recurrence Formulas – Fibonacci Formula: Interpretation modelling, properties and computational algorithms - development of functions in C for recurrence formulas. 6h
Divide and conquer approach – basic idea of the "divide and conquer"- Binary search algorithm - time complexity of binary - divide and conquer algorithms for the sum and maximum of an array - functions in C for binary search and doubling algorithms. 6h
Recursive algorithms – Recursive programming techniques - recursive algorithm for binary search - recursive algorithms based on the incremental approach and the divide-and-conquer approach-development of recursive functions in C. 8h
Data structures: Struct – General information about the concept of struct type - the struct type of C. 3h
Pseudorandom numbers and stochastic simulations – generalities about pseudorandom numbers - functions C for the generation of pseudorandom
numbers - examples of 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.
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.