MyPage is a personalized page based on your interests.The page is customized to help you to find content that matters you the most.

I'm not curious

Programming Mobile Services for Android Handheld Systems Concurrency

Course Summary

In this MOOC, we will learn how to apply patterns and frameworks to alleviate the complexity of developing concurrent applications on mobile devices running Android that connect to popular cloud computing platforms.

  • +

    Course Syllabus

    This MOOC is organized into the following sections (all of which contain a mixture of pre-recorded videos and all of which are subject to change):

    • Section 0: Course Introduction
      • Part 1: Course Organization and Topics
      • Part 2: Course Prerequisites, Workload, and Learning Strategies
      • Part 3: Concurrency Motivations
      • Part 4: Concurrency Challenges 
      • Part 5: Overview of Patterns and Frameworks 
      • Part 6: Overview of Android Layers
    • Section 1: Overview of Concurrency for Android and Java
      • Part 1: Java Threading Mechanisms
      • Part 2: Java Built-in Synchronization Mechanisms
      • Part 3: Java Semaphores
    • Section 2: Android Concurrency Frameworks: Programming
      • Part 1: Overview of Android Concurrency Framework Classes
      • Part 2: Overview of the Threaded Downloads Application
      • Part 3: Overview of  Handlers, Messages, and Runnables (HaMeR) Framework
      • Part 4: Overview of the AsyncTask Framework
      • Part 5: Evaluating Android Concurrency Frameworks
    • Section 3: Android Concurrency Frameworks: Internals
      • Part 1:  Android Looper
      • Part 2: Android Handler 
      • Part 3: Posting and Processing Runnables with the Android HaMeR Framework
      • Part 4: Sending and Handling Messages with the Android HaMeR Framework
      • Part 5: Blackbox and Whitebox Frameworks with AsyncTask
    • Section 4: Communication Patterns in Android
      • Part 1: Overview of Android Concurrency Framework Patterns
      • Part 2: Coordinating Concurrent Access with the Monitor Object Pattern
      • Part 3: Ensuring Only One Looper Per Thread with the Thread-Specific Storage Pattern
      • Part 4: Passing Commands to Handlers with the Command Processor Pattern
      • Part 5: Passing Messages to Handlers with the Active Object Pattern
      • Part 6: Decoupling Synchronous and Synchronous Processing with the Half-Sync/Half-Async Pattern

    Throughout this MOOC we'll focus on pattern-oriented software architecture, with an emphasis on concurrent programming in the context of Android middleware systems programming mechanisms, such as synchronous and asynchronous concurrency models. We illustrate by example how key pattern and framework concepts and relationships are applied in Android from both an application and infrastructure perspective. Many code examples are shown throughout using Java, with case study projects used to reify the key points throughout all the material in this MOOC.The PDF versions of all the slides used in the MOOC will be available online as the videos become available on the MOOC website.

  • +

    Recommended Background

    Ideally, students who take this MOOC will have already taken Professor Porter’s MOOCs on “Programming Mobile Applications with Android Handheld Systems”. Students should also be familiar with general object-oriented design and programming concepts (such as encapsulation, abstraction, polymorphism, extensibility, and the Unified Modeling Language (UML)), fundamental object-oriented programming language features (such as classes, inheritance, dynamic binding, and generics available in Java, basic systems programming concepts (such as event handling, processes/threads, synchronization, inter-process communication, and dynamic linking), and networking terminology (such as client/server and peer-to-peer architectures, TCP/IP, and layering).  Overviews of object-oriented design, systems programming, and networking concepts and techniques are available in the supplemental videos, but it's essential that students  understand how to read/write Java code examples.

  • +

    Course Format

    This MOOC consists of both live and recorded lectures, with integrated quiz questions designed to ensure students understand the material covered in the lectures.  There will also be the following graded material:

    • Weekly quizzes. Each quiz will contain a number of equally-weighted questions. There will be four weekly quizzes.
    • Programming assignments. You will have N programming assignments (where N == ~3) by the end of the MOOC. You will have roughly 14 days to submit your solution. Each assignment will account for 1/Nth of the total programming assignment points, so it's possible to miss an assignment and still pass the class as long as you do well on the other assignments.  

    Signature TrackCoursera offers the Signature Track to verify the identity of students. Students in the Signature Track can receive a Verified Certificate, which involves earning a final grade greater than or equal to 70% on the quizzes, as well as completing the programming assignments with a score equal to 70% or higher.  It's  mandatory for students in the Signature Track to successfully achieve a Verified Certificate to be eligible to take the Capstone project at the end of the MoCCA Specialization.

  • +

    Suggested Reading

    Although the lectures are designed to be largely self-contained, it's recommended (but not required) that students refer to the following books:

    • Mark Murphy, The Busy Coder's Guide to Android Development, CommonsWare.
    • Goetz et al., Java Concurrency in Practice, Addison-Wesley, 2006.
    • Doug Lea, Concurrent Programming in Java, Prentice Hall, 1999.
    • Gamma et at., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, Reading, MA, 1995.
    • Buschmann et al., Pattern-Oriented Software Architecture, Vol 1: A System of Patterns, Wiley and Sons, 1996.
    • Schmidt et al., Pattern-Oriented Software Architecture, Vol 2: Patterns for Concurrent and Networked Objects, Wiley and Sons, 2000.
    • Buschmann et al., Pattern-Oriented Software Architecture:, Vol 4: A Pattern Language for Distributed Computing, Wiley and Sons, 2007.
    • Buschmann et al., Pattern-Oriented Software Architecture, Vol 5 On Patterns and Pattern Langauges, Wiley and Sons, 2007.Much of this material is available online.

Course Fee:

Course Type:


Course Status:



1 - 4 hours / week

Attended this course?

Back to Top

Awards & Accolades for MyTechLogy
Winner of
Top 100 Asia
Finalist at SiTF Awards 2014 under the category Best Social & Community Product
Finalist at HR Vendor of the Year 2015 Awards under the category Best Learning Management System
Finalist at HR Vendor of the Year 2015 Awards under the category Best Talent Management Software
Hidden Image Url

Back to Top