PROGRAMMING II AND LAB. O - Z
Module PROGRAMMAZIONE II

Academic Year 2024/2025 - Teacher: DANIELE FRANCESCO SANTAMARIA

Expected Learning Outcomes

  • The goal of this class is to provide a strong background of C++ programming and basic data structures.

    The goals of this course in terms of expected results are

    1. Knowledge and understanding. Students will be able to understand the fundamental ideas and the basic principles of object oriented programming. More specifically students will learn basic data structures and how to write programs in C++.
    2. Applying knowledge and understanding Students will learn how to properly use concepts related to object oriented programming (such as polymorphisms and inheritance). Also, students will be able to use and implement basic data structures such as linked lists, stacks, queues and binary trees
    3. Making judgements. By studying concrete examples students will learn how to, autonomously, use what studied in class.
    4. Communication Skills. Students will learn how to properly communicate using the technical language of C++ programming.
    5. Learning Skills. A goal of this course is to provide a good theoretical and practical background of basic data structures and object oriented programming. It is expected that students will learn how to autonomously address problems that require the usage of basic data structures and object oriented programming.
  • Course Structure

    Teaching will be carried out through lectures (for a total of 24 hours) during which the contents of the course will be presented, also through practical demonstrations. In addition, the students will have access to a learning platform. The platform will allow students to practice and self- evaluate themselves on the contents of the course. The same platform provides a valid tool for the exam preparation.

    Should teaching be carried out in mixed mode or remotely, it may be necessary to introduce changes with respect to previous statements, in line with the programme planned and outlined in the syllabus.

    Required Prerequisites

    Students must be familiar with the fundamentals of the imperative programming paradigm. It is mandatory to have already passed Programming I in order to take the exam of Programming II.

    Attendance of Lessons

    Attendance is mandatory.

    Detailed Course Content

    The course will introduce the concepts of abstract data structures and will investigate different data structures such as stacks, queues, lists, trees and graphs. In addition to data structures, the basic concepts of computational complexity will be introduced.
    The course will focus also to the main data structure management algorithms, and specifically, sorting algorithms, including bubble sort, insertion sort, quicksort and mergesort.

    The C ++ language will be used as the main underlying programming language to present the implementations of data structures and algorithms.

    Textbook Information

    Fondamenti di Programmazione in C++
    Algoritmi, strutture dati e oggetti
    Autore: Luis Joyanes Aguilar

    Editor: McGraw-Hill


    The reference book is "Fondamenti di programmazione in C++", written by Luis Joyanes Aguilar and published by McGraw-Hill. The book introduces the principles of programming and choose the C++ language to teach them. The reason that drives us in this direction is the desire to reduce the training time of programmers, engaging them since the early algorithms with a professional language actually used by large software suites.

     

    Other suggested books:


    Additional materials will be shared on the official Teams channel: https://teams.microsoft.com/l/team/19%3AZUhI3BpwTmux0dAGHalm6k4TABXeJ9Xlb-e7Rp4tNXo1%40thread.tacv2/conversations?groupId=cf43421d-fa9c-4576-a6ad-d8a821a6835d&tenantId=baeefbc8-3c8b-4382-9126-e86bfef46ce6


    Effective C++ and More Effective C++
    Autore: Scott Meyers
    Editor: Addison-Wesley

    Course Planning

     SubjectsText References
    1Introduction to C++ ProgrammingChapter 1-9 of the R.B.
    2Class and ObjectsChapter 12 of the R.B.
    3Derived class, class inheritance, polymorphismChapter 13 of  the R.B.
    4Operator overloadingChapter 20 of the R.B.
    5TemplateChapter 13 of the R.B.
    6Sorting and searchingChapter 11 of the R.B.
    7ListsChapter 16 of the R.B.
    8Stacks and queuesChapter 17of the R.B.
    9TreesChapter 19 of the R.B.
    10GraphsTeacher's material

    Learning Assessment

    Learning Assessment Procedures

    The exam consists of a written test on the theoretical topics of the course and will grant access to the laboratory test. Students eligible for the laboratory test may take the oral test. The final grade will be the average of the three tests, on a scale of thirty. The results will be available at the "announcements" section of the department's web page and on the dedicated Teams chanel (https://teams.microsoft.com/l/team/19%3AZUhI3BpwTmux0dAGHalm6k4TABXeJ9Xlb-e7Rp4tNXo1%40thread.tacv2/conversations?groupId=cf43421d-fa9c-4576-a6ad-d8a821a6835d&tenantId=baeefbc8-3c8b-4382-9126-e86bfef46ce6).

    At the end of the exam, each student will receive a grade according to the following scale:

    • Fail: the student has not grasped the basic concepts and is unable to answer at least 60% of the questions or complete the exercises.
    • 18-23: the student demonstrates a minimal understanding of the basic concepts, has limited ability to connect topics, and can solve simple exercises.
    • 24-27: the student shows a good grasp of the course content, has a solid ability to link concepts, and completes exercises with few errors.
    • 28-30 with honors: the student has fully acquired all course content, can master it thoroughly, and connects it with critical insight; exercises are completed fully and without errors.

    For students with special needs, all the measures provided by the regulations will be adopted.

    Examples of frequently asked questions and / or exercises

    Texts are available on the dedicated Teams channel (https://teams.microsoft.com/l/team/19%3AZUhI3BpwTmux0dAGHalm6k4TABXeJ9Xlb-e7Rp4tNXo1%40thread.tacv2/conversations?groupId=cf43421d-fa9c-4576-a6ad-d8a821a6835d&tenantId=baeefbc8-3c8b-4382-9126-e86bfef46ce6).