A good craftsperson is known by their tools. – proverb quoted by F.P. Brooks, The Mythical Man-Month, 1975
  1. Software development process

    1. What is a life-cycle model?
    2. What are the basic phases of the waterfall model and what general tasks are done in each one? We’ll focus on the five phases shown in the diagram.
    3. Which of the software development models listed in the article best describes your personal development habits? Could it be the “Code and fix” model?!
  2. Project Management Tools

    1. Trello

      1. Review this background information on Trello.
        • What is KanBan and how does it relate to Trello?
        • Is Trello tailored for software development?
      2. Getting Started With Trello — Review this short instructional video.
      3. Create an account for yourself on Trello. Please do this before Friday so that your team can build its project management board during the lab period.

      For a more detailed tutorial, see Getting Started with Trello.

    2. Clockify

      1. Familiarize yourself with the basic features of Clockify by working through this tutorial on Trello Time Tracking Integration.
        • Review the first video, entitled “How to track time in Trello”.
        • Step 1 — Create a Clockify account for yourself.
        • Step 2 — Install the Clockify browser extension.
        • Steps 3–5 — You can do the other exercises as time allows; your team will start this work in the lab.

      For more details, see Time Tracking Tutorials.

    3. Slack

      1. Read this Slack features page.
        • Compare and contrast Slack with Trello and traditional email.
      2. Create a login account on Slack using your Calvin email address.
      3. As with Trello, please create your account before Friday.
  3. Technology Stack — Review the following basic technologies. We’ll be digging into them more deeply as the semester goes on, so, for now, focus on the basic concepts.

    1. JavaScript language overview — Be able to explain and implement:

      1. The basic Data types and Control structures, including: number; string; let; if-else; while/for.
      2. Objects, including; literal key-value pair syntax; access using dot (.) notation.
      3. Functions, including: functions as first-class objects; anonymous functions; arrow notation; destructuring.
      4. Asynchronous programming, focusing on promises.
      5. Modules, focusing on NodeJS file-based modules.
      6. Closures, focusing on the basic concept, not the details.

      See the JavaScript Guide for explanations and the JavaScript Reference for details.

    2. TypeScript: The Basics — We’ll actually be using TypeScript, so read the opening section of this article and be able to explain the relationship between JavaScript and TypeScript.
    3. HTML/CSS — React Native abstracts away from these basic web technologies but it‘s still useful to understand the basics.

      1. Structuring content with HTML — We will mostly be working with React Native’s JSX, but make sure that you’re familiar with HTML tags (see “Basic HTML syntax”).
      2. CSS styling basics — Understand the distinction between the roles of HTML and CSS (see “What is CSS?”) and how CSS is used to add style to HTML elements (see “Getting started with CSS?”).