EBoard 02 (Section 1): The Lab Equipment (aka MathLAN and DrRacket)

Warning This class is being recorded (for those who can’t be here today).

Getting started

  • Grab a card. The card will have a computer name and a location.
  • Remember the name and location.
  • Drop the card back in the jar.
  • Navigate to the computer.
  • If you arrive first, start the lab.
  • When both partners arrive, introduce yourselves.

For the future: I’m happy to reserve a (somewhat random) seat at the front of the classroom who need a front seat as an adjustment or accommodation. Just let me know.

Approximate overview

  • Administrative stuff; no attendance [10–15 min]
  • Debrief on Monday’s activity [5–10 min]
  • Set up for MathLAN, partner one [10 min]
  • Set up for MathLAN, partner two [5 min]
  • Lab [45 min]

Administrivia

Introductory notes

  • I’m still Sam (or SamR). Our class mentors are still Cassandra and Quang.
  • Yes, you will get regular “Spam from Sam” (or whatever you want to call the approximately daily email mssages).
  • I’ve released “grades” for the first few folks who turned in the reading.
    • Sam will demo next class.
  • Please say your name when you ask or answer a question (even if I’ve just called you by name).
  • I think I’ve gotten the automatic update of the eboards to work.
    • Sam: Update this, save, and check again to demo.

On concerns

Here’s the approximate distribution of concerns as of 5:00 p.m. yesterday.

  • Time and workload [x18]
  • Falling behind / learning curve [x10]
  • Knowing less than my peers [x8]
  • The class is rumored to be challenging [x6]
  • How much will I retain/be able to use? [x3]
  • The class has a bad reputation [x2]
  • A new topic [x2]
  • That I will end up hating CS [x2]
  • Obscure language [x1]
  • Need to recover from bad coding habits [x1]
  • I’m bad at math [x1]
  • Motivation [x1]

These are not unreasonable concerns. But I’d like to address some of them, particularly time and workload.

  • CS is different than most disciplines in that you know when you’re wrong. That makes it harder and more frustrating.
  • Most Grinnell students are not good at “I’m not getting this; I should give up for now” or even “I’m not getting this; I should ask for help.” But it’s the right approach. Trying again and again and again is not helpful.
  • As you saw in the syllabus, there’s a huge range in time required. There’s no way around that.
  • The course is designed to take about twelve hours per week, which is what Grinnell says a four-credit course should be.
    • I have cut back on what is in the assignments.
    • Please tell me if you find that you are exceeding this.
  • Use resources! Work in 3813 and 3815 and ask the folks around you for help.

My least favorite comment, and one I thought I should respond to:

I have heard many negative opinions on CSC-151 such as the choice of language and the way it’s being taught.

  • The language: It’s not practical in the traditional sense (i.e., that lots of people use it). But there’s evidence that people program “better” in Scheme and Scheme-like languages.
    • One of the core designers of Java says that it’s his goal to get Java to incorporate all of the features of Scheme.
    • As one of our alums who used to be on tht side says, “JavaScript is just Scheme with a worse syntax.”
    • Our goal is to get you to think well computationally.
  • Nonetheless, I accept that criticism that it’s not a popular language, and that means that there are issues.
  • The approaches: Active learning (learn by doing), in pairs, with mastery grading.
    • Grounded in learning sciences. Evidence of benefits for all three main approaches.
    • I watched lots of students struggle early on (e.g., 3/7 on the first SoLA) and then master material by the end of the semester. In redoing work, many said “Wow, this was hard then; it’s easy now.”
  • I acknowledge that lecture feels more comfortable. But “read and apply with people around to help” is a much better way to learn.
  • A hidden issue: “I thought I understood CS, but this class was hard, so it must be the class that’s the problem.”
  • In short: Not all opinions are appropriately informed opinions. If you’ve observed America for the past five years or so, you should know that.

A note on academic alerts

  • A colleague suggested that I mention my policy on academic alerts.
  • I am fairly aggressive about submitting academic alerts.
  • I will generally submit an academic alert or a note of concern.
    • If you miss multiple classes (how many depends on whether you’ve been notifying me).
    • If you struggle on a SoLA, even though we have re-dos available.
    • If you miss deadlines.
  • These are intended mostly to help appropriate people keep track of such things. (Academic advising, your advisor, you, me.)
  • I was taught that academic alerts are helpful, since it lets us catch issues early and provide appropriate support.
    • In fact, Academic Affairs sent out a message yesterday encouraging us to submit alerts.

Upcoming activities

  • Track and Field Saturday in the Field House. (You only need to stay for thirty minutes or so.)
  • Grinnell Quadrangular February 5 at 1pm.

Upcoming work

  • Read things in preparation for the third day of class and report on those things on Gradescope. (Due Thursday at 8pm.)
    • You’ll find the list of readings in the course schedule.
    • Readings are due the night before class so that I can skim them to identify issues I might address in class.
    • I will not always find the time to review them before class.
  • Finish the lab writeup for today’s class and submit on Gradescope.
    • Ideally, you’ll get lab writeups done in class.
    • Failing that, you should strive to get them done before the next class, since labs often build on each other.
    • Labs are generally due at 10:30 p.m. the night before the next class.

Observations from reading responses

  • Just so you know, + and * can take more than two parameters.
  • We’ll talk about string-split in the Q&A section.

Questions on the readings

What is that backwards apostrophe you keep typing?

It’s a “backtick”. When the eboard gets formatted, the text surrounded by backticks gets presented in a monospace font family, making it look more like computer code.

Will the readings always be this long?

Generally, you’ll only have one or two, rather than four or five. We ask for a bit more reading during the first week.

The majority of you spent between one and two hours. In some of the longer cases, it seems like you were also counting the syllabus reading and/or you attempted to write out answers to all of the self checks.

Keep me posted if you regularly spend more than an hour. We can look at ways to make you more efficient.

Should we try things in Racket as we go?

I wasn’t expecting you to do so for the first readings, but it’s generally a good idea.

Do we have to submit all of the self checks?

Nope. Only the ones with double daggers. You should think through the rest, though.

What’s the difference between an argument and a parameter?

In most uses, nothing.

To some computer scientists, parameters are for function definitions and arguments are for function calls. E.g., “square is a function that takes one parameter, x”. “Square the argument 5.”

What’s the difference between an operator and a procedure?

In some languages, where you write them. For example, in C, you’d write double(5) and 5 + 5.

In Scheme; not much. We write (double 5) and (+ 5 5).

How are parameters related to variables?

“parameter” is another way to say “argument”. Like variables, parameters and arguments name values. However, parameters are “inputs” to a function, while variables are things we compute/name along the way.

What’s the difference between a function and a procedure?

In Racket, nothing.

In some languages, functions return values and procedures do not.

What type is a circle?

It’s an image. As you’ll learn on Friday, we can do a variety of things with images.

In Racket, should 3/4 be written as (/ 3 4) or (/ 4 3)?

Either as 3/4 or as (/ 3 4)

And for subtraction, should 3-4 be written as (- 3 4) or (- 4 3)?

(- 3 4)

What is the meaning of the 2 quotation marks in the rear of the procedure (string-split "string" "").

"" is “an empty string”; that is, a sequence of zero letters.

Why is the first value of the output list in blue?

Because our text formatter is stupid.

What does (string-split "Snicker snack" "ck") mean?

Split the string (sequence of characters) "Snicker snack" at every instance of the sequence "ck". So we should get two or strings out of it: "Sni", "er sna", and perhaps the empty string.

Is a sentence considered a list of strings?

We can choose multiple ways to represent sentences. We could use a list of strings. We could also use a single string with lots of spaces (and a period, exclamation mark, or question mark).

Are there tricks for navigating DrRacket faster?

Ctrl-R does “Run”

Ctrl-uparrow or Esc-P brings back the prior command.

Ctrl-downarrow or Esc-N goes forward a command again.

Could you give more examples of how we describe procedures?

Not right now. If things don’t make sense after today’s lab, ask again.

Could you explain “list of values” as a type?

Some procedures return multiple values, which we say are grouped into a list. For example, string-split returns a list of strings.

Other procedures can take those lists as input. For example, length takes a list as an input and gives you the number of elements in the list.

The map procedure seems cool. Can we talk more about it?

Sure. Next week. Maybe the week after.

What version of Racket should we use?

8.3, if possible.

What’s the difference between (string-length "a bb ccc dd e") and (map string-length (string-split "a bb ccc dd e"))?

string-length takes a string as a parameter and counts the number of characters (things you would type, including the spaces).

As you’ve seen, string-split gives you a list of strings.

map with string-length works with each element of the list.

I’ll try to demo this in DrRacket.

Can I nest parenthesized expressions?

Yup. As much as you want, as long as you follow the “open paren, function/operation, arguments, close paren” model for each parenthesized expression.

What’s wrong with writing (5)?

5 isn’t a function/operation.

Q&A

Notes:

  • I always reserve time for questions at the start of each class.
  • Questions can be on readings, homework assignments, class policies, and such.
  • I prefer focused questions, but I’ll work with anything. “I didn’t understand X” is fine.
  • I may not answer all questions.
  • You can also ask questions on Teams.

Questions

Debrief on Prior Class

Think/Pair/Share

Getting students into card groups was chaos. I intentionally don’t give an algorithm, and it shows. What’s a better algorithm?

We skipped this to make sure we had sufficient time for labs.

Lab 1: Setting up Linux

It’s in the schedule. Each person will do this separately, with the other person helping.

If Firefox doesn’t start, we need to edit the launcher to use firefox instead of firefox-esr %u.

Lab 2: Learning Scheme

  • You’ll do most of the second lab collaboratively.
  • However, setup needs to be individual, so each of you will do the first lab individually, first one person and then the other.
  • We’ll be around to help. At least I think we will. Sam is panicking about various things right now.
  • If you finish early, start the readings for the next class.
  • If you didn’t finish, that’s okay. chat me on Teams to let me know.

Debrief, if time

Nope, there wasn’t time.

The origin of the short and long versions. My colleagues who first taught the course wrote the long versions (or at least the original versions of the long versions). When I started teaching, I decided you might do better with short instructions. But it’s a nice example of different ways of thinking about writing algorithms/instructions.

I see that many of you have three screens (our main screen plus two laptops). Please do your work on the MathLAN workstation and just use your laptop for bringing up the lab/reference materials.

  • If I see you running DrRacket on your laptop, I may attempt to defenestrate aforementioned laptop.