SOFTWARE ENGINEERING + INTERNET TECHNOLOGIES
cod. 1010128

Academic year 2023/24
3° year of course - First semester
Professor responsible for the course unit
POGGI Agostino
integrated course unit
12 credits
hub: PARMA
course unit
in ITALIAN

Course unit structured in the following modules:

Learning objectives

Software Engineering

The goal of the course is to provide an in-depth knowledge on the methodologies and techniques for the development of the software, on the Java programming language, and on the tools that may simplify the development and management of software systems.
Moreover, the course has the goal of providing to the students the ability to use the acquired knowledge and the experience, gained during the lab activities, to identify the best solutions for the desigh of software systems and for developing some satisfying implementations for both the properties and the cost of the developed systems.

Internet technologies

Knowledge and understanding - By means of lectures attended in the context of the course, the student will learn the major Web technologies and the JavaScript programming language. The student will also learn principles and technologies of service oriented architectures. The student will acquire knowledge about the most important peer-to-peer and blockchain architectures and protocols. Finally, the student will learn the basic principles of cryptography and secure communication protocols.
Applying knowledge and understanding - By means of lectures and practical activities in the context of the course, the student will learn how to apply the acquired knowledge in a real design environment. In particular, the student will learn to: implement dynamic Web pages, implement Web applications, design and implement Web services, design and implement peer-to-peer applications, with particular attention to security issues.
Making Judgements - The student will be able understand and critically evaluate the main types of Internet technologies.
Communication Skills - By means of the lectures and the discussions with the teacher, the student will acquire the specific lexicon related to Internet technologies. It is expected that, at the end of the course, the student will be able to transmit, both in oral and written form, the main topics of the course, like ideas, engineering problems and related solutions.
Learning skills - The student that will attend the course will be able to improve its knowledge about Internet technologies, by autonomously referring to specialized books, scientific publications, also beyond the topics presented by the teacher during the lectures, in order to effectively face the entry into employment and undertake further training paths.

Prerequisites

Software Engineering

Fundamental concepts of Informatics, Fundamental concepts of Programming.

Course unit content

Software Engineering

The course presents the main techniques and methodologies for the development of software systems with particular attention to object-oriented systems and introduces the Java programming language. In particular, the course copes with the following topics:
Introduction
Development processes and models
Requirement engineering
Design
Implementation and testing
Installation and maintenance
Project management
Java

Internet technologies

1. Web technologies
2. Service-oriented architectures
3. Peer-to-peer systems
4. Blockchain
5. Cybersecurity

Full programme

Software Engineering

Introduction
Development processes and models
- Software development processes
- Software development models
- UML
Requirement engineering
- Introduction
- UML e OCL for the requirement engineering
- Requirements elicitation
- Requirements analysis
- Requirements management and validation
Design
- Design process
- Design principles
- Architectural design
- User Interface Design
- Software Pattern
- Object-oriented design
Implementation and testing
- Software implementation
- Software testing
Installation and maintenance
- Software installation
- Software maintenance
Project management
Java
- General properties
- Exceptions
- Input/output
- Collections
- Graphical user interfaces
- Functional Programming
- Reflection and concurrent programming

Internet technologies

1. Web technologies (24 hours) - HTML; CSS; XML; JSON; Search engines; JavaScript: basics, window object, DOM, events, AJAX, JQuery, storage, scripted graphics, development tools; Node.
2. Service-oriented architectures (8 hours) - HTTP; General SOA concepts; Web Services; RESTful services; microservices.
3. Peer-to-peer systems (10 hours) - Qualitative and quantitative characterization of P2P systems; Design issues of P2P systems; HM, DUM, DSM e LM models; HM-based peer-to-peer systems: SoulSeek, Napster, eMule, BitTorrent; DUM-based peer-to-peer systems: Gnutella, Mute, Freenet; DSM-based peer-to-peer systems: Kademlia, Chord; LM-based peer-to-peer systems: Skype.
4. Blockchain (6 hours) - General principles of blockchains; Transactions, Bitcoin; Smart Contracts; Erthereum; Consensus models: Proof of Work and Proof of Stake; Ouroboros, Ouroboros Praos and Cardano; Algorand; Types of cyber-attacks against blockchains.
5. Cybersecurity (24 hours) - General concepts of cybersecurity; Symmetric-key cryptography; Hash functions; MAC; Public-key cryptography; Digital signatures; Key distribution; User authentication; TLS and HTTPS; Quantum Internet and quantum cryptography

