Skip to main content

Comprehending Algorithmic Design

  • Conference paper
  • First Online:
Computer-Aided Architectural Design. Design Imperatives: The Future is Now (CAAD Futures 2021)

Abstract

Algorithmic Design (AD) allows for the creation of form through algorithms. Its inherent flexibility encourages the exploration of a wider design space, the automation of design tasks and design optimization, considerably reducing project costs and environmental impact. Nevertheless, current AD uses representation methods that radically differ from those used in architectural practice, creating a mismatch that is further exacerbated by the inadequacy of current programming environments. This creates a barrier to the adoption of AD, demotivating architects from its use.

We propose to address this problem by coupling AD with adequate representation methods for designing complex architectural projects. To this end, we explore three essential concepts: storytelling, interactive evaluation, and reactivity. These concepts can be both complementary and mutually exclusive, which means compromises must be made to accommodate them all. We outline a strategy for their integration with the AD workflow, highlighting the advantages and disadvantages of each one, and pinpointing their intersection. Finally, we evaluate the proposed strategy using computational notebooks as programming environments.

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 84.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.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

References

  1. Alfaiate, P., Caetano, I., Leitão, A.: Luna moth: supporting creativity in the cloud. In: 37th ACADIA Conference, pp. 72–81. Cambridge, Massachusetts, USA (2017)

    Google Scholar 

  2. Baecker, R., Price, B.: The early history of software visualization. In: Stasko, J., Domingue, J., Brown, M.H., Price, B.A. (eds.) Software Visualization: Programming as a Multimedia Experience, chap. 2, pp. 29–34. MIT Press (1998)

    Google Scholar 

  3. Bainomugisha, E., Carreton, A.L., Van Cutsem, T., Mostinckx, S., De Meuter, W.: A survey on reactive programming. ACM Comput. Surv. 45(4), 34 (2013). https://doi.org/10.1145/2501654.2501666

    Article  Google Scholar 

  4. Ball, T., Eick, S.G.: Software visualization in the large. Computer 29(4), 33–43 (1996). https://doi.org/10.1109/2.488299

    Article  Google Scholar 

  5. Bass, L., Kazman, R., Clements, P.: Software Architecture in Practice. Pearson Education, New Jersey, United States (2012)

    Google Scholar 

  6. Brown, M.H.: Zeus: A system for algorithm animation and multi-view editing, SRC reports, vol. 75. Digital, Systems Research Center (SRC), Palo Alto, California (1992)

    Google Scholar 

  7. Burnett, M.M.: Visual programming. In: Webster, J.G. (ed.) Wiley Encyclopedia of Electrical and Electronics Engineering, pp. 275–283. John Wiley & Sons, Inc. (1999). https://doi.org/10.1002/047134608X.W1707

  8. Burry, M.: Scripting Cultures: Architectural Design and Programming. John Wiley & Sons, Inc., Architectural Design Primer (2011)

    Google Scholar 

  9. Celani, G., Vaz, C.E.V.: CAD scripting and visual programming languages for implementing computational design concepts: a comparison from a pedagogical point of view. Int. J. Architectural Comput. 10(1), 121–137 (2012). https://doi.org/10.1260/1478-0771.10.1.121

    Article  Google Scholar 

  10. Chattopadhyay, S., Prasad, I., Henley, A.Z., Sarma, A., Barik, T.: What’s wrong with computational notebooks? Pain points, needs, and design opportunities. In: CHI Conference on Human Factors in Computing Systems, pp. 1–12. ACM, Honolulu, HI, USA (2020). https://doi.org/10.1145/3313831.3376729

  11. Davis, D., Burry, J., Burry, M.: Understanding visual scripts: improving collaboration through modular programming. Int. J. Architect. Comput. 9(4), 361–375 (2011). https://doi.org/10.1260/1478-0771.9.4.361

    Article  Google Scholar 

  12. Diehl, S.: Software Visualization: Visualizing the Structure, Behaviour, and Evolution of Software. Springer, Berlin Heidelberg (2007). https://doi.org/10.1007/978-3-540-46505-8

  13. Do, E.Y.L., Gross, M.D.: Thinking with diagrams in architectural design. Artif. Intell. Rev. 15(1–2), 135–149 (2001). https://doi.org/10.1023/A:1006661524497

    Article  MATH  Google Scholar 

  14. Felleisen, M., Findler, R.B., Flatt, M., Krishnamurthi, S.: How to Design Programs: An Introduction to Programming and Computing. The MIT Press, Cambridge (2001). https://doi.org/10.4230/LIPIcs.SNAPL.2015.113

  15. Findler, R.B., Flanagan, C., Flatt, M., Krishnamurthi, S., Felleisen, M.: DrScheme: a pedagogic programming environment for scheme. In: Glaser, H., Hartel, P., Kuchen, H. (eds.) PLILP 1997. LNCS, vol. 1292, pp. 369–388. Springer, Heidelberg (1997). https://doi.org/10.1007/BFb0033856

    Chapter  Google Scholar 

  16. Forward, A., Lethbridge, T.C.: The relevance of software documentation, tools and technologies: a survey. In: Symposium on Document Engineering, pp. 26–33. ACM, McLean, Virginia, USA (2002). https://doi.org/10.1145/585058.585065

  17. Fowler, M.: Refactoring: Improving the Design of Existing Code. Object Technology Series. Addison-Wesley, Boston (1999)

    Google Scholar 

  18. Goldstine, H.H., Von Neumann, J.: Planning and coding of problems for an electronic computing instrument: Report on the Mathematical and Logical aspects of an Electronic Computing Instrument. Institute for Advanced Study Princeton, New Jersey (1947)

    Google Scholar 

  19. Grus, J.: I don’t like notebooks (2018). https://www.youtube.com/watch?v=7jiPeIFXb6U&ab_channel=O%27Reilly. Accessed 21 Jan 2021

  20. Hensel, M.: Performance-Oriented Architecture: Rethinking Architectural Design and the Built Environment. John Wiley & Sons, Inc., Architectural Design Primer (2013)

    Google Scholar 

  21. Iyer, S., Konstas, I., Cheung, A., Zettlemoyer, L.: Summarizing source code using a neural attention model. In: 54th Annual Meeting of the Association for Computational Linguistics, vol. 1, pp. 2073–2083. ACL, Berlin, Germany (2016). https://doi.org/10.18653/v1/P16-1195

  22. Jackson, M.A.: Principles of Program Design. Academic Press Inc, USA (1975)

    Google Scholar 

  23. Kery, M.B., Myers, B.: Exploring exploratory programming. In: Symposium on Visual Languages and Human-Centric Computing (VL/HCC), pp. 25–29 (2017). https://doi.org/10.1109/VLHCC.2017.8103446

  24. Kery, M.B., Radensky, M., Arya, M., John, B.E., Myers, B.A.: The story in the notebook: exploratory data science using a literate programming tool. In: CHI Conference on Human Factors in Computing Systems, pp. 1–11. ACM, Montreal QC, Canada (2018). https://doi.org/10.1145/3173574.3173748

  25. Knuth, D.E.: Literate programming. Comput. J. 27(2), 97–111 (1984). https://doi.org/10.1093/comjnl/27.2.97

    Article  MATH  Google Scholar 

  26. Lasser, J.: Creating an executable paper is a journey through open science. Commun. Phys. 3(143), 1–5 (2020). https://doi.org/10.1038/s42005-020-00403-4

    Article  Google Scholar 

  27. Lee, E.A., Messerschmitt, D.G.: Synchronous data flow. Proceedings of the IEEE 75(9), 1235–1245 (1987). https://doi.org/10.1109/PROC.1987.13876

    Article  Google Scholar 

  28. Leitão, A., Lopes, J., Santos, L.: Programming languages for generative design: a comparative study. Int. J. Architect. Comput. 10(1), 139–162 (2012). https://doi.org/10.1260/1478-0771.10.1.139

    Article  Google Scholar 

  29. Leitão, A., Lopes, J., Santos, L.: Illustrated programming. In: 34th ACADIA Conference, pp. 291–300. Los Angeles, California, USA (2014)

    Google Scholar 

  30. Loukissas, Y.: Keepers of the geometry. In: Turkle, S. (ed.) Simulation and Its Discontents, pp. 153–170. MIT Press, Cambridge (2009). https://doi.org/10.7551/mitpress/8200.003.0014

  31. Mens, T., Tourwe, T.: A survey of software refactoring. IEEE Trans. Softw. Eng. (TSE) 30(2), 126–139 (2004). IEEE. https://doi.org/10.1109/TSE.2004.1265817

  32. Myers, B.: Taxonomies of visual programming and program visualization. J. Vis. Lang. Comput. 1(1), 97–123 (1990). https://doi.org/10.1016/S1045-926X(05)80036-9

    Article  MathSciNet  Google Scholar 

  33. Nassi, I., Shneiderman, B.: Flowchart techniques for structured programming. SIGPLAN Not. 8(8), 12–26 (1973). https://doi.org/10.1145/953349.953350

    Article  Google Scholar 

  34. Nguyen, A.T., Reiter, S., Rigo, P.: A review on simulation-based optimization methods applied to building performance analysis. Appl. Energy 113, 1043–1058 (2014). https://doi.org/10.1016/j.apenergy.2013.08.061

    Article  Google Scholar 

  35. Observable Inc: Observable: Make sense of the world with data, together (2021). https://observablehq.com. Accessed 21 Jan 2021

  36. Oda, Y., et al.: Learning to generate pseudo-code from source code using statistical machine translation. In: 30th International Conference on Automated Software Engineering (ASE), pp. 574–584. IEEE/ACM, Lincoln, NE, US (2015). https://doi.org/10.1109/ASE.2015.36

  37. Perez, F., Granger, B.E.: IPython: a system for interactive scientific computing. Comput. Sci. Eng. 9(3), 21–29 (2007). https://doi.org/10.1109/MCSE.2007.53

    Article  Google Scholar 

  38. Perkel, J.M.: Why Jupyter is data scientists’ computational notebook of choice. Nature 563(7729), 145–146 (2018). https://doi.org/10.1038/d41586-018-07196-1

    Article  Google Scholar 

  39. van der Plas, F., Bochenski, M.: Pluto.jl (2021). https://github.com/fonsp/Pluto.jl. Accessed 21 Jan 2021

  40. Price, B., Baecker, R., Small, I.: An introduction to software visualization. In: Stasko, J., Domingue, J., Brown, M.H., Price, B.A. (eds.) Software Visualization: Programming as a Multimedia Experience, chap. 1, pp. 3–28. MIT Press (1998)

    Google Scholar 

  41. Project Jupyter: Jupyter (2021). https://jupyter.org. Accessed 21 Jan 2021

  42. Rein, P., Ramson, S., Lincke, J., Hirschfeld, R., Pape, T.: Exploratory and live, programming and coding: a literature study comparing perspectives on liveness. Programm. J. 3(1), 1:1–1:33 (2018). https://doi.org/10.22152/programming-journal.org/2019/3/1

  43. Roman, G.C., Cox, K.C.: A taxonomy of program visualization systems. Computer 26(12), 11–24 (1993). https://doi.org/10.1109/2.247643

    Article  Google Scholar 

  44. Rule, A., Tabard, A., Hollan, J.D.: Exploration and explanation in computational notebooks. In: CHI Conference on Human Factors in Computing Systems, pp. 1–12. ACM (2018). https://doi.org/10.1145/3173574.3173606

  45. Sammer, M.J., Leitão, A., Caetano, I.: From visual input to visual output in textual programming. In: 24th CAADRIA Conference, vol. 1, pp. 645–654. Wellington, New Zealand (2019)

    Google Scholar 

  46. Scheer, D.R.: The Death of Drawing: Architecture in the Age of Simulation. Taylor & Francis, Milton Park (2014). https://doi.org/10.4324/9781315813950

  47. Sorensen, A., Gardner, H.: Programming with time: cyber-physical programming with impromptu. SIGPLAN Not. 45(10), 822–834 (2010). https://doi.org/10.1145/1932682.1869526

    Article  Google Scholar 

  48. Storey, M.A.: Theories, methods and tools in program comprehension: past, present and future. In: 13th International Workshop on Program Comprehension (IWPC), pp. 181–191. IEEE Computer Society, Washington, DC, USA (2005). https://doi.org/10.1109/WPC.2005.38

  49. Victor, B.: Inventing on principle (2012). https://vimeo.com/38272912. Accessed 21 Jan 2021

  50. Victor, B.: Stop drawing dead fish (2012). https://vimeo.com/64895205. Accessed 21 Jan 2021

  51. Woodbury, R.: Elements of Parametric Design. Routledge, Milton Park (2010)

    Google Scholar 

Download references

Acknowledgments

This work was supported by national funds through Fundação para a Ciência e a Tecnologia (FCT) (references UIDB/50021/2020, PTDC/ART-DAQ/31061/2017) and a PhD grants under contract of FCT (DFA/BD/4682/2020).

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Renata Castelo-Branco .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2022 Springer Nature Singapore Pte Ltd.

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Castelo-Branco, R., Leitão, A. (2022). Comprehending Algorithmic Design. In: Gerber, D., Pantazis, E., Bogosian, B., Nahmad, A., Miltiadis, C. (eds) Computer-Aided Architectural Design. Design Imperatives: The Future is Now. CAAD Futures 2021. Communications in Computer and Information Science, vol 1465. Springer, Singapore. https://doi.org/10.1007/978-981-19-1280-1_2

Download citation

  • DOI: https://doi.org/10.1007/978-981-19-1280-1_2

  • Published:

  • Publisher Name: Springer, Singapore

  • Print ISBN: 978-981-19-1279-5

  • Online ISBN: 978-981-19-1280-1

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics