Shorr 2023-24 Android Development-Per 2 Assignments

Upcoming Assignments RSS Feed

No upcoming assignments.

Past Assignments

Due:

Project Planning in Google Classroom

Project Planning

Finish this before starting to code your app.

1. Group members (solo is okay)
2. Purpose of the app
3. Features of the app
4. Sketches/Design of the app
Sketches can be done on paper, in whatever paint program you choose, or using Figma.

Figma Material Design link to get copies of the various design kits: https://www.figma.com/@materialdesign
You can make your own project and have the design kit open in another tab. You can then copy and paste between the two tabs.

One per group should submit.
Created by Garrett Shorr: Friday, April 19 9:44 AM

Due:

Project Planning in Google Classroom

Project Planning

Finish this before starting to code your app.

1. Group members (solo is okay)
2. Purpose of the app
3. Features of the app
4. Sketches/Design of the app
Sketches can be done on paper, in whatever paint program you choose, or using Figma.

Figma Material Design link to get copies of the various design kits: https://www.figma.com/@materialdesign
You can make your own project and have the design kit open in another tab. You can then copy and paste between the two tabs.

One per group should submit.
Created by Garrett Shorr: Friday, April 19 9:44 AM

Due:

Brainstorming Part 1 in Google Classroom

Brainstorming Part 1

Do not need to submit this.

1. Come up with at least 3 categories or topics that you like or are interested in. My 3 would be politics, rock climbing, board games.

2. For each category, come up with at least 3 problems you'd like to solve with an app. It could be something like "I want to track which board games I've played" or "I hate having to google the phone number for my representatives because I'm too lazy to just put them in my contacts"

3. For each category, go to either the apple or android app store (feel free to use your phones for this or use the web interfaces, either way) and look for apps related to your topic that ideally address some or all of the problems you wanted to solve. Try to find 2 apps for each topic. 

4. For each of the apps:


What are the primary featuers?
What do user reviews say is good?
What do user reviews say is bad?
Does it address any of your problems?


5. Based on what you saw in those apps, come up with some ideas of what you'd like to do for an app for the final project. If you have time remaining in class, start listing out the features you want the app to have and sketch out what the screens would look like (on paper for google drawings).
Created by Garrett Shorr: Wednesday, April 17 12:41 PM

Due:

Brainstorming Part 1 in Google Classroom

Brainstorming Part 1

Do not need to submit this.

1. Come up with at least 3 categories or topics that you like or are interested in. My 3 would be politics, rock climbing, board games.

2. For each category, come up with at least 3 problems you'd like to solve with an app. It could be something like "I want to track which board games I've played" or "I hate having to google the phone number for my representatives because I'm too lazy to just put them in my contacts"

3. For each category, go to either the apple or android app store (feel free to use your phones for this or use the web interfaces, either way) and look for apps related to your topic that ideally address some or all of the problems you wanted to solve. Try to find 2 apps for each topic. 

4. For each of the apps:


What are the primary featuers?
What do user reviews say is good?
What do user reviews say is bad?
Does it address any of your problems?


5. Based on what you saw in those apps, come up with some ideas of what you'd like to do for an app for the final project. If you have time remaining in class, start listing out the features you want the app to have and sketch out what the screens would look like (on paper for google drawings).
Created by Garrett Shorr: Wednesday, April 17 12:41 PM

Due:

Brainstorming Part 1 in Google Classroom

Brainstorming Part 1

Do not need to submit this.

1. Come up with at least 3 categories or topics that you like or are interested in. My 3 would be politics, rock climbing, board games.

2. For each category, come up with at least 3 problems you'd like to solve with an app. It could be something like "I want to track which board games I've played" or "I hate having to google the phone number for my representatives because I'm too lazy to just put them in my contacts"

3. For each category, go to either the apple or android app store (feel free to use your phones for this or use the web interfaces, either way) and look for apps related to your topic that ideally address some or all of the problems you wanted to solve. Try to find 2 apps for each topic. 

4. For each of the apps:


