What is mutable/immutable exactly?

Data types that are mutable can be changed --- as we'll see on Wednesday, you can for example append a new element to a list, which changes the actual list. Immutable types cannot be changed --- if you want to change the string value stored in a variable, you need to reassign the variable to a new value (you can't just make one small change to the string).

We'll talk about this more on Wednesday and Friday.

Can one function carry out more than one process and return multiple things? / If a function can return more than one value, how would those values all be stored?

One way to do this is to have the function return several values in a list. Another way is to have the function be passed a parameter that is a list, which it modifies. We'll see examples of both later this week.

Can you write code that makes noises?

There are Python libraries that allow manipulation of audio files. But since working with these in a crowded lab would be distracting and noisy, we will instead work with some graphics packages (next week).

For many of these things you could write the program without the function. What is the advantage of writing them with?

It's true that our examples so far have not been complicated, but the advantage of writing functions is to encapsulate complicated code and separate it from the main program. As we work on bigger projects through the semester, you will see (I hope) the way in which separating code into different functions makes it easier to design, modify, debug, and edit.

Will we learn about actual stacks in Python?

You're learning about actual stacks now!

what are some more ways to create stack diagrams?

For CS21, we really only want you to draw the stack diagram one way: growing from the bottom up, with each frame in a box, and each variable in the frame pointing to its value off the stack. In courses beyond CS21, you can learn about other details of how exactly the computer is storing and executing the programs it runs.