Software Analytics for Cybersecurity - Master program
The course aims to provide students with software analytics methods, techniques, and tools that could be exploited when assessing the security level of a software system.
Mutuo ista fiunt, et homines dum docent discount
(Lucio Anneo Seneca, Epistolarum moralium ad Lucilium).
By mutual effort, men, while they teach, learn. This is the principle which I based my teaching on since 2004, when I taught my first university course. In my opinion teaching is a knowledge-sharing process. I want to teach because I like the opportunity to share my knowledge with my students and I get great satisfaction from making them understand difficult yet interesting concepts. I also strongly believe that teaching is not a one-way process of imparting knowledge. Teaching cap in hand allows tearing down the barriers between teacher and students, facilitating the knowledge transfer in both directions, from teacher to students and vice versa.
The course aims to provide students with software analytics methods, techniques, and tools that could be exploited when assessing the security level of a software system.
The course aims at introducing students to procedural programming. Particular emphasis is given to memeory management, the principle of functional abstraction, and the definition of abstract data types.
The course aims to develop skills related to the design and development of decision support systems based (DSS) on machine learning techniques. Such DSS will be mainly dropped in the context of the development of complex software systems.
The course provides an overview on software reliability and testing. It also introduces the students to secure programming. Finally, the course provides knowledge on advanced techniques that can be used in the long term in a research carrier focused on data mining for testing comprehension and generation and reliability prediction.
The course builds on basic software engineering concepts by expanding the discussion of the issues involved in maintaining and evolving software systems. It covers advanced technical aspects of the software maintenance and evolution process including reverse engineering, reengineering, change management, traceability management, refactoring, regression testing, and mining software repositories.
The course aims at providing the essential skills related to concepts, methods, and techniques for the design, the implementation, and the use of database systems. The model of databases adopted during the course is the relational model, nowadays the most established and widespread.
The course aims at providing the basic principles of a programming language, with particular emphasis to the statement interpretation, compilation and memory management.
The course aims at providing an overview of the problems, theories, models, techniques and technologies that characterize the production and lifecycle of a software system, with particular emphasis to the object-oriented software.