Pattern-Oriented Software Architectures: Programming Mobile Services for Android Handheld Systems

Provided by:
8/10 stars
based on  8 reviews
Provided by:
Cost FREE
Start Date TBA
Pattern-Oriented Software Architectures: Programming Mobile Services for Android Handheld Systems

Course Details

Cost

FREE

Upcoming Schedule

  • TBA

Course Provider

Coursera online courses
Coursera's online classes are designed to help students achieve mastery over course material. Some of the best professors in the world - like neurobiology professor and author Peggy Mason from the University of Chicago, and computer science professor and Folding@Home director Vijay Pande - will supplement your knowledge through video lectures. They will also provide challenging assessments, interactive exercises during each lesson, and the opportunity to use a mobile app to keep up with yo...
Coursera's online classes are designed to help students achieve mastery over course material. Some of the best professors in the world - like neurobiology professor and author Peggy Mason from the University of Chicago, and computer science professor and Folding@Home director Vijay Pande - will supplement your knowledge through video lectures. They will also provide challenging assessments, interactive exercises during each lesson, and the opportunity to use a mobile app to keep up with your coursework. Coursera also partners with the US State Department to create “learning hubs” around the world. Students can get internet access, take courses, and participate in weekly in-person study groups to make learning even more collaborative. Begin your journey into the mysteries of the human brain by taking courses in neuroscience. Learn how to navigate the data infrastructures that multinational corporations use when you discover the world of data analysis. Follow one of Coursera’s “Skill Tracks”. Or try any one of its more than 560 available courses to help you achieve your academic and professional goals.

Provider Subject Specialization
Humanities
Sciences & Technology
4733 reviews

Course Description

