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...
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