Designing for Humans, Enabled by Computation

Foundations of Human-Centered Design

Definition and Core Principles

Human-centered design represents a philosophy and set of practices rooted in the belief that solutions should be designed with a deep understanding of the people they serve. This approach emphasizes empathy and the real-world context in which people interact with products, systems, or services. HCD moves beyond mere functionality, prioritizing the experiences and needs of users. It is a creative approach to problem-solving that starts with people and ends with innovative solutions tailored to meet their needs. It’s a process that focuses on understanding users’ experiences, motivations, and challenges. HCD isn’t just about creating aesthetically pleasing products or efficient systems; it’s about ensuring these solutions are intuitive, accessible, and enjoyable for those who use them. It’s a paradigm shift from technology-centric to people-centric design[1][2].

Below are some of the core principles that are associated with HCD:

  • Empathy: At the heart of HCD is empathy, the ability to understand and share the feelings of others. It involves immersing oneself in users’ environments and experiences to gain a deep, personal understanding of their needs and pain points.
  • Inclusiveness: HCD aims to design solutions that are accessible and beneficial to as many people as possible. Ensuring this inclusiveness requires consideration of diverse user groups, especially those often marginalized or overlooked in the design process.
  • Usability: Solutions must be intuitive and easy to use. HCD prioritizes clear, straightforward interfaces and interactions that users can navigate without confusion or frustration.
  • Iterative Process: HCD is characterized by an iterative process that involves prototyping, testing, and refining solutions based on continuous user feedback. This cycle ensures that the final product truly aligns with user needs.
  • Participatory Design: This principle involves including users in the design process. Through workshops, user interviews, and testing sessions, designers collaborate directly with those who will use the solution, harnessing their insights and ideas.
  • Transparent Design: HCD calls for transparency in design decisions. It requires explaining why certain choices are made and how they benefit users, fostering trust and a sense of ownership among the user base.
  • Holistic Perspective: HCD takes a comprehensive view of the user experience, considering the product or system itself and the broader context in which it is used. This context includes environmental, social, and emotional factors that influence interaction.

By adhering to these core principles, HCD ensures that solutions are not only functional and efficient but also resonate deeply with the users they are intended to serve. This human-first approach leads to technically sound, meaningful, and impactful innovations in people’s lives.

Key Methodologies

In HCD, understanding the user is paramount.

various user research methods offer a different lens through which to view the user’s world. These methods provide valuable insights into the users’ needs, behaviors, and experiences, guiding the design process to ensure it truly resonates with the intended audience. Let’s explore some key user research methods used in HCD[3]:

  • Interviews: One-on-one interviews are a crucial tool in HCD. They involve directly speaking with users to understand their needs, preferences, and experiences. This qualitative method allows for in-depth insights into the users’ thoughts and feelings, often uncovering needs that users might not be aware of.
  • Observation: Observation involves watching users interact with a product or service in their natural environment. This method helps designers understand the context in which a product is used and observe behaviors and challenges that users may need to articulate in interviews or surveys.
  • Surveys: Surveys are a quantitative tool for gathering user data. They help identify broader trends and patterns in user preferences and behaviors. Surveys can be distributed digitally or in person and typically include a mix of multiple-choice and open-ended questions.
  • Analytics: Digital analytics tools can track how users interact with a product or service, particularly in digital interfaces like websites and apps. Metrics such as page views, click-through rates, and time spent on a page can provide valuable insights into user behavior and preferences[4].

While user research methods focus on gathering insights about the users, the design process involves applying these insights to create solutions tailored to meet user needs. The design process is shaped by a deep understanding of the users’ needs and experiences. This approach employs several key processes ensuring the final product is functional, efficient, and resonates deeply with its intended users. Each step in the design process is crucial for gaining insights and refining the product to better align with user expectations. Here are some of the core design processes utilized in HCD:

  • Empathy Mapping: This process involves creating a visual representation of the user’s attitudes and behaviors. Empathy maps help designers step into users’ shoes, fostering a deeper understanding of their emotional and practical needs.
  • Personas: Personas are fictional characters created based on user research to represent different user types. They help designers visualize and understand their target audience, making it easier to tailor design solutions to meet specific user needs.
  • Prototyping: Prototyping involves creating a preliminary version of a product or service for initial testing and feedback. It’s a low-cost, low-risk way to explore design ideas and rapidly iterate based on user feedback.
  • Testing: User testing is critical in HCD. It involves real users interacting with prototypes or final products to identify issues and gather feedback. This process is iterative, with insights from testing feeding back into further design improvements.

