Simone Martini’s research while affiliated with University of Bologna and other places

What is this page?


This page lists works of an author who doesn't have a ResearchGate profile or hasn't added the works to their profile yet. It is automatically generated from public (personal) data to further our legitimate goal of comprehensive and accurate scientific recordkeeping. If you are this author and want this page removed, please let us know.

Publications (34)


Big Ideas of Cryptography in Primary School
  • Conference Paper

July 2024

·

12 Reads

·

3 Citations

Michael Lodi

·

·

Simone Martini


Control Structure

October 2023

·

3 Reads

In this chapter, we will tackle the problem of managing sequence control, an important part in defining the execution of program instructions in a generic abstract machine’s interpreter.


Functional Programming Paradigm

October 2023

·

64 Reads

·

1 Citation

In this chapter, we discuss the functional programming paradigm, where computation proceeds by term rewriting and not through modification of the state. Languages of this paradigm, at least in their “pure” form, do not use the concept of memory and therefore there is no side effect. Once an environment is fixed, an expression always denotes the same value. We will discuss the pure paradigm in the first sections, explaining its fundamental aspects. Real functional programming languages, however, merge these “pure” ingredients with many other mechanisms. We will, at this point, be in a position to discuss the reasons why the functional programming paradigm is interesting with respect to ordinary imperative languages. We will touch on the SECD machine, an abstract machine for higher-order functional languages which is the prototype of many real implementations. The chapter concludes with a more theoretical section that provides a succinct introduction to the lambda-calculus, a formal system for computability that inspires all functional languages and which has been a constant model for the design of programming languages.


Object-Oriented Paradigm

October 2023

·

10 Reads

·

2 Citations

In this chapter, we discuss object-oriented languages. We attempt to present the linguistic aspects which concern objects and their use, starting with a presentation of objects as a way to gain data abstraction in a way that is both flexible and extensible. This will lead us to describe the concepts of objects and classes, and, then, those of encapsulation, subtypes (that is a compatibility relation based on the functionality of an object), inheritance (that is the possibility of reusing the implementation of a method previously defined in another object or for another class), and dynamic method selection. Having examined these characteristic aspects in detail, we will study some extensions to linguistic solutions that are available in commercial languages, referring, in particular, to the concepts of subtype, polymorphism and genericity.


Names and the Environment

October 2023

·

16 Reads

The evolution of programming languages can be seen in large measure as a process which has led, by means of appropriate abstraction mechanisms, to the definition of formalisms that are increasingly distant from the physical machine. In this context, names play a fundamental role. A name, indeed, is nothing more than a (possibly meaningful) sequence of characters used to represent some other thing. They allow the abstraction either of aspects of data, for example using a name to denote a location in memory, or aspects of control, for example representing a set of commands with a name. The correct handling of names requires precise semantic rules as well as adequate implementation mechanisms.


Abstract Machines

October 2023

·

13 Reads

·

1 Citation

Abstraction mechanisms play a crucial role in computing because they allow us to manage the complexity inherent in most computational systems by isolating the important aspects in a dedicated context. In the field of programming languages, these mechanisms are fundamental, both from a theoretical viewpoint (many important concepts can be appropriately formalised using abstractions) and in the practical sense, because programming languages today use common abstraction-creating constructs. One of the most general concepts employing abstraction is the abstract machine. In this chapter, we will see how this concept is closely related to the that of the programming language. We will also see how, without requiring us to go into the specific details of any particular implementation, it allows us to describe what an implementation of a programming language is. To do this, we will describe in general terms what is meant by the interpreter and the compiler for a language. Finally, will see how abstract machines can be structured in hierarchies that describe and implement complex software systems.


Concurrent Programming

October 2023

·

7 Reads

We now consider a subject that is substantially different from those seen in the previous chapters. Up to now, we have considered sequential languages, where at each moment off the execution of a program there is only one active context. However, a significant part of modern programs, from operating system functions to web services, needs to escape this limitation. Indeed, to achieve their purpose, these programs need more than one context of execution, active at the same time, which concur to realize their functionalities. This kind of programming, called concurrent, is the subject of this chapter. After a brief introduction and a few historical notes, necessary to understand the vastness of the current panorama, we will see the main problems that arise when passing from sequential to concurrent programming and the related solutions. We will only outline the main ideas since an exhaustive treatment would require a further volume. Following the guiding principle of this entire text, we will not refer to any specific language for general principles, while we will try to make some notions concrete by examining the case of Java.


Logic Programming Paradigm

October 2023

·

23 Reads

In this chapter we analyse a second main paradigm which supports declarative programming: logic programming. This paradigm includes both theoretical and fully implemented languages, of which the best known is surely Prolog. Even if there are big differences of a pragmatic and, for some, a theoretical nature between these languages, they all share the idea of interpreting computation as logical deduction. In this chapter, we will therefore examine these concepts while trying to limit the theoretical part. We also adopt the approach that has characterised the rest of the text while examining this paradigm. We do not mean therefore to teach programming in Prolog, even if we present various examples of real programs, but we do intend to provide enough basis for understanding and, in a short time, mastering this and other logic programming languages.


Data Abstraction

October 2023

·

6 Reads

