Programming language. The preferred programming language is Java, but you could use any language. If we cannot compile your program, you would need to come to office hours and demonstrate your code on your computer.
Submission instructions. Create a private git repo on bitbucket and share the repo with the instructor (email@example.com) and TA (firstname.lastname@example.org). For full credit, only the code pushed to bitbucket before the deadline will be considered. Your programs need to compile without any additional software and produce required output.
Problem 1: Write a program that asks a user to create an account with a username and a password and securely store the authentication information on disk. Your program should allow the user to create as many accounts as they wish and to login using any previously created account. Your program should ensure that the user does not enter a weak or duplicate password.
Write five programs in C to show five different ways of buffer overflow.
Write secure versions of these programs to avoid buffer overflows.
Problem 3: Write an Android app that requests three normal permissions, two dangerous permissions, and one special permission. Your app should utilize the resources for which it requests permissions, e.g., if you request permission to access GPS, you can utilize it by printing the current GPS coordinates on screen. If you do not have an Android device, you could use Android emulator https://developer.android.com/studio/run/emulator.