After the initial stages of user research and the iterative design processes, the focus shifts to refining the User Experience (UX). This stage is where the insights gathered from user research and the prototypes developed during the design process are synthesized to enhance how the user interacts with the final product. The UX phase includes critical elements like the Interaction Paradigm and Information Architecture, which are essential in ensuring the product is functional but also intuitive and user-friendly. The Interaction Paradigm focuses on the nature of the user’s engagement with the product or service. It’s about ensuring that the way users interact with the product is as intuitive and natural as possible, enhancing the overall ease and pleasure of the experience. Information Architecture involves organizing and structuring information within the product in an easily navigable and understandable way for the user. This step is crucial in making the product usable, straightforward, and efficient, preventing user frustration and confusion. These UX-focused elements are the culmination of the HCD process, representing the final layer of design that directly impacts user satisfaction and effectiveness in using the product. They turn a well-researched and well-designed product into one that truly resonates with its users.

Empathy-Driven Processes

Empathy goes beyond mere observation and data collection. It involves a deeper understanding of the users’ feelings, thoughts, and experiences, allowing designers to create solutions that genuinely address users’ needs and pain points. By empathizing with users, designers can create products that meet functional needs and connect with users emotionally, fostering a sense of belonging and loyalty towards the product or service. Empathy helps designers consider diverse user groups, including those with different abilities, backgrounds, and cultures, leading to more inclusive and accessible designs.

Empathy helps designers understand the context in which a product will be used, including the physical, cultural, and social environment. This understanding is crucial for creating practical and relevant designs in the users’ daily lives. Empathetic design considers the varying capabilities of users, such as different levels of technological proficiency or physical abilities, ensuring that the product is accessible and easy to use for a wide range of users. Through empathy, designers can uncover the underlying needs of users, which might not be immediately apparent. This leads to solutions that address real problems rather than just superficial symptoms[5].

Empathy in design is not just a methodology; it’s a mindset that allows designers to create genuinely user-centric products. It requires a deep and holistic understanding of users’ lives, encompassing their immediate needs, emotional experiences, cultural backgrounds, and everyday environments. This empathetic approach is a cornerstone in Human-Centered Design, ensuring that solutions are effective and resonate with users on a personal level. It paves the way for employing specific empathy-building techniques, such as:

  • User Interviews and Storytelling: Conducting interviews where users share their stories and experiences is a powerful way to build empathy. Hearing firsthand about users’ challenges and aspirations allows designers to develop a deeper connection and understanding.
  • User Diaries and Experience Mapping: Asking users to keep diaries or logs of their interactions with current systems or products can provide insights into their daily routines and struggles. Experience mapping, where users’ journeys are visually mapped out, helps understand their interactions’ emotional highs and lows.
  • Immersion and Role-playing: Designers can immerse themselves in the users’ environment or role-play as users to experience firsthand the challenges and limitations they face. This direct experience is invaluable in building genuine empathy.
  • Empathy Workshops: Workshops that involve activities designed to put participants in the shoes of various user groups can effectively foster empathy among design teams. These workshops encourage designers to think from different perspectives and challenge their assumptions[6].

Role of User Experience

User Experience is a discipline within human-centered design that focuses on optimizing the interaction between users and products or services. UX design is about understanding the user’s needs, wants, and limitations. It involves considering how users interact with products and what emotions and attitudes are evoked. While often associated with digital products, UX design applies to any product or service. It encompasses everything from the physical design of a product to the emotional responses it elicits.

UX design goes beyond just making products functional; it’s about creating enjoyable and seamless experiences. This type of design involves understanding the user’s journey from start to finish and optimizing every touchpoint. UX design heavily influences how users perceive a product. Good UX can elevate a product’s perceived value, making it more appealing and user-friendly. Below are some key principles of UX design[7]:

  • Simplicity and Clarity: The design should be straightforward, avoiding unnecessary complexity. Users should find it easy to navigate and understand the product.
  • Consistency: Consistency in design elements like color schemes, fonts, and layouts makes for a more coherent and intuitive user experience.
  • Feedback and Response Time: Users should receive immediate and clear feedback on their actions. A responsive design makes users feel more in control of the experience.
  • Accessibility: The design should be accessible to all users, including those with disabilities. Accessibility includes considerations for screen readers, color blindness, and other assistive technologies.
  • Emotional Connection: The creator of the design should strive to create a design that resonates emotionally with users. Esthetics, storytelling, and personalization can achieve this[8].

