CSV1: Files, Functions, and intro to lists.

by Elliott Hauser

27 Oct 2022

Join our Zoom room at the start of class.

Announcements

  • A good portion of the list of topics is up, to help you plan.
  • Three readings added: treat them as references. The two internal readings are great to draw from in your reflections. The Lists reading is something you can refer to as you work, but I’d recommend working on your CSV2 assignment first.

Q&A

Use Markdown in your posts!

CSV 1

Let’s live code some of the todos, and answer questions along the way.

From CSV 1 to CSV 2

Reflections. I am looking for:

  • Example of a lightbulb
  • Discussion of confusion
  • Something still fuzzy for you, and what you’ll do about that
  • Example of a problem solving strategy working for you
  • 2 code blocks, woven into the discussion
  • Overall: thought, effort, and evidence of metacognition

Smaller things

  • Properly formatted code blocks - Code blocks are set off in their own paragraph.
  • Use github’s ability to color Python code blocks by adding python after your backticks.

Intro to Lists!

Powerful, general purpose sequences.

Some notes:

  • Mutability: changing in place. This is as opposed to strings, which are immutable. String methods return a modified strings. List methods instead modify the list in place by changing the data it points to.
  • split, join: they are both string methods. One returns a list, one accepts a list.
  • is vs ==
a = [1, 2, 3]
b = [1, 2, 3]
print(a is b)
# False: these are two distinct lists

print(a[0] is b[0])
# True: there is only one `1` in Python

An introduction to CodeLens visualizations. Many of you mentioned using these in the textbook, and they’re increasingly part of the text.

Some illustrative code examples

  • While True, continue and break
  • what try/except does to your program
  • use list and string operations, methods, and functions to do the hard work for you. This is why we have data types!

Grades and assessment review

  • Let’s talk a little bit about the evidence for effective CS education
  • I want you doing the work that only you can do, like reflecting, adapting, asking questions, setting learning strategies
  • Too often, programming is taught like a logical proof. That’s not how we learn languages, or new ways of thinking. We need repetition, chances to try things out, opportunities to connect to what you already know.
  • We’re never going to leave a topic behind as if you understand it completely. So, instead of focusing on content, I’m focusing on the process of putting it all together. That happens over and over again and will pay off once we start doing projects.
  • Understanding happens at different times for different people. It’s counter-productive if assessment is too rigid too early, because it short-circuits risk taking, confidence, and creativity. I’ve seen this over and over again: students who are still struggling midway through the semester but focus on process get an amazing ‘click’: and often become my best students.
  • This may feel unfamiliar to you, because I’m not giving you a number that correlates to getting a problem ‘right’ right now. But it is essential to your success, and I hope to earn your trust on that.
Elliott Hauser is an Assistant Professor at the UT Austin iSchool. He's hacking education as one of the cofounders of Trinket.io. Find Elliott Hauser on Twitter, Github, and on the web.