CPSC 210

Software Construction

Welcome!!

🏗️

🏗️

Thanks to many others for the work this course is based on:

Meghan Allen, Elisa Baniassad, Paul Carter,
Felix Grund, Reid Holmes, Norm Hutchinson,

Gail Murphy, ... and many more!  

Who am I?

Steve

Taught 210 last term.
Previously taught 103, 110, 121, 221, 311, 312, 313, ...

So.. 210 is a great chance for me to learn as well 🧑‍🎓

  • Professor of Teaching at UBC
    (faculty since 2004)
  • Various software projects including in collaboration with industry, but..
  • Not a software design professional

We are a team of 2 instructors (Meghan and Steve), one course coordinator (Riley) and 25+ amazing TAs! 

Quick masking note

Steve

I'm immune-suppressed.
 

You don't have to!

Still, if it's no problem for you to do so,
it would be great if you did! 😷


So, I'll wear a mask this term.

Zoom

We are using Zoom for many Help Sessions (= Office Hours)
and a limited remote lecture experience

And we may not get a chance to check Zoom chat often. 💬

All lecture sessions will be streamed live on Zoom 💦

But the in-person session is our
priority, and quality may be low 

I    Designing Software

  • It is creative and challenging...
  • It is about tech and people...
  • It has far-reaching impact…
  • It is for everyone...
  • It is both deep and practical...

(💰 It also pays well 💰)

Course Structure

  • Lectures: Prep and watch videos before each lecture!
  • Lecture Tickets (5%): online questionnaire before each class
  • Labs (10%): 9 lab assignments (~1 lab per week)
  • Project (20%): personal project with multiple deliverables
  • Exams: two in-term exams (30%) and one final exam (35%)

Piazza

  • Please use the discussion forum for all kinds of questions
    • Except personal administrative questions that should go to cpsc210-admin@cs.ubc.ca
  • Please have a look at our initial Piazza post and the "Appropriate Study Habits" section on the course page
  • Related industrial knowledge:
    https://stackoverflow.com/help/how-to-ask

🧑‍💻 I accidentally did X. Now it doesn't work anymore. Please help!

edX

  • All learning material on edX

Github

  • Hosting your lab/project/lecture code repositories

PrairieLearn

  • Lecture Tickets and Exams

Schedule & Due Dates

Let's quickly check the course page...

Interactive Lectures

  • Hands-on "lecture labs" as part of each lecture
  • Engage with these exercises - this will help you a lot!
  • Prepare for lectures by reviewing videos!
  • An opportunity to get creative and design an application that is of interest to you
    • And maybe for future employers 😉
    • Some requirements and details will follow
  • It is entirely your own work!

Term Project

  • Weekly time to:
    • complete new lab tasks
    • discuss (for a grade!) lab/project submissions with your TA
  • Optional this week: Drop in to any lab section or complete Lab 1 on your own time.  See the course page for the due date
  • Attendance at your registered lab section is required, starting next week.

Labs

  • The focus of this course: object-oriented design (OOD)
  • We will use the language Java to illustrate OOD
  • The teaching approach will be immersive: you will learn Java in a similar way as a developer would learn it
  • We will dive into existing systems and ask ourselves:
    • What's similar to what I already know?
    • What's different to what I already know?
  • Leveraging what we already know is the best approach to learning a new language

OO Design & Java

Q&A

Let's get started!!

CPSC210 - Introduction

By Steven Wolfman

CPSC210 - Introduction

  • 298