In this chapter, we will present some of the main ways in which a language can provide mechanisms for defining abstractions over data, more sophisticated than just the definition of new types. Among these mechanisms, we will discuss the so-called abstract data types, which in different forms are provided by many different languages. We then look at modules, a largely similar concept, but which mainly applies to programming in the large. These abstraction mechanisms also constitute an introduction to some themes that we will encounter again with object-oriented programming. The key concepts that we will investigate in this chapter are the separation between interface and implementation and the concepts associated with information hiding.


Citations (14)


... In contrast to these calculi, the proposed twist calculi, lTS4 and gTS4, are cut-free, analytic, and effective in proving negated modal formulas containing numerous negation connectives. For more general information on sequent calculi for modal logics including S4, see, for example, [35,6,27,21,10,18,19,17] and the references therein. For information on sequent calculi for S5, see, for example, [9,12,27,17,18,19,10] and the references therein. ...

Reference:

Twist Sequent Calculi for S4 and its Neighbors
Cut Elimination for Extended Sequent Calculi
  • Citing Article
  • Full-text available
  • September 2023

Bulletin of the Section of Logic

... The term 'paradigm' has become deeply embedded in computing discourse since its introduction by Robert Floyd in his 1978 Turing Award lecture (Floyd, 1979). This influence is evidenced by its widespread adoption in foundational computing literature (Abelson et al., 1996;Gabbrielli and Martini, 2023;Van Roy and Hari 2004) and its persistent use in describing programming methodologies. In his lecture, Floyd sought to address what he perceived as inadequacies in programming methodology and education, arguing that focusing solely on language syntax and algorithms was insufficient. ...

Programming Languages: Principles and Paradigms
  • Citing Book
  • January 2023

... With this framework, we achieved significant improvements with respect to code readability, maintainability, and performance. The FP paradigm, with its emphasis on immutable data and pure functions without side effects [13][14][15][16], provides a more natural approach to handling the intricacies of scientific computing. It is in advantages on creation for modular and highly decoupled code style, which is precisely the essential for achieving completeness of functions, and the further optimization on the software architecture as well. ...

Functional Programming Paradigm
  • Citing Chapter
  • October 2023

... Object-oriented programming (OOP) is a widely used paradigm in contemporary programming. It revolves around the concept of objects, which are instances of classes that encapsulate both data and the behaviors associated with that data (Gabbrielli & Martini, 2023). At the University of Tartu, this paradigm is taught to first-year students in the course "Object-Oriented Programming", using the Java programming language. ...

Object-Oriented Paradigm
  • Citing Chapter
  • October 2023

... Quantum cryptography takes advantage of the fact that due to the principles of quantum mechanics, it is impossible for a third party to eavesdrop on the system without disrupting it and thus (probably) being detected. Cryptography is fundamental to today's digital society, and many frameworks and curricula have recognized it [17]. Students can learn about quantum cryptography in a course focused solely on cryptography, or while learning about quantum informatics. ...

Cryptography in Grade 10: Core Ideas with Snap! and Unplugged
  • Citing Conference Paper
  • July 2022

... The approach is based on a semantic wave [3] and also on algorithmic thinking [7] and its relationship to computational thinking [2] and DC [1]. New in this revised SWAT approach from the third development process (see Fig. 2) is the additional use of the Necessity Learning Design (NLD) [8] in a semantic wave flow to foster algorithmic thinking. Similar to the productive failure approach [9], but with the aim of stimulating the need for the goal concept -for example, new process structures in programming -NLD requires tasks/problems that are challenging but not frustrating. ...

A Necessity-Driven Ride on the Abstraction Rollercoaster of CS1 Programming

Informatics in Education

... The lack of face-to-face interaction in online courses is a significant hurdle to learner satisfaction: learners can rate an online course to be perfect, but still prefer to attend the course in person if given the chance [51]. All is not lost, though; even though challenging, once the engagement is spurred in online classrooms, particularly in discussion boards, cognitive presence can be established [52]. ...

The Online Course Was Great: I Would Attend It Face-to-Face: The Good, The Bad, and the Ugly of IT in Emergency Remote Teaching of CS1
  • Citing Conference Paper
  • September 2021

... There is an article by Lodi and Martini (2022) which explores Papert's and Wing's definitions. They argued that, from both definitions, we should retain the core ideas. ...

Correction to: Computational Thinking, Between Papert and Wing

Science & Education

... In contrast to these calculi, the proposed twist calculi, lTS4 and gTS4, are cut-free, analytic, and effective in proving negated modal formulas containing numerous negation connectives. For more general information on sequent calculi for modal logics including S4, see, for example, [35,6,27,21,10,18,19,17] and the references therein. For information on sequent calculi for S5, see, for example, [9,12,27,17,18,19,10] and the references therein. ...

From 2-Sequents and Linear Nested Sequents to Natural Deduction for Normal Modal Logics
  • Citing Article
  • June 2021

ACM Transactions on Computational Logic

... Students reported better student-teacher interaction, a higher concentration level, and more effective teamwork when in the classroom. However, some academic teachers considered needing more resources and training [45] to perform effectively in the remote digital environment. ...

The Good, The Bad, and The Ugly of a Synchronous Online CS1
  • Citing Conference Paper
  • June 2021