Design Patterns

In the Software Design and Architecture Specialization, you will learn how to apply design principles, patterns, and architectures 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 a visual notation.Practical examples and opportunities to apply your knowledge will help you develop employable skills and relevant expertise in the software industry.

Created by: Kenny Wong

icon
Quality Score

Content Quality
/
Video Quality
/
Qualified Instructor
/
Course Pace
/
Course Depth & Coverage
/

Overall Score : 90 / 100

icon
Live Chat with CourseDuck's Co-Founder for Help

Need help deciding on a android development course? Or looking for more detail on Kenny Wong's Design Patterns? Feel free to chat below.
Join CourseDuck's Online Learning Discord Community

icon
Course Description

This course extends object-oriented analysis and design by incorporating design patterns to create interactive applications. Through a survey of established design patterns, you will gain a foundation for more complex software applications. Finally, you will identify problematic software designs by referencing a catalog of code smells.You will be challenged in the Capstone Project to redesign an existing Java-based Android application to implement a combination of design patterns. You will also critique a given Java codebase for code smells.After completing this course, you will be able to: - Demonstrate how to use design patterns to address user interface design issues.- Identify the most suitable design pattern to address a given application design problem.- Apply design principles (e.g., open-closed, dependency inversion, least knowledge).- Critique code by identifying and refactoring anti-patterns.- Apply the model-view-controller architectural pattern.

icon
Instructor Details

Kenny Wong

Kenny Wong is an Associate Professor in the Department of Computing Science, at the University of Alberta, Canada. He received his B.Sc. and Ph.D. degrees in Computer Science from the University of Victoria, Canada. He has been a university instructor for 16 years, regularly teaching team-oriented, project-based software engineering courses, including several offerings of software process and product management. His research in software engineering focuses on analyzing the root causes of problems in the structure, behavior, and management of complex software systems.

icon
Reviews

4.5

101 total reviews

5 star 4 star 3 star 2 star 1 star
% Complete
% Complete
% Complete
% Complete
% Complete

By Xavier J on 31-Jan-18

Tying the assignments to an Android Studio project was overkill; the same principles could have been demonstrated with a SIMPLE java application.

By Vladimir K on 25-Mar-19

Overall, a good course. The only (HUGE) drawback is that your assignments are being checked by students, who often have no clue what they are grading.

By Matteo L on 12-Nov-17

Content is ok but doesn't go in detail and often just scratch the surface.Exercises instead are quite poor. Many errors in the UML diagrams and code examples.

By Mohan K on 27-Nov-18

Very very useful to both academician and industry professionals..Thanks Coursera and University of Alberta

By Gabriel J G on 23-Dec-18

Excelente curso!!!, felicitaciones!!!

By Sandor W on 26-Nov-18

Not great for last minute preparation. Missing some design patterns out of the 23 patterns.

By Light0617 on 25-Nov-18

wonderful! I learnt a lot!

By Eduardo I on 24-Jan-19

Great course, I find very useful and clear explanation about the patterns, principles and code smell, with ti has diagrams and code to explain great all the topics

By Heena H on 8-Feb-19

wonderfully explained, with rememberable examples. very well documented.

By K R on 18-Mar-19

esay way to learn design patterns

By Mwenemwami D B on 18-Mar-19

Good course, really loving this specialization though I am a bit behind with progress as I wasnt well

By Moussa D on 19-Mar-19

Very good course to get a first and clear grasp of various different pattern