-
Notifications
You must be signed in to change notification settings - Fork 187
FAQ
- What are the course learning objectives?
- What is the schedule of the MOOCs?
- What is the format of the MOOCs?
- How do these MOOCs compare/contrast with courses at Vanderbilt?
- What are your assumptions about--and expectations for--learners taking this MOOC?
- What is the most effective way to learn material covered in the course and to successfully complete the programming assignments?
- Can learners take this course if they have little/no prior experience programming Android and/or Java?
- Why are there so many URL links embedded at the bottom of the slides?
- What is the teaching staff policy for monitoring and answering discussion forum threads and questions?
- How many and what types of quizzes and programming assignments will there be in this MOOC?
- How can learners understand and learn the material in the videos most effectively?
- When will the final grades and certificates be available after the MOOC ends?
- **Are learners allowed to work in teams or leverage work done by others in their solutions?
- Will there be a Statement of Accomplishment or a "with distinction" certificate for learners who complete this class?
- Who is eligible to take the Specialization Capstone project course?
- Can the software examples shown in this MOOC be used by learners for the programming assignments and/or other projects?
- Why are fields in the example code and assignments prefixed with 'm'?
- Is it necessary to take the MOOCs in the Specialization in a particular order?
- Can Eclipse be used as the development environment for the MOOCs?
- Is there a required textbook?
- Where can learners learn about how to configure their Android and Java environment to run the examples and complete the programming assignments?
- Where can learners learn more about patterns and frameworks?
- Which versions of software are required for the MOOCs
- Can learners use programming language [X] for the course?
- Where are the slides and source code presented in the videos and the code skeletons provided for the programming assignments?
- Is it necessary to watch the lecture videos prior to doing the programming assignments?
- Will the source code for the programming assignment solutions be made available or presented?
- Can 3rd-party concurrency/image/networking libraries or frameworks be used for the programming assignments?
- How can learners get help if their solutions to the programming assignments aren't working?
- How long will the course material be available online after the MOOC ends?
- Where is the source code that corresponds to the pathnames embedded in the slides shown in the videos?
- Will there be much flexibility in the schedule of deadlines for programming assignments in these MOOCs?
- How closely aligned will the programming assignments be between MOOCs in the MoCCA Specialization?
- How will the programming assignments be obtained, submitted, and assessed?
- Will the links in the MOOC lecture videos be made clickable and/or consolidated into a single convenient location?
- Can learners do extra assignments to improve their grade?
- How can learners keep informed about important due dates for assignments?
- How many hours per week will be required for these MOOCs?
- What are some consequences of the "massiveness" of a MOOC?
- How much of the Android software stack is covered by the this Specialization?
- Can learners use public source code repositories to store their solutions to the programming assignments?
- Who will define the projects implemented in the Capstone Projects Course?
- Which videos have in-video quizzes?
- How much of a focus on patterns and frameworks will there be in this MOOC?
- What resources can be used for the weekly quizzes?
- Are there other programs learners can write to get experience with more advanced Android concurrency and communication mechanisms if they find the programming assignments too easy?
- Where is more information available on Android internals?
- What can be done if the audio is out of sync with the video stream when viewed from the course website on Coursera?
- What is the best way to handle null references in Java?
- What are rules for choosing the appropriate Android Context?
- How can we convince our colleagues and management of the value of patterns and frameworks in practice?
- Is there a way to get the Android Virtual Device (AVD) emulator to run faster?
- Is it permissible to reuse the code provided in the previous MOOCs for the Capstone project?
- What is a "hook method"?
- What is the meaning of the "Reference:" line in the auto-grader output?
- Where can we learn more about the "Mobile Cloud Computing with Android" Specialization?
- What should I do if the overview lessons on Java in Module 1 are too conceptual to understand?
- What field should I use to print a string to the user in skeleton code?
- Why are my submissions to the auto-grader failing?
- What needs to be done to pass the MOOCs?
- Why am I getting weird errors from Android Studio?
- Can we access the quizzes and programming assignments if we're just auditing the MOOCs?
- What are optional peer-graded assignments and should I complete them?
- What happens if I can't complete all the programming assignments by the stated deadlines?
- I submitted a long time ago so why have I received only a few "feedback on my submission" notices?
- What does it mean when the auto-grader reports "Compile Error: Error 37"?
- Where is the source code for the examples in the lessons in the Android Studio module?
- Why aren't there graded programming assignments in MOOCs 2 and 3?
- Where can we learn more about the HaMeR and AsyncTask concurrency frameworks?
- Are Fragments covered in this Specialization?
- What is a "web service" in the context of the Capstone project specification?
- Where can we learn how to install Git and GitLab?
- How can we fix errors with Android emulator/device?
- Where are the online resources for the Engineering Android Apps MOOC?
- Who is eligible to take the Capstone project course?
- What level of detail and completeness should be used for the design documents and prototypes for each Capstone milestone?
- What sort of feedback should we give to learners whose Milestone submissions are very sparse?
- Is it permissible to reuse the code provided in the previous MOOCs for the Capstone project?
- Are learners allowed to work in teams or leverage work done by others in their solutions?
-
What are the Specialization learning objectives?
Upon completing this specialization, learners should be able to:
-
Understand the key object-oriented features needed to program Java for Android
-
Know how to install Android Studio and apply it and other tools to develop & debug Android Apps.
-
Know where to find additional sources of information on how to program mobile apps on Android handheld systems.
-
-
What is the schedule of the MOOCs?
These MOOCs run for 4 weeks. There will be periodic programming assignments that will have a deadline, which will be clearly marked on the MOOC websites and in the course calendar available by clicking on the calendar icon next to the "Upcoming Deadlines" label. This calendar is automatically updated as the material is released. The programming assignments will be based on material covered in both the live and pre-recorded lectures (but not the Supplemental lectures discussed in FAQ item #3).
The programming assignments will be available online once the MOOC starts. Please see FAQ item #34 to learn how the programming assignments will be obtained, submitted, and assessed. Assignments will be due at least two weeks from when they are released. Likewise, there will be weekly quizzes, released by the middle of each week, though their due dates will all be the last day of class so you can take them as time permits. There won't be any "late dates" for quizzes since they are due the last day of class.
-
What is the Format of the MOOCs?
These MOOCs use recorded lessons. To master the material and succeed with the programming assignments we recommend watching the recorded lessons.
-
How do these MOOCs compare/contrast with courses at Vanderbilt?
The material in these MOOCs are based on freshmen and sophomore-level undergraduate courses taught at Vanderbilt, such as the [CS 101] and CS 251 courses, which focus on teaching mobile software development at both a conceptual level (e.g., an understanding of software patterns, object-oriented design, and frameworks) and a practical level (e.g., experience programming Android applications using Java, Android Studio, and Git). Learners in the Vanderbilt courses are expected to be capable with learning with Java, Android Studio, and source code control systems and capable of mastering new material without significant hand-holding by the teaching staff. Naturally, the quizzes, programming assignments, and degree of feedback for the Vanderbilt courses are somewhat different from the MOOCs since the Vanderbilt courses have many fewer learners (instead of ~20,000 learners), which enables significantly more personalized guidance and in-depth assessments from the teaching staff that can't be replicated in a MOOC (yet).
-
What are your assumptions about--and expectations for--learners taking this MOOC?
As mentioned in FAQ item #4, this MOOC is based on material we teach to undergraduate learners at Vanderbilt. This MOOC is intended for self-motivated learners who
- Have basic computer literacy skills, such as knowing how to send and receive emails, browse the web, participate in discussion forums, and upload and download files on websites
- Want to understand both the concepts and practice of developing mobile software applications and services
- Are curious about how the Android software stack itself is designed and implemented
- Are willing/able to carefully read/follow the instructions in the course assignments and announcements.
Learners who are just interested in vocational training (e.g., having an instructor walk through application code projects step-by-step and line-by-line in the Android development environment) may not find this MOOC suitable for their needs since our goal is to help learners learn techniques and methods for finding solutions, not simply spoon-feeding the solutions . Moreover, this MOOC covers certain topics associated with engineering quality mobile software development that may not be of interest to learners who just want training on the Android APIs, so for those learners we recommend others sources, such as the Android Application Development Tutorials on YouTube. Likewise, learners who don't have time/interest in following the instructions/announcements carefully are welcome to take this MOOC, but they will need to adjust their expectations since the course is not designed for them, due to factors discussed in FAQ item #39.
-
What is the most effective way to learn material covered in the course and to successfully complete the programming assignments?
We recommend watching the videos multiple times, looking for different levels of meaning in the diagrams and the examples. It's particularly important to carefully watch all the videos referenced in the programming assignment descriptions since they provide many relevant tips and insights. Likewise, we recommend reading the material pointed to by links in the slides, as well as material from the (optional) suggested reading. Naturally, participating in the online discussion forum (and ideally, a meetup group if one is available in your area) will help make the course material more engaging and personalized.
-
Can learners take this course if they have little/no prior experience programming Android and/or Java?
Our Specialization does not assume that learners have prior experience programming in Java and or Android apps. We'll cover these topics starting in the first MOOC in the Specialization. If you'd like to gain additional Java programming background you might consider taking the MOOC Java Programming: An Introduction to Software, the Java for Complete Beginners course, and/or watching my videos on Introduction to Java in the YouTube playlist for my CS251 course at Vanderbilt. Likewise, you might also benefit from the Creative, Serious and Playful Science of Android Apps MOOC, which is a novice-friendly introduction to computer science and programming Android apps for smart-phones and tablets. We encourage you to apply the Lazy Acquisition pattern in these MOOCs, i.e., watch the videos, keep track of what you know understand, and then use the resources available to you (e.g., via the web and the discussion forums) to fill in the gaps in your knowledge. One of the best things about MOOCs is that you can go through this material at your own pace, and there's really no penalty for retaking a MOOC if you struggle with it the first time through!
-
Why are there so many URL links embedded at the bottom of the slides?
Many topics we cover in this MOOC Specialization are technically deep. Given our limited time and resource constraints, we can't possibly address all this material in a single MOOC or even a single Specialization! Yet many learners may benefit from learning more about these topics, either during or after the MOOCs. Therefore, when there's additional pertinent information on a topic that we can't cover in our videos, we provide links in the PDF versions of the slides that learners can download from the MOOC Video Lectures pages. These links point to material on the web so that learners can read as their interests and time permits. We particularly recommend taking a look at the Java online tutorials and the Android API documentation. Following up on all the links listed in the lessons is a rewarding, albeit time consuming task. In fact, we term these videos "Lembas Lectures" since a small dose of them can keep a learner nourished (intellectually) for days! However, none of the quizzes will involve questions related to this material, so learners can read them at their leisure.
-
What is the teaching staff policy for monitoring and answering discussion forum threads and questions?
The teaching staff will endeavor to reply to thoughtful technical questions as time permits. Often, the responses will point to other resources (such as this FAQ or to video lectures) so that learners can learn the details of the solutions on their own, which is more effective pedagogically. Questions posted anonymously will receive little/no attention from the teaching staff since we want to get to know the learners in the MOOC so the learning environment will be more like a face-to-face course. Due to extremely limited teaching staffing resources, questions about installing or using Android Studio, Git, the Android Virtual Device emulator, debugger, etc. will need to be addressed by Community TAs and/or other learners taking this MOOC. Step-by-step instructions on how to setup an Android development environment using Android Studio are available here.
Before posting on the forums, it's important to read, understand, and follow the Coursera Forum Code of Conduct. In particular, rants and flames (such as "Android sucks," "Language X is better than Java," "Patterns are bad," or "I hate these lectures") will be ignored and/or removed since they generate much more heat than light and disrupt the learning process. Moreover, insulting, condescending, disrespectful, or abusive postings will not be tolerated and will result in learners being removed from the course.
-
How many and what types of quizzes and programming assignments will there be in this MOOC?
There will be weekly quizzes, all of which will be auto-graded. The due dates for these quizzes will be the last day of class so you can take them as time permits. There won't be any "late dates" for quizzes since they are due the last day of class.
There will also be multiple programming assignments in each of these MOOCs. Although these assignments may vary a bit from MOOC to MOOC to keep the material fresh and relevant, they will enable you to demonstrate mastery of each Java feature we cover. Each programming assignment will be peer assessed, as described in FAQ item #34. The assignments will vary for each MOOC offering. All source code examples and assignment skeletons are available via GitLab.
-
How can learners understand and learn the material in the videos most effectively?
There is no one rate of speaking that's appropriate for all learners. For learners whose native language is not English--or for any learners who find the rate at which the material is presented in the videos too fast to comprehend--we recommend that you decrease the rate at which you play the videos to 0.8x or slower (naturally, for material that you're already familiar with, you might want to increase the rate at which the video plays!). If you need instructions on how to change the rate of playback speed for YouTube videos please do a google search for information about the browser that you're using.
After the MOOCs start you'll also be able to download the videos and use the media player on your computer to obtain fine-grained control over the playback speed. The Coursera platform also provides English subtitles for all the videos based on the scripts we used to record them originally. In addition, downloading PDF versions of the slides and reviewing them prior to watching the videos may aid with comprehension.
Learners may also consider watching the videos multiple times, focusing on different aspects of the material each time (e.g., listening to the voice track, looking at the code and diagrams on the slides, etc.). If you have time, you might also want to read the material referenced by the links provided at the bottom of many slides, which are listed in the wiki maintained by learners.
-
When will the final grades and certificates be available after the MOOC ends?
The final grades and certificates are typically available 2-3 weeks after the MOOC ends. Coursera is responsible for releasing the certificates, not the MOOC teaching staff.
-
Are learners allowed to work in teams or leverage work done by others in their solutions?
No, learners must work individually on their projects. Learners are welcome to use portions of their solutions to assignments in earlier MOOCs in the Specialization, example code provided by the instructors and course staff, or preexisting work (e.g., 3rd party libraries) that's licensed for reuse, as long as it's clear where all the code written by others besides each student is taken from. However, it's a violation of the Honor Code to get help from others for code or design artifacts created specifically for the Capstone project, including things like logos, bars, pictures, etc.
-
Will there be a Statement of Accomplishment or a "with distinction" certificate for learners who complete this class?
No, the only documented way of receiving credit for this MOOC is via the Signature Track, where learners who achieve the stated criterial receive a "Verified Certificate." Moreover, there's only one track, i.e., there are no "normal" vs. "with distinction" tracks. If you want to be eligible to take the Capstone project course, you'll also need to follow the instructions described in the next FAQ entry below.
-
Who is eligible to take the Specialization Capstone project course?
Like all Coursera Specializations, the Capstone project course is only available to learners who take the Signature Track for the preceding MOOCs in the Specialization. Moreover, only learners in the Signature Track who receive a "Verified Certificate" in all preceding MOOCs prior to the start of the Capstone project course are eligible to enroll.
-
Can the software examples shown in this MOOC be used by learners for the programming assignments and/or other projects?
Yes, it's fine to use any of the example code provided by the teaching staff in programming assignment solutions. Please see the MOOC open-source license for details on how to use the software examples shown in this MOOC in other projects.
-
Why are fields in the example code and assignments prefixed with 'm'?
This naming convention is used throughout all the Android source code, which is available for browsing online here or for downloading here.
-
Is it necessary to take the MOOCs in the Specialization in a particular order?
If you just want to take some of the courses in this sequence--or take them all in different order or take them all at the same time--you're certainly welcome to do so, and you'll still learn a lot. However, the material in each MOOC assumes you've mastered the material in previous MOOCs, so if you don't have this knowledge you may be lost (see FAQ item #7 about for suggestions on what you'll need to know and how to learn it). Naturally, if you take all the courses 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. Moreover, if you want to take the Capstone project course you'll ultimately need to successfully complete all the MOOC in the Specialization, as described in FAQ item #15.
-
Can Eclipse be used as the development environment for these MOOCs?
We recommend you use Android Studio since it works much better with recent versions of Android. Please see FAQ item #23 for more details.
-
There is no required textbook, per se. There's lots of information available in the videos, slides, and the URLs mentioned in the slides that will help you learn the material we cover in this class. For deeper mastery of the material, however, please see the list of "Suggested Reading" on the POSA course webpage for a list of books that are closely related to the topics of the course.
-
Where can learners learn about how to configure their Android and Java environment to run the examples and complete the programming assignments?
Programming assignments for these MOOCs will use the Android Studio environment. Instructions on how to setup the software development environment is available here. If you're using a different development environment (such as Android Studio) or a different build tool (such as Maven) you'll need to enlist the help of the Community TAs and other learners on the online discussion forum.
-
Where can learners learn more about patterns and frameworks?
The best ways to learn more about patterns and frameworks involve:
- Reading the patterns and frameworks literature (e.g., the GoF and POSA books)
- Reading lots of pattern- and framework-oriented software (e.g., java.utils.concurrent, Android source code, the examples from these MOOCs, etc.) and mapping the patterns from the literature to the patterns in the software
- Writing lots of pattern-/framework-oriented software and continually refactoring your code using different patterns to hone your intuition.
Naturally, this process doesn't happen overnight - we've been doing this for 20+ years and we still learn something new nearly every day!
Other videos about patterns and frameworks appeared in Section 2 and the Appendix of the Spring 2013 offering of the POSA MOOC. If you're a Safari online book club member you should check out the Design Patterns in Java video training series that covers the "Gang-of-Four" design patterns. You may also want to try implementing the assignments given in my CS 282 and CS 251 classes at Vanderbilt.
-
Which versions of software are required for these MOOCs
The following software is required for MOOC 1 (Java for Android) in this specialization:
- Android version 5.x (e.g., API version 22), also known as "Lollipop"
- Java 7
- Android Studio version 2.1.x or later (whichever you prefer)
Likewise, the following software is required for all the other MOOCs (i.e., 2, 3, 4, and 5) in this specialization:
- Android version 7.x (e.g., API version 24 or 25), also known as "Nougat"
- Java 8
- Android Studio version 2.4.x or later (Java 8 support is much better starting in Android Studio version 2.4, as discussed here)
You're welcome to use whatever Android version works best for you during development, but make sure that your solution works with the versions listed above to avoid inconsistencies during the assessments. In addition, Coursera recommends using the Chrome and Firefox browsers to view the course material. There's also a mobile app for Coursera MOOC, as well.
-
Can learners use programming language [X] for the course?
The programming assignments in the Android portion of this course are designed for the Java programming language. Although you're welcome to use other languages on Android for your personal edification, if you stray from Java you'll have more work to do to map what we're covering in the videos and projects to the languages you want to use. You may also find it hard to get feedback on your work via the Coursera peer-grading system.
-
Where are the slides and source code presented in the videos and the code skeletons provided for the programming assignments?
PDF versions of the slides are available for download along with the videos. The PDFs are available below the videos. The PDF versions of the slides have clickable links to make it easy to navigate to the supplemental material referenced in the slides. The source code examples referenced in the slides can be obtained by clicking on the corresponding links. Likewise, the code skeletons for the programming assignments are available at the links describing the assignments.
We've created GitLab repositories containing example code for some of the MOOCs in the Specialization (though not the first MOOC). Each repository can be accessed via links provided in the lecture slides. You can either install/use Git to access each folder in the repository or you can download it in a single zip file. We recommend you learn to use Git rather than downloading the zip file.
You can browse the latest/greatest Android source code online here or download it here. Likewise, you can browse the latest/greatest Java source code online here or download it here. For example, if you want to find implementations of the ArrayList class (both Java) simply google "ArrayList site:android.googlesource.com" in your browser and you'll get a list of relevant links containing the implementations.
-
Is it necessary to watch the lecture videos prior to doing the programming assignments?
Yes, because the lecture videos provide many relevant hints and tips for completing the programming assignments correctly. Moreover, the teach staff will ignore any questions that could be answered by watching the lecture videos, so make sure to watch them prior to starting the assignments.
-
Will the source code for the programming assignment solutions be made available or presented?
Unfortunately there are no presentations of any source code for the MOOC assignment solutions. Due to the way that Coursera's new MOOC content management platform works the moment an assignment solution is made available the assignment becomes worthless since anyone can simply watch the walkthrough and resubmit their assignment for full credit. If/when Coursera changes their platform we'll reconsider this, but until then there are no solution walkthroughs since that would defeat our ability to reuse the assignments over time.
-
Can 3rd-party concurrency/image/networking libraries or frameworks be used for the programming assignments?
No 3rd-party concurrency/image/networking libraries or frameworks can be used for the programming assignments since that would require the peer reviewers to (1) install these libraries/frameworks and (2) understand these libraries/frameworks.
-
How can learners get help if their solutions to the programming assignments aren't working?
Although the teaching staff doesn't have the resources to help individual learners debug their programs, if you run into problems feel free to post your buggy code to the appropriate assignment discussion forum so that other learners can provide you tips on fixing your bugs. Please don't post working solutions to the discussion forum, however, since that violates the Coursera Code of Conduct.
-
How long will the course material be available online after the MOOC ends?
We (i.e., the faculty at Vanderbilt) will keep the videos, presentations, discussion forum postings and responses, programming assignments, etc. freely available as long as Coursera allows (quizzes are the exception to this since they are only available for students who pay). Existing material accessed in our MOOCs should therefore remain available unless Coursera removes it for some reason beyond our control. Please contact Coursera's help center with specific questions about their access policies.
-
Where is the source code that corresponds to the pathnames embedded in the slides shown in the videos?
All the Android source code referenced by the pathnames in the slides shown in the videos is available for browsing online here or for downloading here. Likewise, you can browse the latest/greatest Java source code online here or download it here. For example, if you want to find implementations of the Thread class (both Java and C++ versions) simply google "Thread site:android.googlesource.com" in your browser and you'll get a list of relevant links containing the implementations.
If you download this source code to your computer the pathnames will be relative to the top-level source directory and typically start with the bionic, dalvik, frameworks, libcore, or packages pathname prefixes. The source code shown for more examples is based on Android 5.x, which is the so-called "Lollipop" release. The code we examine, however, should be largely the same in other versions of Android, as well.
-
Will there be much flexibility in the schedule of deadlines for programming assignments in these MOOCs?
There is no flexibility in scheduling the deadlines in these MOOCs. However, there is no late penalty for submitting after an assignment's due date - you just need to pass before the session ends. Keep in mind that some Peer Review assignments may have a deadline restricting submission after 7 days past the due date. If you are not able to complete the course in this session a new session should start every few weeks. Your progress from this session will carry over to any future sessions, as discussed in FAQ item #64.
-
How closely aligned will the programming assignments be between MOOCs in the MoCCA Specialization?
The instructors for all the MOOCs are working together to ensure the projects are properly aligned, though it won't be necessary to have completed the previous project(s) in a given MOOC. Moreover, the other programming assignments in their MOOCs will reflect the focus of their respective MOOCs since (1) the topics are largely different in each MOOC and (2) there's no requirement that learners must take the MOOCs in a particular sequence, so inter-MOOC dependencies will be minimized.
-
How will the programming assignments be obtained, submitted, and assessed?
Programming assignments will be released via instructions on the MOOC websites. As long as you're using Git correctly you should have no problems merging these changes into your local copies.
Every peer-assessed programming assignment will be managed by the Coursera Peer Assessment mechanism to do the actual submissions and evaluations. The criteria for peer assessment will be specified in each assignment.
-
Will the links in the MOOC lecture videos be made clickable and/or consolidated into a single convenient location?
Learners in these MOOCs are crowd-sourcing the links from all the lecture slides and adding them to this wiki, so please contribute to this effort. All the lecture slides will be available in PDF form after the videos have been uploaded to the Coursera MOOC websites each week, so you can also access the links that way. Note that the "Introduction" videos have no associated PDF files.
-
Can learners do extra assignments to improve their grade?
No, the assignments are peer graded and thus require a non-trivial amount of work from the teaching staff and other learners in the class. As a result, there will be no extra assignments. If you are unable to complete all the assignments please feel free to retake the MOOC the next time it is offered.
-
How can learners keep informed about important due dates for assignments?
Once a MOOC session has begun, there is a calendar of events listing the due dates, etc. Likewise, reminders will be posted periodically to the Announcements page (and thus disseminated via email to all enrolled learners). Ultimately, however, learners are responsible for keeping track of the deadlines and procedures related to properly submitting the MOOC assignments. Given the large number of learners enrolled in the MOOC, there will be_no_ support for individual extensions or special handling of late or improperly submitted solutions to the assignments.
-
How many hours per week will be required for these MOOCs?
We estimate that a typical learner will spend an average of 8-10 hours per week on these MOOCs. However, there's no 100% accurate way to estimate how long any given learner will require to watch the videos and complete the quizzes and assignments each week since each person has different background, aptitude, motivation, learning style, etc. Be prepared to put in a significant amount of time if you want to get the most out of these MOOCs.
-
What are some consequences of the "massiveness" of a MOOC?
The massive number of learners in these MOOCs impacts some aspects of the course that differentiate it from a traditional face-to-face courses, such as the courses the instructors teach at Vanderbilt University. In particular:
-
The MOOC teaching staff will not provide individual feedback on learner assignments, so please don't send us email directly. See FAQ item #65 for suggestions on what to do if you run into problems.
-
Some things will inevitably go awry, e.g., peer graders will undoubtedly not follow the rubric correctly, unit tests will need to change, learners will forget to add their source code when they submit their solutions, important deadlines will be missed due to unforeseen circumstances, assignments will be modified after they are released, etc.
-
The lecture form and/or content will not be tailored to the individual needs of each learner.
Due to the massive number of learners--coupled with the very limited teaching staff--it's unfortunately sometimes the case that the instructors won't be able to "make it right" in a manner that makes everyone happy. In these situations, our goal is to maximize the opportunity for as many learners as possible to gain access to a world-class education. Other considerations (such as consistency, fairness, and accountability) are also relevant, but our first priority is to help empower learners with an education that will improve their lives.
-
-
How much of the Android software stack is covered by this Specialization?
The MOOCs that comprise this Specialization cover a wide range of Java and Android programming topics. However, this Specialization does not cover the full stack of Android and Cloud Computing software. For this additional coverage we recommend you take the Mobile Cloud Computing with Android (MoCCA) Specialization.
-
Can learners use public source code repositories to store their solutions to the programming assignments?
Please do not use public source code repositories (e.g., a freely available GitHub accounts, which are public) to store your solutions to the programming assignments. Likewise, do not post your solutions as a pull request to our Github accounts. Publically available repositories encourage learners to copy each others work, which is a violation fo the Coursera code of conduct that does not allow learners to share work unless explicitly instructed by course policies. GitLab provides freely available private accounts, so you might want to check them out.
-
Who will define the projects implemented in the Capstone Projects Course?
Learners can choose one project (from a menu of several projects) that the instructors will define. The reasons for this approach are to (1) enhance the consistency of the projects with respect to their difficulty, (2) ensure a critical mass of learners for each project who can serve as peer assessors, and (3) avoid complex legal issues associated with intellectual property. Each project will involve elements of each MOOC in the Specialization, Each learner will own the copyright on his/her solution (which must be completed individually, rather than as part of a team). However, all learner solutions must be available in open-source format to enable peer assessment.
-
Which videos have in-video quizzes?
Each module contains a quiz at the end of the module, rather than having in-video quizzes.
-
How much of a focus on patterns and frameworks will there be in this MOOC?
Patterns and framework provide the foundation for much of the material in this course. There is a short introduction to patterns and frameworks in these MOOCs and the Mobile Cloud Computing with Android (MoCCA) Specialization focuses on patterns and frameworks applied in Java and Android. Many other videos and other resources related to patterns and frameworks are also available here.
-
What resources can be used for the weekly quizzes?
You are welcome to use videos or presentation material when answering the weekly quiz questions.
-
Are there other programs learners can write to get experience with more advanced Java and Android mechanisms if they find the programming assignments too easy?
If you get bored with these programming assignments and want to try writing more interesting programs you might ry:
-
Where is more information available on Android internals?
It's worthwhile watching videos on Android's anatomy and physiology and Dalvik Virtual Machine. Although these are from 2008 they provide a good overview of how Android works internally.
-
What can be done if the audio is out of sync with the video stream when viewed from the course website on Coursera?
You might try playing the videos at a lower resolution if your browser supports this or downloading the to your computer and watching them locally.
-
What is the best way to handle null references in Java?
There's a good summary of error handling techniques for Java null references here. To avoid cluttering the solutions and distracting from the focus on concurrency and communication, the code examples in these MOOCs don't always check for null as thoroughly as production Android code should. In practice, however, we recommend that you apply consistent handling for null Java references in your code.
-
What are rules for choosing the appropriate Android Context?
See the discussions here for an overview of which Contexts to choose for different situations.
-
How can we convince our colleagues and management of the value of patterns and frameworks in practice?
As with most issues associated with IT, there's no single "silver bullet" that will convince managers and executives of the "return on investment" (ROI) value of software techniques, tools, and methods (TTMs). Instead, what's required is a long-term commitment (at both the individual and organizational levels) to invest in TTMs that provide tangible payoffs wrt things that matter to managers/executives and (arguably more importantly) to customers/sponsors). The pattern-oriented and framework-oriented TTMs presented through this MOOC are a step in the right direction -- after all, these TTMs underlie much of Android and Java, which would not be as powerful and pervasive without these TTMs. Ultimately, each individual and organization needs to devise a strategy for demonstrating the tangible benefits of patterns and frameworks to the powers-that-be in terms of ROI that they value, such as reducing software defect rates, enhancing productivity across the lifecycle (rather than just "hacking it up and shipping it out"), and increasing the resilience (e.g., to failures and cyber-attacks).
-
Is there a way to get the Android Virtual Device (AVD) emulator to run faster?
If you run on an Intel-based development machine we recommend you install the Intel Hardware Accelerated Execution Manager (HAXM), which greatly speeds up the performance of the AVD emulator. In order for HAXM to work you'll need an Intel processor with support for Intel VT-x, Intel EM64T (Intel 64), and Execute Disable (XD) Bit functionality, as well as least 1 GB of available RAM.
-
Is it permissible to reuse the code provided in the previous MOOCs for the Capstone project?
It's fine to reuse portions code provided in previous MOOCs in the Android App Development Specialization, including the various examples provided in GitHub repositories associated with the previous MOOCs. However, learners must provide substantial improvements/enhancements to any reused code so that their solutions represent their work, not simply copying what was provided earlier and claiming it as their Capstone project.
-
A hook method is a specific point in a framework-based program where developers can customize generic framework components with callbacks that the framework invokes to run application-specific logic. Hook methods in Java-based frameworks (such as Android) are typically defined by extending a super class or implementing an interface & overriding a virtual (possibly abstract) method. The run() method in a Java Thread/Runnable is a good example of a hook method that is discussed in the Week 1 lectures.
-
What is the meaning of the "Reference:" line in the auto-grader output?
The output from the auto-grader always contains a lines that mention "Reference:", as shown below. If your Rubric Score is perfect (e.g., 50.0/50.0) then you can ignore the "Reference:" line. However, if your Rubric Score is not perfect (e.g., 0.0/50.0) then the "Reference" line indicates what the problem might be, which can use to address the problem with your solution.
------------------------------Assignment Evaluation-----------------------------
--------Your solution received points for the following grading rubrics:--------
testResultRange
Rubric Score: 50.0/50.0
Goal: The goal of this evaluation is to test ResultRange
Reference: This Test fails when: calculate returns a value outside the range.
----------Your solution missed points on the following grading rubrics:---------
testCalculate
Rubric Score: 0.0/50.0
Goal: The goal of this evaluation is to test Calculate
Reference: This Test fails when: calculate returns an incorrect value.
-
Where can we learn more about the "Mobile Cloud Computing with Android" Specialization?
There's an overview of the Mobile Cloud Computing with Android (MoCCA) Specialization here. The MoCCA Specialization will start running again as soon as all the MOOCs in the Android App Development Specialization have launched.
-
What should I do if the overview lessons on Java in Module 1 are too conceptual to understand?
The goal of the overview lessons on object-oriented programming and Java features in Module 1 are intended to give a "big picture" view of these topics. Don't worry if you don't fully understand all these topics after watching the overview lessons since Modules 3-7 examine each concept and feature in greater depth, analyze detailed code walkthroughs, and reinforce the lessons with assignments that enhance your knowledge of programming Java for Android. You therefore may want to race through these intro videos now and then return later after you've finished the rest of the MOOC to rewatch them.
-
What field should I use to print a string to the user in skeleton code?
Please use the mOut field defined in the skeleton code to print a string to the user, which plays the role of the System.out field in conventional Java code, e.g.,
mOut.print("Hello");You can use mOut to print a string to the user in any method where the mOut field is visible. You can also pass mOut as a parameter to other helper methods, as needed. Make sure your code does not use System.out to print any data or else the auto-grader will fail!
-
Why are my submissions to the auto-grader failing?
The auto-grader runs on servers hosted by the Coursera platform and sometimes you'll get a message from it saying that "Grading failed". The auto-grader typically fails because your submission takes too long to run, which can occur for several reasons
-
You're using the wrong type of Java collection (e.g., an ArrayList instead of a HashMap or HashSet).
-
You have an O(n^2) solution when an O(n) solution is possible for a single simulation run.
-
You have an infinite loop in your code.
-
You have lots of logging messages, in which case the tests timeout and you'll get a 'Grading failed' message.
Therefore, make sure to consider your implementation decisions carefully, think about the problem some more and try different ways of representing the data you need to keep track of, and comment out your logging messages before submitting your solutions.
In some circumstances the auto-grader may respond with "Please try again after some time while we look at resolving this issue" or "Your solution can't be autograded, try later". The auto-grader will issue these messages when the Coursera servers are overloaded and are unable to handle the large bursts of assignment submissions. These messages may also occur when the Coursera servers are being updated or are undergoing short-term maintenance. To avoid receiving these messages during peak periods please wait for 20 or 30 minutes and then re-submit your assignment. If this problem persists please contact Coursera since they may be unaware of these outages with their servers.
-
-
What needs to be done to pass these MOOCs?
To pass a MOOC learners must complete every graded quiz, auto-graded assignment, and peer-graded assignment at or above the passing percentage, which is 80% of the total number of points per quiz or assignment (originally we'd set the passing percentage for quizzes at 70%, but changed this since every learner can attempt quizzes many times). Moreover, most peer-graded assignments are optional so they are just there to provide you with additional feedback and don't count towards your final grade.
-
Why am I getting weird errors from Android Studio?
If the files in the Android SDK, Android Studio, or your project are not being found, or you are getting weird errors saying that components or parts of Android Studio itself can't be found, you may be running into limitations with the Microsoft Windows filesystem, which has a hard limit of 240 characters that can make up the full string version of all parent directory names and file name itself. If any file attempts to go over this limit it will be skipped in the installation or copying process. To fix this problem, therefore, we recommend you keep the Android Studio installation directory, the Android SDK installation directory, and the location of your projects as close as possible to the root of your C:/ drive. Switching your development platform to Linux or Mac OSX will also avoid this problem with Windows.
-
Can we access the quizzes and programming assignments if we're just auditing the MOOCs?
You can't do the auto-graded quizzes if you're only auditing, but you should be able to download the skeletons and Android Studio project files for the programming assignments and run the JUnit tests locally. You won't be able to use the auto-graders, however.
-
What are optional peer-graded assignments and should I complete them?
There are some peer-graded assignments that are intended to provide learners with additional feedback on software design and programming issues (such as programming style and aesthetics) that aren't easily done via the auto-graders. Most of these peer-graded assignments are optional, so they do not count towards your final grade at all. However, we encourage you to do these assignments so that you can get practice writing code, as well as get practice reviewing code by your fellow learners and get feedback on your code, as well.
-
What happens if I can't complete all the programming assignments by the stated deadlines?
These MOOCs are self-paced, i.e., even if you miss some deadlines, you can still submit any work until the current session ends and after the current session ends you are welcome to switch to the next session (sessions typically start every couple of weeks) with all your already finished work transferred automatically to the new session so you can continue from where you left off in the previous session. Therefore, if you're not able to complete the programming assignments by the stated deadlines you can automatically re-enroll yourself into the next offering of the MOOC (which restarts every couple of weeks) by "clicking a button," i.e., at the end of the current MOOC you'll get a message with a link to the next offering, which you can simply click to re-enroll. Moreover, you won't lose any of the quiz and assignment credits you have obtained so far. If you run into any problems or questions related to re-enrolling in the next MOOC session please contact the Coursera help center.
-
I submitted my assignment a long time ago, so why have I received only a few "feedback on my submission" email notifications?
The Peer Review submission system will only send you "New feedback on you submission" email notifications when one of your peer evaluators fills in and posts comments in the "Comments" box at the bottom of the submission form. If your peer evaluators do not fill in this comment box or fail to click the "post" button, then you will not receive the "New Feedback on your submission" email notification, even though the peer has submitted the actual full evaluation. Once Coursera has received all the required peer evaluations for the assignment, you will be notified with your final grade and you can review the results of all peer evaluations by navigating to your assignment's "My Submission" page.
-
What does it mean when the auto-grader reports "Compile Error: Error 37"?
"Compile Error 37" means that the project code you submitted does not compile when linked and run by the unit test file contained in the auto-grader. Although you may find that your code compiles and runs on your Android Studio project, this does not mean that your code will compile when run with the auto-grader unit test file. The auto-grader unit test file expects your code to strictly follow the class method and field definitions outlined in the PDF instructions that accompany your assignment. The unit test code will make calls directly into your classes to test your method implementations and if any of your methods and fields do not conform exactly with the specifications in the PDF document, then you will receive this error from the auto-grader. To ensure that this error does not occur, please right-click on the java unit test file in your project test folder and click the
Run '<NameOfUnitTestFile>'menu option (or simply type Ctrl-Shift-F10), which will run your unit tests locally and immediately provide you with feedback if your implementation does not compile due to an error in your method signatures.
-
Where is the source code for the examples in the lessons from the Android Studio module?
The example code shown in the lessons from the Android Studio module is simply the example code from the subsequent modules, which can be downloaded from the MOOC website, e.g., here.
-
Why aren't there graded programming assignments in MOOCs 2 and 3?
There are serious bugs in the emulators distributed with the Android 23 and 24 API level that prevent it from being used with Docker containers. Since the Coursera auto-grading system requires the use of Docker containers we've not been able to get the auto-graders working for the assignments in MOOCs 2 and 3. There are also limitations with Coursera's peer evaluation system that make it unsuitable for graded peer-reviewed assignments. In particular, since learners can resubmit as often as they'd like--even after seeing submissions from other learners--the grades are meaningless. As a result, all the peer evaluate programming assignments for MOOCs 2 and 3 are optional (see the FAQ entry #63 for what "optional" means in this context). If/when later versions of Android work reliably with Docker containers and/or we devise a better auto-grading system we'll revisit the use of auto-graded solutions. Until then, you can use the Espresso-based regression tests to check whether your solutions for the assignments are correct.
-
Where can we learn more about the HaMeR and AsyncTask concurrency frameworks?
More information about the HaMeR and AsyncTask concurrency frameworks is available here, particularly videos 32-38.
-
Are Fragments covered in this Specialization?
Fragments are covered in Prof. Adam Porter's MOOCs on Programming Mobile Applications for Android Handheld Systems: Part 1 and Programming Mobile Applications for Android Handheld Systems: Part 2.
-
What is a "web service" in the context of the Capstone project specification??
In the context of the Capstone project, a "web service" is simply whatever service will be used to support interoperable client/server interaction over a network, i.e., whatever service will provide the data that the project app will consume to implement its functionality. To demonstrate which web service will be used please provide its URL and a brief description of what functionality the service provides. Moreover, please make sure that this web service will be freely available to other learners in the MOOC, especially the peer reviewers. In particular, the web service you use shouldn't require a fee to use.
-
Where can we learn how to install and use Git and GitLab?
Module 2 in Week 1 of MOOC 2 contains lessons that walk learners through installing Git and setting up a secure SSH connection between gitlab and your development machine, so please watch that material if you are new to these technologies and tools. After watching these lessons you should know how to use the Git clone command to obtain the assignment skeleton and example repos for MOOCs 2 thru 4 in this specialization, as well as know how to use the git pull command to receive updates on these repos that may occur (which is rare). We also encourage you to use Git and GitLab to manage the source code in your own projects, e.g., via the Git add, commit, and push commands.
-
How can we fix errors with Android emulator/device?
If you get the following error when trying to install your App onto an emulator/device:
E/InstantRun: Failed to create directory <Some path> E/InstantRun: Couldn't create dex code folder W/InstantRun: No instant run dex files added to classpath D/AndroidRuntime: Shutting down VMthen make sure your application's AndroidManifest file declares the target Activity, Service, ContentProvider, etc. Also, make sure your Application's "buildToolsVersion" is up to date to the most recent version.
-
Where are the online resources for the Engineering Android Apps MOOC?
These resources are available here.
-
Who is eligible to take the Capstone project course?
Like other Coursera Specializations, the Capstone project course is only available to students who receive a Verified Certificate in the Signature Track for the preceding MOOCs in the Android App Development Specialization.
-
What level of detail and completeness should be used for the design documents and prototypes for each Capstone milestone?
The purpose of milestones in the Capstone is to ensure that learners are making steady progress towards their final project in a timely manner. The submissions therefore don't need to be 100% complete/polished, but they should demonstrate to reviewers that the learner is on the right track.
For example, the intent for the documentation is to provide a relatively high-level overview of the design, with the focus on convincing the reviews that the proposed design will meet the various criteria addressed in rubrics based on the project specifications. The user-facing components could be described using some sort of "wire-frame" diagrams showing the key screens the user will see. The "backend" components on the device could be described via some diagrams outlining the software architecture at a high level, e.g., names of the key classes and interfaces with their responsibilities. One good way to do this is to automatically generate UML diagrams from Java classes/interfaces that define key methods and relationships between classes/interfaces. You are not required to creative "production quality" design documentation (which is beyond the scope of this Capstone), so feel free to use MS PowerPoint/Visio/Word or even photos of diagrams hand-drawn on a whiteboard if you'd like. If you're interested in using a wire-framing tool check out Balsamiq.
Likewise, for the incremental prototype implementations your submissions don't need to be 100% complete. For example, you can omit error-checking, special case handling, output formatting, unit/integration tests, etc. However, your submissions should enable reviewers to give you useful feedback on your progress. In general, the more complete your submission, the more useful feedback you'll get from reviewers.
-
What sort of feedback should we give to learners whose Milestone submissions are very sparse?
If the Milestone submissions are incomplete, vague, contradictory, etc., then please do the learner a favor and hold them accountable for it. The purpose of these Milestone submissions is to ensure that each learner is in a position to succeed in their final submission of the Capstone project. If they don't demonstrate that they know what they are doing then they need to be aware that they are at risk for not passing the Capstone course. Naturally, providing useful feedback is great, though if the material is very sparse/incomprehensible then it may be hard to provide much useful feedback.