Salta al contenuto principale della pagina

COMPUTER PROGRAMMING FUNDAMENTALS

CODE 66061
ACADEMIC YEAR 2022/2023
CREDITS
  • 6 cfu during the 1st year of 9273 INGEGNERIA ELETTRONICA E TECNOLOGIE DELL'INFORMAZIONE(L-8) - GENOVA
  • SCIENTIFIC DISCIPLINARY SECTOR ING-INF/01
    LANGUAGE Italian
    TEACHING LOCATION
  • GENOVA
  • SEMESTER 2° Semester
    TEACHING MATERIALS AULAWEB

    OVERVIEW

    In this course the student will gain a broad understanding of the fundamental concepts of the imperative programming paradigm (C language) with some hints to the object-oriented paradigm (C # language).

    AIMS AND CONTENT

    LEARNING OUTCOMES

    The teaching aims to introduce the design of a software system. The discussion starts from the architecture of a processing system and covers the syntactic and semantic rules of languages, covering both the structured paradigm (C language) and the object-oriented paradigm (C#).”

    AIMS AND LEARNING OUTCOMES

    The student who has successfully followed the teaching of "Programming Fundamentals" will be able to

    1. understand the fundamental concepts of imperative programming
    2. apply the concepts acquired to implement simple programs
    3. analyze and evaluate working programs to identify their basic structure
    4. design, create and verify the functioning of a basic software system starting from theoretical models

    In particular, during this teaching the student will learn to:

    • Understanding the difference between hardware and software, the basic structure of an electronic computer, and the differences between programming languages
    • Develop simple programs using the C programming language. In particular, the student will be able to:
      • create and use variables
      • write and read from the console
      • write and use conditional statements, loops, and vectors
      • write and use functions
      • create and use arrays
      • use pointers
      • create new data structures and simple classes
    • Write simple C# programs using an object-oriented approach. In particular, the student will be able to:
      • understand the difference between classes and objects
      • use the methods of an object
      • understand the basic concepts of composition, inheritance and polymorphism

    PREREQUISITES

    No prerequisites needed.

    TEACHING METHODS

    The course is composed of a set of frontal lessons and a set of practice sessions. During the frontal lesson, the teacher presents the topics providing also examples of live code that are tested on a real tool chain. Students can use their own laptops during the lecture in order to reproduce what is proposed by the teacher. During the practice sessions, the students have to face up with real problems that they should solve by applying the techniques learnied during the lectures.

    SYLLABUS/CONTENT

    The titles of the main contents discussed during frontal lessons are provided in the following list.

    • Introduction
    • Hardware and Software
    • C language basis
    • Control Structures
    • Program control
    • Functions
    • Array, Sorting and Searching
    • Pointers
    • The Simpletron
    • Data Structures
    • OOP - Classes, Objects, Methods
    • OOP - Composition, Inheritance and Polymorphism

    RECOMMENDED READING/BIBLIOGRAPHY

    Lectures slides (downloadable on AulaWeb)

    To learn more (only for those interested)

    Students with learning disorders ("disturbi specifici di apprendimento", DSA) will be allowed to use specific modalities and supports that will be determined on a case-by-case basis in agreement with the delegate of the Engineering courses in the Committee for the Inclusion of Students with Disabilities.

    TEACHERS AND EXAM BOARD

    Exam Board

    LUCIO MARCENARO (President)

    PAOLO GASTALDO (President Substitute)

    CARLO REGAZZONI (President Substitute)

    LESSONS

    Class schedule

    All class schedules are posted on the EasyAcademy portal.

    EXAMS

    EXAM DESCRIPTION

    The exam is composed by a practical part (in a computer lab) for the creation of a software program and an oral part. Students can use their laptop durign the practical test and it is possible to consult any type of material that is useful for the realization of the software project (e.g. lecture notes, examples, books, etc.). The oral part consists of questions on the theoretical topics covered during lectures.

    It is necessary to apply for the practical part before the oral part.

    ASSESSMENT METHODS

    The student who takes the "Fondamenti di Programmazione" exam is assigned a simple problem to solve by implementing a program in C or C#, using an electronic calculator. Through the analysis of the solution developed by the student during the exam, it is verified at what level the fundamental concepts of imperative programming have been understood, how these concepts have been applied for the implementation of the program, if the student is able to analyze and evaluate the functioning of the program and how the theoretical models studied in class are applied to design and create the required software. The evaluation of the written part is based on the source code delivered by the student at the end of the test, in particular on its functionality, on the quality of the code and on the clarity in drafting.

    Exam schedule

    Date Time Location Type Notes
    31/05/2023 09:00 GENOVA Scritto
    14/06/2023 15:00 GENOVA Orale
    15/06/2023 09:00 GENOVA Scritto
    22/06/2023 09:00 GENOVA Orale
    11/07/2023 09:00 GENOVA Scritto
    25/07/2023 09:00 GENOVA Orale
    11/09/2023 09:00 GENOVA Scritto