What are the primary featuers?
What do user reviews say is good?
What do user reviews say is bad?
Does it address any of your problems?


5. Based on what you saw in those apps, come up with some ideas of what you'd like to do for an app for the final project. If you have time remaining in class, start listing out the features you want the app to have and sketch out what the screens would look like (on paper for google drawings).
Created by Garrett Shorr: Wednesday, April 17 12:41 PM

Due:

Database Submission in Google Classroom

Database Submission

Requirements:
Logging in and registering new users both work.
All CRUD operations work.
The SleepListActivity displays the sleep duration as well as the hours slept (e.g. 23:00 - 07:00 for 11pm to 7am).
Part A: The video

Using Quicktime Screen Capture, make an mp4 showing all 4 CRUD functions in your app.

1. Start the recording
2. Log into backendless and navigate to the account menu to show your account info, then navigate to your app's page.
3. Put your emulator over that window so that the notes column of the Sleep table is visible so that it shows your emulator, that notes column, and your username from you being logged into Backendless in the browser.
4. Login to your app so that you have the SleepListActivity showing. This demonstrates the Read functionality. 
5. Demo Create: click the floating action button to bring up the detail activity with a new object. Save immediately. The backendless table in the background should update with the new item.
6. Demo Delete: Long click the item you just created in your list activity and click the delete option. The backendless table in the background should update removing that item.
7. Demo Update: click any Sleep item that already exists. Change the notes. Click the save button. The backendless table in the background should update changing the note.
8. Stop the recording. 
9. Save the recording as an MP4. You can do this by selecting the recording in the bottom left area below the green recording area, then click save as and change the type from gif to mp4. Name it CRUD_{YourName}.mp4.
10. Upload your video here.

A demo video is attached.

Part B: The code

Using the same settings as prior submissions, save the following files into a pdf by using the print menu item in Android Studio:
SleepListActivity
SleepAdapter
SleepDetailActivity
Created by Garrett Shorr: Monday, April 15 9:42 AM

Due:

Public API Project Submission in Google Classroom

Public API Project Submission

Tentatively due end of class on Tuesday 3/12.

1. Print the following files to a pdf:
Your Activities
Your Data Classes
Your Adapter(s) if you have any
Your Layouts (activity layouts and any recyclerview item layouts)
Your menus (if you have any)
Print using the following settings:
JetBrains Mono font size 8
Margins of 0.25 all around
Color Printing
Save as a pdf (you can open in preview first to see that the settings were correct, but then you'll have to open the print dialog again from within preview and save as pdf from there)

2. Record a movie of your app working using Giphy Capture or Quicktime's screen record funciton. Submit that as well.
Created by Garrett Shorr: Friday, March 8 9:42 AM

Due:

Public API Project Submission in Google Classroom

Public API Project Submission

Tentatively due end of class on Tuesday 3/12.

1. Print the following files to a pdf:
Your Activities
Your Data Classes
Your Adapter(s) if you have any
Your Layouts (activity layouts and any recyclerview item layouts)
Your menus (if you have any)
Print using the following settings:
JetBrains Mono font size 8
Margins of 0.25 all around
Color Printing
Save as a pdf (you can open in preview first to see that the settings were correct, but then you'll have to open the print dialog again from within preview and save as pdf from there)

2. Record a movie of your app working using Giphy Capture or Quicktime's screen record funciton. Submit that as well.
Created by Garrett Shorr: Friday, March 8 9:42 AM

Due:

Earthquake API Submission in Google Classroom

Earthquake API Submission

Checklist:
* API call works and the list of and you can access the count, title, and status of the request along with the magnitude, title, place, time, url, and coordinates of each earthquake.
* The recyclerView works and displays the magnitude, place, and time for each earthquake
* The recyclerView filters out all earthquakes below 1.0.
* The recyclerView has changed the colors of magnitude to match the severity of the earthquake.
* The recyclerView has added the appropriately colored warning icon attached to the magnitude textview for earthquakes that are large or significant.
* the menu has options to sort by recent and sort by magnitude level descending (then by recent) in the options 3 vertical dots section.
* magnitude should only display 1 decimal point
* There is also a clickable item in the menu to show the dialog giving a brief legend of what the different colors  mean.
* clicking on an item will take you to the EarthquakeMapActivity, transferring the the entire parcelable Earthquake object through with the intent (you may have called the object Feature. That's fine.).
* the map has a marker placed at the location of the earthquake. the map should be centered on the marker and zoomed out enough to see roughly where in the world it is.
* clicking on the marker brings up additional earthquake details in the marker's popup
* the earthquake magnitude level colors are added as constants to the colors.xml file in the res/values folder
1. Take a screenshot of the list in default most recent order.
2. Take a screenshot of the list sorted by magnitude level first, then most recent second.
3. Take a screenshot of the marker popup.
4. Print the following files to PDF:
EarthquakeAdapter
EarthquakeListActivity
EarthquakeMapActivity
EarthquakeService
RetrofitHelper
All your model classes
colors.xml
menu_earthquake_data.xml (or whatever you called the menu in the EarthquakeListActivity)
activity_earthquake_list.xml
activity_earthquake_map.xml
item_earthquake.xml (or whatever you called the layout that the recyclerview uses)
4. Add the screenshots to the pdf using preview.
Created by Garrett Shorr: Tuesday, February 6 8:47 AM

Due:

Earthquake API Submission in Google Classroom

Earthquake API Submission

Checklist:
* API call works and the list of and you can access the count, title, and status of the request along with the magnitude, title, place, time, url, and coordinates of each earthquake.
* The recyclerView works and displays the magnitude, place, and time for each earthquake
* The recyclerView filters out all earthquakes below 1.0.
* The recyclerView has changed the colors of magnitude to match the severity of the earthquake.
* The recyclerView has added the appropriately colored warning icon attached to the magnitude textview for earthquakes that are large or significant.
* the menu has options to sort by recent and sort by magnitude level descending (then by recent) in the options 3 vertical dots section.
* magnitude should only display 1 decimal point
* There is also a clickable item in the menu to show the dialog giving a brief legend of what the different colors  mean.
* clicking on an item will take you to the EarthquakeMapActivity, transferring the the entire parcelable Earthquake object through with the intent (you may have called the object Feature. That's fine.).
* the map has a marker placed at the location of the earthquake. the map should be centered on the marker and zoomed out enough to see roughly where in the world it is.
* clicking on the marker brings up additional earthquake details in the marker's popup
* the earthquake magnitude level colors are added as constants to the colors.xml file in the res/values folder
1. Take a screenshot of the list in default most recent order.
2. Take a screenshot of the list sorted by magnitude level first, then most recent second.
3. Take a screenshot of the marker popup.
4. Print the following files to PDF:
EarthquakeAdapter
EarthquakeListActivity
EarthquakeMapActivity
EarthquakeService
RetrofitHelper
All your model classes
colors.xml
menu_earthquake_data.xml (or whatever you called the menu in the EarthquakeListActivity)
activity_earthquake_list.xml
activity_earthquake_map.xml
item_earthquake.xml (or whatever you called the layout that the recyclerview uses)
4. Add the screenshots to the pdf using preview.
Created by Garrett Shorr: Tuesday, February 6 8:47 AM

Due:

Retrofit Warmup in Google Classroom

Retrofit Warmup

Write your answers in a textedit window and then post them as responses to this question thread. Get all teams: https://www.balldontlie.io/api/v1/teams Get a specific team: https://www.balldontlie.io/api/v1/teams/ Get a specific player: https://www.balldontlie.io/api/v1/players?search="davis" The above are endpoints for the "Ball Don't Lie" NBA basketball API. 1. What is the base URL for this API? For questions 2 and 3, assume the following interface declaration: interface BallDontLieService {     // API request functions here } 2. Write the retrofit interface function header including @GET annotation for the getSpecificTeam function. Assume the API returns a single Team object. 3. Write the retrofit interface function header including @GET annotation for the getSpecificPlayer function. Assume the API returns a list of Player objects. As a reference, here is the github example on the retrofit documentation website rewritten in Kotlin. Given the following endpoints: https://api.github.com/users/gshorrSPHS/repos https://api.github.com/group/someGroup/users?sort="ascending" The base url is: https://api.github.com interface GitHubService {   @GET("users/{user}/repos")   fun listRepos(@Path("user") user: String) : Call>    @GET("group/{id}/users")    fun getGroupList(@Path("id") groupId: Int, @Query("sort") sort: String) : Call>  }
Created by Garrett Shorr: Monday, January 29 9:39 AM

Due:

Retrofit Warmup in Google Classroom

Retrofit Warmup

Write your answers in a textedit window and then post them as responses to this question thread. Get all teams: https://www.balldontlie.io/api/v1/teams Get a specific team: https://www.balldontlie.io/api/v1/teams/ Get a specific player: https://www.balldontlie.io/api/v1/players?search="davis" The above are endpoints for the "Ball Don't Lie" NBA basketball API. 1. What is the base URL for this API? For questions 2 and 3, assume the following interface declaration: interface BallDontLieService { // API request functions here } 2. Write the retrofit interface function header including @GET annotation for the getSpecificTeam function. Assume the API returns a single Team object. 3. Write the retrofit interface function header including @GET annotation for the getSpecificPlayer function. Assume the API returns a list of Player objects. As a reference, here is the github example on the retrofit documentation website rewritten in Kotlin. Given the following endpoints: https://api.github.com/users/gshorrSPHS/repos https://api.github.com/group/someGroup/users?sort="ascending" The base url is: https://api.github.com interface GitHubService { @GET("users/{user}/repos") fun listRepos(@Path("user") user: String) : Call> @GET("group/{id}/users") fun getGroupList(@Path("id") groupId: Int, @Query("sort") sort: String) : Call> }
Created by Garrett Shorr: Friday, February 16 12:39 PM

Due:

 Heroes Submission in Google Classroom

Heroes Submission

(reviewed how to work with drawable by resource name in video)

1. Add one more menu item to sort by description length (shortest description to longest)

2. Take a screenshot of the list activity with the options menu open
(click on the options menu, then cmd+shift+4 to screenshot)

3. Take a screenshot of the detail activity (pick any hero you want)

4. Print the Hero, HeroAdapter, HeroDetailActivity, HeroListActivity, activity_hero_detail.xml, activity_hero_list.xml, item_hero.xml,
herolist_menu.xml and save as pdf. Remember to make the font size 8 and the margins 0.25inches.

5. Upload all those things to the submission assignment

Checklist before submitting:
Recyclerview and detail activity both work
Hero class is made parcelable and comparable
Adapter is refactored to pass the single Hero object rather than each field individually
Menu works with 3 sort options (rank, name, description length)
Created by Garrett Shorr: Friday, January 19 9:38 AM

Due:

 Heroes Submission in Google Classroom

Heroes Submission

(reviewed how to work with drawable by resource name in video)

1. Add one more menu item to sort by description length (shortest description to longest)

2. Take a screenshot of the list activity with the options menu open
(click on the options menu, then cmd+shift+4 to screenshot)

3. Take a screenshot of the detail activity (pick any hero you want)

4. Print the Hero, HeroAdapter, HeroDetailActivity, HeroListActivity, activity_hero_detail.xml, activity_hero_list.xml, item_hero.xml,
herolist_menu.xml and save as pdf. Remember to make the font size 8 and the margins 0.25inches.

5. Upload all those things to the submission assignment

Checklist before submitting:
Recyclerview and detail activity both work
Hero class is made parcelable and comparable
Adapter is refactored to pass the single Hero object rather than each field individually
Menu works with 3 sort options (rank, name, description length)
Created by Garrett Shorr: Friday, January 19 9:38 AM

Due:

Fall Final Experience in Google Classroom

Fall Final Experience

Google meet link: https://meet.google.com/oev-ausw-puq

Submit the doc you work on during class. I'll explain as we go what needs to be on it.
Created by Garrett Shorr: Wednesday, December 20 8:42 AM

Due:

Fall Final Experience in Google Classroom

Fall Final Experience

Google meet link: https://meet.google.com/oev-ausw-puq

Submit the doc you work on during class. I'll explain as we go what needs to be on it.
Created by Garrett Shorr: Wednesday, December 20 8:42 AM

Due:

Fall Final Experience in Google Classroom

Fall Final Experience

Google meet link: https://meet.google.com/oev-ausw-puq

Submit the doc you work on during class. I'll explain as we go what needs to be on it.
Created by Garrett Shorr: Wednesday, December 20 8:42 AM

Due:

Unit Tests Submission in Google Classroom

Unit Tests Submission

Print the following files:

RegistrationUtil.kt
RegistrationUtilTest.kt
Make sure that you have in your Unit Test Class:

 // Make tests for failures of
        // min length of 8 chars
        // at least one digit   (make sure it's at least 8 and has a capital letter)
        // at least on capital letter
    // Make a test for good matching passwords working

    // Make the tests for the other functions in the Util class with
    // the common failures and 1 success for each


Submit those as a pdf. Remember to use the font size 8 and 0.25" margins. See attached images.
Created by Garrett Shorr: Friday, December 1 8:41 AM

Due:

Unit Tests Submission in Google Classroom

Unit Tests Submission

Print the following files:

RegistrationUtil.kt
RegistrationUtilTest.kt
Make sure that you have in your Unit Test Class:

 // Make tests for failures of
        // min length of 8 chars
        // at least one digit   (make sure it's at least 8 and has a capital letter)
        // at least on capital letter
    // Make a test for good matching passwords working

    // Make the tests for the other functions in the Util class with
    // the common failures and 1 success for each


Submit those as a pdf. Remember to use the font size 8 and 0.25" margins. See attached images.
Created by Garrett Shorr: Friday, December 1 8:41 AM

Due:

Sign up for Advent of Code Leaderboard in Google Classroom

Sign up for Advent of Code Leaderboard

You will need to login with a credential service. I suggest using your github account. Mark this complete when you've joined the leaderboard. The Advent of Code technically starts tonight, but we'll have time in class to do problems starting next week. I'll show you how to set things up in Kotlin using IntelliJ, but feel free to use the programming language and environment of your choice.

https://adventofcode.com/2023/leaderboard/private
This is the join code: 1706848-5c6b6178
Created by Garrett Shorr: Thursday, November 30 8:35 PM

Due:

Sign up for Advent of Code Leaderboard in Google Classroom

Sign up for Advent of Code Leaderboard

You will need to login with a credential service. I suggest using your github account. Mark this complete when you've joined the leaderboard. The Advent of Code technically starts tonight, but we'll have time in class to do problems starting next week. I'll show you how to set things up in Kotlin using IntelliJ, but feel free to use the programming language and environment of your choice.

https://adventofcode.com/2023/leaderboard/private
This is the join code: 1706848-5c6b6178
Created by Garrett Shorr: Thursday, November 30 8:35 PM

Due:

Sign up for Advent of Code Leaderboard in Google Classroom

Sign up for Advent of Code Leaderboard

You will need to login with a credential service. I suggest using your github account. Mark this complete when you've joined the leaderboard. The Advent of Code technically starts tonight, but we'll have time in class to do problems starting next week. I'll show you how to set things up in Kotlin using IntelliJ, but feel free to use the programming language and environment of your choice.

https://adventofcode.com/2023/leaderboard/private
This is the join code: 1706848-5c6b6178
Created by Garrett Shorr: Thursday, November 30 8:35 PM

Due:

Sign up for Advent of Code Leaderboard in Google Classroom

Sign up for Advent of Code Leaderboard

You will need to login with a credential service. I suggest using your github account. Mark this complete when you've joined the leaderboard. The Advent of Code technically starts tonight, but we'll have time in class to do problems starting next week. I'll show you how to set things up in Kotlin using IntelliJ, but feel free to use the programming language and environment of your choice.

https://adventofcode.com/2023/leaderboard/private
This is the join code: 1706848-5c6b6178
Created by Garrett Shorr: Thursday, November 30 8:35 PM

Due:

Written Tutorial in Google Classroom

Written Tutorial

For your tutorial topic, you will explain the following:
Definition and description of the topic
Where/when it is used and why
Step by step implementation of an example of your creation with relevant screenshots you took for each step
Show both the Design & Code views
Acknowledgement section citing all sources used (Rebecca Franks video, Android docs, stackoverflow, other online tutorials, etc)
Use the Pageless format in Google Docs

Example of a good written tutorial. Yours doesn't have to be this long but it shows all the elements I discussed above.

https://developer.android.com/codelabs/basic-android-kotlin-training-xml-layouts?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-kotlin-unit-2-pathway-1%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-training-xml-layouts#5

You may work with a partner and collaborate on writing this.

Topics:

Barriers (including explanations of the following: vertical & horizontal orientation, barrier direction)
Guidelines (include the 3 types and how to toggle among them visually and via xml)
Chains (include horizontal & vertical along with the different chain types and weight)
Dimensional Constraints (aspect ratio triangle. give examples for filling an image at the top of the screen like the beauty & the beast banner and also one for filling the whole left side of the screen for a skinny vertical image)
Importing svgs and icons (from the clipart library) and using them in a layout
Created by Garrett Shorr: Wednesday, October 11 12:36 PM

Due:

Written Tutorial in Google Classroom

Written Tutorial

For your tutorial topic, you will explain the following:
Definition and description of the topic
Where/when it is used and why
Step by step implementation of an example of your creation with relevant screenshots you took for each step
Show both the Design & Code views
Acknowledgement section citing all sources used (Rebecca Franks video, Android docs, stackoverflow, other online tutorials, etc)
Use the Pageless format in Google Docs

Example of a good written tutorial. Yours doesn't have to be this long but it shows all the elements I discussed above.

https://developer.android.com/codelabs/basic-android-kotlin-training-xml-layouts?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-kotlin-unit-2-pathway-1%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-training-xml-layouts#5

You may work with a partner and collaborate on writing this.

Topics:

Barriers (including explanations of the following: vertical & horizontal orientation, barrier direction)
Guidelines (include the 3 types and how to toggle among them visually and via xml)
Chains (include horizontal & vertical along with the different chain types and weight)
Dimensional Constraints (aspect ratio triangle. give examples for filling an image at the top of the screen like the beauty & the beast banner and also one for filling the whole left side of the screen for a skinny vertical image)
Importing svgs and icons (from the clipart library) and using them in a layout
Created by Garrett Shorr: Wednesday, October 11 12:36 PM

Due:

Written Tutorial in Google Classroom

Written Tutorial

For your tutorial topic, you will explain the following:
Definition and description of the topic
Where/when it is used and why
Step by step implementation of an example of your creation with relevant screenshots you took for each step
Show both the Design & Code views
Acknowledgement section citing all sources used (Rebecca Franks video, Android docs, stackoverflow, other online tutorials, etc)
Use the Pageless format in Google Docs

Example of a good written tutorial. Yours doesn't have to be this long but it shows all the elements I discussed above.

https://developer.android.com/codelabs/basic-android-kotlin-training-xml-layouts?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-kotlin-unit-2-pathway-1%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-training-xml-layouts#5

You may work with a partner and collaborate on writing this.

Topics:

Barriers (including explanations of the following: vertical & horizontal orientation, barrier direction)
Guidelines (include the 3 types and how to toggle among them visually and via xml)
Chains (include horizontal & vertical along with the different chain types and weight)
Dimensional Constraints (aspect ratio triangle. give examples for filling an image at the top of the screen like the beauty & the beast banner and also one for filling the whole left side of the screen for a skinny vertical image)
Importing svgs and icons (from the clipart library) and using them in a layout
Created by Garrett Shorr: Wednesday, October 11 12:36 PM

Due:

ConstraintLayout Submission in Google Classroom

ConstraintLayout Submission

1. Screenshot of the activity_main.xml layout (with special instructions, see below & video)
Design & Blueprint turned on
Show all constraints turned on

2. print to pdf the activity_main.xml
Created by Garrett Shorr: Monday, October 9 12:36 PM

Due:

ConstraintLayout Submission in Google Classroom

ConstraintLayout Submission

1. Screenshot of the activity_main.xml layout (with special instructions, see below & video)
Design & Blueprint turned on
Show all constraints turned on

2. print to pdf the activity_main.xml
Created by Garrett Shorr: Monday, October 9 12:36 PM

Due:

Quiz App Submission in Google Classroom

Quiz App Submission

Submission Checklist:
Quiz works and completes without crashing
Score is calculated correctly
Changing the phone language to your chosen second language fully translates the entire app to that language
No hardcoded strings--all strings are in strings.xml
All quiz logic is handled by the Quiz class (i.e. things like score variables are stored in the Quiz class and not the MainActivity)
Quiz & Question classes have no knowledge of Android-specific functions
Print the following files to a pdf:
MainActivity.kt
Quiz.kt
Question.kt
activity_main.xml
both question.json files 
both strings.xml files
Print using the following settings:
JetBrains Mono font size 8
Margins of 0.25 all around
Color Printing
Save as a pdf. Open the pdf and verify it has all the files in it before submitting.
Created by Garrett Shorr: Tuesday, October 3 9:34 AM

Due:

Kotlin Data Classes & JSON in Google Classroom

Kotlin Data Classes & JSON

One thing programmers often do is learn by reading through tutorials. Use the various resources provided in the document to find the answers to the questions and use a different color when answering.


You can work in groups but each turn in an individual document.
Created by Garrett Shorr: Monday, September 18 12:31 PM

Due:

Kotlin Data Classes & JSON in Google Classroom

Kotlin Data Classes & JSON

One thing programmers often do is learn by reading through tutorials. Use the various resources provided in the document to find the answers to the questions and use a different color when answering.


You can work in groups but each turn in an individual document.
Created by Garrett Shorr: Monday, September 18 12:31 PM

Due:

Stopwatch Submission in Google Classroom

Stopwatch Submission

Due Thursday end of class

1. Start/Stop works & doesn't skip time
2. Maintain state through orientation change

 *if it were running, stay running & not skip time
 *if it were stopped, stay stopped & not skip time

having a rounding error of 1 second is okay.

To turn this in, we'll use giphy capture or Quicktime screen record to record a movie of the following:
Note: For giphy capture to work, we have to turn on the screen recording permission for it. Go to system settings and search for screen recording. There should be a setting there under privacy that lists apps that allow you to record your screen. Check the box for giphy capture. You may need to attempt to record something in giphy capture first for that app to show up on the list.
Start
Stop
Wait 3 seconds
Start 
Stop
Rotate  
Wait 3 seconds
Start
Rotate
Stop
Reset
Start
Reset
Created by Garrett Shorr: Tuesday, September 12 12:35 PM

Due:

Stopwatch Submission in Google Classroom

Stopwatch Submission

Due Thursday end of class

1. Start/Stop works & doesn't skip time
2. Maintain state through orientation change

 *if it were running, stay running & not skip time
 *if it were stopped, stay stopped & not skip time

having a rounding error of 1 second is okay.

To turn this in, we'll use giphy capture or Quicktime screen record to record a movie of the following:
Note: For giphy capture to work, we have to turn on the screen recording permission for it. Go to system settings and search for screen recording. There should be a setting there under privacy that lists apps that allow you to record your screen. Check the box for giphy capture. You may need to attempt to record something in giphy capture first for that app to show up on the list.
Start
Stop
Wait 3 seconds
Start 
Stop
Rotate  
Wait 3 seconds
Start
Rotate
Stop
Reset
Start
Reset
Created by Garrett Shorr: Tuesday, September 12 12:35 PM

Due:

Logging & Lifecycle in Google Classroom

Logging & Lifecycle

Due Friday during class.

The bolded sections of the attached document have things for you to write and complete. The non-bolded sections have instructions for you to follow but don't need to have written answers for.


Complete the sections in a different font color so it's easy to see your work inline.


In the video: intro to the stopwatch app, how to use XML and add a chronometer widget, how to override a function through autocomplete, how to make a static constant in kotlin through a companion object.


1. New project with empty views activity
2. Make a companion object for TAG to help label our log statements
3. Add a log statement to the onCreate by typing logd and letting it autocomplete
4. Open the logcat and filter for the tag you wrote by typing "Main" in the filter bar
5. Override the onStart function by just typing onStart and letting it autocomplete.
6. Set up Github:
   Android Studio->Settings
Under Version Control: Git
    *check Use Credential Helper
Under Version Control: Github
    *Add Account
    * Login with token
    *Click Generate
    * Sign in to Github
    * Write what the token is for and an expiration date (I used the end of the calendar year)
    * Paste in your token. Hit okay. Hit okay.
     * Go to VCS->Share Project on Github.  Name the project & click Share

     * to make a new commit --> cmd + k, select the files to update, and a commit message
     *select commit & push from the dropdown menu, then push

7. Add Chronometer widget to activity_main.xml through the code view

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/chronometer_main_stopwatch"/>

and constraint it in the design view. You can also change the text size to something like 64sp so you can see it more easily.
Created by Garrett Shorr: Wednesday, September 6 11:52 AM

Due:

Useless Machine Wrap-Up in Google Classroom

Useless Machine Wrap-Up

Use a different color font to answer the questions directly inline with your copy of the document.
Created by Garrett Shorr: Friday, September 1 12:27 PM

Due:

Useless Machine Wrap-Up in Google Classroom

Useless Machine Wrap-Up

Use a different color font to answer the questions directly inline with your copy of the document.
Created by Garrett Shorr: Friday, September 1 12:27 PM

Due:

BiggerNumber Solution Comparison in Google Classroom

BiggerNumber Solution Comparison

In a google doc, answer the following questions.


Compare your code to the code I've provided and answer the following questions:


1. Do you notice anything different about the content of the onClickListeners?

2. In the code provided, what do you notice about the organization of all the findViewById method calls?

3. In the code provided, where do you notice the logic is for comparing numbers and keeping score?

4. What advantages might there be for separating the game logic from the UI logic?
Created by Garrett Shorr: Thursday, August 24 10:08 AM

Due:

First Day Survey in Google Classroom

First Day Survey

Complete the attached survey and mark this assignment complete when you are done.
Created by Garrett Shorr: Monday, August 14 2:02 PM

Due:

Kotlin vs Java? in Google Classroom

Kotlin vs Java?

What are 5 differences that you see in the Main Activity between Kotlin and Java?












Differences:



1. No semi-colons

2. ? in the data type means NULLABLE.  It CAN be null

no ?, not null

3. no public/private written on main activity --> default visibility is public

4. parens after AppCompatActivity is because we are specifiying the constructor

5. :    instead of extends

6. @Override annotation is gone. now it's a mandatory keyword in the function header

7. fun keyword declares something as a function

8. return type of void is unnecessary in Kotlin. assumed if you don't specify the return type

9. data type declaration is no longer:

Type var. 

Now it is:

var: Type





Created by Garrett Shorr: Wednesday, August 16 11:17 AM

Due:

Kotlin vs Java? in Google Classroom

Kotlin vs Java?

What are 5 differences that you see in the Main Activity between Kotlin and Java?












Differences:



1. No semi-colons

2. ? in the data type means NULLABLE. It CAN be null

no ?, not null

3. no public/private written on main activity --> default visibility is public

4. parens after AppCompatActivity is because we are specifiying the constructor

5. : instead of extends

6. @Override annotation is gone. now it's a mandatory keyword in the function header

7. fun keyword declares something as a function

8. return type of void is unnecessary in Kotlin. assumed if you don't specify the return type

9. data type declaration is no longer:

Type var.

Now it is:

var: Type





Created by Garrett Shorr: Monday, September 11 8:35 PM