Abstract
The main question of this research is: How does a social machine discover algorithmic mathematical knowledge? A social machine is a system of humans and computers engaged in some purposeful activity. To address the main question, an empiric and theoretical framework for algorithmic mathematical knowledge discovered by the social machine is proposed. The framework is derived from findings in Distributed Cognition documenting how collaborators evolve a mathematical algorithm. By combining Distributed Cognition with the standard Message Passing Model of Distributed Computing, a formalism is introduced to specify the activities of the social machine and its algorithmic knowledge. Furthermore, the software system MathChat is introduced which provides an online environment for social machines engaged in mathematical computations. An application of MathChat in network analysis education is described which outlines a social machine covered by the proposed framework.
Keywords
Supported by Comcast Innovation Fund.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Attiya, H., Welch, J.: Distributed Computing: Fundamentals, Simulations, and Advanced Topics. Wiley Series on Parallel and Distributed Computing. Wiley, Hoboken (2004)
Bunt, A., Terry, M., Lank, E.: Challenges and opportunities for mathematics software in expert problem solving. Hum.-Comput. Interact. 28(3), 222–264 (2013)
Cranshaw, J., Kittur, A.: The polymath project: lessons from a successful online collaboration in mathematics. In: Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, CHI 2011, pp. 1865–1874. ACM, New York (2011)
Davis, M., Sigal, R., Weyuker, E.J.: Computability, Complexity, and Languages: Fundamentals of Theoretical Computer Science. Elsevier, New York (1994)
Fantl, J.: Knowing-how and knowing-that. Philos. Compass 3(3), 451–470 (2008)
Hollan, J., Hutchins, E., Kirsh, D.: Distributed cognition toward a new foundation for human-computer interaction research. ACM Trans. Comput.-Hum. Interact. 7(2), 174–196 (2000)
Hutchins, E.: Cognition in the Wild. MIT Press, Cambridge (1995)
Kitcher, P.: The Nature of Mathematical Knowledge. Cambridge University Press, Cambridge (1984)
Kitzelmann, E.: Inductive programming: a survey of program synthesis techniques. In: Schmid, U., Kitzelmann, E., Plasmeijer, R. (eds.) AAIP 2009. LNCS, vol. 5812, pp. 50–73. Springer, Heidelberg (2010). https://doi.org/10.1007/978-3-642-11931-6_3
Kohlhase, M.: The flexiformalist manifesto. In: 2012 14th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing, pp. 30–35, September 2012
Mac Lane, S.: Categories for the Working Mathematician GTM, vol. 5. Springer, New York (1978). https://doi.org/10.1007/978-1-4757-4721-8
Martin, U., Pease, A.: Mathematical practice, crowdsourcing, and social machines. In: Carette, J., Aspinall, D., Lange, C., Sojka, P., Windsteiger, W. (eds.) CICM 2013. LNCS (LNAI), vol. 7961, pp. 98–119. Springer, Heidelberg (2013). https://doi.org/10.1007/978-3-642-39320-4_7
Minimair, M.: Collaborative computer algebra. In: Kotsireas, I., Martínez-Moro, E. (eds.) ACA 2015. Springer Proceedings in Mathematics & Statistics, vol. 198, pp. 289–303. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-56932-1_20
Minimair, M.: ChatConsole, April 2018. https://github.com/mincode/chconsole
Moran, S., Nakata, K., Inoue, S.: Bridging the analytical gap between distributed cognition and actor network theory using a tool for information trajectory analysis. In: Proceedings of the 30th European Conference on Cognitive Ergonomics, ECCE 2012, pp. 72–77. ACM, New York (2012)
Nardi, B.A.: Studying context: a comparison of activity theory, situated action models, and distributed cognition. In: Nardi, B.A. (ed.) Context and Consciousness, pp. 69–102. MIT Press, Cambridge (1996)
Ragan-Kelley, M., Perez, F., Granger, B., Kluyver, T., Ivanov, P., Frederic, J., Bussonier, M.: The Jupyter/IPython architecture: a unified view of computational research, from interactive exploration to communication and publication. AGU Fall Meeting Abstracts 44, December 2014. http://adsabs.harvard.edu/abs/2014AGUFM.H44D..07R
Sage Foundation: Sage - Open-Source Mathematical Software System. http://www.sagemath.org/
Stahl, G.: Group Cognition. MIT Press, Cambridge (2006)
Stahl, G.: Studying Virtual Math Teams, vol. 11. Springer, Boston (2009). https://doi.org/10.1007/978-1-4419-0228-3
Acknowledgments
The author thanks the anonymous reviewers for valuable suggestions for improving the paper and Comcast Innovation Fund for financially supporting the project.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Appendix
Appendix
The author has developed the software system MathChat to realize mathematical social machines in an online environment. For an introduction to its functionality see Sect. 5. This appendix elaborates on key design and implementation issues.
The software system MathChat supports collaborative computational mathematics by tightly integrating mathematical command entry with chat for communications among the collaborators. Its main software component ChatConsole is available at [14] as an open-source project. The software, written in the programming language Python, is based on the Jupyter project [17] which defines a protocol allowing user client software to communicate with computational kernels (processor of Fig. 3), such as iPython [17] or the Sage system [18] which runs under Python. In Fig. 4, the users enter commands in the scripting language Python. The author’s software project [14] currently focuses on computational kernels accepting commands in Python, but the implementation techniques described in this section are general enough to be used for kernels accepting other languages.
To distinguish chat from commands, the chat messages are prefixed with a pound sign, which is also the sign for a comment in Python. Furthermore, the input lines show the names of the users who entered the commands or chat messages. The users enter text in an input area, shown at the bottom of the screen shot in Fig. 5. The users may switch the input area between chat- and code-entry mode by clicking on the corresponding button in the lower left-hand corner. Additionally, when in code mode, the ChatConsole automatically interprets any entered line starting with a pound sign as a chat message. The chat mode is more convenient when entering multi-line chat messages. By integrating chat with the commands in the output shown in ChatConsole, the chat messages serve the team’s communication and coordination during an ongoing collaboration session and document the common work after it is completed. In addition to enabling chat, the ChatConsole user clients keep track of users connecting to and disconnecting to an ongoing session with the computational kernel.
The implementation of ChatConsole is driven by the Jupyter protocol [17], which the software components use to communication with each other. To distribute chat messages and notifications about users connecting and disconnecting in the system, ChatConsole uses an additional protocol embedded in messages sent through the Jupyter protocol. This addition does not require modifying the Jupyter protocol or kernel. In the Jupyter protocol, the kernel echos all received lines of code to all the connected clients. This echo also includes commands that have no computational effect, such as comments, prefixed with a pound sign in Python. Using the echo, ChatConsole sends special messages, starting with a pound sign and a secret string followed by some special textual data (Fig. 6), to all the clients. Correspondingly, the clients filter and process messages received according to the secret string. (If ChatConsole is connected to a kernel expecting commands in a language other than Python, then the pound sign would be replaced with the comment symbol of that language.) Messages that are identified with the secret strings are treated as chat communications relayed to all the connected users or internal instructions for user management, such as “user cindy has joined”, which allow the ChatConsoles to update their internal lists of connected users. The secret string must be known to all connected clients. Since each Jupyter session has a unique secret identifier determined by the kernel, the secret string may be automatically generated from the session identifier, which makes it available to the clients upon connecting to the kernel. The encoding of the data, transporting the chat messages or user management instructions, is documented in the software repository [14] and subject to change as new features are added to ChatConsole requiring the expansion of the encoding.
Rights and permissions
Copyright information
© 2018 Springer International Publishing AG, part of Springer Nature
About this paper
Cite this paper
Minimair, M. (2018). MathChat: Computational Mathematics via a Social Machine. In: Rabe, F., Farmer, W., Passmore, G., Youssef, A. (eds) Intelligent Computer Mathematics. CICM 2018. Lecture Notes in Computer Science(), vol 11006. Springer, Cham. https://doi.org/10.1007/978-3-319-96812-4_17
Download citation
DOI: https://doi.org/10.1007/978-3-319-96812-4_17
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-96811-7
Online ISBN: 978-3-319-96812-4
eBook Packages: Computer ScienceComputer Science (R0)