Basics of Computational Thinking

Introduction

Computational thinking (CT) has become prominent over the past decade, marking a significant shift in how we approach problem-solving across various fields. Initially associated with computer programming and system design, computational thinking has expanded its influence into diverse areas such as education, healthcare, business, and the arts. This expansion highlights its versatility and adaptability in solving complex, multidisciplinary problems. The principles of CT, such as algorithmic thinking and pattern recognition, are now applied in various contexts, from analyzing social science data to optimizing logistics in supply chain management. In a world where digital technology is part of every aspect of life, understanding and leveraging computational methods has become more critical. CT provides a framework for making sense of vast amounts of data and for developing innovative solutions to contemporary challenges[9].

Principles

Computational thinking is a fundamental skill for everyone, not just for computer scientists. It represents a way of solving problems, designing systems, and understanding human behavior by utilizing concepts fundamental to computer science. This approach involves problem-solving skills and techniques derived from how computer scientists work but applicable across various disciplines and everyday situations. Below are the key principles of computational thinking:

  • Decomposition: Decomposition in computational thinking involves breaking down complex data sets, tasks, or problems into smaller, more manageable pieces. This process simplifies understanding and addressing each component individually, making a formidable problem appear less daunting. For instance, an extensive application is decomposed into modules or functions in software development, each addressing a specific aspect of the overall functionality.
  • Pattern Recognition: Pattern recognition is about observing patterns, trends, and associations within data or processes. It’s a way to identify commonalities that can lead to general solutions or predictions. Pattern recognition is used in data analysis to spot trends that inform business strategies or scientific hypotheses. For instance, recognizing buying patterns in customer data can help retailers optimize their inventory and marketing strategies.
  • Abstraction: Abstraction involves filtering out the unnecessary details and focusing on the main ideas or concepts central to understanding and solving a problem. This step is crucial in managing complexity and focusing on what’s important. In programming, abstraction might involve using a function to encapsulate complex code so the programmer can use it without worrying about its internal details.
  • Algorithms: In computational thinking, an algorithm is a step-by-step procedure for solving a problem or transforming data. Algorithms are the set of rules or instructions that define how a task is performed. They are essential in computer science for tasks like sorting data, searching for items in a database, or even for more complex operations like machine learning and artificial intelligence.
  • Automation: Automation involves implementing algorithmic solutions computationally, often using programming. It’s about leveraging computers to perform tasks automatically and efficiently. Automation in computational thinking can range from simple scripts that automate repetitive tasks to complex systems like autonomous vehicles or intelligent agents that can make decisions and act upon them[10][11].

Best Practices for Implementation

Implementing the principles of computational thinking (CT) effectively in various real-world scenarios requires a set of best practices. These practices enable individuals and organizations to operationalize the CT framework, ensuring its application is systematic, efficient, and impactful. Here are some critical strategies for putting CT principles into action:

  • Systematic Decomposition in Problem-Solving: Encourage structured breakdown of complex problems into smaller, more manageable parts. This decomposition
  • makes the problem-solving process more manageable and more approachable. Using tools like flowcharts or diagrams can help to visualize the different components of a problem. Collectively,these practices help in keeping track of the problem-solving process and identifying interdependencies.
  • Identifying and Leveraging Patterns: Promote the habit of looking for patterns within a single domain and across different fields. Pattern identification broadens the scope of finding innovative solutions. Patterns can evolve; hence, regularly review and update the understanding of these patterns to ensure that solutions remain relevant and effective.
  • Effective Abstraction for Clarity: Train to identify and focus on the core elements of a problem or a system, filtering out non-essential details that can distract from the primary goal. Develop and use abstract models to represent complex systems or problems. These models simplify understanding and communication among team members.
  • Algorithmic Thinking in Everyday Processes: Cultivate the habit of thinking through step-by-step processes to achieve goals or solve problems, akin to developing an algorithm. Promote an understanding of basic algorithmic concepts across all team members, not just those in technical roles.
  • Integrating Automation Thoughtfully: Regularly assess processes and tasks to identify opportunities where automation can improve efficiency and accuracy. Ensure that while automating processes, there is a balance with human oversight to maintain quality and handle exceptions.
  • Collaborative Problem-Solving: Encourage team members to approach problem-solving by collaboratively leveraging diverse perspectives and skills. Create platforms for sharing successful applications of CT principles across different projects and domains within the organization.
  • Continuous Learning and Adaptation: Encourage continuous learning to stay abreast of new developments in computational thinking and related technologies. Adopt an iterative approach to problem-solving, constantly refining solutions based on feedback and new insights.
  • Contextual Application of CT Principles: Recognize that the application of CT principles might differ based on the specific context or domain. Adapt the principles accordingly. Ensure that solutions derived from CT principles are customized to meet the unique needs and challenges of the specific problem or domain[12][13].

