Please sit with your team:
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 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 Friday)
- 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.
- https://ucsb-cs156-m23.slack.com/archives/C05F7FSRK6U
- Use it when we are in “work mode” during lecture or discussion and you need help.
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
/m23/
specifically
Where is the syllabus?
Here:
Online access to the textbooks
- 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
- https://bit.ly/or-jn8 Java in a Nutshell, 8th Edition
Homework
For next Thursday (07/06/2023)
- Before next Thursday’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 will be on Gradescope
- You can access Gradescope through Canvas
- Link to Canvas is on the course website: https://ucsb-cs156.github.io/m23
- There will be 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
- Check website for software to install https://ucsb-cs156.github.io/m23/info/software/
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
-
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.
-
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 Thursday
Read the Listening to Developers Paper: