Computational Foundations of Architectural Design