Learning objectives
Software Engineering
The course aims to provide in-depth knowledge of methodologies and techniques for software development, the Java programming language and the tools that can simplify the development and management of software systems.
Furthermore, the course aims to provide the ability to use the knowledge acquired and the experience accumulated during the exercises to identify the best solutions for designing software systems and to create satisfactory implementations both in terms of the quality of the systems created and the cost of development.
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 reference to object-oriented systems, and introduces the Java programming language. In particular, the course addresses the following topics:
Introduction
Development processes and models
Requirements Engineering
Design
Implementation and testing
Installation and maintenance
Project management
Java
Internet technologies
1. Web technologies
2. Cybersecurity
Full programme
Software Engineering
Development Processes and Models
- Software Development Processes
- Models for Software Development
- UML
Requirements Engineering
- Introduction
- UML and OCL for Requirements Engineering
- Requirements Gathering
- Requirements Analysis
- Requirements Assessment and Management
Design
- Design Process
- Design Principles
- Architectural Design - User Interface Design
- Software Patterns
- Object Oriented Design
Implementation and Testing
- Software Implementation
- Software Testing
Installation and Maintenance
- Software Installation
- Software Maintenance
Project Management
Java
- Introduction
- Classes and Interfaces
- Exceptions
- Input and Output
- Generic Types
- Object Collections
- Graphical User Interfaces
- Functional Programming
- Reflexive and Concurrent Programming
Internet technologies
1. Web Technologies (24 hours) - HTML; CSS; XML; JSON; JavaScript: language basics, Node.js, window objects, DOM, events, AJAX, JQuery, storage, scripted graphics, development tools, React.
2. Cybersecurity (24 hours) - General concepts of computer security; Symmetric key cryptography; Cryptographic hash functions; MAC; Public key cryptography; Digital signatures; Cryptographic key distribution; User authentication; TLS and HTTPS; Quantum Internet and quantum cryptography.
Bibliography
Software Engineering
Ian Sommerville. Software Engineering, 10/ed, Pearson Education, 2017.
Internet Technologies
M. Amoretti, English handouts on the course topics.
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 laboratory exercises. In particular, the laboratory activities will be dedicated to the development of some applications and software systems using the Java language and the tools presented during the course. In these activities, students will work individually or in pairs, clearly under the guidance and with the support of the course teacher and without precluding positive interactions between students. The slides used to support the lessons will be uploaded to the Elly platform before each lesson and a handout will be provided for each lesson. To download the slides, registration for the online course is required. The slides are considered an integral part of the teaching material. Therefore, non-attending students must check the teaching material and the instructions provided by the teacher 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
Written and practical tests are planned. The written tests are based on open-ended questions on theory to be answered without the help of notes and books. These questions are intended to assess the knowledge acquired on the topics discussed during the course. The practical test consists of the development of a software system and can be carried out by students individually or in groups of up to 2 people. The main purpose of this test is to assess the ability to apply the knowledge acquired during the course. Furthermore, the evaluation of the test will depend on the quality of the system developed, the related documentation and the oral presentation (with the use of slides) of the system. The duration of the written test is 1 hour and thirty minutes and the test is evaluated on a scale of 0-30. The exam is passed if the result of the tests is greater than or equal to 18. The final grade is equal to the arithmetic mean of the grades of the tests. Honors can be awarded in the case of achieving the maximum score on all the tests.
Internet technologies
The learning assessment includes two moments:
1) a written test lasting 1 hour, structured on open questions related to the Cybersecurity part;
2) a software development project based on the technologies illustrated in part 1 of the program; a short report and an oral presentation of the work carried out are expected.
The written test is evaluated on a 0-30 scale. The project is evaluated on a 0-30 scale. The scores are averaged to form the final grade.
A written test in progress is expected equivalent to moment 1) of the learning assessment, therefore related to the cybersecurity part.
Other information
- - -
2030 agenda goals for sustainable development
- - -