The confluence of multi-core and distributed-core processors, inexpensive mass storage, ubiquitous wireless connectivity, and commodity software platforms is driving the need for software engineers and programmers who understand how to develop concurrent and networked software for mobile devices that connect to cloud computing platforms. Despite many improvements in processors, storage, and networks, however, developing quality software on-time and on-budget remains hard. Moreover, developing high quality _reusable _ concurrent and networked software apps and services is even harder. The principles, methods, and skills required to develop such software are best learned by attaining mastery of _patterns_, _pattern languages_, and _frameworks_. A [pattern](http://en.wikipedia.org/wiki/Software_design_pattern) describes a reusable solution to a common problem that arises within a particular context. When related patterns are woven tog... The confluence of multi-core and distributed-core processors, inexpensive mass storage, ubiquitous wireless connectivity, and commodity software platforms is driving the need for software engineers and programmers who understand how to develop concurrent and networked software for mobile devices that connect to cloud computing platforms. Despite many improvements in processors, storage, and networks, however, developing quality software on-time and on-budget remains hard. Moreover, developing high quality _reusable _ concurrent and networked software apps and services is even harder. The principles, methods, and skills required to develop such software are best learned by attaining mastery of _patterns_, _pattern languages_, and _frameworks_. A [pattern](http://en.wikipedia.org/wiki/Software_design_pattern) describes a reusable solution to a common problem that arises within a particular context. When related patterns are woven together they form a [pattern language](http://en.wikipedia.org/wiki/Pattern_language) that defines a vocabulary and a process for the orderly resolution of software development problems. A [framework](http://en.wikipedia.org/wiki/Software_framework) is an integrated set of components that collaborate to provide a reusable architecture for a family of related apps or services. Frameworks can also be viewed as concrete realizations of pattern languages that facilitate direct reuse of detailed design and source code. This MOOC describes _by example_ how to apply patterns, pattern languages, and frameworks to alleviate the complexity of developing concurrent and networked software for mobile devices via the use of object-oriented design techniques, [Java](http://en.wikipedia.org/wiki/Java_\(programming_language\))programming language features, and [Android ](http://developer.android.com/)middleware. An extended case study project will be used throughout the MOOC to showcase pattern-oriented software design and programming techniques for concurrent and networked mobile devices and clouds. **Note: This course is part of a trans-institution sequence of MOOCs entitled [Mobile Cloud Computing with Android](https://www.coursera.org/specialization/mobilecloudcomputing/2)** This MOOC and two others, taught by Dr. Adam Porter from the University of Maryland and Dr. Jules White from Vanderbilt University, have been designed to complement each other as part of the first trans-institution sequence of MOOCs taught on the Coursera platform, structured as follows: * The University of Maryland MOOC, [Programming Mobile Applications for Android Handheld Systems](https://www.coursera.org/course/android), will run from January 21st - April 28th. It focuses on the design and programming of user-facing applications. * The first Vanderbilt MOOC in the sequence, [Programming Mobile Services for Android Handheld Systems](http://www.coursera.org/course/posa), will run from May 12th - July 6th. It focuses on middleware systems programming topics, such as synchronous and asynchronous concurrency models, background service processing, structured data management, local inter-process communication and networking, and integration with cloud-based services. * The second Vanderbilt MOOC in the sequence, [Programming Cloud Services for Android Handheld Systems](http://www.coursera.org/course/mobilecloud), will be run from July 21st - September 29th. It focuses on how to connect Android mobile devices to cloud computing and data storage resources, essentially turning a device into an extension of powerful cloud-based services on popular cloud computing platforms, such as Google App Engine and Amazon EC2. * The final Capstone project MOOC in the sequence will run from October 1st - November 3rd. For this first offering of the Mobile Cloud Computing with Android (MoCCA) Specialization only students in the Signature Track who receive a "Verified Certificate with Distinction" are eligible to enroll in the Capstone project course. Some of the programming assignments and the iRemember integrative project for these MOOCs will be coordinated. If you just want to take some of the MOOCs in this sequence or take them all in different order you’re certainly welcome to do so, and you’ll still learn a lot. However, if you take all the MOOCs in this sequence in the order presented you’ll gain a deeper, end-to-end understanding of handheld systems, their applications and services, as well as their integration into the cloud.
Reviews 8/10 stars
8 Reviews for Pattern-Oriented Software Architectures: Programming Mobile Services for Android Handheld Systems

Ratings details

  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars

Rankings are based on a provider's overall CourseTalk score, which takes into account both average rating and number of ratings. Stars round to the nearest half.

Sort By
Connie profile image
Connie profile image
10/10 starsCompleted
  • 10 reviews
  • 9 completed
5 years, 3 months ago
Like: Covers AsyncTask, Handler, IntentService, Service and design patterns in details. Provide test cases to students to verify correctness of their code Dislike: Need to peer grade assignments every week and run unit test codes to check correctness. This can be done by auto-grader easily.
Was this review helpful? Yes1
 Flag
Jeanne Boyarsky profile image
Jeanne Boyarsky profile image
6/10 starsCompleted
  • 33 reviews
  • 29 completed
5 years, 4 months ago
Like most courses, this one was a mix of video, quizzes and assignments. The quizzes were mainly for you to review. Most of the questions were embedded in the video so they were “are you paying attention” quizzes rather than allowing you to reflect. And you can take the quiz up to 100 times so you could just write down the answers if you wanted. Or you can use them like flashcards to review. The assignments used peer review for grading rather than an auto grader. Which was bizarre to me given that unit tests were supplied. If the code can be unit tested, I don’t see why they can’t be auto-graded. You also had to peer review five assignments. This was more interesting in previous courses. In this one, the assignments were fill in the blanks so there wasn’t much variety. This made it feel tedious. I’m glad that I am fluent in java because I felt a gap between the lectures and the ability to do the assignments. I did think it was n... Like most courses, this one was a mix of video, quizzes and assignments. The quizzes were mainly for you to review. Most of the questions were embedded in the video so they were “are you paying attention” quizzes rather than allowing you to reflect. And you can take the quiz up to 100 times so you could just write down the answers if you wanted. Or you can use them like flashcards to review. The assignments used peer review for grading rather than an auto grader. Which was bizarre to me given that unit tests were supplied. If the code can be unit tested, I don’t see why they can’t be auto-graded. You also had to peer review five assignments. This was more interesting in previous courses. In this one, the assignments were fill in the blanks so there wasn’t much variety. This made it feel tedious. I’m glad that I am fluent in java because I felt a gap between the lectures and the ability to do the assignments. I did think it was nice that the assignments were stored on github. The first few assignments were core Java. The rest were Android. There was an emphasis on reading code which was nice. One assignment was even about finding security issues in code. I liked the premise of this. In practice, I had to use the hints/spoilers in the forum to figure out WHICH security holes in the code were the ones we were supposed to be going after. This is the first class I took where the “virtual office hours” had essential content. I’m puzzled why they weren’t just videos in coursera since they were so important. There was one assignment based on the previous corse in the series. It didn’t assume you knew anything/got it working in the previous course, which makes sense. I did find the topic interesting - design patterns in Android. And the professor was around *a lot* interacting with the students.
Was this review helpful? Yes0
 Flag
Student profile image
Student profile image

Student

4/10 starsCompleted
5 years, 6 months ago
Dislike having to do 5 evaluations of other students for every assignment. Actually because of this I strongly regret enrolling in the course. The auto- grader should have been used instead. The peer grading is fine for the final project but to do 5 peer evaluations for every single assignment is too much. This is a huge turn-off for me.
Was this review helpful? Yes2
 Flag
Robert Davis profile image
Robert Davis profile image
10/10 starsCompleted
  • 16 reviews
  • 16 completed
5 years, 5 months ago
This class is full of information and instruction. The lectures cover nearly every aspect of concurrent programming on the Android platform. You will learn about the many ways to do synchronous and asynchronous application design. In addition to android specific implementations, you will be given a healthy introduction into 'Design Patterns'. The concepts of several design patterns, and their purpose, will be part of nearly every lecture. The instructor is very knowledgeable and very active in the forums. For my iteration of the class (Spring 2014) there were even 'virtual office hours' every week. This was really nice because we did them live over Google+ and you could interactively ask questions directly to the professor. (The first I have seen in any MOOC I have taken in three+ years) I would recommend this class to any potential Android programmer that wants to create professional apps. You will need to have a good-to-strong unde... This class is full of information and instruction. The lectures cover nearly every aspect of concurrent programming on the Android platform. You will learn about the many ways to do synchronous and asynchronous application design. In addition to android specific implementations, you will be given a healthy introduction into 'Design Patterns'. The concepts of several design patterns, and their purpose, will be part of nearly every lecture. The instructor is very knowledgeable and very active in the forums. For my iteration of the class (Spring 2014) there were even 'virtual office hours' every week. This was really nice because we did them live over Google+ and you could interactively ask questions directly to the professor. (The first I have seen in any MOOC I have taken in three+ years) I would recommend this class to any potential Android programmer that wants to create professional apps. You will need to have a good-to-strong understanding of the Java language before you begin. An understanding of the basics of Android will also be required.
Was this review helpful? Yes1
 Flag
Jan Volhejn profile image
Jan Volhejn profile image
8/10 starsCompleted
  • 1 review
  • 1 completed
6 years, 3 months ago
I am SW analyst, not developer. I took this course to get high-level knowledge of the subject, without focus on practical programming. For this purpose the course is excellent. Pros: \- very well prepared videos and slides, better than most other Coursera courses, \- good presentation, \- exquisite personal feedback in discussion forums, \- many links to useful resources. Cons: \- essays are not the best form of assignment in a CS course with international audience, \- there is a gap between the course lectures and the ability to complete the programming assignments (I gave up some of the last ones). I liked the course, it gave me what I wanted. For programming professionals it can be disappointment.
Was this review helpful? Yes0
 Flag
Jan Bosch profile image
Jan Bosch profile image
2/10 starsTaking Now
  • 3 reviews
  • 0 completed
6 years, 7 months ago
The concept of the course is attractive, but its execution is deeply flawed. So flawed in fact that I have serious doubts about the educational value of this course. The main problems stem from the disconnection between the lectures and the assessments. The lectures are quite high level and abstract, which is fine for the subject matter. The assessments are either mickey mouse quizzes, essay-like questions or, for week 4-5 on patterns not seen during the lectures, for week 6 it is based on frameworks which either involve a lot of cut and pasting (if you are in hurry and don't want to learn anything) or a huge (20 hours+) worth of effort to understand the underlying frameworks being used. Adding to this is the fact that programming assessments are peered marked by people who are, by definition, only average at the course itself. No official solution is ever provided prior to the evaluations or afterwards (the blinds leading the blinds... The concept of the course is attractive, but its execution is deeply flawed. So flawed in fact that I have serious doubts about the educational value of this course. The main problems stem from the disconnection between the lectures and the assessments. The lectures are quite high level and abstract, which is fine for the subject matter. The assessments are either mickey mouse quizzes, essay-like questions or, for week 4-5 on patterns not seen during the lectures, for week 6 it is based on frameworks which either involve a lot of cut and pasting (if you are in hurry and don't want to learn anything) or a huge (20 hours+) worth of effort to understand the underlying frameworks being used. Adding to this is the fact that programming assessments are peered marked by people who are, by definition, only average at the course itself. No official solution is ever provided prior to the evaluations or afterwards (the blinds leading the blinds). There is a distinct feeling of being guinea pigs on this course (every attempt at criticism is met with "we welcome suggestions for improvements through crowd sourcing ..."). I guess it looks like a professor with outdated course material (based on the ACE framework) is looking to develop new resources on the cheap for his own course. This might be a severe comment but it feels that way. It is a shame, because the professor is likeable, but the assessments are a big shamble. Unless you know a lot about the subject matter (10 years+ writing code using patterns for concurrent and networked software) you will waste your time, unless of course you totally ignore the assessments. If only I had known the poor design of the assessments I would never have considered this course. PS to see how programming courses can be assessed properly, look at the Scala course! >>> the course is now over and I am really sorry I wasted my time on it; it was such a mish mach
Was this review helpful? Yes1
 Flag
Student profile image
Student profile image

Student

8/10 starsCompleted
6 years, 5 months ago
This is not a course for people learning to program. This is best for professionals or students formally studying software engineering. I liked a lot in the course, but there is room for improvement. I think this is really 2 or 3 courses compressed into one. I think the material would be better split into several courses with more time devoted to each topic. The assignments could use some improvement as well. They need to be better structured. They should be with a unified environment too. We were allowed to submit in almost any programming language we choose. While this would be okay for bonus or exhibition work, official assignments should be more uniform. Dr. Schmidt was the MOST interactive MOOC instructor I've ever encountered. I think he commented upon almost every discussion board thread in the class. I have no idea when he did his other work or spent time with his family.
Was this review helpful? Yes0
 Flag
Dennis Horne profile image
Dennis Horne profile image
10/10 starsCompleted
  • 24 reviews
  • 23 completed
5 years, 7 months ago
This course it is about the use of design patterns and frameworks in complex environments. It does much more than that. Prof Schmidt presents background materiel enabling students who are not overly familiar with topics such as OO programming, UML diagrams to get up to speed. The lecture materiel is excellent, furnished with comprehensive background links and papers supporting further learning. You can even complete the course and achieve a certificate without submitting programming assignments if pressed for time. The technical quality of the lectures is outstanding. I have taken many MOOC courses over the past 18 months, this is the best production quality I have seen. The promo video opposite does not do justice to the actual lectures. The lectures are supported by slick, colourful , sometimes animated slides, with Prof Schmidt delivering the materiel in his engaging style. A 100 level background in programming and software, C++ o... This course it is about the use of design patterns and frameworks in complex environments. It does much more than that. Prof Schmidt presents background materiel enabling students who are not overly familiar with topics such as OO programming, UML diagrams to get up to speed. The lecture materiel is excellent, furnished with comprehensive background links and papers supporting further learning. You can even complete the course and achieve a certificate without submitting programming assignments if pressed for time. The technical quality of the lectures is outstanding. I have taken many MOOC courses over the past 18 months, this is the best production quality I have seen. The promo video opposite does not do justice to the actual lectures. The lectures are supported by slick, colourful , sometimes animated slides, with Prof Schmidt delivering the materiel in his engaging style. A 100 level background in programming and software, C++ or Java and basic understanding of object oriented design would help as a pre-requisite, otherwise the workload will be higher. I would strongly recommend anyone studying Software Engineering at University to consider doing this in parallel. It will reinforce your own studies and give you a distinctly unfair advantage with respect to your peers. For those of us out in the field, this is career enabling high quality education. The only comment I would make is that there is so much in this course, it could have been split into two offerings. Note this was a review for the 2013 offering. For 2014, it evolved into 3 courses combining into an entire Coursera specialization track Android/Java centred. That group won't finish until ~September.
Was this review helpful? Yes0
 Flag

Rating Details


  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars

Rankings are based on a provider's overall CourseTalk score, which takes into account both average rating and number of ratings. Stars round to the nearest half.