Integrating HCD and CT in Practice

Integration for Research

Integrating Human-Centered Design and Computational Thinking in research is a nuanced process that marries empathy with analytical rigor. It begins with a deep understanding of the users’ environments and experiences, leveraging HCD’s emphasis on empathy. Researchers use in-depth interviews and ethnographic studies to gather data and build a comprehensive, empathetic understanding of user contexts. This understanding is then visualized through empathy mapping, ensuring the research is rooted in genuine user needs and experiences.

Simultaneously, CT principles come into play, particularly in handling and analyzing the data gathered. Pattern recognition, an essential CT technique, allows researchers to spot trends and correlations in user data, which might be subtle or complex. Decomposition helps break down extensive, unwieldy data sets into more manageable components, simplifying analysis and interpretation. This balance between qualitative insights from HCD and quantitative analysis from CT provides a comprehensive view of the research problem. CT’s influence extends to the tools used in user research. Data analytics software for survey analysis or social media analytics tools for gathering user feedback becomes vital in extracting meaningful patterns and insights. Researchers might also create computational models or simulations based on user data to predict behaviors or preferences, adding a predictive dimension to the research[14].

Formulating research questions also reflects a dual lens. Questions are framed to understand user needs and explore how computational methods can help address these needs. This approach ensures that the research is both user-centric and data-driven. The research process benefits significantly from an iterative feedback loop where insights from HCD inform computational analysis and vice versa. This computational analysis ensures continual research focus refinement, integrating user-centric and data-driven perspectives. Cross-disciplinary collaboration is crucial in this process. Regular interactions between team members specialized in HCD and those skilled in CT foster a shared understanding and an integrated research approach.

Importantly, this integration process necessitates a consideration for ethical data handling. Researchers must ensure their data collection and analysis practices adhere to privacy regulations and respect user consent. This ethical mindfulness ensures that the research is insightful and responsible[15].

Integration for Ideation

In ideation sessions where HCD and CT intersect, the focus is on generating ideas that address real user needs while being technologically feasible and forward-thinking. HCD’s empathetic insights into user experiences provide a solid foundation for ideation. These insights ensure that brainstormed ideas are technologically sophisticated and resonate with users personally and practically. Participants in these sessions use empathy maps and user personas developed during the research phase to keep the user at the forefront of their creative thinking.

Conversely, CT injects a structured approach to ideation—computational methods like algorithmic thinking and pattern recognition aid in systematically organizing and evaluating ideas. For instance, ideas can be grouped and analyzed based on identified user patterns, ensuring that the solutions cater to prevalent user needs or preferences. Algorithmic thinking also supports the development of step-by-step strategies to implement these ideas, making them more tangible and actionable. Additionally, the integration of CT in ideation encourages thinking about scalability and efficiency from the outset. Ideas are not only evaluated on their immediate impact but also on their potential to be developed and scaled using computational methods. This foresight ensures that the ideas have long-term viability and adaptability[16].

Diverse brainstorming techniques are employed in these sessions, combining creative, unstructured methods with more systematic approaches. Mind mapping or SCAMPER (Substitute, Combine, Adapt, Modify, Put to another use, Eliminate, Reverse) encourages divergent thinking. In contrast, computational models or decision matrices might bring a structured analysis to the brainstorming outcomes. One of the critical aspects of integrating HCD and CT in ideation is the willingness to iterate. Ideas are continuously refined, with feedback loops allowing for the incorporation of both user feedback and new data analyses. This iterative approach ensures the ideas evolve and improve, aligning closely with user needs and technological possibilities[17].

