Software applications programming
Learning outcomes of the course unit
The objective of the course is to introduce the students to the problems connectd with programming of software applications, with an overview of all the components and problems in complex software systems:
* Architecture of processing systems
* Main components of operating systems
* Paradigm of object oriented programming
* Data structures and main algorithms
* Interaction between processes
No prerequisites. However, it is supposed that the student has taken the course of "Comptuer Science and programming lab" and is able to develop simple applications in C++
Course contents summary
1. Computer architecture
2. Operating systems
3. Object Oriented Programming
4. Data structure and main algorithms
5. Development of applications in local environment and distributed applications
The course includes a large activity in the lab. The following list includes the main topics (with tentative duration in hours):
1. Computer architecture (2 hours)
1.5 Communication channels
2. Operating systems (12 hours)
2.1 Resource management
2.2 Memory management
3. Object oriented programming (6 hours)
4. Data structures and main algorithms (8 hours)
4.1 Linear data structures
4.2 Lists, stacks, queues
5. Development of local and distributed applications (8 hours)
5.1 Process management
5.4 peer to peer
The remaining lesson hours are dedicated to insights and lab exercitations.
Robert Sedgewick, “Algoritmi in C++”, terza ed., Addison-Wesley, 2003
Carl Hamacher, Zvonko Vranesic, Safwat Zaky, “Introduzione all'architettura dei calcolatori”, seconda ed., McGraw-Hill, 2007
Clifford A. Shaffer, Data Structures and Algorithm Analysis Edition 3.2 (C++ Version) [https://people.cs.vt.edu/shaffer/Book/C++3elatest.pdf]
Anthony Williams, C++ Concurrency in Action: Practical Multithreading, Manning, 2012
Lessons in classroom, with the help of slides made available in advance to the students. Guided solution of exercise during lesson. Exercises of programming in lab.
The lessons in lab are crucial for the course. The proposed exercises are related to the topics taught during the lessons. The objective is to overview the main problems connected with programming software applications, by guiding the students through the solution of problems of increasing complexity.
As a continuing topic of the course, the students will address the incremental development of an application and, using its requirements, its development and its optimization, the basic theoretical concepts on object oriented programming, multiprogramming and process interaction will be recalled.
Assessment methods and criteria
The exam will consist in an exam on theoretical concepts (brief exercises and questions) and an exam of programming (development or completion of a software application to be developed in lab), possible followed by an oral exam as integration.