The provided sources summarize a "Data In Design" course, emphasizing its core objective to teach students how to codify design processes using computational methodologies. The curriculum, structured around 17 sections and over 100 modules, covers topics from basic coding and geometry to advanced concepts like AI, data visualization, and software development for design. Students were guided to apply computational thinking through weekly assignments culminating in a final project, which also served as the primary assessment. The course materials, including lectures, slides, and podcasts, were designed to support continuous learning, with a final review session featuring expert feedback to reinforce student understanding and growth.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
The provided sources offer an overview of computational design software development, emphasizing the integration of data design principles. They explore various development environments and tools, such as Unity for cross-platform deployment and Three.js/Babylon.js for web-based 3D graphics, alongside fundamental concepts like design process pipelining and event handling. The materials also discuss the importance of building personal software libraries and the philosophical underpinnings of a computational designer, stressing continuous learning and meta-cognition to challenge conventional approaches. Ultimately, the content aims to guide students in applying these concepts to develop and distribute meaningful software for their design projects.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
The sources discuss the development of CAD software, emphasizing its role as a "software revolution" that transforms theoretical knowledge into executable and distributable systems for design and research. They highlight the fundamental differences between traditional design iteration and the methodical, step-by-step approach of software development, stressing the importance of structured architecture using concepts like front-end/back-end distinctions and the MVC (Model-View-Controller) design pattern. The lectures also explore object-oriented programming (OOP) for building hierarchical geometric data, the significance of rendering engines and performance optimization (including GPU-based parallel processing), and the crucial role of UI/UX principles in creating effective and user-friendly software. Ultimately, the material frames software development as a process of defining states, relationships, and rules to codify complex design processes, with a concluding motivational message about problem-solving and persistence.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
These sources provide an extensive overview of design visualization, encompassing its broad definition and practical applications in fields like architectural and product design. The lectures and accompanying document emphasize the technical principles behind creating visuals, including rendering processes, camera techniques, lighting, and post-production. Significant attention is given to animation and simulation methods for depicting movement and processes, alongside numerous real-world examples of commercial, artistic, and research-based visualization projects. Ultimately, the materials highlight that effective design visualization goes beyond mere presentation, focusing on conveying meaning and facilitating understanding through various visual strategies and a blend of technical skill and artistic vision.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
This lecture is about digital mapping and GIS for visualization, discussing how these tools are crucial for various design fields like architecture and urban planning. The lecture covers data types like vector and raster data, file formats such as GeoJSON and Shapefiles, and common GIS operations like buffering and dissolving. It emphasizes how mapping helps to uncover insights from data and explores different projection methods and visualization techniques, including animation and interactive maps, using various libraries and tools. The material also provides code examples and resources for practical application of these concepts.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
This lecture consists of excerpts from two video lectures and a related briefing document focusing on the topic of data visualization within a design context. The lectures emphasize that data requires visualization to be understood by humans, serving both for analysis to uncover patterns and for communication to convey insights effectively. They outline a three-stage process: recording, analyzing, and communicating data visually, highlighting the distinct strengths of human visual perception and computer calculation in this process. The materials also discuss principles for creating effective visualizations, including maintaining graphical integrity and considering human cognitive limitations through techniques like chunking and appropriate scaling, while also addressing the potential for bias and the importance of interaction with data in modern visualization.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
These sources, a lecture series and accompanying briefing documents, provide an overview of Dynamics and Agent Systems within the context of Data in Design, building on foundational concepts like geometry and algorithms. They explain how dynamic systems, which account for time-dependent states, and agent systems, which model the behaviors and interactions of individual components within an environment, offer powerful approaches for tackling complex design challenges. Spring models and particle systems are highlighted as core examples of dynamic simulation, while the Flocking/Boids algorithm illustrates collective agent behavior. The lectures strongly emphasize the necessity of Object-Oriented Programming (OOP) for structuring these systems and the importance of hands-on coding for practical understanding, concluding that formulating design problems in a computationally solvable way is key to leveraging these methods for generating emergent and interactive designs.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
These sources, primarily drawn from a lecture on design algorithms and optimization, introduce algorithmic thinking as a method for tackling design challenges. They discuss bottom-up approaches that build from foundational data structures and algorithms, contrasting them with top-down approaches that start with the design problem itself. The lecture explains both deterministic algorithms, which yield consistent results, and stochastic methods, which incorporate randomness, as valuable tools for finding optimal or best solutions. Crucially, the sources emphasize the need for quantifiable metrics and objective functions to evaluate and optimize designs, illustrating these concepts through real-world examples and the notion of the Pareto front, which defines the boundary of optimal design parameters.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
These sources primarily focus on design algorithms and optimization, arguing that these are not merely technical tools but are inherently integrated with the design process itself. They emphasize the importance of computational thinking for designers and suggest that understanding an engineering mindset, particularly in software, is crucial for applying computational methods effectively. The texts provide an overview of foundational algorithm types (like deterministic vs. stochastic and brute force vs. heuristic) and essential data structures (including lists, graphs, and queues), illustrating their relevance through practical design examples. Ultimately, the sources posit that algorithms and optimization are ways for designers to express their intentions and guide their creative endeavors.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
This presentation explores AI-aided design, starting with the fundamental concept of generative models like pix2pix, which learn to create new images based on paired input and output data. It then discusses more complex applications such as creating 3D objects from sketches and generating maps using geographical data. The speaker also introduces Large Language Models (LLMs), explaining their architecture, the evolution from RNNs to Transformers, and the concept of fine-tuning and embedding to customize their behavior and knowledge. The presentation concludes by demonstrating practical uses of LLMs, including local execution of models and exploring various types of machine learning problems such as classification and regression, showcasing how AI models can be applied to different datasets like medical or financial information.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
This presentation examines how machine learning and AI can be applied to design processes, emphasizing the importance of data as a design material. It discusses various data types and how they influence the choice of analytical and generative models. The material explores essential concepts like data preprocessing (scaling, handling missing values, outlier removal), dimensional reduction (PCA, t-SNE), and the crucial role of data splitting (training, validation, testing) to create generic and robust models. Different machine learning problems such as regression, classification, and clustering are illustrated with examples, along with techniques like ensemble modeling and various neural network architectures (dense, convolutional, recurrent).
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
These sources, including a video lecture and a briefing document, focus on the growing importance of AI and data skills for designers. They emphasize the necessity of learning fundamental libraries like NumPy and Pandas for data processing and analysis, likening their importance to design tools like Photoshop or SketchUp for architects. The materials cover key machine learning libraries such as PyTorch and TensorFlow, different types of datasets, and basic machine learning concepts, while encouraging practical learning through provided resources and exercises. Ultimately, the sources advocate for understanding the underlying principles of data science rather than simply following trends.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
These sources introduce artificial intelligence, primarily focusing on machine learning as a method to achieve AI goals, using the relatable analogy of placing points and drawing lines to explain the core idea of pattern finding in data. They emphasize that understanding the problem and the available data types is crucial for choosing appropriate machine learning models, highlighting the necessity of good, clean data and the importance of data preprocessing steps like cleaning noisy data, handling missing values, and scaling features. The texts also touch upon different types of machine learning problems such as regression and classification, discuss concepts like the curse of dimensionality and techniques for dimensionality reduction, and briefly introduce neural networks and the concept of reinforcement learning while stressing the significance of domain knowledge and computational thinking for designers seeking to leverage these technologies. Finally, the need for GPU and parallel computing for efficient training is explained, along with an outline of a typical data-driven design process.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
These lectures discuss artificial intelligence (AI), particularly focusing on the distinctions between analytical AI, which understands and explains data, and generative AI, which creates new content. The speaker raises concerns about the current hype around generative AI, arguing that many users lack a fundamental understanding of machine learning models and data structures. A significant issue highlighted is hallucination in generative models, where they produce incorrect or nonsensical information due to limitations in their training data, prompting a discussion on creativity versus error. The lectures also explore the complexities of applying AI to subjective or biased topics, the debate around general artificial intelligence (AGI) and superintelligence, and the importance of understanding the data and biases that influence AI outputs. Ultimately, the speaker emphasizes the need for critical thinking when engaging with AI and views it as a powerful tool for augmenting existing processes and increasing efficiency.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
These sources feature a lecture on AI for Designers, aiming to clarify common misunderstandings and highlight the importance of technical understanding over mere imagination. The speaker contrasts traditional programming (Software 1.0) with data-driven machine learning (Software 2.0), presenting AI fundamentally as data handling and an "intelligence revolution" driven by speed and accessible knowledge. A core message is that designers must move beyond superficial trends and marketing hype to grasp the underlying principles and challenges, such as bias and the nature of errors, to effectively leverage AI. Ultimately, success with AI relies not on the tools themselves, but on a deep understanding of the problem to be solved.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
These excerpts appear to be from two parts of a workshop or lecture focused on data structures in design, specifically pixels and voxels. The instructor guides participants through Python code examples illustrating how to create and manipulate pixel and voxel grids, including concepts like connectivity, smoothing, and query operations based on location or data values. The material extends to demonstrating these concepts within Grasshopper 3D software, showing how to visualize and interact with the created grids. Additionally, the sources touch upon image processing techniques and their application in design contexts, highlighting concepts such as color blending, filtering, and spatial analysis using elevation or environmental data.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
These video lecture excerpts primarily discuss pixel and voxel data structures within the context of computational design, highlighting their importance in handling spatial information. The lectures explain how 2D images (pixels) and 3D volumes (voxels) can be understood as grids of numerical data, similar in concept to graphs but often better suited for continuous information. The speaker elaborates on how these data types enable image processing techniques, including color manipulation and filtering, and explores the use of color spaces and color computation (blending modes) for visualization and analysis. Finally, the lectures demonstrate the application of these data structures and techniques in various fields, such as geographical information systems, remote sensing, and design simulations, emphasizing their role in abstracting reality and facilitating computational workflows.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
These excerpts showcase workshops focused on graph data structures and analysis within computational design contexts. The content covers foundational programming concepts like classes, nodes, and edges, explaining how to represent graph data, including handling positional information (XYZ) and creating weighted edges. Various graph algorithms, such as Breadth-First Search (BFS), Dijkstra's algorithm, and A search*, are discussed for tasks like finding the shortest path. The sources also demonstrate practical applications, such as cycle detection and topological sorting, and explore the use of external libraries like NetworkX and custom Grasshopper plugins for network analysis and visualization, emphasizing the importance of data cleaning and the strategic use of randomization with seeds.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
These sources introduce graphs as a versatile nonlinear data structure fundamental for representing interconnectedness in various real-world and computational systems. They explain that graphs consist of nodes and edges, both capable of holding properties, and that their topology can be dynamically modified. The lectures and briefing document highlight different graph types, methods for computer representation, and essential graph algorithms like traversal (DFS, BFS), shortest path (Dijkstra, A*), minimum spanning tree, and centrality analysis, emphasizing their importance for abstracting reality and solving complex design problems computationally.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation
These video excerpts discuss fundamental concepts of mesh geometry in computer graphics and architectural design, emphasizing the importance of data structures like vertices and faces to define 3D forms. The speaker illustrates how to programmatically create and manipulate meshes using various software libraries and languages, explaining topics like vertex and face normals, calculating centroids and areas, and applying transformations like offsets and twists. Key data concepts like serialization and different file formats for transferring mesh data are also introduced, alongside broader discussions on developing computational design thinking, creating evaluation metrics for design solutions, and the importance of consistent practice in mastering these skills.
https://namjulee.github.io/njs-lab-public/work?id=2025-introductionToDesignComputation