Master the essential principles and patterns that form the foundation of modern software development. This comprehensive course guides you through the evolution of software design, from understanding the Software Engineering Body of Knowledge to implementing advanced architectural styles. You'll explore object-oriented design principles, refactoring techniques, and design patterns across disciplines, while learning to differentiate between high-level architectural design and low-level detailed design. Through practical examples and real-world applications, you'll gain expertise in aspect-oriented and service-oriented architectures, event-driven systems, and MVC patterns. By examining the historical progression of programming languages and development environments, you'll understand how to build systems ranging from simple to complex. This course equips you with the critical thinking skills to select appropriate architectural styles, apply design principles systematically, and create maintainable, scalable software solutions that meet evolving business requirements and technical challenges.

Software Design Principles

Recommended experience
Recommended experience
Intermediate level
Basic programming knowledge, one language (OOP preferred), SDLC, data structures, algorithms, and coding skills
Recommended experience
Recommended experience
Intermediate level
Basic programming knowledge, one language (OOP preferred), SDLC, data structures, algorithms, and coding skills
What you'll learn
Apply layered, distributed, interactive, and adaptable styles to build scalable solutions.
Use abstraction, inheritance, polymorphism, and proven design patterns for flexible, reusable code.
Apply aspect-oriented, service-oriented, event-driven, and MVC architectures for modern applications.
Distinguish high-level vs. detailed design, applying refactoring for maintainability and quality.
Skills you'll gain
Details to know

Add to your LinkedIn profile
November 2025
See how employees at top companies are mastering in-demand skills

