We may earn an affiliate commission when you visit our partners.
Course image
Dr. Douglas C. Schmidt, Michael Walker, and Dr. Jules White

Engineering Maintainable Android Apps, which is a 4 week MOOC that shows by example various methods for engineering maintainable Android apps, including test-driven development methods and how to develop/run unit tests using JUnit and Robotium (or equivalent automated testing frameworks for Android), as well as how to successfully apply common Java/Android software patterns to improve the extensibility and clarity of Android apps. Students will work on the appropriate automated unit quizzes, based on the material covered in the lecture videos. These lessons will demonstrate the benefits of good software engineering practices that are targeted at creating maintainable code for mobile apps.

Read more

Engineering Maintainable Android Apps, which is a 4 week MOOC that shows by example various methods for engineering maintainable Android apps, including test-driven development methods and how to develop/run unit tests using JUnit and Robotium (or equivalent automated testing frameworks for Android), as well as how to successfully apply common Java/Android software patterns to improve the extensibility and clarity of Android apps. Students will work on the appropriate automated unit quizzes, based on the material covered in the lecture videos. These lessons will demonstrate the benefits of good software engineering practices that are targeted at creating maintainable code for mobile apps.

There will be roughly 3-4 hours of student engagement time per week, including video lectures, and quizzes. The ordering of the modules within the course is designed to be flexible. In particular, students can watch the videos in whatever order suits their experience and needs, e.g., they may want to watch the unit testing videos prior to the software pattern videos if they prefer to learn about unit testing first.

Enroll now

What's inside

Syllabus

MOOC Overview
Engineering Maintainable Android Apps, which is a 4 week MOOC that shows by-example various methods for engineering maintainable Android apps, including test-driven development methods and how to develop/run unit tests using JUnit and Robotium (or equivalent automated testing frameworks for Android), as well as how to successfully apply common Java/Android software patterns to improve the extensibility and clarity of Android apps.
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Taught by well-established figures in the field, including Dr. Douglas C. Schmidt, Michael Walker, and Dr. Jules White
Develops engineering principles and test-driven development methods for building robust Android apps
Introduces students to common Java/Android software patterns for improving code extensibility and clarity
Focuses on providing practical, hands-on examples to illustrate maintainable development approaches
Emphasizes the importance of unit testing and provides guidelines for using JUnit and Robotium
Provides flexibility in learning order, allowing students to adjust to their needs and experience

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Strengthening android development with maintainability

According to learners, this course on Engineering Maintainable Android Apps is a largely positive experience, particularly for those looking to deepen their skills beyond the basics. Students consistently praise the fantastic lecturer for providing clear explanations and using helpful, practical examples that make complex topics accessible. The course content, focusing on invaluable testing concepts like JUnit and Robotium, and essential maintainability practices, is seen as highly relevant and crucial for professional development. While the material is considered very beneficial, some reviewers note that it assumes prior Android knowledge and can be challenging for beginners. Newer reviews occasionally suggest that some content may feel slightly dated given how Android development evolves quickly, but the core principles taught remain highly valuable and applicable.
Focuses on crucial skills for long-term projects.
"The focus on maintainability is crucial for long-term Android projects."
"Learned practical patterns to make my apps easier to manage and extend."
"The concepts presented here are vital for professional Android development."
"Helped me understand how to structure code for better clarity and extensibility."
Teaches essential Android testing techniques.
"Found the section on JUnit and Robotium incredibly valuable for building robust apps."
"Learning about TDD and testing frameworks was exactly what I needed for my projects."
"This course finally taught me how to properly test my Android code effectively."
"Gained practical skills in unit and graybox testing using standard frameworks."
Lecturer provides clear, practical guidance.
"The lecturer is fantastic, explaining complex topics clearly with good examples."
"Really appreciate the instructor's expertise and practical examples provided."
"Instructor's explanations are clear and easy to follow and the demos are helpful."
Core concepts relevant, some tools may be dated.
"While the core principles are sound, some of the specific tools or practices might be a bit outdated now."
"Parts of the course could use an update to reflect current Android development practices."
"Still valuable, but keep in mind that Android development evolves quickly and some specifics may have changed."
Better suited for those with Android basics.
"While excellent, this course isn't for absolute beginners; some prior Android knowledge is very helpful."
"Recommend having basic Android development experience before tackling this material."
"Might be challenging if you haven't built Android apps or worked with Java extensively before."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Engineering Maintainable Android Apps with these activities:
Join a Study Group for Android Development
Join a study group for Android development. This will give you the opportunity to ask questions, share knowledge, and learn from others.
Show steps
  • Find a study group for Android development
  • Attend the study group meetings regularly
  • Participate in discussions and ask questions
  • Share your knowledge and help others
