Skip to main content
CODE 52473
ACADEMIC YEAR 2026/2027
CREDITS
SCIENTIFIC DISCIPLINARY SECTOR INFO-01/A
LANGUAGE Italian
TEACHING LOCATION
  • GENOVA
SEMESTER 2° Semester
TEACHING MATERIALS AULAWEB

OVERVIEW

The course will provide the basic notions and tools of imperative programming, by introducing high-level languages. In the career of the students, knowing the basics of programming and "general-purpose" programming languages (as the one or the ones presented here) will enable them to easily learn the specialized languages of the mathematical and statistical domain, which will be used in later teaching.

AIMS AND CONTENT

LEARNING OUTCOMES

We introduce to programming and programming languages, in particular to the imperative programming paradigm, using a reference language. We will provide basic knowledge and technical skills for designing simple algorithms to solve small problems, and for designing, writing and validating simple programs starting from informal specifications of the task to be performed. The acquired notions and abilities will also be useful for learning other programming languages in the future.

AIMS AND LEARNING OUTCOMES

The course will provide some necessary basic notions about computer architecture, data representation, operating system. It will introduce the notions of algorithm and program, high-level programming languages and execution modes. It will present the basic concepts and constructs of high-level imperative programming (variables, statements, flow-control instructions, functions), using one or more reference imperative languages as case study. It will provide the guide lines for the design of small-size programs solving a simple problem and for testing them.
After attending the course, the student will:

  • know the basic concepts about how programs are executed in a computer (data representation, high level languages and machine language, file system, etc.)
  • know the basic features of a high-level imperative programming language.
  • be able to use simple tools for developing computer programs (text editor, command-line compilation and execution)
  • be able to develop simple algorithms and to write small programs, starting from informal specifications
  • be able to understand, using and modifying programs written by other people

PREREQUISITES

There are no specific requirements.

TEACHING METHODS

The course takes place in the second semester. There will be 3 classroom hours and 4 laboratory hours per week. Classroom lessons and laboratories are strictly coordinated, so that the students can experience an immediate application the theory. Attending the laboratory hours is not mandatory, but it is strongly recommended. The programming practice is necessary to acquire the capabilities in writing and testing code. The students will also receive instructions to install the necessary software packages on their PCs. The laboratory work will be carried on in small groups (of 2-3 students). Working students, or students that for other reasons do not attend the classes, will be allowed to work on their own. Every week some laboratory exercises will be given, which require writing small programs. The students will have the opportunity to deliver some of such exercises (not evaluated for the exam) and obtain useful feedback. Delivering the exercises is not mandatory and has no effect on the exam; in case, they are delivered as a group work.

SYLLABUS/CONTENT

  • Basic notions about computers: data representation and arithmetic processors; hints about computer architecture and operating systems, limited to the basic notions for understanding how programs are executed.
  • High-level programming languages: source code and compilers. Algorithm, pseudocode, program. Imperative programming languages: state (represented by variables and their values) and state changes (performed by executing the instructions).
  • Basic features of imperative languages: types, expressions, variables, declarations; assignments, flow-control instructions (conditionals, cycles), functions and procedures; structured and modular programming.
  • Programming in the small: design of simple algorithms and small sequential programs starting from the informal specification of the problem.
  • Practical tools for writing, compiling, executing programs; basic guidelines for testing.

RECOMMENDED READING/BIBLIOGRAPHY

The teaching material will be made available on Aulaweb, including lesson slides, links to on-line resources about the used programming languages (manuals and tutorials), laboratory exercises, corrections of the delivered exercises, etc. In general, the notes taken by the students during the lessons and the material on Aulaweb, together with the necessary laboratory work, are sufficient to prepare the exam. As additional material, the student can use the following books, as well as other books or on-line resources which provide an introduction to programming.

C++ language:
"Programming Principles and Practice using C++". B.Stroustrup. Addison-Wesley 2008, 2014, 2024.
"C++. Fondamenti di programmazione". H.M.Deitel, P.J.Deitel. Apogeo 2009
"Che C serve? Per iniziare a programmare. Burattini, Chianese, Picariello, Moscato, Sansone. Maggioli editore 2016.