There are 10 modules in this course
Software Engineering Body of Knowledge has steadily and rapidly evolved over the past decades. With software being a crucial part of nearly everything that one encounters on a day-to-day basis, it is imperative that the details of the importance and the process of design be understood. In this module, a systemic exploration of the key knowledge area of Software Design is presented with a view to understand the state of the art. As the state of the art is explored, a historical view with perspective is reviewed with some of popular examples and well-known cases.
What's included
16 videos15 readings5 assignments
16 videos• Total 118 minutes
- Meet Your Instructor - Prof. Ramprasad Joshi• 1 minute
- Meet Your Instructor - Prof. Prashant Joshi• 2 minutes
- Software Design Principles: Course Introductory Video• 3 minutes
- Software Development – Art & Science• 10 minutes
- Software Development - Requirements• 9 minutes
- Software Development - Design• 8 minutes
- Software Development - Construction• 8 minutes
- Software Development - Testing• 9 minutes
- Software Development - Maintenance• 8 minutes
- Software Development - An Application-Oriented View• 12 minutes
- Foundations of Computing• 9 minutes
- Foundations of Mathematics - 1• 8 minutes
- Foundations of Mathematics - 2• 8 minutes
- Foundations of Engineering• 10 minutes
- Orange - A Data Mining Tool• 5 minutes
- Software In the World of IOT• 6 minutes
15 readings• Total 170 minutes
- Course Overview• 10 minutes
- Course Structure & Critical Information• 10 minutes
- Recommended Readings: Software Development – Art & Science• 10 minutes
- Recommended Reading: Software Development - Requirements• 10 minutes
- Recommended Reading: Software Development - Design• 10 minutes
- Recommended Reading: Software Development - Construction• 10 minutes
- Recommended Reading: Software Development - Testing• 10 minutes
- Recommended Reading: Software Development - Maintenance• 10 minutes
- Recommended Reading: Software Development- An Application-Oriented View• 10 minutes
- Recommended Reading: Foundations of Computing• 10 minutes
- Essential Reading: Foundations of Mathematics - 1• 10 minutes
- Recommended Reading: Foundations of Mathematics - 2• 10 minutes
- Recommended Reading: Foundations of Engineering• 10 minutes
- Recommended Reading: Orange - A Data Mining Tool• 10 minutes
- Recommended Reading: Software In the World of IOT• 30 minutes
5 assignments• Total 111 minutes
- Test Yourself: Software Design• 30 minutes
- Practice Quiz: Software Landscape – As it Stands Today• 18 minutes
- Practice Quiz: Software and Computation: Preliminaries• 18 minutes
- Practice Quiz: Software in Variety of Application Areas• 15 minutes
- Let's Practice: Software Design• 30 minutes
In the realm of software development, a complete understanding of the Software Development Lifecycle (SDLC) is foundational. This involves navigating through key phases such as planning, design, implementation, testing, deployment, and maintenance. An integral aspect of this understanding lies in differentiating between high-level and low-level design. The former provides a conceptual blueprint, defining the overall structure, while the latter delves into specifics, guiding the actual implementation. These design levels play a pivotal role in contributing to the efficiency of each SDLC phase, with high-level design setting the foundation and low-level design adding intricate details. Moreover, the application of design principles is crucial for a smooth transition between these phases, ensuring consistency, scalability, and maintainability throughout the software development journey.
What's included
11 videos11 readings6 assignments
11 videos• Total 80 minutes
- A Lifecycle View of Software (Part 1)• 7 minutes
- A Lifecycle View of Software (Part 2)• 7 minutes
- SDLC-SPLC of a Contacts App• 6 minutes
- Software Development – Need for Phases• 5 minutes
- Life Cycle of Software• 7 minutes
- Phases and Life Cycle• 7 minutes
- Elements of Software Design • 9 minutes
- Levels of Software Design – Need and Focus• 8 minutes
- It’s All About Software Design Principles• 7 minutes
- IOT Use Case - Remote Monitoring of Data Center• 11 minutes
- Orange - A Data Mining Tool• 8 minutes
11 readings• Total 110 minutes
- Recommended Reading: A Lifecycle View of Software (Part 1)• 10 minutes
- Recommended Reading: A Lifecycle View of Software (Part 2)• 10 minutes
- Recommended Reading: SDLC-SPLC of a Contacts App• 10 minutes
- Recommended Reading: Software Development – Need for Phases• 10 minutes
- Recommended Reading: Life Cycle of Software• 10 minutes
- Recommended Reading: Phases and Life Cycle• 10 minutes
- Recommended Reading: Elements of Software Design• 10 minutes
- Recommended Reading: Levels of Software Design – Need and Focus• 10 minutes
- Recommended Reading: It’s All About Software Design Principles• 10 minutes
- Recommended Reading: IOT Use Case - Remote Monitoring of Data Center• 10 minutes
- Recommended Reading: Orange - A Data Mining Tool• 10 minutes
6 assignments• Total 132 minutes
- Test Yourself: Software Development Lifecycle and Design Roles• 30 minutes
- Practice Quiz: Software Lifecycles• 18 minutes
- Practice Quiz: Software Lifecycles & Phases• 18 minutes
- Practice Quiz: Elements & Levels of Software Design• 18 minutes
- Practice Quiz: Learn with Examples• 18 minutes
- Let's Practice: Software Development Lifecycle and Design Roles• 30 minutes
In this module, the Objection-Oriented Design is discussed to enable the learning of foundational methods using such a design, along with its significance. Key concepts like abstraction, inheritance, and polymorphism are discussed, and their benefits are explored with examples.
What's included
11 videos11 readings6 assignments
11 videos• Total 92 minutes
- Introduction to Object Oriented Design• 8 minutes
- OO Key Concepts• 7 minutes
- Programming Languages for OO Development• 11 minutes
- Introduction to Software Design Principles• 9 minutes
- SDP: Abstraction• 7 minutes
- SDP: Coupling and Cohesion• 7 minutes
- SDP: Decomposition & Modularisation• 8 minutes
- SDP: Encapsulation & Information Hiding• 7 minutes
- SDP: Separation of Interface & Implementation• 7 minutes
- SDP – Sufficiency, Completeness & Primitiveness• 12 minutes
- SDP – Separation of Concerns• 9 minutes
11 readings• Total 170 minutes
- Recommended Reading: Introduction to Object Oriented Design• 15 minutes
- Recommended Reading: OO Key Concepts• 10 minutes
- Recommended Reading: Programming Languages for OO Development• 15 minutes
- Recommended Reading: Introduction to Software Design Principles• 10 minutes
- Recommended Reading: SDP: Abstraction• 30 minutes
- Recommended Reading: SDP: Coupling and Cohesion• 20 minutes
- Essential Reading: SDP: Decomposition & Modularisation• 20 minutes
- Essential Reading: SDP: Encapsulation & Information Hiding• 10 minutes
- Essential Reading: SDP: Separation of Interface & Implementation• 15 minutes
- Recommended Reading: SDP – Sufficiency, Completeness & Primitiveness• 10 minutes
- Recommended Reading: SDP – Separation of Concerns• 15 minutes
6 assignments• Total 126 minutes
- Test Yourself: Object-Oriented Design and Design Principles• 30 minutes
- Practice Quiz: Object Oriented Design Fundamentals• 18 minutes
- Practice Quiz: Software Design: An Object Oriented View• 21 minutes
- Practice Quiz: Modular Design Strategies• 21 minutes
- Practice Quiz: Modularity and Integration• 6 minutes
- Let's Practice: Object-Oriented Design and Design Principles• 30 minutes
Refactoring is very beneficial when it comes to evolving code to a different level of maintainability and scalability. While developers desire to develop new code at all times; they do encounter situations, most of the time, to modify the current code to either build a feature or fix a defect; while doing so, an eye-for-refactoring can do wonders. In this module, let’s explore and apply some of the principles to refactor code.
What's included
13 videos6 readings5 assignments
13 videos• Total 88 minutes
- Why Design for Reuse? • 8 minutes
- Why Design for and Plan Refactoring?• 6 minutes
- Introduction to the Concepts of Reuse and Refactoring• 9 minutes
- Bad Smells in Code• 8 minutes
- Designing Testing for Refactoring• 9 minutes
- Diagnosis to Prognosis• 5 minutes
- Refactoring of Methods• 3 minutes
- Refactoring of Objects• 6 minutes
- Refactoring of Data• 9 minutes
- Refactoring of Conditionals• 5 minutes
- Refactoring of Method Calls• 7 minutes
- Refactoring of Hierarchies• 6 minutes
- Overhauling• 8 minutes
6 readings• Total 70 minutes
- Recommended Reading: Why Design for Reuse? • 20 minutes
- Recommended Reading: Why Design for and Plan Refactoring?• 10 minutes
- Recommended Reading: Introduction to the Concepts of Reuse and Refactoring• 10 minutes
- Recommended Reading: Bad Smells in Code• 10 minutes
- Recommended Reading: Designing Testing for Refactoring• 10 minutes
- Recommended Reading: Prognosis – A Catalogue of Refactorings• 10 minutes
5 assignments• Total 105 minutes
- Test Yourself: Design for Reuse and Design for Change – Refactoring• 30 minutes
- Practice Quiz: Fundamentals of Designing for Change• 27 minutes
- Practice Quiz: Diagnosis–Detecting the Need for Refactoring• 12 minutes
- Practice Quiz: Prognosis – A Catalogue of Refactorings• 6 minutes
- Let's Practice: Design for Reuse and Design for Change – Refactoring• 30 minutes
This module explores the design patterns – especially in comparison to other domains like building architecture. The historical evolution of design patterns across disciplines provides insights into their origin and transformation. A comparative analysis between design patterns in building architecture and software design reveals shared principles and distinct methodologies. Modern software design methodologies have been influenced by such architectures and lessons so applied can bring the best for the software design.
What's included
11 videos11 readings6 assignments
11 videos• Total 83 minutes
- Architecture in Buildings• 9 minutes
- Introduction to Patterns and Architecture• 7 minutes
- Architecture in Software Design• 6 minutes
- Why Patterns – A Detailed Discussion (Part 1)• 9 minutes
- Why Patterns – A Detailed Discussion (Part 2)• 5 minutes
- Why Patterns – A Detailed Discussion (Part 3)• 7 minutes
- Pattern Orientation and Principles of Architecture – Part 1• 10 minutes
- Pattern Orientation and Principles of Architecture – Part 2• 11 minutes
- Pattern Orientation and Principles of Architecture – Part 3• 9 minutes
- Architectural Styles/Patterns• 7 minutes
- Design Patterns• 3 minutes
11 readings• Total 110 minutes
- Recommended Reading: Architecture in Buildings• 10 minutes
- Recommended Reading: Introduction to Patterns and Architecture• 10 minutes
- Recommended Reading: Architecture in Software Design• 10 minutes
- Recommended Reading: Why Patterns – A Detailed Discussion (Part 1)• 10 minutes
- Recommended Reading: Why Patterns – A Detailed Discussion (Part 2)• 10 minutes
- Recommended Reading: Why Patterns – A Detailed Discussion (Part 3)• 10 minutes
- Recommended Reading: Pattern Orientation and Principles of Architecture – Part 1• 10 minutes
- Recommended Reading: Pattern Orientation and Principles of Architecture – Part 2• 10 minutes
- Recommended Reading: Pattern Orientation and Principles of Architecture – Part 3• 10 minutes
- Recommended Reading: Architectural Styles/Patterns• 10 minutes
- Recommended Reading: Design Patterns• 10 minutes
6 assignments• Total 84 minutes
- Test Yourself: Design Patterns - Historical Perspective and Relevance• 30 minutes
- Practice Quiz: Motivation for Software Architecture• 6 minutes
- Practice Quiz: World of Patterns• 9 minutes
- Practice Quiz: Pattern Orientation and Principles• 6 minutes
- Practice Quiz: Levels of Patterns• 3 minutes
- Let's Practice: Design Patterns - Historical Perspective and Relevance• 30 minutes
Software design methods, at times, are driven by a variety of factors. In this module the aspect-oriented design is explored which addresses the cross-cutting concerns that are identified during the requirements process. Information exchange over the web is another commonly used method and service-oriented architecture is a way to build distributed software using web services. In this module both are discussed and detailed using examples.
What's included
13 videos12 readings6 assignments
13 videos• Total 118 minutes
- Introduction to Cross-Cutting Concerns• 13 minutes
- Cross-Cutting Concerns – Peers• 8 minutes
- Cross-Cutting Concerns – Extensions• 3 minutes
- Introduction to Aspect-Oriented Design• 15 minutes
- Aspect-Oriented Design – 1• 5 minutes
- Aspect-Oriented Design – 2• 11 minutes
- Introduction to Distributed Systems - Part 1• 9 minutes
- Introduction to Distributed Systems - Part 2• 8 minutes
- Service Oriented Architecture• 13 minutes
- An Example of Aspect-Oriented Design - Part 1• 16 minutes
- An Example of Aspect-Oriented Design - Part 2• 6 minutes
- An Example of Service-Oriented Architecture• 9 minutes
- Module Summary• 2 minutes
12 readings• Total 160 minutes
- Recommended Reading: Introduction to Cross-Cutting Concerns• 10 minutes
- Recommende Reading: Cross-Cutting Concerns – Peers• 20 minutes
- Recommended Reading: Cross-Cutting Concerns – Extensions• 20 minutes
- Recommended Reading: Introduction to Aspect-Oriented Design• 20 minutes
- Recommended Reading: Aspect-Oriented Design – 1• 20 minutes
- Recommended Reading: Aspect-Oriented Design – 2• 10 minutes
- Recommended Reading: Introduction to Distributed Systems - Part 1• 10 minutes
- Recommended Reading: Introduction to Distributed Systems - Part 2• 10 minutes
- Recommended Reading: Service Oriented Architecture • 10 minutes
- Recommended Reading: An Example of Aspect-Oriented Design - Part 1• 10 minutes
- Recommended Reading: An Example of Aspect-Oriented Design - Part 2• 10 minutes
- Recommended Reading: An Example of Service-Oriented Architecture• 10 minutes
6 assignments• Total 108 minutes
- Test Yourself: Crosscutting Concerns, Aspect-Oriented Design and Service-Oriented Architecture• 30 minutes
- Practice Quiz: The Rationale for Aspect-Orientation• 9 minutes
- Practice Quiz: Aspect-Oriented Design: Design Principles• 15 minutes
- Practice Quiz: Designing for Services on Networks• 15 minutes
- Practice Quiz: Practical Examples of Designing for Complex Service Software Systems• 9 minutes
- Let's Practice: Crosscutting Concerns, Aspect-Oriented Design and Service-Oriented Architecture• 30 minutes
Any design process, typically, follows two steps: a High-Level Design (HLD) and a Low-Level Design (LLD). A High-Level Design (Architectural Design) or Top-Level Design describes how software is organised into components. A Low-Level Design or Detailed Design describes the desired behaviour of these components. At this stage of the course, in this module, the HLD and LLD are discussed for learners to understand and apply the two-step process.
What's included
14 videos14 readings6 assignments
14 videos• Total 100 minutes
- Understanding Design• 6 minutes
- Design is Problem-Solving• 5 minutes
- Design Scientific & Engineering• 9 minutes
- Designer's Role and Challenges• 6 minutes
- What is Software?• 10 minutes
- Elements of High Level Design• 7 minutes
- High-Level Design (Part 1)• 9 minutes
- High-Level Design (Part 2)• 14 minutes
- Elements of Low Level Design• 6 minutes
- Low-Level Design (Part 1)• 7 minutes
- Low-Level Design (Part 2)• 5 minutes
- Levels and Phases of Design (Part 1)• 5 minutes
- Levels and Phases of Design (Part 2)• 7 minutes
- Best Practices• 5 minutes
14 readings• Total 140 minutes
- Recommended Reading: Understanding Design• 10 minutes
- Recommended Reading: Design is Problem-Solving• 10 minutes
- Recommended Reading: Design Scientific & Engineering• 10 minutes
- Recommended Reading: Designer's Role and Challenges• 10 minutes
- Recommended Reading: What is Software?• 10 minutes
- Recommended Reading: Elements of High Level Design• 10 minutes
- Recommended Reading: High-Level Design (Part 1)• 10 minutes
- Recommended Reading: High-Level Design (Part 2)• 10 minutes
- Recommended Reading: Elements of Low Level Design• 10 minutes
- Recommended Reading: Low-Level Design (Part 1)• 10 minutes
- Recommended Reading: Low-Level Design (Part 2)• 10 minutes
- Recommended Reading: Levels and Phases of Design (Part 1)• 10 minutes
- Recommended Reading: Levels and Phases of Design (Part 2)• 10 minutes
- Recommended Reading: Best Practices• 10 minutes
6 assignments• Total 102 minutes
- Test Yourself: High-Level Design vs. Low-Level Design• 30 minutes
- Practice Quiz: Let's Design• 15 minutes
- Practice Quiz: High-Level Design• 9 minutes
- Practice Quiz: Low-Level Design• 9 minutes
- Practice Quiz: Levels, Phases & Best Practices• 9 minutes
- Let's Practice: High-Level Design vs. Low-Level Design• 30 minutes
Over decades, software architecture has evolved to a level where the elements and styles now can be applied to solve specific problem statements. In this module, all architectural styles are discussed – General Structures, Distributed Systems, Interactive Systems, Adaptable Systems and Others, which enable building the knowledge and skill to apply such elements and style to design and construct great software.
What's included
12 videos12 readings6 assignments
12 videos• Total 72 minutes
- Mud to Structure - Part 1• 5 minutes
- Mud to Structure - Part 2• 4 minutes
- Mud to Structure - Part 3• 7 minutes
- Distributed Systems - Part 1• 6 minutes
- Distributed Systems - Part 2• 5 minutes
- Distributed Systems - Part 3• 8 minutes
- Interactive Systems - Part 1• 7 minutes
- Interactive Systems - Part 2• 7 minutes
- Interactive Systems - Part 3• 6 minutes
- Adaptable Systems - Part 1• 4 minutes
- Adaptable Systems - Part 2• 6 minutes
- Adaptable Systems - Part 3• 7 minutes
12 readings• Total 195 minutes
- Recommended Reading: Mud to Structure - Part 1• 20 minutes
- Recommended Reading: Mud to Structure - Part 2• 20 minutes
- Recommended Reading: Mud to Structure - Part 3• 20 minutes
- Recommended Reading: Distributed Systems - Part 1• 15 minutes
- Recommended Reading: Distributed Systems - Part 2• 15 minutes
- Recommended Reading: Distributed Systems - Part 3• 15 minutes
- Recommended Reading: Interactive Systems - Part 1• 15 minutes
- Recommended Reading: Interactive Systems - Part 2• 15 minutes
- Recommended Reading: Interactive Systems - Part 3• 15 minutes
- Recommended Reading: Adaptable Systems - Part 1• 15 minutes
- Recommended Reading: Adaptable Systems - Part 2• 15 minutes
- Recommended Reading: Adaptable Systems - Part 3• 15 minutes
6 assignments• Total 96 minutes
- Test Yourself: Basic Architectural Elements and Styles• 30 minutes
- Practice Quiz: Architectures - Mud to Structure• 9 minutes
- Practice Quiz: Architectures - Distributed Systems• 9 minutes
- Practice Quiz: Architectures - Interactive Systems• 9 minutes
- Practice Quiz: Architectures - Adaptable• 9 minutes
- Let's Practice: Basic Architectural Elements and Styles• 30 minutes
As a designer, one would encounter these patterns nearly at all times when developing interactive applications. In this module the two main styles Event-Driven Architectures and Interactive systems (Model View Controller) in UI are discussed and detailed with examples.
What's included
9 videos9 readings5 assignments
9 videos• Total 55 minutes
- Layered Architecture - Part 1• 8 minutes
- Layered Architecture - Part 2• 7 minutes
- Layered Architecture - Part 3• 8 minutes
- MVC - Part 1• 8 minutes
- MVC - Part 2• 4 minutes
- MVC - Part 3• 7 minutes
- Creational - Singleton• 4 minutes
- Structural - Decorator• 5 minutes
- Design Pattern- Behavioural State• 5 minutes
9 readings• Total 90 minutes
- Recommended Reading: Layered Architecture - Part 1• 10 minutes
- Recommended Reading: Layered Architecture - Part 2• 10 minutes
- Recommended Reading: Layered Architecture - Part 3• 10 minutes
- Recommended Reading: MVC - Part 1• 10 minutes
- Recommended Reading: MVC - Part 2• 10 minutes
- Recommended Reading: MVC - Part 3• 10 minutes
- Recommended Reading: Creational - Singleton• 10 minutes
- Recommended Reading: Structural - Decorator• 10 minutes
- Recommended Reading: Design Pattern- Behavioural State• 10 minutes
5 assignments• Total 87 minutes
- Test Yourself: Architecture and Design Patterns• 30 minutes
- Practice Quiz: Architectures - Layered• 9 minutes
- Practice Quiz: Architectures - Model, View and Controller • 9 minutes
- Practice Quiz• 9 minutes
- Let's Practice: Architecture and Design Patterns• 30 minutes
In this concluding module, a detailed discussion is made on the historical progression of software development systems in terms of programming languages, software engineering and IDEs. With the discussion and detailing of the mechanisms to build simple to complex systems the learner will be able to navigate the existing software systems and will also be able to develop new ones.
What's included
13 videos5 readings5 assignments
13 videos• Total 135 minutes
- The Role of Languages in Software Development• 16 minutes
- Languages for Embedded Systems• 6 minutes
- Languages for Mobile Phones• 6 minutes
- GTK, QT • 15 minutes
- Angular, ReactJS • 10 minutes
- GTK Demo• 8 minutes
- GTK Demo and Design View • 10 minutes
- GTK Demo and Design View - Part 1• 7 minutes
- GTK Demo and Design View - Part 2• 6 minutes
- GTK Demo in Python Using Tkinter Framework• 11 minutes
- Demonstration - AngularJS• 14 minutes
- IDEs and Tools• 16 minutes
- Module Summary• 10 minutes
5 readings• Total 50 minutes
- Recommended Reading: Languages and System Software• 10 minutes
- Recommended Reading: GUI Development Frameworks• 10 minutes
- Recommended Reading: Demonstrations of Using GUI Development Frameworks• 10 minutes
- Recommended Reading: Demonstrations of End-to-End Design and Development• 10 minutes
- Course Summary• 10 minutes
5 assignments• Total 96 minutes
- Test Yourself: Evolution of Software Development Systems• 30 minutes
- Practice Quiz: Languages and System Software• 9 minutes
- Practice Quiz: GUI Development Frameworks• 18 minutes
- Practice Quiz: Demonstrations of Using GUI Development Frameworks• 9 minutes
- Let's Practice: Evolution of Software Development Systems• 30 minutes
Instructor

Offered by

Offered by

Birla Institute of Technology & Science, Pilani (BITS Pilani) is one of only ten private universities in India to be recognised as an Institute of Eminence by the Ministry of Human Resource Development, Government of India. It has been consistently ranked high by both governmental and private ranking agencies for its innovative processes and capabilities that have enabled it to impart quality education and emerge as the best private science and engineering institute in India. BITS Pilani has four international campuses in Pilani, Goa, Hyderabad, and Dubai, and has been offering bachelor's, master’s, and certificate programmes for over 58 years, helping to launch the careers for over 1,00,000 professionals.
Why people choose Coursera for their career

Felipe M.

Jennifer J.

Larry W.

Chaitanya A.
Explore more from Social Sciences
DDuke University
Course
UUniversity of Alberta
Course
PPearson
Course
AAmazon
Course
¹ Some assignments in this course are AI-graded. For these assignments, your data will be used in accordance with Coursera's Privacy Notice.