Read Effective Java
Read Effective Java. This book will help you learn the best practices and guidelines for writing effective Java code.
Show steps
  • Purchase or borrow Effective Java
  • Read the book and take notes
  • Apply the principles you learn in your own Java code
Review Java syntax and Android lifecycle
Brush up on basic Java syntax and the Android lifecycle to strengthen your foundation for understanding unit testing and software patterns.
Browse courses on Java
Show steps
  • Review Java syntax fundamentals (data types, variables, operators, control flow).
  • Understand the different stages of the Android activity lifecycle (onCreate, onStart, onResume, onPause, onStop, onDestroy).
Eight other activities
Expand to see all activities and additional details
Show all 11 activities
Follow Android Development Tutorials
Follow Android development tutorials to supplement your understanding of the course material. This will help you learn new concepts and techniques.
Show steps
  • Search for Android development tutorials on websites like Udacity, Coursera, and Udemy
  • Select a tutorial that covers a topic you are interested in or struggling with
  • Follow the tutorial step-by-step
  • Try to implement the concepts you learned from the tutorial in your own projects
Practice Unit Testing with JUnit
Practice writing unit tests for Android apps using JUnit. This will improve your understanding of unit testing concepts and techniques.
Browse courses on Unit Testing
Show steps
  • Create a new Android project
  • Add JUnit dependency to the project
  • Write a simple unit test for a method
  • Run the unit test and verify the results
  • Practice writing more complex unit tests
Explore Android testing frameworks
Enhance your understanding of the JUnit testing framework and discover additional testing frameworks to broaden your testing capabilities.
Browse courses on JUnit
Show steps
  • Follow Android testing tutorials using JUnit and Robotium.
  • Explore other testing frameworks such as Espresso, Mockito, and Robolectric (optional).
Practice Automated Testing with Robotium
Practice writing automated tests for Android apps using Robotium. This will improve your understanding of automated testing concepts and techniques.
Browse courses on Automated Testing
Show steps
  • Create a new Android project
  • Add Robotium dependency to the project
  • Write a simple automated test for a simple activity
  • Run the automated test and verify the results
  • Practice writing more complex automated tests
Write unit tests for Android components
Solidify your understanding of unit testing by practicing writing tests for various Android components, such as activities, fragments, and services.
Browse courses on Unit Testing
Show steps
  • Create Android unit tests using JUnit.
  • Test the functionality of Android activities, fragments, and services.
  • Use mocking and dependency injection techniques to improve test quality (optional).
Contribute to Open Source Android Projects
Contribute to open source Android projects. This will give you hands-on experience and help you learn from others.
Browse courses on Open Source
Show steps
  • Find open source Android projects to contribute to
  • Choose a project that you are interested in and have the skills to contribute to
  • Follow the project's contribution guidelines
  • Make your contributions and submit pull requests
Develop an automated testing script
Apply your testing knowledge by creating an automated testing script using the Robotium framework to simulate user interactions and validate the functionality of your Android app.
Show steps
  • Design and implement an automated testing script using Robotium.
  • Use the script to test the UI and functionality of an Android app.
  • Refine the script to improve its efficiency and accuracy (optional).
Build a Sample Android App with Good Software Patterns
Build a sample Android app from scratch and apply the software patterns discussed in the course. This will help you understand how to use these patterns in practice.
Browse courses on Software Patterns
Show steps
  • Choose an Android app idea
  • Design the app architecture
  • Implement the app using software patterns
  • Test and debug the app
  • Share your app on the Google Play Store

Career center