Integration for Prototyping

During prototyping, HCD principles guide the development of prototypes that are deeply aligned with user experiences. Prototypes become tools for visualizing and testing design ideas, crafted to engage users and reflect their interactions realistically. Whether these are simple physical models or more sophisticated digital simulations, the emphasis is on understanding how the end product will function in the user’s world. The goal is to create something tangible that brings the ideation phase’s abstract concepts into the real world, focusing on user engagement and experience.

CT complements this by offering a structured approach to developing and testing these prototypes. Computational methods assist in breaking down complex functionality into manageable components, which can be individually prototyped and tested. This decomposition allows for a more focused and efficient exploration of different aspects of the solution. Additionally, pattern recognition and algorithmic thinking inherent in CT aid in identifying and applying efficient strategies for prototype development, ensuring that each iteration is optimized for performance and user experience.

In this integrated approach, prototyping is more than just building a model; it’s about creating a dialogue between the design and the user. Prototyping becomes an investigative tool, where each iteration is a question asked to the user, and their interactions provide the answers. Computational methods analyze these interactions, turning qualitative feedback into quantifiable data. This data is instrumental in refining the prototype, ensuring it is technically sound and responsive to user needs. Unlike traditional prototyping, which may often involve a few iterations before finalization, this approach emphasizes a more dynamic, ongoing creation and revision process. The prototype is not a final product but a constant evolutionary hypothesis shaped by continuous user feedback and computational analysis. It’s an explorative journey where each iteration brings new insights and opportunities for improvement[18][19].

Integration for Testing & Iteration

During the testing, HCD principles guide evaluating how well the solution meets user requirements and expectations. This involves gathering user feedback through usability testing, interviews, and surveys. The goal is to understand the user experience in-depth: Can users navigate the solution easily? Does it solve their problem effectively? Are there any pain points or areas of confusion? This user-centric approach ensures that feedback is collected not just on functionality but also on the emotional and experiential aspects of the solution.

On the other hand, CT brings a structured approach to processing and analyzing the feedback collected. Applying algorithmic thinking transforms the feedback from qualitative insights into actionable data. Patterns in the data are identified, helping to pinpoint common issues or areas for improvement. For example, if multiple users struggle with a particular feature, CT can help to analyze the underlying causes and propose algorithmic solutions for refinement.

These insights are put into action during the iterative refinement stage. HCD ensures that user feedback is at the forefront of each iteration, guiding the modifications and enhancements made to the solution. The design team works closely with users, involving them in the refinement process to ensure the solution evolves in a direction that meets their needs. The iterative refinement stage is where these insights are put into action. HCD ensures that user feedback is at the forefront of each iteration, guiding the modifications and enhancements made to the solution. The design team works closely with users, involving them in the refinement process to ensure the solution evolves in a direction that meets their needs[20].

Potential Challenges

Balancing User Needs and Technical Feasibility

Human-centered design rightfully prioritizes understanding users’ wants, capabilities, and contexts to create solutions tailored to their needs and desired experiences. Researchers immerse themselves in learning every detail of the target users’ mental models, physical environments, cultural nuances, and emotional landscapes. However, the resulting findings and insights from ethnographic observations, interviews, and empathy mapping can sometimes articulate extremely specific user requirements and system feature requests without consideration for practical constraints.

By contrast, computational thinking operates with an innate understanding of the capacities and limitations of existing computer systems, algorithms, analytics techniques, and interfaces. Solution mapping stems from this embedded recognition of what can accurately be tracked in data, computed efficiently, coded securely, and represented understandably.

Thus, a disconnect emerges between what users ask for and what technology can currently deliver. The risk is either severely disappointing end users by failing to meet their expectations or overpromising capabilities that teams need to actualize, leading to budget/timeline overruns technologically. The integration sweet spot involves moderate flexibility in scope on both ends – prioritizing critical user needs rather than every desired nice-to-have paired with selecting technically achievable features over barely possible ones. Prototyping serves as the bridge spanning user reactions and system behaviors to find the right product-market fit[21].

Overcoming Cognitive Biases

All people carry implicit biases and ingrained assumptions that unconsciously influence their judgment and decision-making. Students entering from design-focused disciplines may gravitate towards subjective interpretations and solutions catered through their lens without examining exclusion risks. Those from technical backgrounds, in contrast, rely heavily on perceived objective data patterns that can perpetuate historical disadvantages baked into the numbers. This presents challenges in evaluative criteria around proposed solutions to problems. Personal experiences impact student teams’ assessment of usefulness, usability, and desirability when reviewing prototypes. Data-driven mindsets provide false senses of absolute statistical validity without acknowledging limitations in collection diversity. Additionally, confirmation bias causes quick convergence around familiar concepts that fit prevailing mental models rather than spurring divergence to uncover inventive alternatives. Groupthink tendencies further compound this by silencing minority objections when consensus seems formed around a favorable path.

Mitigating these requires proactive bias/privilege checking practices at individual and collective levels, improved emotional intelligence, and multicultural awareness in analysis. Seeking contrary evidence, exploring multiple problem perspectives, intentionally arguing alternative positions, establishing inclusive decision protocols, and requiring constructive criticism all help expand consideration sets. Integrating human-centered design and computational thinking should produce deeply empathetic and broadly generalizable solutions – stemming from the humans served through thoughtful, ethical computation. Countering cognitive pitfalls with wisdom and diligence helps reach that goal[22].

Overcoming Cultural Biases

Diverse, multicultural perspectives are essential when applying human-centered design and computational thinking to solve various community problems. However, teams often need cultural representation and awareness, leading to biased assumptions in defining issues and crafting solutions. Students may interact predominantly with subsets of user groups that align with their backgrounds during requirements gathering. Consequently, personas and prototypes encode cultural preferences familiar to the designers rather than account for differences across target audiences. Additionally, algorithmic training data imbalances carry forward historical discrimination patterns unless diversity is proactively introduced. Even testing criteria around performance metrics contain skewed priorities that disadvantage certain cultural norms.

Countering cultural biases begins with promoting participation and visibility of underrepresented voices throughout the product development lifecycle – from problem framing to solution acceptance. Conducting multilingual user research, tailoring engagement tactics to cultural styles, ensuring stakeholder input channels, and intentionally diversifying data samples prove vital. Understanding intersectional cultural perspectives prevents narrow assumptions and expands solution creativity. Diverse leadership further enriches analysis. Introspective questioning around inclusion, generalized users, appropriate defaults, value judgments, and talent acquisition directs progress. Building equity into design and computation requires acknowledging cultural biases and structuring processes to overcome limited worldviews. The technologies serving society should account for all of society[23].

Ethical Considerations

Beyond biases, applying technology solutions to human needs and social problems contains innate ethical dimensions of contemplated means and ends. With extensive user data reliance on HCD and CT methods, upholding rigorous privacy and security protections proves crucial. Students must learn and apply best practices around access controls, decentralized storage, differential privacy, consent flows, and encryption to prevent exposure, leaks, or misuse. All solutions should minimize collected data and anonymize datasets where feasible to limit potential breaches.

Solutions must accommodate users across backgrounds, abilities, and environments for ethical and legal compliance. Incorporating inclusive design principles considering diverse needs and contexts allows avoiding exclusion and required retrofitting. Building accessibility testing with users having different physical/cognitive capabilities into development flows consistently surfaces overlooked interaction barriers for rectification.

