You are here: Home » Study Plan » Subject

Sciences

Subject: PROGRAMMING 2 (A.A. 2020/2021)

degree course in COMPUTER SCIENCE

Course year 1
CFU 9
Teaching units Unit Programmazione 2
Information Technology (lesson)
  • TAF: Compulsory subjects, characteristic of the class SSD: ING-INF/05 CFU: 9
Teachers: Luca BEDOGNI, Federica MANDREOLI
Mandatory prerequisites Programmazione 1
Exam type oral
Evaluation final vote
Teaching language Italiano

Contents for group 1

Contents download pdf download

Teachers

Federica MANDREOLI

Overview

The main target of the course is to further develop knowledge and abilities that the students acquired during the previous course of "Programmazione I".
In particular, the course will improve the skills in analyzing and developing data structures advanced algorithms, on one side, and in developing and testing real applications, on the other side.

Admission requirements

The knowledge acquired during the course of Programmazione I.

Course contents

The course contents cover three main topics:
- Implement and test data structures and algorithms in parallel with the Algorithms and data structures course
- Provide advanced programming skills and abilities starting from basic knowledge
acquired during the Programming I course
- Acquire development and testing skills for projects written in C ++ language

Part of the course topics are presented in close interaction with the Data Structures and Algorithms course. In particular, the topics addressed are
- the implementation of the following data structures: lists, trees, graphs;
- the introduction and implementation of the related primitives;
- the use of primitives for the development of applications on the data structures considered,
- the design and development of algorithms on the data structures considered.

C ++ programming topics concern:
- bitwise operators and bit vector operators
- pointers to function

Finally, some fundamental issues for software production will be addressed:
- the design of complex software through process abstraction
- the design and implementation of software modules (interface and body)
- the specification and use of makefile
- principles of software quality, testing and debugging
- the documentation of the code and the use of Doxygen
- version control

Teaching methods

Lectures through slides on theory and theory application exercises. Remote synchronous delivery will be guaranteed; on the basis of the evolution of the COVID19 emergency and the specificities of the educational activities, provision will also be assessed in presence.

Assessment methods

During the year at least 5 written and 4 practical exams are held. The maximum score assigned to each of the two exams is 32. To participate in the laboratory exam it is necessary to pass the written exam with a mark of at least 16/32. The final grade is determined as the weighted average of the two results: 35% mark in the written test, 65% in the lab. The written exam aims to verify the student's ability to write functions and encode algorithms on the data structures seen in class, to encode recursive functions and to master the main aspects of the use of dynamic memory and modular programming and compilation. The laboratory exam aims to verify the student's ability to write applications for real case studies by writing software modules that involve the data structures seen in class and developing makefiles. Exams could be carried out in the presence or remotely depending on the evolution of the COVID19 situation. More information on the exam modalities is available in the FAQ document which can be downloaded from the DOLLY website of the course where past exams are also available.

Learning outcomes

Knowledge and understanding: Through lectures, students will have a sound knowledge and understanding of implementation solutions for the data structures lists, trees and graphs, and related algorithms. In addition, the student will be able to design and understand makefiles for building C ++ projects and software documentation.

Applying knowledge and understanding: Through practical computer exercises and laboratory exercises, the student will be able to apply the knowledge acquired during the course.

Making judgments: Through laboratory activities, the student will be able to evaluate, expose and discuss the design choices made for the implementation of C ++ applications that cover advanced aspects of programming, data structures and algorithms seen in class.

Learning skills: The described activities will enable students to acquire the methodological tools to continue their studies and to be able to perform their own update; this is especially crucial in an area such as computer information management, where key technologies are ever evolving.

Readings

- P. Foggia, M. Vento. «Algoritmi e strutture dati - Astrazione, progetto e realizzazione», McGraw-Hill, 2011

- S. Dasgupta, C.H. Papadimitriou, U.V. Vazirani. «Algorithms», McGraw-Hill, 2006

- B. Eckel, "Thinking in C++", 2nd Edition, Volume 1 http://www.mindviewinc.com/


- Slide del docente disponibili su dolly

Contents for group 2

Contents download pdf download

Teachers

Luca BEDOGNI

Overview

The main target of the course is to further develop knowledge and abilities that the students acquired during the previous course of "Programmazione I".
In particular, the course will improve the skills in analyzing and developing data structures advanced algorithms, on one side, and in developing and testing real applications, on the other side.

Admission requirements

The knowledge acquired during the course of Programmazione I.

Course contents

Part of the course topics are presented in close interaction with the course of Data Structures and Algorithms. In particular, the topics addressed are the following:
- the implementation of the following data structures: lists, stacks, queues, trees, graphs;
- the introduction and implementation of the related primitives;
- the use of primitives for the development of applications on the considered data structures,
- the design and development of algorithms on the considered data structures.

Moreover, some issues related to software production will be addressed:
- the design of complex software through process abstraction
- the design and implementation of software modules (interface and body)
- the specification and use of makefiles
- principles of software quality, testing and debugging.

Teaching methods

Lessons are held in the laboratory. The learning method is hands-on and provides practical programming sessions to test the various aspects of the topics seen in class.

Assessment methods

During the year at least 5 written and 4 practical exams are held. The maximum score assigned to each of the two exams is 32. To participate in the laboratory exam it is necessary to pass the written exam with a mark of at least 16/32. The final grade is determined as the weighted average of the two results: 35% mark in the written test, 65% in the lab. The written exam aims to verify the student's ability to write functions and encode algorithms on the data structures seen in class, to encode recursive functions and to master the main aspects of the use of dynamic memory and modular programming and compilation. The laboratory exam aims to verify the student's ability to write applications for real case studies by writing software modules that involve the data structures seen in class and developing makefiles. More information on the exam modalities is available in the FAQ document which can be downloaded from the DOLLY website of the course where past exams are also available.

Learning outcomes

Knowledge and understanding: Through lectures, students will have a sound knowledge and understanding of implementation solutions for the data structures lists, trees and graphs, and related algorithms. In addition, the student will be able to design and understand makefiles for building C ++ projects and software documentation.

Applying knowledge and understanding: Through practical computer exercises and laboratory exercises, the student will be able to apply the knowledge acquired during the course.

Making judgments: Through laboratory activities, the student will be able to evaluate, expose and discuss the design choices made for the implementation of C ++ applications that cover advanced aspects of programming, data structures and algorithms seen in class.

Learning skills: The described activities will enable students to acquire the methodological tools to continue their studies and to be able to perform their own update; this is especially crucial in an area such as computer information management, where key technologies are ever evolving.

Readings

- P. Foggia, M. Vento. «Algoritmi e strutture dati - Astrazione, progetto e realizzazione», McGraw-Hill, 2011

- S. Dasgupta, C.H. Papadimitriou, U.V. Vazirani. «Algorithms», McGraw-Hill, 2006

- B. Eckel, "Thinking in C++", 2nd Edition, Volume 1 http://www.mindviewinc.com/


- Slide del docente disponibili su dolly