Skip to main content
CODE 80299
ACADEMIC YEAR 2025/2026
CREDITS
SCIENTIFIC DISCIPLINARY SECTOR INF/01
TEACHING LOCATION
  • GENOVA
SEMESTER 1° Semester
SECTIONING Questo insegnamento è diviso nelle seguenti frazioni:
  • A
  • B
  • OVERVIEW

    The course aims to provide the earliest programming bases, giving particular emphasis to scientific reasoning and computational thinking. The course includes classes as well as practical labs whose purpose is to deepen and consolidate the topics seen in the classroom.

    The course has a strong applicative connotation, where the student is encouraged to face problems of increasing complexity in autonomy.

    Since the course is given in Italian, please have a look at the Italian version of this page for further information.

    AIMS AND CONTENT

    LEARNING OUTCOMES

    Learning the fundamental concepts of imperative programming using C++, restricted to a non-object-oriented subset. Learning how to design, implement and validate small, easy-to-understand code, starting from informal specifications.

    AIMS AND LEARNING OUTCOMES

    At the end of the module the student will have to:

    Know the principles of computational thinking
    Know the fundamental concepts of imperative programming with classical programming languages
    Know how to use text environment tools for program development (made in C++ language limited to the non-object-oriented part), with a text editor, compilation and execution from the command line.
    Know the principles of design, implementation and validation of a small sequential program starting from the informal specifications provided by the user.
    Know how to produce correct and understandable code; as well as understand, use, modify code produced by others

    PREREQUISITES

    There are no specific requirements.

    TEACHING METHODS

    • Classroom lessons
    • Guided Laboratories
    • Homework delivered through aulaweb

    Given the cultural importance of this course (at the core of all undergraduate computer science courses) attending classes and labs is strongly encouraged and suggested.

    SYLLABUS/CONTENT

    The course consists of a part of theoretical lessons that take place in the classroom and a substantial practical part of programming activities that takes place in the lab.  

    Main topics:

    • Introduction to the course, computational thinking, and programming.
    • Programming environments and formal languages.
    • Imperative programming: variables and instructions; assignment; input / output; if-then-else; loops; types; structured types: 1-dim or multi-dim arrays, strings, struct; functions and parameters passing; pointers; dynamically allocating memory (heap); dynamic vectors; linked lists ; recursion.

    RECOMMENDED READING/BIBLIOGRAPHY

    Slides will be available but are not sufficient getting ready for the exam.  

    • Reference book: D.S. Malik Programmazione in C++ Apogeo, 2011, ISBN 978-88-503-2967-0 (or english version)
    • Alternatively B. Stroustrup, Programming: Principles and Practice Using C++, Addison-Westley, 2009, ISBN 978-0321543721. 

    TEACHERS AND EXAM BOARD

    LESSONS

    LESSONS START

    According to the calendar approved by the Degree Program Board: https://corsi.unige.it/corsi/11896/studenti-orario

    Class schedule

    The timetable for this course is available here: Portale EasyAcademy

    EXAMS

    EXAM DESCRIPTION

    The exam is made of 2 parts

    1.  a written examination on theory  
    2. a laboratory exam, accessible after theory exam has been positively evaluated

    More details on AULAWEB

    Guidelines for students with certified Specific Learning Disorders, disabilities, or other special educational needs are available at https://corsi.unige.it/corsi/11896/studenti-disabilita-dsa

    ASSESSMENT METHODS

    The theory test will allow us to verify the acquisition of:

    Principles of computational thinking and fundamental concepts of imperative programming with classical programming languages
    Basics of imperative programming and use of a textual environment for program development (created in C++ language, limited to the non-object-oriented part), with a text editor, compilation and execution from the command line.
    The laboratory test will allow us to verify:

    Acquisition of the principles of design, implementation and validation of a small sequential program starting from the informal specifications provided by the user.
    Ability to produce correct and comprehensible code; ability to understand, use, modify code produced by others

    FURTHER INFORMATION

    For further information, please refer to the course’s AulaWeb module or contact the instructor.