The maxim of “first, do no harm” obligates mitigating physical, psychological, or social harm, both acute and longitudinal. Apps touching mental health require meticulous features, tone, and content sequencing vetting to prevent detrimental effects. Algorithmic systems with significant life impacts undergo scrutiny to model and rule out damage scenarios through trials. Humans affected by technologies should sufficiently understand fundamental mechanisms, development processes, and potential failure modes. Explainability methods demystify opaque AI through interactive visualizations and local approximations. Accountability via audit logging, oversight boards, and remediation policies bolsters trust[24][25].


  1. Norman, D. (2013). The design of everyday things: Revised and expanded edition. Basic Books.
  2. IDEO. (2015). The field guide to human-centered design. IDEO.org.
  3. Giacomin, J. (2014). What is human centred design? The Design Journal, 17(4), 606-623. https://doi.org/10.2752/175630614X14056185480186
  4. Hanington, B., & Martin, B. (2012). Universal methods of design: 100 ways to research complex problems, develop innovative ideas, and design effective solutions. Rockport Publishers.
  5. Kouprie, M., & Visser, F. S. (2009). A framework for empathy in design: Stepping into and out of the user's life. Journal of Engineering Design, 20(5), 437-448. https://doi.org/10.1080/09544820902875033
  6. Mattelmäki, T., Vaajakallio, K., & Koskinen, I. (2014). What happened to empathic design? Design Issues, 30(1), 67-77. https://doi.org/10.1162/DESI_a_00249
  7. Hassenzahl, M., & Tractinsky, N. (2006). User experience - a research agenda. Behaviour & Information Technology, 25(2), 91-97. https://doi.org/10.1080/01449290500330331
  8. Norman, D., & Nielsen, J. (2014). The definition of user experience (UX). Nielsen Norman Group. https://www.nngroup.com/articles/definition-user-experience/
  9. Grover, S., & Pea, R. (2013). Computational thinking in K–12: A review of the state of the field. Educational Researcher, 42(1), 38-43. https://doi.org/10.3102/0013189X12463051
  10. Wing, J. M. (2006). Computational thinking. Communications of the ACM, 49(3), 33-35. https://doi.org/10.1145/1118178.1118215
  11. Barr, V., & Stephenson, C. (2011). Bringing computational thinking to K-12: What is involved and what is the role of the computer science education community? ACM Inroads, 2(1), 48-54. https://doi.org/10.1145/1929887.1929905
  12. Denning, P. J. (2017). Remaining trouble spots with computational thinking. Communications of the ACM, 60(6), 33-39. https://doi.org/10.1145/2998438
  13. Weintrop, D., Beheshti, E., Horn, M., Orton, K., Jona, K., Trouille, L., & Wilensky, U. (2016). Defining computational thinking for mathematics and science classrooms. Journal of Science Education and Technology, 25(1), 127-147. https://doi.org/10.1007/s10956-015-9581-5
  14. Dym, C. L., Agogino, A. M., Eris, O., Frey, D. D., & Leifer, L. J. (2005). Engineering design thinking, teaching, and learning. Journal of Engineering Education, 94(1), 103-120.
  15. Williams, A., & Alsop, S. (2020). Design and computational thinking: A dual process. Proceedings of the Institution of Mechanical Engineers, Part E: Journal of Process Mechanical Engineering, 234(1), 113-122.
  16. Razzouk, R., & Shute, V. (2012). What is design thinking and why is it important? Review of Educational Research, 82(3), 330-348. https://doi.org/10.3102/0034654312457429
  17. Dorst, K. (2011). The core of 'design thinking' and its application. Design Studies, 32(6), 521-532. https://doi.org/10.1016/j.destud.2011.07.006
  18. Houde, S., & Hill, C. (1997). What do prototypes prototype? In M. Helander, T. Landauer, & P. Prabhu (Eds.), Handbook of human-computer interaction (pp. 367-381). Elsevier.
  19. Lim, Y.-K., Stolterman, E., & Tenenberg, J. (2008). The anatomy of prototypes: Prototypes as filters, prototypes as manifestations of design ideas. ACM Transactions on Computer-Human Interaction, 15(2), 1-27. https://doi.org/10.1145/1375761.1375762
  20. Dumas, J. S., & Redish, J. (1999). A practical guide to usability testing. Intellect Books.
  21. Dumas, J. S., & Redish, J. (1999). A practical guide to usability testing. Intellect Books.
  22. Shneiderman, B. (2020). Human-centered artificial intelligence: Reliable, safe & trustworthy. International Journal of Human–Computer Interaction, 36(6), 495-504. https://doi.org/10.1080/10447318.2020.1741118
  23. Clemmensen, T., Hertzum, M., Hornbæk, K., Shi, Q., & Yammiyavar, P. (2009). Cultural cognition in usability evaluation. Interacting with Computers, 21(3), 212-220. https://doi.org/10.1016/j.intcom.2009.05.003
  24. Friedman, B., & Hendry, D. G. (2019). Value sensitive design: Shaping technology with moral imagination. MIT Press.
  25. Herschel, R., & Miori, V. M. (2017). Ethics & big data. Technology in Society, 49, 31-36. https://doi.org/10.1016/j.techsoc.2017.03.003