Android “is free like a puppy.” – James DeBragga, General manager of Microsoft Windows Consumer Product Marketing (reported by Mark Spoonauer in a LAPTOP editorial), January 12, 2011.

You will generally work in pairs for the lab exercises, and we encourage you to ask questions and to collaborate with others. Note, however, that this week you should work individually on the programming exercise so that you configure your own development environment completely.

Creating Innovative Software

Creativity is a key element of innovation in software.

Exercise 1.1

Identify two possible team projects for this semester, both portable apps, but of the following two sorts.

One short paragraph should be sufficient for each idea. Record your proposals in a simple ASCII text file (ideas.txt) so that you can submit it later.

Getting Ready for Teams

We’d like to know a little bit about you so we can more effectively divide the class into teams.

Exercise 1.2

Please answer following questions:

  1. Demographics

    1. What is your class level? (freshman, sophomore, junior, senior, [super-]+senior)

    2. What is your major? (BCS, CS+, …)

    3. What letter grades did you get in CS 112 and 212?

    4. What CS 262 section are you in (A or B)? Can you attend the full Friday lab session, and, therefore, be on a team with members of the other class section?

  2. Technical

    1. Have you worked on any of the following things:

      • JavaScript/Typescript applications
      • SQL database systems

      If so, what (briefly) have you done?

    2. Have you used any of the following tools:

      • Slack
      • Trello
      • Git and/or GitHub

      If so, what have you used an how (briefly) have you used it?

    3. What project or projects would you like to work on. Include at least one tractable project, say from the previous lab exercise or from the suggested projects in the team project specification.

    If you’d like, talk to other students or use the Moodle forum to form groups interested in particular project ideas.

  3. Personality

    1. What is your big-five personality type? Please include these scores in your lab solution and, if you haven’t already done so, enter them using this form as well: CS 262 - Personality Traits. (See the reading guide for how to determine this. Please, give the five trait values only.)

    2. Is there anyone you’d really like (or not like!) to work with? We’ll do our best to honor your requests here.

  4. Is there anything else you’d like us to know about you before assigning you to a project team?

Save your answers in an ASCII file (teams.txt) so that you can submit them as part of this lab assignment. If you work on a team of two students, please put both of your names in this file.

Developing Mobile Applications

The lab machines are configured to run the technologies and tools you’ll need in this course, but we suggest that you configure your own machine to do your work (for details, see Guide 1).

Exercise 1.3

Do Expo’s Get started tutorial. Create a lab01/ directory and do the following sections as written in that directory. Notes:

  1. “Create a project” — Do this as written, using the default template.
  2. “Set up your environment” — We suggest that you install Expo Go on your mobile device, using the Web emulator as a backup.
  3. “Start developing”
    • Because Expo expects your computer and your mobile device to be on the same network, which may not always be true (e.g., on the machines in our labs or when using Windows/WSL2), you may need to use Tunneling.
    • When you’re making changes to the code, try creating some errors so that you can practice using Expo’s tools for Debugging runtime issues.
  4. “Next steps”
    1. Remove the boilerplate code as explained here, and also delete the app-example/ sub-directory. This gives you a basic app structure with no boilerplate code that you use as a basis for future applications.
    2. Modify the hello message to say “Hello, Expo!” and shown on the right.

When you have the app running on your device, save a screen shot of your running application and add a new README.md that contains a list of one-sentence explanations of the purpose of each of the following files/directories in your project code:

Store your screenshot and readme files as sibling files in the root of your application directory and be prepared to submit these files: your (modified) lab01/my-app/app/index.tsx; lab01/screenshot.png; and lab01/README.md.

Checking in

Submit the files specified above in Moodle under lab 1. Please submit them as separate (text, not ZIP!) files. We will grade your work according to the following criteria:

Lab assignments are always due by 11:59pm Saturday, the day after the lab.