Learners who complete Engineering Maintainable Android Apps will develop knowledge and skills that may be useful to these careers:
Java Software Engineer
Java Software Engineers are responsible for the design, development, and maintenance of Java software applications. This course may be useful for those who are experienced Java Software Engineers.
Software Quality Assurance Engineer
Software Quality Assurance Engineers are responsible for ensuring the quality of software applications. This course may be useful for those who are experienced Software Quality Assurance Engineers.
Mobile Quality Assurance Engineer
Mobile Quality Assurance Engineers are responsible for ensuring the quality of mobile software applications. This course may be useful for those who are experienced Mobile Quality Assurance Engineers.
Android Developer
Android Developers are responsible for the design, development, and maintenance of Android applications. This course may be useful for those who are experienced Android Developers.
Java Developer
Java Developers are responsible for the design, development, and maintenance of Java applications. This course may be useful for those who are experienced Java Developers.
Mobile Software Engineer
Mobile Software Engineers are responsible for the design, development, and maintenance of mobile software applications. This course may be useful for those who are experienced Mobile Software Engineers.
Software Test Engineer
Software Test Engineers are responsible for testing software applications to ensure that they are working correctly. This course may be useful for those who are experienced Software Test Engineers.
Android Software Engineer
Android Software Engineers are responsible for the design, development, and maintenance of Android software applications. This course may be useful for those who are experienced Android Software Engineers.
Technical Writer
Technical Writers are responsible for creating documentation for software products. This course may be useful for those looking to enter this field as it provides an introduction to software engineering and testing, which are essential skills for technical writers. The course also covers topics such as unit testing and test-driven development, which are important for ensuring the quality and reliability of software documentation.
Software Engineer
Software Engineers design, develop, and maintain software systems. This course may be useful for those looking to enter this field as it provides an introduction to software engineering and testing, which are essential skills for software engineers. The course also covers topics such as unit testing and test-driven development, which are important for ensuring the quality and reliability of software systems.
Test Engineer
Test Engineers are responsible for testing software systems to ensure that they are working correctly and meeting the requirements of the users. This course may be useful for those looking to enter this field as it provides an introduction to software engineering and testing, which are essential skills for test engineers. The course also covers topics such as unit testing and test-driven development, which are important for ensuring the quality and reliability of software systems.
Software Architect
Software Architects design and develop software systems. This course may be useful for those looking to enter this field as it provides an introduction to software engineering and testing, which are essential skills for software architects. The course also covers topics such as unit testing and test-driven development, which are important for ensuring the quality and reliability of software systems.
Technical Lead
Technical Leads are responsible for leading teams of software engineers. This course may be useful for those looking to enter this field as it provides an introduction to software engineering and testing, which are essential skills for technical leads. The course also covers topics such as unit testing and test-driven development, which are important for ensuring the quality and reliability of software systems.
Project Manager
Project Managers are responsible for planning and managing software development projects. This course may be useful for those looking to enter this field as it provides an introduction to software engineering and testing, which are essential skills for project managers. The course also covers topics such as unit testing and test-driven development, which are important for ensuring the quality and reliability of software systems.
Mobile Application Developer
Mobile Application Developers are responsible for the design, development, and maintenance of mobile applications. This course may be useful for those looking to enter this field as it provides an introduction to software engineering and testing, which are essential skills for mobile app developers. The course also covers topics such as unit testing and test-driven development, which are important for ensuring the quality and reliability of mobile apps.

Reading list

We've selected 11 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Engineering Maintainable Android Apps.
This comprehensive guide provides in-depth coverage of Android development, from basic concepts to advanced topics such as networking, security, and performance optimization. It valuable resource for both beginners and experienced developers.
Provides a practical guide to Android development, covering the fundamentals of Android programming, including activities, intents, fragments, and layouts. Concepts are explained with simple examples and clear illustrations, making it suitable for beginners and intermediate learners.
Provides an in-depth guide to Android security, covering topics such as application sandboxing, permissions, cryptography, and malware analysis. It valuable resource for developers who want to build secure Android applications.
Hands-on guide to Android Studio 3.0, covering the essential tools and techniques for developing Android apps. It includes step-by-step instructions and practical examples, making it suitable for beginners and experienced developers.
Provides a comprehensive overview of the Android operating system, covering topics such as the Dalvik virtual machine, the Linux kernel, and Android's core libraries. It valuable resource for developers who want to understand the inner workings of Android.
Although this book focuses on test-driven development with Python, it provides valuable insights and principles that can be applied to Android development. It covers topics such as writing testable code, refactoring, and working with a continuous integration pipeline.
Provides insights into the software engineering practices at Google, including their approach to testing, code review, and continuous integration. It offers valuable lessons and best practices that can be applied to Android development.
Provides a comprehensive guide to software architecture, including principles for designing maintainable and scalable software systems. Although it does not specifically focus on Android development, it offers valuable insights that can be applied to any software project.
Although this book focuses on social engineering and security, it offers valuable insights into human behavior and psychology. This knowledge can be applied to Android development by understanding how users interact with apps and how to mitigate potential vulnerabilities and security risks.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser