Online Course – Certified Professional Internship in Software Design and Architecture from Google and the University of Alberta

Conscious strategies for developing quality software. Think like an expert architect and create quality software using design patterns and principles.

Suggested by: Coursera (What is Coursera?)

Professional Certificate

Beginners

No prior knowledge required

Time to complete the course

7-day free trial

No unnecessary risks

Skills you will acquire in the course

  • Communication skills
  • Critical thinking
  • Time management
  • Teamwork
  • Troubleshooting
  • Data analysis capabilities
  • creativity
  • Coping with stress
  • Leadership skills
  • Independent learning ability

What you will learn in the course

Courses for which the course is suitable

  • Software developer
  • Software Engineer
  • Android app developer
  • Software Architect
  • Java developer
  • Information Systems Developer
  • Full Stack Developer
  • Backend developer
  • Frontend developer
  • Technology Project Manager

Professionalization – 4-part course series

In the Software Design and Architecture specialization course series, you will learn how to apply design principles, patterns, and architecture to create reusable and flexible software applications and systems. You will learn how to express and document the design and architecture of a software system using visual notation.

Practical examples and opportunities to apply your knowledge will help you develop job search skills and relevant training in the software industry.

Hands-on Learning Project

The final project includes a Java-based Android application, which you will design and develop over the four courses of the specialization. The application will evolve from a single-user application that stores data locally, to a multi-user application that stores data remotely. In each course, you will receive a Java code base as a starting point and will need to document and implement new content using the knowledge you have acquired in the course.

You can find tutorials to help you understand the initial code base and learn the fundamentals of development for Android.

Prerequisites

  • You are required to have basic knowledge of Java programming.
  • The capstone application will require you to use Android Studio, an integrated development environment.
  • To learn more about Android Studio, please see the tutorials for Windows or Mac.

Details of the courses that make up the specialization

Object-oriented design

  • Course 1 • 17 hours • 4.7 (2,315 ratings)

Course Details

What you’ll learn

This course takes Java beginners to the next level by covering object-oriented analysis and design. You’ll discover how to create modular, flexible, and reusable software by applying object-oriented design principles and guidelines. You’ll also communicate these designs using a visual notation called Unified Modeling Language (UML).

In the final project, you will be challenged to apply your knowledge of object-oriented design by developing and validating the Java code base for an Android application with appropriate UML documentation.

After you complete this course, you will be able to:
  • Apply the Cross-Department Collaborative Responsibility (CRC) technique to analyze and design the object-oriented model for the problem.
  • Explain and apply object-oriented modeling principles and their goals (e.g., abstraction, encapsulation, decomposition, generalization).
  • Explain and apply different types of inheritance.
  • Explain the difference between association, aggregation, and composition dependencies.
  • Express object-oriented models as class diagrams in UML.
  • Translate between UML class diagrams and the corresponding Java code base.
  • Apply design guidelines for modularity, domain separation, information hiding, and conceptual integrity to create a flexible, reusable, and maintainable design.
  • Explain the dilemma between holisticness and connectivity.

Skills you will gain

  • Category: Object-Oriented Design
  • Object-oriented design
  • Category: Object-Oriented Analysis and Design
  • Object-oriented analysis and design
  • Category: Unified Modeling Language (UML)
  • Unified Modeling Language (UML)

Design patterns

  • Course 2 • 15 hours • 4.7 (1,308 ratings)

Course Details

What you’ll learn

This course extends object-oriented analysis and design by incorporating design patterns to create interactive applications. Through a review of established design patterns, you will gain a foundational knowledge for more complex software applications. Finally, you will identify problematic software designs by referring to the Code Smells Guide.

In the final project, you will be challenged to redesign an existing Java-based Android application to implement a combination of design patterns. You will also audit a given Javascript code base for code smells.

After you complete this course, you will be able to:
  • Demonstrate how to use design patterns to address user interface design issues.
  • Identify the most appropriate design pattern to address the design problem of a given application.
  • Apply design principles (e.g., open-closed, dependency inversion, minimal knowledge).
  • Review code by identifying and correcting resistance structures.
  • Implement the Model-View-Controller architecture pattern.

Software architecture

  • Course 3 • 9 hours • 4.5 (893 ratings)

Course Details

What you’ll learn

The way in which software components—subprocedures, classes, functions, etc.—are arranged, and the interactions between them, is called architecture. In this course, you will learn how to represent these architectures, both in UML and in other visual tools. We will introduce the most common architectures, their features, and their dilemmas. We will talk about how to evaluate architecture, what makes a good architecture, and how architecture can be improved. We will also talk about how architecture affects the software development process.

In the final project, you will document a Java-based Android application with UML diagrams and evaluate the application’s architecture using the Architecture Dilemma Analysis Method (ATAM).

After you complete this course, you will be able to:
  • Compare and contrast components, connections, protocols, topologies, limitations, dilemmas, and variations of different types of architectural styles used in designing applications and systems (e.g., main program and subprocedure, object-oriented, parsers, pipes and filters, data centers, event-driven).
  • Describe the features of multi-layered and multi-level architectures.
  • Create UML diagrams designed for packaging, components, and deployment to express the architectural structure of a system.
  • Explain the behavior of a system using UML activity diagrams.
  • Document a multi-application system with a multi-tiered architecture.

Service-oriented architecture

  • Course 4 • 9 hours • 4.5 (570 ratings)

Course Details

What you’ll learn

Building on an understanding of architectural styles, you will review architecture for web applications, then explore the fundamentals of service-oriented architecture (SOA) in two approaches: Web Services (WS*) and Representational State Transfer Architecture (REST). In the final project, you will connect a Java-based Android application with Elasticsearch, a web service with a REST application programming interface (API).

After you complete this course, you will be able to:
  • Describe SOA (Service Oriented Architecture) to design web-based systems.
  • Explain WS* services (i.e., SOAP over HTTP, WSDL, UDDI, BPEL).
  • Implement REST architecture (i.e., JSON over HTTP, URI).
  • Identify REST design principles.
  • Create a system using REST interfaces.
  • Implement microservices architecture.

Skills you will gain

  • Category: Network Services
  • Network services
  • Category: Microservices
  • Microservices
  • Category: Representational State Transfer (REST)
  • Representational State Transfer (REST)
  • Category: Service-Oriented Architecture
  • Service-oriented architecture