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.
Software Engineering
-
Software engineering
— Focus on the main introduction, the introduction to
the “Profession” section and “Related
fields”.
- What is software engineering? How does it compare with
traditional
engineering and with computer science?
- Is software engineering a professional discipline, that
is, are there
professional certifications that one must acquire before
being licensed to
develop software?
Software Project Management
-
Peopleware: Productive
Projects and
Teams, T. DeMarco & T. Lister — Read the
introduction to Part I,
“Managing the Human Resource” and Chapter 1.
- In what ways are software developers similar to and
dissimilar from modular components?
- In what ways are software projects challenging in terms
of sociological
issues?
Brooks’s Law
- Know what Brooks’s Law is and how it applies to
software development.
-
The Big Five Personality
Test
- Know the five personality traits.
- 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.
Constructive and Destructive Group Behaviors:
- Consider which strengths and weaknesses you bring to the group.
- How can you accentuate your positive impact on the group and
eliminate your negative impact?
- 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).
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.
- Briefly name Postman’s five ideas.
- 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.
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.
-
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:
- the basic data types, variables, and control
structures (see “JavaScript language overview”
as needed).
- Functions as first-class objects,
anonymous functions and the arrow
notation (see the “Functions”
article on these latter subjects).
- Modules (see “JavaScript Guide”→“JavaScript
modules”, in particular “Default
exports versus named exports”).
- Destructuring of object arguments (see Destructuring
assignment, in particular the section on “Unpacking
fields from
objects passed as function parameter”).
- Promises (see “JavaScript Guide”→“Using
promises”, focussing on the basic concept, not
the full details).
- Closures (see “Closures”, focussing
on the basic concept, not the full details).
See the JavaScript Guide for
explanations and the
JavaScript Reference for
details.
HTML/CSS — React Native abstracts away from these basic
web technologies but it‘s still useful to understand the
basics.
-
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”).
-
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?”).
-
Expo / ReactNative — To prepare for the first
lab, review the following material on the Expo development
environment:
-
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).
-
Workflows
— Compare and contrast the managed vs the
bare workflow. We’ll focus on the former.
-
Walkthrough
— Review how to initialize,
start and run a project on a mobile
device, and understand the purpose the
app.json
file.
-
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.