As the child delights in his mud pie, so the adult enjoys building things, especially things of his own design. I think this delight must be an image of God's delight in making things, a delight shown in the distinctness and newness of each leaf and each snowflake. — F.P. Brooks, The Mythical Man-Month, 1975

Work through the guide materials looking for answers to the given questions as you go. Rather than reading the full referenced article, you can generally focus on the portions that address the questions posed in the guide.

  1. Software Engineering

    1. Software engineering — Focus on the main introduction, the introduction to the “Profession” section and “Related fields”.

      1. What is software engineering? How does it compare with traditional engineering and with computer science?
      2. Is software engineering a professional discipline, that is, are there professional certifications that one must acquire before being licensed to develop software?
  2. Software Project Management

    1. Peopleware: Productive Projects and Teams, T. DeMarco & T. Lister — Read the introduction to Part I, “Managing the Human Resource” and Chapter 1.

      1. In what ways are software developers similar to and dissimilar from modular components?
      2. In what ways are software projects challenging in terms of sociological issues?
    2. Brooks’s Law

      1. Know what Brooks’s Law is and how it applies to software development.
    3. The Big Five Personality Test

      1. Know the five personality traits.
      2. Take the test and save your result for the lab exercises. It’s a free test, but you'll need to either create an account or record the results (i.e., the five trait values). In the lab, you’ll submit using this form (or you can just submit them now): CS 262 - Personality Traits.
    4. Constructive and Destructive Group Behaviors:

      1. Consider which strengths and weaknesses you bring to the group.
      2. How can you accentuate your positive impact on the group and eliminate your negative impact?
      3. Is conflict acceptable or even desirable on teams? Consider this video from the Harvard Business Review discussing this issue: Get Comfortable with Team Conflict (3 minutes).
  3. Read this article on the implications of technological change: “Five Things We Need to Know About Technological Change”, focusing on the first of his ideas.

    1. Briefly name Postman’s five ideas.
    2. Describe his first idea and explain whether or not you agree with him.

    We’ll be revisiting this article throughout the semester. Focus, here, on his first idea.

  4. Technology Stack — Review the following basic technologies. If you’re new to JavaScript and HTML/CSS, you’ll have a change to dig into them more deeply as the semester goes on. For now, just be sure to work carefully through the installation procedure and the materials for Expo & ReactNative.

    1. JavaScript — You’ll find references to these technologies on the main MDN JavaScript page or in the “JavaScript Guide”. Be able to explain and implement:

      1. the basic data types, variables, and control structures (see “JavaScript language overview” as needed).
      2. Functions as first-class objects, anonymous functions and the arrow notation (see the “Functions” article on these latter subjects).
      3. Modules (see “JavaScript Guide”→“JavaScript modules”, in particular “Default exports versus named exports”).
      4. Destructuring of object arguments (see Destructuring assignment, in particular the section on “Unpacking fields from objects passed as function parameter”).
      5. Promises (see “JavaScript Guide”→“Using promises”, focussing on the basic concept, not the full details).
      6. Closures (see “Closures”, focussing on the basic concept, not the full details).

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

    2. HTML/CSS — React Native abstracts away from these basic web technologies but it‘s still useful to understand the basics.

      1. Introduction HTML — We will mostly be working with React Native’s JSX, but make sure that you’re familiar with HTML tags (see “Getting started with HTML”).
      2. CSS first steps — 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?”).
    3. Expo / ReactNative — To prepare for the first lab, review the following material on the Expo development environment:

      1. Installation — The lab machines are pre-configured to support this course, but we suggest that you configure your own machine as shown here. It’s best if you have either an Android or iOS device, but you can also use an emulator. You can use any Integrated Development Environment (IDE) but the lab supports both VSCode and WebStorm (see the policies page for installation details).
      2. Workflows — Compare and contrast the managed vs the bare workflow. We’ll focus on the former.
      3. Walkthrough — Review how to initialize, start and run a project on a mobile device, and understand the purpose the app.json file.
      4. Limitations — Review the limitations of the managed workflow.

You do not submit the answers to guide questions, but they may serve as the basis for class discussion or quiz/exam questions.