The second course of Programming is designed to provide the tools for solving simple problems related to the use of some basic data structures through the object-oriented programming.
In particular the course starts from the introduction of the concept of abstract data model to then introduce and deepen different data models such as: stacks, queues, lists and trees and graphs. The main algorithms for data structure management will also be studied. In particular the main sorting algorithms, including bubble sort, insertion sort, quicksort and mergesort. The C ++ language will be used as the main tool to present implementations of data structures and algorithms.
As a result of completing this course, students will be able to:
Knowledge and understanding: Understand and demonstrate implementation of fundamental algorithms and data structures. Understand time and space complexity of algorithms.
Applying knowledge and understanding: Use fundamental algorithms for sorting and searching and understand their time complexity. Find algorithmic solutions to problems using problem-solving techniques such as divide and conquer. Use key data structures such as linked lists, stacks, queues, trees and graphs.
Making judgments: The student will be able to judge the effectiveness of their implementation and their project work.
Learning skills: the student will be able to adapt the solutions analyzed during the lessons to other contexts.
The Laboratory will be used to give students a strong preparation in C++, the OO programming language used to implement algorithms and data structures. I
As a result of completing this course, students
Teaching will be carried out through lectures (for a total of 48 hours) during which the contents of the course will be presented, also through practical demonstrations.
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.
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.
Review of basic feature of C++ such as: Function overloading, Optional Parameters, Reference Variables, Operator overloading, Pointers.
Fundamental Object Oriented programming concepts such as Classes and Objects, and various other concepts revolving around them, like Inheritance, Polymorphism, Abstraction, and Encapsulation.
Thomas H. Cormen. Charles E. Leiserson. Ronald L. Rivest. Clifford Stein. Introduction to Algorithms. Third Edition. The MIT Press
No specific textbook is chosen.