1 of 21

cs156-m23-week01-a

06/27/2023

2 of 21

Welcome to CMPSC 156

Please sit with your team

Team listing is at: bit.ly/cs156-m23-teams

3 of 21

Today's class is in four parts

  1. Lecture (10 minutes) What is this class all about?�
  2. Lecture (10 minutes) Logistics �
  3. Lecture (10 minutes) Setting up your group activity�
  4. Group Activity (45 minutes) Team Formation

4 of 21

Part 1: 10 minutes

What is this class all about?

5 of 21

What we'll learn in CMPSC 156: How real world software is built

  • Coding to build solution to a problem
    • Not just to learn a data structure, algorithm or language feature
  • Full stack web applications
    • Java backend (Spring Boot)
    • JavaScript/React front end
    • Databases and APIs
  • "technical skills" (e.g. web backend/frontend, advanced git/GitHub, testing)�and "soft skills": (e.g. sprint planning, retrospectives, acceptance criteria)
    • Employers value the "soft skills" and want us to emphasize them more
  • Working with legacy code

Legacy Applications

  • Existed before this course started, and will continue to exist in the future
  • You'll add features, fix bugs, refactor code; hand it off to M23, F23 students

6 of 21

CMPSC156: Advanced Applications Programming

Why is this course the way it is?

  • My first real world software developer job working at a large corporation (1987, age 23)
  • I saw a huge gap between what I learned in school, and what i needed in industry.
  • I decided to go back to school, get a Ph.D., become a professor, and try to fix this
  • Writing code in industry is very different from writing code in school (more on this later).

Not just anecdotal: based on research:

  • Collaboration with Michelle Craig (Univ. of Toronto) and three UCSB CS undergrads:�Listening to Early Career Software Developers
  • Interviewed 20 early career software developers: and asked
    • What was your first year in industry like
    • How could you have been better prepared
  • What they told us shaped the way this course is run
  • Plus: four years of research collaboration with WSU and OSU professors/grad students

7 of 21

Writing code in industry is very different from writing code in school

For homework: please read this paper to learn more: https://sites.cs.ucsb.edu/~pconrad/files/paper028.pdf��Please at least skim section 4 (a little over 5 pages) before class on Thursday (Jun 29)�You'll need to have read the full paper by Thursday Jul 6

8 of 21

How the course works

  • Part 1: Traditional (hwk and programming assignments)
  • Part 2: Onboarding (moving towards professional practice, teamwork)
  • Part 3: Legacy Code projects (approximating professional practice)

Format: Lecture/Discussion Large Format / Small Format

  • “Lectures” (75 minute classes on TR)
    • Typically try to keep the lecture material to between 15-30 minutes, max 45
    • Usually between 30-60 minutes of group, hands on work in your teams
  • “Discussion” (50 minute classes on W)
    • Typically try to keep instructions to 5-15 minutes
    • 35-45 minutes hands on work in your teams

Individual vs. Group work

  • Academic Integrity works differently in this course. Working together is encouraged.
  • You may not turn in someone else's work as your own, but you may (should!) help each other
  • We also work hard to help you avoid some of the pitfalls of group work ("lone wolves", "loafers")

9 of 21

Part 2: 10 minutes

Logistics

10 of 21

Synchronous attendance/participation� is a requirement of this class.

  • Based on experiential learning in teams.
  • Can't make up team experiences as an individual
  • We drop the lowest n participation activity grades;�no impact on your grade if absences are rare
  • Try not to miss class unless there's a good reason.

However, don't come in person if you are sick. There is a zoom link for lecture and one for discussion��You can find the links on the slack channel (see image)

Please make your own health and the health/safety of your fellow students and the course staff (me, TAs, LAs) your highest priority.

While it's better to come in person if you can, if/when that isn't feasible, �please do participate remotely using the zoom link rather than not participating at all.

Please be inclusive of students that are participating on zoom:

  • Give them the benefit of the doubt, and assume they have a good reason for doing so.
  • If it is happening too often, and becomes a problem, raise it respectfully as a team discussion item.

11 of 21

#help-lecture-discussion

The #help-lecture-discussion channel on the Slack is special.

Use it during lecture or discussion when you need help (during work activities).

Please use #help-lecture-discussion instead of

  • raising your hand
  • walking up to TA/instructor/LA (they may be in the middle of helping someone else)
  • using the “ask for help” button on Zoom

Note that the zoom “ask for help” button doesn’t work well:

  • It doesn’t maintain a queue
  • Only the “zoom host” sees it
  • It immediately disappears without a trace.

Outside of class time: use #help-general or a more specific help channel

12 of 21

#help-lecture-discussion pinned post

13 of 21

Course websites

(this table is also on the Canvas site)

Course Slack

156: General Information

156: Specific M23 Information

(syllabus, assignments, lectures, etc.)

Gradescope

GitHub organization

Canvas

14 of 21

Textbooks / Reading Assignment

Reading in the textbooks: Use https://bit.ly/ucsb-or to get online access

Then use:

    • https://bit.ly/or-hfj3 Head First Java, 3rd Edition (HFJ3)
    • https://bit.ly/or-jn8 Java in a Nutshell, 8th Edition (JN8)

Reading Assignment for this week:

  • Listening to Developers paper (https://pconrad.github.io/files/paper028.pdf)
  • Chapter 1 in JN8
  • Chapters 1,2 in HFJ3

Homework assignments based on these readings coming soon (Wed or Thu)

First programming assignment: jpa00 (Wait until after class please!)

15 of 21

Part 3: 10 minutes

Instructions for your group activity

16 of 21

Pitfalls of academic "group projects"

Have you had "group projects" where any of these happened?

  • One person does all the work by themselves, and the group takes credit?
  • Five of the six team members do all the work, and one person does nothing?
  • A personality conflict between two group members overshadows everything?

These are real issues. And there are strategies to avoid these pitfalls.

  • It's important to set team norms early (we'll start that today)
  • It's important to develop your professional communication skills
    • Diplomacy, but also: radical candor, empathy, trying to not make things personal
    • These skills take time and practice to develop
    • Developing those is an explicit goal of this course
    • These things actually come up in job interviews for tech positions:�"Tell me about a time you had a conflict on your team, and how you resolved it.

17 of 21

Teams in this course vs. teams in industry

Similarities

  • Common purpose: develop the best piece of software you can
  • Tools (GitHub), Practices (Code Review, Sprint Planning, Retrospectives)

Differences

  • Teams in industry are together 8 hours a day, 5 days a week�(your teams are more fragmented in space / time)
  • Teams in industry have a 1-3 year time horizon (you have 10 weeks)
  • Teams in industry are often a mix of very senior folks and new hires (not so here)
  • Team in industry are getting paid.

You can probably think of other differences.��All this can make it more challenging for us, but it's still worth doing.

18 of 21

P03 on Canvas

(1) If you have members that are participating remotely via zoom:

  • Please have someone in the group join the zoom breakout room for your team.
  • It is also helpful to use the computer at your team's table to also join that zoom breakout room so that everyone can see the zoom session.

(2) Choose one team member to be the "discussion leader" for today only

  • Note: this is not a permanent group leader. Leadership roles should rotate.

(3) Choose another team member to be the "scribe" for today only.

  • Also not a permanent position. Each team member should rotate through these roles

(4) In your team's slack channel, the scribe should make a post with:

  • Name of discussion leader
  • Name of scribe
  • Names of other team members present
  • Names of team members absent

(5) Then: the discussion leader should lead the group through a series of questions. The scribe should write down the answers to these questions in the team's slack channel. (The four questions are on the next slide)

(6) Once your team has the post with the names of the discussion leader, scribe, members absent/present, as well as answers to the four questions the scribe should get a link to the post with the names in it (use the three dots in the upper right hand corner of the post), and post that link as your team's submission for P03.

19 of 21

P03 on Canvas

Question 1: Every team is a group of people, but not every group of people functions as a team.�Think about when you’ve been part of a successful team. As a group, identify at least three things that are true of a team that functions well. You could probably identify many more, but for today, stop at three so you have time for the remaining questions.

Question 2: There are a variety of dimensions of “success” for a team.�One dimension is the “outcome” of what they produce, e.g. do they win the game, or make the product, etc.�Another dimension is the “process” by which they accomplish that. That dimension includes aspects such as:

the way in which the team members work together either in harmony, or in conflict,

whether there is an equitable sharing of the workload or one that feels inequitable

whether team members feel safe and respected, or unsafe and disrespected

Identify three things that your team in this course might do to ensure good process, without sacrificing the quality of the “outcome”. (These might or might not overlap with your answers to question 1; it’s ok if they do, but try to think about it from a different perspective. Question 1 is more about memories of past successful teams, while this question is more about looking forward to what you’ll do with this team and any other temas are you are part of in CMPSC 156.)

Question 3: On a team, there are often people with different levels of prior experience and knowledge for the given task. Your team likely has different levels of prior experience, knowledge, and current skill level with in a variety of areas, such as Java, JavaScript, git, GitHub, databases, HTML, CSS, and Agile just to name a few topics.�Those varying levels of experience can be a stumbling block, but they don’t have to be.�Think of three challenges that might arise because of different levels of experience.

Question 4: Now, for each of the challenges you listed above, come up with a strategy that a team could use to address that challenge, and put the team on the path to success.

20 of 21

P03 on Canvas

Question 1: As a group, identify at least three things that are true of a team that functions well.

Question 2: Identify three things that your team in this course might do to ensure good process, without sacrificing the quality of the “outcome”.

Question 3: Think of three challenges that might arise because of different levels of experience.

Question 4: Now, for each of the challenges you listed above, come up with a strategy

Write your answers on your team slack channel;�then copy link to the first post and submit on Canvas under P03

21 of 21

Part 4: 45 minutes

Group Activity: Actually do P03

After submitting, check in with your TA or LA�(see https://bit.ly/cs156-m23-teams)���Then if any time remains, see the

extra questions here:