Course Details

PROGRAMMING 1

MF0163

Course
PROGRAMMING 1
Code
MF0163
Academic Year
2025/2026
Curriculum Year
2025/2026
Degree Programme
CHEMICAL SCIENCES
Curriculum
000 - CORSO GENERICO
Course coordinator
Credits
9
Lecture Hours
72
Scientific Disciplinary Sector (SSD)
INF/01 - Computer Science
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 exam is administered in two ways: with and without the use of a computer. (i) The computer-based exam (laboratory test) consists of two parts held on the same day: a quiz and a practical test.

The quiz comprises 30 multiple-choice questions on the basic concepts of programming in the C language. For each question there are four predefined answers: one is correct and three are incorrect. The Student must select the answer they believe is correct. Each question is worth one point. The quiz is failed if the Student selects fewer than 18 actually correct answers; in that case the exam ends immediately with an unsatisfactory result. The quiz is passed if the Student selects at least 18 actually correct answers; in that case the Student proceeds to the practical test. Students can find a sample quiz with solutions on the DIR platform. The quiz lasts 40 minutes and may concern any topic in the course.

During the practical test, given a specific problem, the Student must implement a C program that contains the data structures and algorithms that solve the problem, successfully compile the program, and verify its correct execution. The program must be organized into 2–3 functions, including the main function. Each function is worth up to a maximum of 10 points, proportional to the required difficulty. If the program does not compile (is not formally correct), the exam immediately receives an unsatisfactory result. If the program compiles (is formally correct), each function is graded from 0 to 10 points based on the level of logical correctness. The practical test is failed if the total score is less than 18 and is passed if the total score is at least 18. The practical test lasts two hours and may concern any topic in the course. Students can find past practical tests, with solutions, on the DIR platform.

The exam is passed only if both parts have been passed. In that case the final grade is the weighted average of the quiz score (1/3) and the practical test score (2/3). During both parts it is not permitted to consult course materials or manuals. Both parts use the computers in the IT laboratory; the use of mobile devices or personal laptops is prohibited.

(ii) The exam without a computer consists of a mandatory written exam and an optional oral exam. At the Student’s discretion, the written exam may be taken either through two midterm tests or as a single final test. The written tests involve analyzing programming problems and developing flowcharts and C programs to solve them. The final evaluation will be determined jointly by both instructors, based on the results obtained in the individual tests. At their discretion, in order to supplement the written exam, the instructor may summon the Student for an oral exam with some verification questions.
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