Python language:
"Programmazione in Python". K.A.Lambert. Maggioli editore 2024.
"Python for everyone. ".C.Horstmann, R.D.Necaise. John Wiley & Sons (2018)
"Concetti di informatica e fondamenti di Python". C.Horstmann, R.D.Necaise. Apogeo (2019)

TEACHERS AND EXAM BOARD

LESSONS

LESSONS START

The lessons will start on February 23, 2026 according to the schedule available here.

Class schedule

The timetable for this course is available here: Portale EasyAcademy

EXAMS

EXAM DESCRIPTION

The final exam consists of two mandatory parts:

  • Quiz test about the contents of the course. The quiz will be delivered by using Aulaweb. It will contain both questions with predefined answers (multiple choice, matching, field-filling etc.) and questions that require writing small fragments of computer code by scratch.
  • Laboratory test, that will require writing code in the reference programming language, or one of the reference programming languages. The student will have to complete a provided program template, according to given requirements.

Both tests will be graded with marks in the range from 0 to 30. In order to pass the exam, it is necessary to get at least 18 in each of the two tests. The overall grade will be the average of the two marks. The result, rounded to an integer number, will be the final grade of the exam.
The two tests (quiz and laboratory test) can be passes in different exam sessions. The sufficient grade of a test will remain valid until the last exam session of the academic year (February of the next solar year).  If the student repeats a test, the new grade replaces the previous one (even in case it is lower).

ASSESSMENT METHODS

The quiz test will evaluate the knowledge of basic concepts presented during the course, of the basic constructs of imperative languages and their correct use, the ability of understanding given program code and of writing (short) correct code for a given purpose. Each correct answer will get a positive score (with different value depending on the difficulty of the question), in multiple choice questions some wrong answers may get a penalty (negative score), in other question types wrong answer will get zero score. For the questions which require writing computer code, Aulaweb allows trying the code to check whether it produces the expected results; the system gives a small penalty to any of such trials.

The laboratory test will evaluate the ability to develop algorithms for solving simple problems, translate them into computer programs with the expected behavior. The test consists of completing a program template that will be provided, following the specified requirements. The evaluation will take into account the following aspects in order of decreasing importance: code implementing a correct algorithmic, without syntax errors, giving correct results (minimum requirement), style and readability of the code, computational efficiency.

FURTHER INFORMATION

Ask the professor for other information not included in the teaching schedule.

Compensatory and dispensatory measures Disability/Invalidity/Specific Learning Disorder

Dispensatory measures and compensatory tools are intended to enable students to achieve the same learning objectives as their fellow students, not to facilitate the examination.

The use of compensatory tools and the application of dispensatory measures must be authorised in advance by the teacher in agreement with the Referee.

To take advantage of the adaptations during the examination, fill in the Adaptation request form; the request will be automatically sent by the system to the teacher in charge of the teaching, to the Contact Person of your School/Area/Department and in copy to the Sector; you will also receive a copy of the request sent by e-mail.

The adjustments available to students are as follows:

  • Additional time (+30% DSA)

  • Additional time (+50% disability/invalidity)

  • Additional time during oral exams to organise the answer

  • Calculator (programmable and graphing calculators are not allowed)

  • Conceptual Maps

  • Tables and/or Forms

  • Take the exam in written form

  • Take the exam in oral form

  • Tutor reader (for written tests only)

  • Tutor-writer (for written tests only)

 

Your request for adaptations must be submitted at least 7 working days before the scheduled exam date.

All information for students with disabilities and DSA is available on the webpage: Services for students with disabilities or DSA | UniGe | University of Genoa

Reference for inclusion: Sergio Di Domizio - sergio.didomizio@unige.it

Agenda 2030 - Sustainable Development Goals

Agenda 2030 - Sustainable Development Goals
Quality education
Quality education
Gender equality
Gender equality