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

OVERVIEW

The Introduction to Programming course aims to provide the basics of algorithms and programming, with a particular emphasis on scientific reasoning and computational thinking. The course combines classroom teaching activities with guided workshops to deepen and consolidate the topics covered in class.

The course has a strong applied focus, and students are encouraged to tackle problems of increasing complexity independently.

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

AIMS AND CONTENT

LEARNING OUTCOMES

The aim of the course is for participants to become familiar with algorithm development and the methods for designing, implementing, and validating small, easily understandable code based on informal user-provided specifications. The imperative programming approach will be followed using the C++ language, limited to the non-object-oriented portion.

AIMS AND LEARNING OUTCOMES

Upon completion of the module, the student should:

  • Know the principles of computational thinking
  • Know the fundamental concepts of basic algorithm development and imperative programming
  • Be able to use text-based program development tools (written in C++, limited to the non-object-oriented part), with a text editor, command-line compilation and execution.
  • Know the principles of designing, implementing, and validating a small sequential program starting from informal specifications provided by the user.
  • Be able to produce correct and understandable code; as well as understand, use, and 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 lectures and a substantial amount of practical programming, including laboratory work and homework. The start date of the lab will be announced in class.

Topics Covered in Class

  • Introduction to the course, computational thinking, algorithms, and programming.
  • Programming environments and formal languages.
  • Algorithm development in pseudocode: simple data structures and algorithms for homogeneous and heterogeneous data sequences.
  • Imperative programming: variables and constants; assignment; input/output; selection constructs; iteration constructs; basic types; structured data types: sequences and structs; functions and parameter passing mechanisms; pointers; dynamic heap allocation; dynamic arrays; simple lists and operations on simple lists; simple 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/en/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/en/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.