Bibliography

Software Engineering

Ian Sommerville. Software Engineering, 10/ed, Pearson Education, 2015.

Internet technologies

M. Amoretti, lecture notes in English on the topics of the course.
J. Kurose, K. Ross, "Computer Networking: A Top Down Approach", ed. Addison-Wesley, 2016.
D. Flanagan, "JavaScript - The Definitive Guide", ed. O'Reilly, 2020.
W. Stallings, "Cryptography and Network Security: Principles and Practice", 7th edition, 2017.

Teaching methods

Software Engineering

The course is based on theoretical lectures and lab activities. In particular, the lab activities are dedicated to the development of some software systems taking advantage of the Java language and of the software tools discussed during the course. In these activities, students work individually, of course under the control and with the support of the teacher and without any restriction on positive interaction among them.
The slides used to support the teaching activities will be uploaded on the Elly platform before each lecture. Students need to subscribe to the online course to download the corresponding slides. Slides are an integral part of the teaching material. Therefore, non-attending students need to check the teaching material and the teacher’s recommendations available on the Elly platform. The course is based on theoretical lectures and lab activities. In particular, the lab activities are dedicated to the development of some software systems taking advantage of the Java language and of the software tools discussed during the course. In these activities, students work individually, of course under the control and with the support of the teacher and without any restriction on positive interaction among them.
The slides used to support the teaching activities will be uploaded on the Elly platform before each lecture. Students need to subscribe to the online course to download the corresponding slides. Slides are an integral part of the teaching material. Therefore, non-attending students need to check the teaching material and the teacher’s recommendations available on the Elly platform.

Internet technologies

The lectures will be given in presence.
The teacher will illustrate the course topics by means of slides. Some hours will be devoted to the practice of software development. Teaching materials (including slides, lecture notes, source code, scientific articles) will be uploaded on the Elly platform. Students that won't attend the lectures are invited to check the available teaching materials and recommendations provided by the teacher through the Elly platform.

Assessment methods and criteria

Software Engineering

Evaluation consists of a written test and a practical test. Written tests are composed of seven open-ended questions to be answered without the use of books and notebooks. Five questions have the goal to evaluate the acquired knowledge on the argument discussed during the course. The remaining two questions have the goal to evaluate the capability to apply the knowledge acquired during the course. Written tests duration is an hour and thirty minutes, their score scale is 0-30 and grades will be communicated within two weeks after the tests through the Elly system. Practical tests consist in the development of a software system and can be carried out by students individually or in groups of up to two people. These tests have the goal to evaluate the capability to apply the knowledge acquired during the course. Moreover, the value of such an evaluation will depend on the quality of the developed system, of the related documentation, and of the oral presentation of the system. The score scale of practical tests is 0-30 and grades are communicated at the end of the presentation. The exam is passed if the grade of both the tests is greater or equal to 18. Final evaluation is the average grade of the two tests. Honors can be awarded in case of achieving the highest score on both tests.

Internet technologies

The learning evaluation consists of two or three moments (depending on the version of the course, providing 6 or 9 credits): 1) a written exam lasting 1 hour, with open questions related to the parts 2-3-4 of the course; 2) a written exam lasting 1 hour, with open questions related to the cybersecurity part of the course; 3) a software development project based on the technologies illustrated within the course; it is mandatory to write a short report and to make an oral presentation of the work done. Each written exam is evaluated on a 0-30 scale. The project is evaluated on a 0-30 scale. The final grade is the average of the partial grades.
There will be a midterm written exam equivalent to moment 2) of the learning evaluation, thus related the cybersecurity part of the course. The student that gets at a mark greater or equal than 18 in the midterm written exam is exempted from moment 2) of the learning evaluation.

Other information

- - -