[MUSIC] Welcome to the last module in this MOOC. This module'll guide you through the final programming assignment, which is a so-called mini project designed to give you more freedom designing and implementing a creative solution that applies all the object-oriented Java programming language features we've covered in this MOOC. In this mini project, you'll develop a simple calculator app, which provides the means to add, subtract, multiply, and divide numbers input by a various Android user interface components. After completing the lesson in this module, you'll understand the requirements of the calculator app, know how to download the Android Studio project, and associated files that provide the skeleton of the app. Be familiar with the guidelines for structuring your Java solution, to receive full credit, and to recognize how to submit your solution an assess solutions submitted by other learners in this MOOC. If you successfully completed the programming assignments in the previous modules, you should be well prepared to develop a creative and functioning implementation of the calculator app. So let's get started. [MUSIC] In this mini project assignment you'll write the program logic needed to complete a simple calculator app in Java. This app will perform integer arithmetic on values entered via components defined using Android's user interface or UI. We'll supply you the skeleton code that implements calculator's UI in Android. The app you implement should meet the following requirements. The UI we provide allows the user to enter two integer values and select one of four operations, addition, subtraction, multiplication, or division. After supplying the two integer values and pressing the calculate button on the UI, three entities will be provided to the Java code you write. The two integer values entered by the user, and the operation they selected to perform on these values. Your code must then perform the necessary computation, and print a string that contains the final answer in the expected form. The final result is printed for integer addition, subtraction, and multiplication. Where'd you expect it to be? As shown in these screen shots. The first screenshot shows performing addition. The second shows performing subtraction and the third shows performing multiplication. However, the final result printed for integer division must include both the quotient and the remainder. Even if the remainder is zero, as shown in these screenshots. This screenshot shows performing division with a zero remainder, and this screenshot shows performing division with a non-zero remainder. [MUSIC] Please start this assignment by downloading the supplied zip file corresponding to this mini project. Extract the contents of the zip file onto your computer. The contents extracted from the zip file contain an Android Studio project. Next, launch Android Studio and load the project. In addition to the UI related classes, which you can ignore for the time being, you'll see this project supplies you with five skeleton files containing the following Java classes. The Logic.java file contains the process method, which receives the three entities passed from the UI, the two integers upon which to perform the computation, and an integer value indicating the operation to perform. The value 1=addition, 2=subtraction, 3=multiplication, and 4=division. Naturally, we recommend using symbolic constants for these values, rather than magic numbers. There are four other files. The Add.java file contains an empty class named Add, the Subtract.java file contains an empty class named Subtract. The Multiply.java file contains an empty class named Multiply. And the Divide.java file contains an empty class named Divide. Your work should start by modifying the Logic.java skeleton file. Open this file in the Android Studio Integrated Development Environment, and look for the comment TODO- start your code here. You can then add your implementation at this location as you see fit. Likewise, open the other four Java skeleton files and follow similar steps, until you've completed your implementation. For a more detailed analysis of the skeleton files and other parts of the UI code, please watch the lesson entitled mini project assignment walkthrough. [MUSIC] We'll now discuss the guidelines for structuring your solution, which are divided into two parts. The first part are guidelines for source code design. Given the intentionally limited capabilities of the calculator app, one solution might involve performing all the work in the process method via a multibranch if/else statement. However, this design would be unmanageable if we later wanted to extend our calculator to support additional operations and or add additional data types. We therefore encourage you to create an object-oriented solution that will provide better abstraction to simplify extensibility and refactoring in the future in particular. To receive full credit for this assignment, you must apply Java language features we taught in recent modules of the MOOC, and use the four empty Java classes we provided by adding methods and or instance variables to them. We also recommend you consider defining a Java interface that these four empty classes implement. The second set of guidelines involves source code aesthetics, such as commenting, indentation, spacing and identifier names. You're required to properly indent your code and will lose points if you make significant indentation mistakes or inconsistencies. None of your lines of code should be longer than 80 characters. Please also use a programming style that's easy to read and maintain, by doing things like creating additional helper methods as needed, using meaningful variable and method names, making the code more readable by using whitespace and blank lines appropriately, and explaining tricky pieces of code with useful comments. [MUSIC] For this assignment, you'll need to submit a zip file containing all the Java files and Android Studio project files needed to compile and run your calculator app. To build this zip file, open the Gradle window in Android Studio, which is located along the far right edge of the screen, all the way up. Then go to the M8 Assignment Calculator > Tasks > Other Menu Item, and double-click on Project Zip to generate the zip file of your project in the project root directory zip folder. After you locate the zip file on your drive, you can upload it to the Coursera platform. [MUSIC] Unlike previous assignments in this MOOC that were auto-graded, this mini project will be purely peer assessed, which involves giving and receiving feedback from other learners in the MOOC. There are two steps involved in peer assessing programming assignments. First, you'll submit your assignment by following the steps we just discussed. At which point you'll be granted access to a video that walks through our solution, so you can see how we implemented the calculator app. Second, you'll then review five submissions made by your peers, using a grading rubric we supply you with to guide your peer assessments. Your final grade on this mini project will be calculated using the median scores you receive from your peers on each assignment component. There's a 20% penalty for not evaluating your peers. So please make sure to follow these instructions, so that everyone benefits from helpful feedback. As you do your evaluation, please keep an open mind and focus on the positive. Our goal is not to find every way to deduct points over small deviations from the requirements or for legitimate differences in implementation styles. Therefore, look for ways to give points when it's clear the submitter has given a good faith effort to do the project and when it's likely they have succeeded. Finally, remember that almost everyone is working hard and putting in serious effort. So if you've got doubts please err on the side of giving too many points rather than getting too few. [MUSIC] Congratulations. You've now finished all the contents of this MOOC. The final mini project in this module gives you experience developing a simple calculator app in Java that provides the means to add, subtract, multiply, and divide numbers input by the Android user interface components. Now that you've completed the material on this module, you should understand the requirements of the calculator app. Know how to download the Android Studio project and associated files containing the app skeleton. Be familiar with guidelines for structuring your Java solution to receive full credit, and recognize how to submit your solution and assess solutions submitted by other learners in this MOOC. On behalf of my co-instructors, Mike, Jerry, and Julie, we hope you've enjoyed learning how to program Java for Android. We also look forward to working with you in subsequent MOOCs in our specialization on Android app development. [MUSIC]