Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Link to Slides and Video

Please sit with your team:

Team listing is here: https://bit.ly/cs156-s23-teams

SH1431-s23-updated

My special passion: Teaching real world software practice

Why is this course different from all other courses?

Because as a young software developer I saw a gap between what I learned in school, and what i needed in industry.

What’s this course about?

Helping prepare you for transition from “Computer Science Student” to “Professional Software Dev”

What’s different?

Dimension CS Student Professional SW Dev
What: Differences in Scope well-defined, fixed scope vague, open-ended, evolving scope
When: Short vs. Long Time Spans short time spans (days, weeks) long time spans (months, years)
Who: Individual vs. Large Team individuals, pairs, small groups larger teams
Why: Learning vs. User Needs to learn something to address a user need
How: Ad-Hoc vs. Professional ad-hoc tools and practices professional tools and formal practices
How Big: Small vs. Large Codebases small programs large complex systems

How the course runs

  • First half: Traditional hwk and coding assignments (more like the CS student column)
  • Second half: Legacy Code projects (more like the Professional SW dev column)

Format: Not so much lecture

  • “Lectures” (75 minute classes on MW)
    • 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 T)
    • Typically try to keep instructions to 5-15 minutes
    • 35-45 minutes with your teams

#help-lecture-discussion

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

Please use #help-lecture-discussion

  • Instead of Raising your hand
  • Instead of Walking up to TA/instructor/LA (they may be in the middle of helping someone else)
  • Instead of 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.

The course website

Here: https://ucsb-cs156.github.io

Note the two parts:

  • Permanent part for CS156
  • The part for /s23/ specifically

Also note the Calendar where you can keep track of things that are due: https://ucsb-cs156.github.io/s23/info/calendar/

Where is the syllabus?

Here:

Online access to the textbooks

Homework

For next Tuesday (04/11/2023)

  • Before next Tuesday’s lecture seciton, skim this article: https://pconrad.github.io/files/paper028.pdf
    • Read all of the “abstract” and Section 1 (about 1 page), and skim through Section 4 (about 5 pages)
    • During class next week, you’ll be dividing up the six parts of section 4 among the team members, and then doing a more detailed read for a homework assignment due in a few days.
  • As you read, be prepared to discuss the ways in which developers felt unprepared, and what experiences they wish they had during their courses at University.

    The point of reading this paper is to try to understand why this course is structured the way it is.

Other Homework is on Gradescope

  • You can access Gradescope through Canvas
  • Link to Canvas is on the course website: https://ucsb-cs156.github.io/s23
  • There are reading assignments in the textbooks for each homework assignment.

What will we learn in this class:

  • How real world sofware is put together
    • Coding to build applications, not just to learn a data structure, algorithm or language feature
  • Working with legacy code
  • Full stack web applications
    • Java backend
    • JavaScript/React front end
    • Databases and APIs

Legacy Applications: They existed before this course started, and will continue to exist in the future.

Logistics

Now we meet our first team

We’ll now separate into teams, (and/or go into breakout rooms if online) and you’ll meet the first team you’ll be working with during the course.

Teams are by discussion section; there are three discussion sections, and 4 teams per discussion section.

Team assignments, and the mapping from teams to staff (LAs/TAs) is listed here:

Note that while the instructor, or a TA or LA might drop in on your Breakout Room, they are not the discussion leader. You need to self-organize to run your own breakout room discussion.

What to do in your breakout room

  1. If you haven’t yet made a post to your team channel introducing yourself, i.e. this assignment on Canvas, please do that now, following the instructions at this link.

    The deadline for full credit for this activity is at the end of today’s lecture, and it will only take a moment.

  2. Once everyone on your team has done that, you are going to work as a team on the activity at this link on canvas:

If time remains, here’s what to do with it

If you complete the activities above, with the time remaining, you are invited to discuss with one another your prior experience with these technologies, and record some of that discussion in your Slack channel.

It’s totally fine if you have no experience with any of these things. Success in this course is defined by learning, which is the change between where you start and where you end up at the end of the course. So, don’t worry about comparing yourself to others and feeling like you don’t belong.

We ask because the staff can construct a better learning experience for everyone if we know where people are starting.

Which of these areas are ones where you have some prior experience, and which are areas where you are a complete beginner?

What are you most interested to learn in this course?

  • Java
  • JavaScript
  • Basic HTML/CSS
  • Working with RESTFul APIs
  • Web app programming in any framework (the idea of a Web backend vs. frontend)
  • Spring or Spring Boot, specifically
  • React, specifically
  • Testing with a test framework such a JUnit, Jest, Mocha, Cypress, etc.
  • Test Coverage
  • basic git (git add, git commit, git push)
  • advanced GitHub (multiple branches, pull requests, rebasing branches)
  • Kanban boards (e.g. Trello, or Projects inside GitHub)
  • User Stories (“As an X i can Y so that Z”)

Record as much of your conversation as you are able in the Slack channel

For next week:

Check out these two videos about our legacy code projects:

Read the Listening to Developers Paper: