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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
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)
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)
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
Ball, T., Eick, S.G.: Software visualization in the large. Computer 29(4), 33–43 (1996). https://doi.org/10.1109/2.488299
Bass, L., Kazman, R., Clements, P.: Software Architecture in Practice. Pearson Education, New Jersey, United States (2012)
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)
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
Burry, M.: Scripting Cultures: Architectural Design and Programming. John Wiley & Sons, Inc., Architectural Design Primer (2011)
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
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
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
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
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
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
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
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
Fowler, M.: Refactoring: Improving the Design of Existing Code. Object Technology Series. Addison-Wesley, Boston (1999)
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)
Grus, J.: I don’t like notebooks (2018). https://www.youtube.com/watch?v=7jiPeIFXb6U&ab_channel=O%27Reilly. Accessed 21 Jan 2021
Hensel, M.: Performance-Oriented Architecture: Rethinking Architectural Design and the Built Environment. John Wiley & Sons, Inc., Architectural Design Primer (2013)
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
Jackson, M.A.: Principles of Program Design. Academic Press Inc, USA (1975)
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
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
Knuth, D.E.: Literate programming. Comput. J. 27(2), 97–111 (1984). https://doi.org/10.1093/comjnl/27.2.97
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
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
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
Leitão, A., Lopes, J., Santos, L.: Illustrated programming. In: 34th ACADIA Conference, pp. 291–300. Los Angeles, California, USA (2014)
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
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
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
Nassi, I., Shneiderman, B.: Flowchart techniques for structured programming. SIGPLAN Not. 8(8), 12–26 (1973). https://doi.org/10.1145/953349.953350
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
Observable Inc: Observable: Make sense of the world with data, together (2021). https://observablehq.com. Accessed 21 Jan 2021
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
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
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
van der Plas, F., Bochenski, M.: Pluto.jl (2021). https://github.com/fonsp/Pluto.jl. Accessed 21 Jan 2021
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)
Project Jupyter: Jupyter (2021). https://jupyter.org. Accessed 21 Jan 2021
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
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
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
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)
Scheer, D.R.: The Death of Drawing: Architecture in the Age of Simulation. Taylor & Francis, Milton Park (2014). https://doi.org/10.4324/9781315813950
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
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
Victor, B.: Inventing on principle (2012). https://vimeo.com/38272912. Accessed 21 Jan 2021
Victor, B.: Stop drawing dead fish (2012). https://vimeo.com/64895205. Accessed 21 Jan 2021
Woodbury, R.: Elements of Parametric Design. Routledge, Milton Park (2010)
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
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2022 Springer Nature Singapore Pte Ltd.
About this paper
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)