SOFTWARE APPLICATIONS PROGRAMMING
cod. 1007072

Academic year 2018/19
1° year of course - Second semester
Professor
Academic discipline
Sistemi di elaborazione delle informazioni (ING-INF/05)
Field
Ingegneria informatica
Type of training activity
Characterising
72 hours
of face-to-face activities
9 credits
hub: PARMA
course unit
in ITALIAN

Learning objectives

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
* Multiprogramming
* Interaction between processes

Prerequisites

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 unit content

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

Full programme

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.1 CPU
1.2 Registers
1.3 Memories
1.4 I/O
1.5 Communication channels
2. Operating systems (12 hours)
2.1 Resource management
2.2 Memory management
2.3 Multiprogramming
2.3.1 Processes
2.3.1.1 Cooperation
2.3.1.2 Competition
2.3.2 Thread
3. Object oriented programming (6 hours)
3.1 Encapsulation
3.2 Composition
3.3 Inheritance
3.4 Polymorphism
4. Data structures and main algorithms (8 hours)
4.1 Linear data structures
4.2 Lists, stacks, queues
4.3 Trees
4.4 Graphs
5. Development of local and distributed applications (8 hours)
5.1 Process management
5.2 Thread
5.3 client/server
5.4 peer to peer

The remaining lesson hours are dedicated to insights and lab exercitations.

Bibliography

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

Teaching methods

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.

Other information

- - -