Welcome!
Everything is fine.

Lecture 1 Activities

The goals for today are

  • to understand what the course is about and start to get to know each other
  • to start working with the tools for the course, specifically SSH, VS Code and Unix.

In the outline below, I've suggested time allocations, but they're not rigid.

Plan

  • (30 minutes) About the course; Ask any questions you'd like
  • (10 minutes) Launch VS Code, start remote terminal
  • (30 minutes) Unix workshop, in pairs.

We'll continue the Unix workshop tomorrow, and maybe begin H1

Announcements

  • If you haven't already, please fill out the "getting to know you" Google form.
  • I will send an email about a self-introduction video
  • Please read about Queries for next lecture

Videos

Videos are uploaded to my College YouTube account. Linked from the "videos" in the nav bar, but behind a username/password if you're off-campus.

There are a number of other videos in there as well, including demos of student projects from the spring and a video called "If You Can See It": it's a < 2 minute trailer featuring the posters about Wellesley CS Department Alums of Color, with an instrumental version of Coldplay's The Scientist.

  • we'll take a moment to navigate to those
  • I encourage you to check out last fall's projects

About the Course

  • "Full Stack" Web Applications
  • Databases are the back-end tier
  • Project is to build a web application with a team

Note that there are two versions of CS 304. This is the fall version, which means:

  • MySQL database
  • Python middleware (Flask)
  • very little front-end work (JavaScript)

Slideshow

Let's start with an example: lookup

The slideshow from the reading; I'll walk through this.

Syllabus

I'm not going to read the syllabus to you. It's online. Please take some time to read it. I know that parts of it can be boring, but it helps to be informed. Some highlights:

  • Communication: please read/use email every day. I'm old; it's what I use
  • One tutor: Noelle Davis
    • Holding drop-ins Wednesdays 7pm-9pm in E101, starting next week.
    • We'll meet her tomorrow.
  • Office Hours:
    • Mon, Tues, Fri 2-3:30, Wed 2:30-4:30
    • Usually in my office, but zoom is an option, but please tell me
    • Make an appointment via calendly
  • Lateness policy: most deadlines soft, but a few are hard
  • Readings before class
  • Sakai for quizzes, asking questions and for distributing grades
    • quizzes are due the morning of class
    • I'll send out a quiz on Unix tonight for tomorrow. Sorry for the rush.
    • I'll send out the Sakai quiz on Queries Thursday morning, due Friday morning
  • syllabus
  • schedule

We'll take a few minutes now to talk about the syllabus and the schedule.

New this Semester

  • Name Tents
    • they help me get your name right,
    • also other students.
    • please bring them to every class
  • Fewer Pair Assignments, though we may work in pairs in class
    • makes managing your time a bit easier
    • we'll have pairs on some of the harder assignments
  • AI policy
    • treat AI as you would a tutor: helping to learn the material but not to do the work.
  • Participation: I'd like to get to know each of you individually, so I can support your learning style. Please help me do so!
    • Fill out the forms
    • Send an introduction video
    • visit me during office hours

Roll Call

  • Sorry; necessary evil. This class is very full and there are many on the waiting list.
  • Please correct me if I get your name wrong in any way
  • I will hand out name tent materials now

About this Term

  • in-person classes, 3 days/week.
  • active learning: we'll be working on stuff during class

Teaching Philosophy

  • Emphasis on building stuff that works: Practical skills.
  • Lateness policy is designed to encourage success rather than timeliness, but we have to find a balance.
  • Grading is mostly on functionality, though there is a role for clarity, modularity, efficiency and style.
  • The biggest, most rewarding part of your learning is in the assignments and the project.
reading supports classwork which supports assignments which supports the project

reading supports classwork

which supports assignments

which supports the project

  • readings are important to make our class time more effective and to gain confidence about learning from tutorials, references and so forth.
  • classwork gives you a chance to make mistakes with support
  • assignments integrate several skills and go beyond classwork
  • the project allows you to go deep

Server Accounts

You will need to have an account on the CS server. Most of you who are enrolled do. If you don't, you'll have to request an account

Please choose a good password: XKCD

About Me

  • teaching for many years, first at Spelman and then at Wellesley since 2000
  • teaching this course almost every semester, though...
  • it has evolved a lot, and continues to evolve

About You

  • Many of you are under a lot of stress.
  • Please take care of yourself
  • Contact me if there's anything I can do to help. I'm here to support you.
  • I want each and every one of you to succeed in this course. It's considered a challenging course, but I know you can do it.

Student Background

Responses are still coming in, but so far:

  • Very few have taken 204. That's fine.
  • Many know HTML/CSS/JS, but lots don't. That's okay.
  • Everyone knows Python, at least a little. Yay!
  • Many are okay with the shell. I may beef up the assignment and reading, just a little, compared to CS 204.

About Active Learning

  • We'll spend part of the class reviewing the material, answering questions, giving demos and so forth.
  • often, there will be brief in-class exercises
  • Then we'll meet with a homework partner and work on the next assignment
  • If you're not feeling ready to work, that can be intimidating
    • you're probably not alone
    • I'm happy to meet with those folks who want a little more explanation
    • those are not the "dumb" ones. Even really smart people sometimes need a little more time to wrap their heads around something. I know I do.

Questions?

What questions do you have for me?

Server Accounts

You will need to have an account on the CS server. Most of you do. If you don't, you'll have to request an account

Please choose a good password: XKCD

Activity

  • We'll now transition to an in-class activity for learning about Unix.
  • If you don't have an account yet, pair up with someone who does!

Working with Visual Studio Code (VSC)

  1. Launch Visual Studio Code (VSC)
  2. If you don't have the "open a remote window" icon in the lower left:
    1. click the gear
    2. choose Extensions
    3. search for "Remote Development"
    4. click the green "install" button
  3. Click on the "open a remote window" button in the lower left corner
  4. Click on Remote-SSH: Connect to Host
  5. Give your user@host as youracct@cs.wellesley.edu (your CS account)
  6. Give your password

The Explorer in the upper left can allow you to create folders and files, but you can't run commands. For that, you need a terminal. We might as well do that.

If you have trouble with this, remember that there's a video on YouTube: [VSCode remote development setup](

Remote Terminal

VSC can open up a remote (ssh) terminal for you and they have cleverly integrated it with VSC so that you can throw a remote file into the VSC editor by using the "code" command. Amazing.

  1. Go to the "terminal" menu and choose "New Terminal"
  2. This opens a remote shell. I think it will be in your cs304 directory
  3. Do pwd to check
  4. Alternatively c-` (control backquote) will toggle the terminal

If you have trouble with this, remember that there's are videos online: VSCode remote development setup

Unix Work (together)

I have a Google Presentation on Unix. We'll work through part of it together, and then I'll let you and your neighbor you work through the more of it. I don't expect to get through all of it the first day!

Setup for the today (and the semester)

Let's use some commands to start our accounts:

$ ls
$ mkdir cs304
$ ls
$ cd cs304
$ ls

Finishing Up

When you're done, EXIT from the terminal, disconnect from the SERVER, and Quit VSC.

  1. ^d to exit terminal or type the "logout" command
  2. Go to the "File" menu on VS Code and click "Close Remote Connection"
  3. command-Q to quit VSC

Final Words

After class,

  • I will issue permission for people to add
  • I will send a "video introduction" link
  • I send out a Sakai quiz on the Unix reading.