Course Details

PROGRAMMING 1

MF0163

Course
PROGRAMMING 1
Code
MF0163
Academic Year
2026/2027
Curriculum Year
2026/2027
Degree Programme
CHEMISTRY
Curriculum
000 - CORSO GENERICO
Course coordinator
Credits
9
Lecture Hours
72
Scientific Disciplinary Sector (SSD)
INFO-01/A - Informatics
Course Type
Single-subject learning activity
Course Delivery
OBB - Obbligatoria
Year
1
Teaching period
Primo Semestre
Campus
ALESSANDRIA
Teaching language
Italian
Course Contents
The course aims to introduce the fundamentals of computer programming, starting from the concept of an algorithm and the basic elements of a program, and progressing to advanced concepts of data structures and control structures in programming languages. The course also presents the basic concepts of the C programming language, used to support the teaching of programming as well as for practical laboratory exercises. The material presented during the lectures (slides, exercises, solutions, code examples) will be available on the course’s DIR page for the current academic year.
Reference Texts
P. Deitel, H. Deitel Il linguaggio C. Fondamenti e tecniche di programmazione, Pearson. Additional materials on DIR.
Learning Outcomes
Students must acquire the capability of applying the top-down methodology in the problem analysis. Specifically, they must be able • to identify input and output, • to develop flow diagrams, • to develop C programs, using the basic notions of: variables and data types; if-then-else and boolean conditions; iteration (while, for, do-while); functions and parameters (by value and by reference); arrays, strings, files • Additionally they must acquire the capability of analyzing the algorithm complexity, and of compiling, verifying and executing C programs.
Prerequisites
None
Teaching Methods
Standard lectures and programming sessions in the computer lab.
Additional Information
Monitoring the learning process: during the course the students will complete assigments in the computer lab under the supervision of a teacher. Active participation allows a check on how topics are received. Students with physical disabilities, Learning Disabilities or Special Education Needs can request specific services and tools via the Staff Sviluppo e Coordinamento Carriere e Servizi alle Studentesse e agli Studenti, consulting the University webpage: https://www.uniupo.it/en/services/services- students-physical-or-learning-disabilities Students with disabilities, learning disabilities or special education needs, once they have contacted the University Staff, can refer to the tutor in charge of the course to define the examination modalities, concerning academic aspects.
Assessment Methods
The Programming 1 exam is divided into two parts: Fundamentals (6 credits) and Experimentation (3 credits). Both parts must be passed (a grade of 18 or higher), and the final grade is calculated as the weighted average (based on the credits) of the two parts.
The Fundamentals exam is written (paper-based) and includes an exercise to be completed by developing a Structured Flowchart, an exercise to be completed by developing one or more C functions, and finally one or more theory questions (open-ended).
The examination for the Experimentation component takes place in the computer laboratory and consists of writing two or three functions in the C programming language using the CodeRunner module, available on the esami.dir platform, with automatic assessment.
For each required function (two or three functions), the system automatically runs a series of test cases designed to verify its correctness. Each test case is assigned a score based on its difficulty and the complexity of the proposed exercise. The solution must be formally correct and compilable. Any compilation or syntax errors that prevent the function from being executed will result in failure of the corresponding test cases. The score is assigned automatically according to the number and type of tests successfully passed
Students may obtain a maximum score of 24/30. Those who wish to obtain a grade higher than 24/30 must indicate their preference by adding a note when registering for the examination on the ESSE3 platform. In this case, they will be required to complete an additional exercise with a higher level of difficulty. Correct completion of this exercise makes it possible to achieve a maximum grade of 30/30 with honours. In this case as well, compilation errors in the additional exercise will result in failure of the examination.
At the instructor’s discretion, students may be invited to an oral examination, during which they will be asked additional questions to supplement and verify the results of the written test.
The practical examination lasts approximately one and a half hours and may cover any of the topics addressed during the course. Examples of previously assigned practical examinations, together with the corresponding solutions in commented C code, are available on the DIR platform.
During the examination, students are not permitted to consult teaching materials, notes, manuals, or any other resources. The examination must be completed exclusively using the computers provided in the computer laboratory. The use of mobile devices, personal laptops, or any other electronic devices is not permitted. The instructor reserves the right to take appropriate action in accordance with the University’s Code of Ethics.
Detailed Syllabus
- Introduction to structured programming- Top-down methodology in the problem analysis and in the development of flow charts (and programs)- Basic programming concepts (expressed in the “C” language):- variables, data types- input and output;- esay C programs using only sequences- if-then-else and Boolean Conditions- iteration (while, for, do-while); loop invariants (not formal);- functions and parameter passing (by value and by reference)- arrays and array algorithms;- the string data type- file management- complexity analysis- Introduction to Linux. Main commands to manage files, to compile and execute programs.
Expected Learning Outcomes
At the end of the course, given a simple programming problem, the students must be able to define the algorithm solving the problem, implement the algorithm in C language, execute the program on the computer. Knowledge and comprehension: concepts of algorithm and program, fundamental data structures (scalar types, vector, pointers and files), basic programming constructs (if-then-else, while, for, functions and parameters ). Capacity to apply knowledge and comprehension: given a problem, - identifying input data to be collected from the user, and output data to be produced; - identifying the data structures necessary to manage such data; - defining an algorithm transforming input data in output data, by following the programming constructs; - writing on the computer the source program implementing the algorithm, using the programming language (C); - generating the executable program by compiling the source program, on the computer; - executing and testing the executable program, on the computer. Judgement autonomy: in an autonomous way the student must be able to identify the necessary data structures, define and implement the algorithm in the programming language (C), and finally compile and execute the program. Communication abilities: the student must be able to define an algorithm at several abstraction levels, such as the flow-chart, the pseudo-code, the program in the programming language. Moreover the program must require and present data to the user by means of message that the user can understand. Learning capacity: the student must be able to learn how to generate an algorithm from the problem, how to implement an algorithm in C, and finally how to compile and execute a program on a computer.
Last update:09-09-2026 00:14:31