Skip to main content

You Can Program What You Want but You Cannot Compute What You Want

  • Chapter
  • First Online:
Principles of Modeling

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 10760))

Abstract

Computers are the most fascinating machines ever invented. Virtually everyone uses them in one form or another every day. However, most people only have a vague understanding of how computers work, let alone how to program them. Yet computing has become a commodity almost like energy, food, or water. The question is if the general public, for modern society to work properly, needs to understand computing better than what people generally know about, say, producing electricity or clean water. We argue that the intractability and even undecidability of so many important problems in computer science are the reason that computing is indeed different. It is the limits of computability, not just the capabilities of computers, that is the source of unbounded potential in the automation of everything. The challenge is to teach people not just programming but also how programming is the neverending process of overcoming those limits. We have developed a system called selfie that implements a self-referential compiler, emulator, and hypervisor that can compile, execute, and virtualize itself. We use selfie to teach undergraduate and graduate students computer science from first principles. In particular, we show them how self-referentiality in selfie is capability and limitation of computing at the same time. Here, we discuss ongoing early work on integrating verification technology into selfie as yet another way of exploring what computing is.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    http://selfie.cs.uni-salzburg.at.

  2. 2.

    https://github.com/cksystemsteaching/selfie/releases/tag/Festschrift17.

  3. 3.

    http://leanpub.com/selfie.

  4. 4.

    https://github.com/marijnheule/microsat.

  5. 5.

    http://www.satcompetition.org.

References

  1. Biere, A., Cimatti, A., Clarke, E., Zhu, Y.: Symbolic model checking without BDDs. In: Cleaveland, W.R. (ed.) TACAS 1999. LNCS, vol. 1579, pp. 193–207. Springer, Heidelberg (1999). https://doi.org/10.1007/3-540-49059-0_14

    Chapter  Google Scholar 

  2. Biere, A., Heule, M., van Maaren, H., Walsh, T. (eds.): Handbook of Satisfiability, Frontiers in Artificial Intelligence and Applications, vol. 185. IOS Press, Amsterdam (2009)

    Google Scholar 

  3. Cadar, C., Dunbar, D., Engler, D.: KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs. In: Proceedings of USENIX Conference on Operating Systems Design and Implementation (OSDI), pp. 209–224. USENIX Association (2008)

    Google Scholar 

  4. Godefroid, P., Levin, M.Y., Molnar, D.: Automated whitebox fuzz testing. In: Proceedings of Symposium on Network and Distributed Systems Security (NDSS), pp. 151–166 (2008)

    Google Scholar 

  5. Hennessy, J.L., Patterson, D.A.: Computer Architecture: A Quantitative Approach. Morgan Kaufmann, Burlington (2011)

    MATH  Google Scholar 

  6. Kaufmann, M., Manolios, P., Moore, J.S.: Computer-Aided Reasoning: An Approach. Kluwer, Alphen aan den Rijn (2000)

    Google Scholar 

  7. Kernighan, B.W., Ritchie, D.M.: The C Programming Language. Prentice Hall, Upper Saddle River (2000)

    MATH  Google Scholar 

  8. Kirsch, C.: Selfie and the basics. In: Proceedings of ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!). ACM (2017)

    Google Scholar 

  9. Kumar, R.: Self-compilation and self-verification. Ph.D. thesis, University of Cambridge (2015)

    Google Scholar 

  10. Liedtke, J.: Toward real microkernels. Commun. ACM 39(9), 70–77 (1996)

    Article  Google Scholar 

  11. Reynolds, J.C.: Definitional interpreters for higher-order programming languages. In: Proceedings of ACM Annual Conference, pp. 717–740 (1972)

    Google Scholar 

  12. Richards, M., Whitby-Strevens, C.: BCPL: The Language and its Compiler. Cambridge University Press, Cambridge (2009)

    MATH  Google Scholar 

  13. Sipser, M.: Introduction to the Theory of Computation. International Thomson Publishing, Stamford (1996)

    MATH  Google Scholar 

  14. Vizel, Y., Weissenbacher, G., Malik, S.: Boolean satisfiability solvers and their applications in model checking. Proc. IEEE 103(11), 2021–2035 (2015)

    Article  Google Scholar 

  15. Wirth, N.: Compiler Construction. Addison Wesley, Boston (1996)

    MATH  Google Scholar 

Download references

Acknowledgements

Selfie is the result of more than ten years of studying and teaching systems engineering. Many colleagues and students have been involved in its development through inspiring conversations as well as numerous coding sessions. In particular, we thank Martin Aigner, Sebastian Arming, Christian Barthel, Armin Biere, Heidi Graf, Andreas Haas, Marijn Heule, Thomas Hütter, Michael Lippautz, Cornelia Mayer, James Noble, Simone Oblasser, Peter Palfrader, Sarah Sallinger, Raja Sengupta, and Ana Sokolova as well as all the students who have taken our compiler and operating systems classes over the years. The design of the C* compiler is inspired by the Oberon compiler of Professor Niklaus Wirth from ETH Zurich [15]. The design of the microkernel in selfie is inspired by microkernels of Professor Jochen Liedtke from University of Karlsruhe [10].

Work on selfie has been supported by the National Research Network RiSE on Rigorous Systems Engineering (Austrian Science Fund (FWF) Grant S11404-N23 and S11411-N23), a Google PhD Fellowship, and a Google Research Grant.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Christoph M. Kirsch .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2018 Springer International Publishing AG, part of Springer Nature

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Abyaneh, A.S., Kirsch, C.M. (2018). You Can Program What You Want but You Cannot Compute What You Want. In: Lohstroh, M., Derler, P., Sirjani, M. (eds) Principles of Modeling. Lecture Notes in Computer Science(), vol 10760. Springer, Cham. https://doi.org/10.1007/978-3-319-95246-8_1

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-95246-8_1

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-95245-1

  • Online ISBN: 978-3-319-95246-8

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics