Google Code-in 2019/ Flutter

While the tasks themselves can't be made public until the GCI starts officially, we think it's OK to explain the kind of things we want to do for those of you that want to somehow get started - not with the tasks themselves, which is not possible, but getting prepared to start working immediately.

If you have already done some basic digging about Flutter, you already know what it is: A new platform that lets you write apps that will work both on Android, iOS and web. Most apps have menus, have logins, maybe access a database or some kind of internet resource, and depending on the specific app, maybe accesses the device capabilities such as the camera or location.

The programming language that Flutter uses is Dart, so that's something that you want to look at.

Also, getting Flutter to work may take a bit of time: You can start by installing it and making sure "Flutter Doctor" says everything is great.

We're going to be building a few apps. The goal is that build 3 applications that are actually going to be useful and we hope, popular. To get there each of them will consist on a large number of small tasks that anyone can do. Each task will have several instances (so several students can work on the same thing) and for each we'll use the best one. Of course this doesn't mean that the rest completed tasks will not be accepted. If a task it's completed, it will be accepted, and the student is of course welcome to use his/her own version of that specific piece of program.

Remember: It's open source, so everybody is allowed to have their own copy and customize it.

So what are the applications?

Bingo

Important: This is free bingo. We're not building a betting game. That's not interesting at all - but the pieces we're going to learn, are. What are we going to learn here?

  • Menus - Drawing on the screen (for example, a grid) - Interactions with a server (we're getting the tickets from a server, and getting the numbers from it) - Getting user feedback (where on the screen did the user press)

The food locator

Suppose we are at a place, for example at a conference venue, or a large university campus, in which food is delivered at different places during different times of the day (this is a real use case, believe it or not). When you are hungry, you have to go around the place to find something to eat. Sometimes it's something you like, and sometimes it's not. Or maybe you won't find anything.

We're going to write an app that shows a map and let users report when they've seen food where they are. That information will appear to other users of the app that are in the same place, for example attending the same conference. Users can also report that food is not there, and also food can be removed from the map automatically after a certain amount of time.

Here we're going to be learning:

  • Maps - Location services - Timeouts - Interaction with servers

Smart photo app

Build an app that lets you take pictures with the camera and flag them in a useful way. Also, do special things with them.

We all know that camera pictures can be geolocated, which means that as part of the metadata they contain the physical location. We're going to extend that by linking our pictures with things such as the calendar. For example, if your (Google) Calendar says that at 11:00-11:30 you were attending a book signing, would it be useful that the picture and the calendar event were automatically linked together?

Here we're going to be learning:

  • Camera - Location services - Accessing the Google Calendar - Basic AI (details on this will be disclosed with the tasks)