This course takes Java beginners to the next level by covering object-oriented analysis and design. You will discover how to create modular, flexible, and reusable software, by applying object-oriented design principles and guidelines. And, you will be able to communicate these designs in a visual notation known as Unified Modelling Language (UML).
You will be challenged in the Capstone Project to apply your knowledge of object-oriented design by evolving and documenting the Java codebase for an Android application with corresponding UML documentation.
After completing this course, you will be able to:
• Apply the Class Responsibility Collaborator (CRC) technique to analyze and design the object-oriented model for a problem.
• Explain and apply object-oriented modeling principles and their purpose (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 Unified Modeling Language (UML) class diagrams.
• Translate between UML class diagrams and equivalent Java code.
• Apply design guidelines for modularity, separation of concerns, information hiding, and conceptual integrity to create a flexible, reusable, maintainable design.
• Explain the tradeoff between cohesion and coupling.
Object-Oriented Analysis and Design Good software design begins before coding. After establishing the initial software requirements, design practices involve two main activities: conceptual design and technical design. In this module, you will realize the importance of design and object-oriented thinking, and learn how to design software using techniques like CRC cards.
Object-Oriented Modeling Best software design practices have evolved alongside programming languages. Today, all developers should be familiar with abstraction, encapsulation, decomposition, and generalization, which are fundamental principles in object-oriented design. You will learn all of these principles and how they are expressed in Java and communicated visually in Unified Modelling Language.
Design Principles Additional design principles will help you to create code that is flexible, reusable, and maintainable. In this module you will learn about coupling and cohesion, separation of concerns, information hiding, and conceptual integrity. You will also learn to avoid common pitfalls with inheritance, and ways to express software behavior in UML.
Capstone Challenge In the previous modules you were introduced to object-oriented analysis and design, object-oriented modeling, and design principles. To cement your understanding of this material, you created a UML class diagram from an example Android code base, and used your understanding of the code base to make sequence and state diagrams to model its behavior. Now, in the final module of the course, given a description of new functionality and an updated UML class diagram, you will implement the updated design into the Android code base. After completing this development task, you will be ready to complete the final exam.
MOOCs stand for Massive Open Online Courses. These arefree online courses from universities around the world (eg. StanfordHarvardMIT) offered to anyone with an internet connection.
How do I register?
To register for a course, click on "Go to Class" button on the course page. This will take you to the providers website where you can register for the course.
How do these MOOCs or free online courses work?
MOOCs are designed for an online audience, teaching primarily through short (5-20 min.) pre recorded video lectures, that you watch on weekly schedule when convenient for you. They also have student discussion forums, homework/assignments, and online quizzes or exams.
This course is the first of four in the Software Architecture and Design Specialization offered by the University of Alberta on Coursera. The course starts with a "whopper" when students discover that they are expected to very rapidly understand Android application development at an Intermediate skill level. This is NO
This course is the first of four in the Software Architecture and Design Specialization offered by the University of Alberta on Coursera. The course starts with a "whopper" when students discover that they are expected to very rapidly understand Android application development at an Intermediate skill level. This is NOT advertised at all in the course description. The assignments end-up requiring a lot more time than advertised and all my work colleagues that had registered for the specialization ended dropping out before the end of this first course because of this, which is truly sad.
I am sure that those, like me, that held out to the end of the entire specialization will appreciate the reason for using the Android application and seeing it evolve as new concepts in Object-Oriented Software Architecture and Design techniques are learned.
The course, and specialization, will need to be maturaed a few more iterations before earning a 5 star rating, IMHO, but it has the "bones" to get there.
Contrary to another evaluation of this course, all the UML diagrams have a reason for being in this course since it is a "object-oriented design" course after all. I would have liked to see more Sequence and Activity Diagrams presented to explain Capstone Assignments throughout the entire specialization to expand on specific User Stories that were to be implemented in the assignment.
Farsan Rashidcompleted this course, spending 5 hours a week on it and found the course difficulty to be easy.
3.5 out of five. There are two reasons for taking away 1.5 star. One is using android platform to teach object oriented design and another reason is putting too much importance on uml, sequence diagram which is more related to software engineering than object orject oriented programming. Now using android studio is not
3.5 out of five. There are two reasons for taking away 1.5 star. One is using android platform to teach object oriented design and another reason is putting too much importance on uml, sequence diagram which is more related to software engineering than object orject oriented programming. Now using android studio is not a good idea because it is really resource intensive application and when you are using android you are unnecessarily complicating things to teach OOP which could have been easily achieved by selecting any of the core OOP language. Lectures are well organized and enjoyed interviews of veteran OOP programmers.