Python on the Landscape of Programming Tools for Design and Architectural Education Python on the Landscape of Programming Tools for Design and Architectural Education

Currently most professional modeling and computer graphics software packages embed a scripting language. This is an early report on collecting data about software applications and coding tools geared towards the educational environment, preparing a listing for further evaluation and analysis of platforms. An increase in the adoption of Python as the embedded scripting syntax in many established tools can already be recognized, therefore the creation of educational materials on Python for design and architectural education merits further attention. Other insights on the educational potential of the available tools might be gained by advancing the data collection and evaluation work.


Introduction
Nowadays most CAD and 3D modeling software packages used by architects and designers embed a scripting language, and they have also been used as introductory tools to teach coding from early on.Mark Burry in Scripting Cultures: Architectural design and programming (2011), identifies different uses of computer programming, like productivity aids and exploratory code, as well as describes his teaching experience using scripting tools embedded in CAD software: "[...] Once I had a handle on this coding caper, I could see then that I could attempt to transcend whatever limitations software might impose on me as a designer, guiding this electronic instrument with the same authority I applied to my pen and compass.[...] The two problems that had encouraged me to step outside my professional comfort zone of compliant passenger to become front-seat driver were stimulated by a need to rid myself of repetitive work [...].Very quickly, however, I could see that a prime motivation for coding on top of software was to augment my design practice by allowing me to work in ways hitherto impractical, and so scripting became a medium of experimentation ahead of productivity gain.[...] Within a year, scripting had infiltrated my teaching, and in 1993 I instituted an elective course in which the participants had to come up with two pieces of code: a productivity tool (this was to appease my senior CAD teaching colleagues and satisfy the school's curriculum priorities) and a design experimentation script.[...]"(p.29)Burry also compiled a list of programming tools used by several correspondents.It included textual scripting languages, like VBA, and tools with node diagrams, like Generative Components, embedded on mainstream computer graphics applications, like AutoCAD, as well as stand alone development environments, like Processing (Reas & Fry, 2011).
Collecting and organising information about programming languages embedded in applications used by designers and architects, and also coding tools with educational aim, could be useful for teachers who need to choose suitable tools and supporting resources.Others researchers in the field of design and architectural education might engage in further investigations like comparing platforms (Celani & Vaz, 2012) and analyzing trends.
Resilience Design is a contemporary aspect of design that might greatly benefit from model simulations, tackling design complexity and other exploratory strategies that are most effective through engagement in coding by design practitioners.

Methods
The records started to be collected in 2015 and the following selection criteria was adopted:

•
Drawing or 3D modeling software that embeds a scripting language on the user interface or allows automation with a very limited number of steps between programming and code execution.
• Tools aimed at teaching programming in a visual or graphic context.
Software Development Kits (SDKs), usually provided by mainstream computer graphics software houses, mostly offering C or C++ resources, were excluded.These tools are aimed at professional programmers who wish to create plugins, and are not immediately accessible to designers and architects, the main application end users.
The following fields are being recorded:

Results
The preliminary results are presented in Table 1, also available as a CSV table published on GitHub inviting collaboration by means of corrections and additions: <https://github.com/villares/Resources-for-teaching-programming>At the time of this writing 43 tools have been listed, of which 32 at least superficially investigated, of which at least 20% (7 of 32) have substantial educational aims.
A preliminary look at this landscape seems to indicate strong presence of Python as an embedded language or option in programming tools, about 40% (18 of 43 listed, 14 of 32 partially reviewed entries), followed by visual/node based tools (like GC, Dynamo and Grasshopper) about 15% (5 of 32), Lua and BASIC-related (like GLD and VB.NET) about 15% (5 of 32).

Discussion
There seems to be a trend of adoption of Python as an embedded scripting language.Python was added to Rhinoceros, arguably as replacement of RhinoScript, added to Vectorworks replacing VectorScript (a Pascal based language) and similarly Python was added to Maya, 3D Max and Cinema 4D.
On the Free/Libre and Open-Source category, Blender and FreeCAD have strong Python integration from the start.Rosetta, a CAD controlling extension used within DrRacket IDE, can now be accessed via Processing or Python as well (Caetano & Leitão, 2016;Ramos & Lleitão, 2014).Recently the Processing Foundation incorporated the Processing Python Mode as an official project (Parrish, 2016).
It can be noted that the Python programming language has grown in use at introductory courses in Computer Science and Engineering (Guo, 2014) and many other educational environments.According to Tollervey (2015), Python popularity in education might be explained from its origins on ABC, designed for teaching and aimed at nonprofessional programmers as well as on the open-source and extensible platform ecosystem "capable of simply and effectively addressing many different types of computational problems".This leads to the preliminary conclusion that documenting Python use, and related software tools, as well as the creation of educational materials on Python for design and architectural education merit further work.It could be investigated, as further research, if knowledge of Python can be usefully transferred by students between platforms and tools.
Other insights on the evolution of the available scripting tools might be expected to follow from the accumulation of detailed data, it is mostly the intention of this work to provide a useful database for other researchers and specially teachers willing to explore further those tools.

Table 1 :
Data collected up to May 2017 (part 1 of 2)

Table 1 :
Data collected up to May 2017 (part 2 of 2)