Lecture Materials

Questions & Answers

Q: Can you post the lecture slides please?

A1:  Yes they will be posted shortly!

Q: How should we decide whether to take the class for a letter grade or credit/no credit?

A1:  Thats a good question, though without a general answer. The credit / no credit has a slightly higher bar for passing, though it wont impact your GPA

Q: Just want to double check, we were allowed to use notes + the class site for the diagnostic right?

A1:  yes

Q: In the assignments, I usually didn't change the comments already provided. Does the software account for that?

A1:  No that is fine :)

Q: Will we be notified if our assignment is retracted? If there is a mistake in the retraction process, will we be notified?

A1:  The retraction is your choice. If you chose to retract, we will make sure that your request goes through

Q: so object is opposite of imperative programming?

A1:  thats right!

Q: Will we be allowed to utilize OOP for the challenge?

A1:  certainly!

Q: Were the images in the image program objects?

A1:  Yes they are. Good insight

Q: what is a paradigm?

A1:  “A way of approaching a problem”

Q: When working on assignments, are we allowed to look up reference/syntax for Python? What online resources are acceptable under the honor code?

A1:  You can certainly look up what a python function does. If you find online resources that solve the problems we give you in assignments then that is across the line.

Q: Isn't objectifying wrong?

A1:  Haha. Yes it is! But the CS meaning of “objectification” is pretty different.

Q: So, SimpleImage was a class?

A1:  Yes!

Q: Wait, so if we can use methods with strings, are strings also objects?

A1:  they are! So are lists…

Q: what is benefit of using a class if we were already able to solve various problems without it?

A1:  They let you define a new variable type! That is super useful :)

A2:  You can solve even more problems with classes! Perhpas you want to store data of a certain class in multiple different programs. You can use classes to do this!

Q: What is the class of the objects: string, int, and list?

A1:  those are each classes! There is a string class, an int class and a list class. You can test this yourself using type >>> x = "this is a string" >>> type(x) <class 'str'> >>>

A2:  They each have their own class! string, int, and list!

Q: While we can't overload methods, can we have multiple constructors outside of the default constructor in Python?

A1:  You cannot define multiple constructors. However, you can define a default value if one is not passed. def __init__(self, some_param=“Default”):

Q: So we can have two (or many) objects of Counter with two different values of ticket_num?

A1:  yes!

Q: so we dont need the main() function anymore? the init function is new main() since its the one declaring the variable?

A1:  init is the constructor functon for a class. You would need main in the use_counter file in this example.

Q: When retracting an assignment, does it have to be the whole assignment or could it be certain parts of the assignment?

A1:  Typically its the whole assignment — but if you are retracting a warmup problem we might consider only retracting part

Q: Can you specify the instance variable in the functions instead?

A1:  Yes! You can specify instance variables outside the constructor.

Q: can you create multiple objects in one class?

A1:  Oh yea! I would say you create “multiple objects of one class type”

Q: so the ticket_num is a global variable? how can next_value() access it?

A1:  In a class, all functions have access to the instance variables.

Q: Why is this new code not in a class? Isn't that imperative programming and not OOP?

A1:  There are two parts. In one part you define the new variable type (that is OOP), in the other part you use it (that is imperitive)

Q: if we want to talk privately with chris or mehran about our assignement, is that possible?

A1:  Come to office hours?

Q: Just to be sure, is the use of an external python reference library (such as https://www.w3schools.com/python/python_reference.asp) okay for assignments?

A1:  okay!

Q: Does the fact that strings and lists are objects have anything to do with their mutability/immutability?

A1:  not much. Some classes are immutable, some are mutable. The ones you define in cs106a will be mutable

Q: Is there inheritence/polymorphism in Python?

A1:  There is inheritence, but not polymorphism

Q: whoa, so even a string or int inside a class is mutable?!

A1:  Not quite. If a class has a string, that string value is still immutable

Q: Are there abstract classes or interfaces in Python?

A1:  Not in the same way that there are in java or c++. Python has a separate concept called “duck typing” which serves a similar purpose.

Q: for the contest, is there are only 2 winners for the whole CS106A class?

A1:  Yes, though there have been circumstances in the past where a special “peoples choice” award has been given

Q: How are immutable classes created if the objects we make are all mutable?

A1:  Interestingly, python doesn’t expose an easy way to defined your own immutable class!

Q: Are classes like making a helper function just outside of the main program?

A1:  Thats one of the reasons people use classes! Though they also define new variable types which is helpful in other ways

Q: Just wanted to double check, were we allowed to check online Python reference/Syntax (does not contain any solutions) during diagnostic? Thank you!

A1:  Yes! You were allowed to look up syntax for python functions during the diagnostic so long as the solutions that you wrote were your own.

Q: Was there Chris’s group hours this Monday?

A1:  No, they were cancelled this week.

Q: Are we allowed to use global variables in a class, then?

A1:  they aren’t global variables, the are called instance variables! They are attached to the object — but the instance variables are accessible among all functions of that class which is pretty great

Q: For the contest, which would be better (more likely to win): a. A really cool and beautifully aesthetic program but imports tons of libraries and doesn’t really utilize raw python concepts. or b. A not as cool program but written in pure raw python.

A1:  thats so hard to answer. You should make the greatest program you can… if you judge it to be wonderful, the SLs probably will too

Q: How do you store a class? (Say, in a Json file?) Do you have to retrieve all the individual pieces of information from the class?

A1:  You store the class in a .py file in the same folder and then import that class file into the .py file where you use the calss.

Q: If you set count1 and count2 = 0 in main() would the result be the same?

A1:  You could have recreated this functionality with integers. Classes can do many things ints cant, but this was just a simple demo to show the mechanics. Good question.

Q: Where is the next_value function coming from? Is it in the class?

A1:  it is! Any “method” defined in a class is callable on an object of your variable type

Q: Why would you want to use a class instead of helper functions?

A1:  Style! Why would you want to define your very own variable type?

Q: When will the diagnostic results be released?

A1:  Early next week!

Q: Should we use class in biasbar assignment?

A1:  You do not need to use classes in biasbar

Q: I’m not sure I understand, so in this example, is the value stored in count1 of type counter and it’s not of type integer?

A1:  count1 is type Counter not of type integer. But count1.next_value() gives back an int.

Q: How can you make a parameter optional? (Like in string.find() for instance?)

A1:  Here is a great explainer: https://www.geeksforgeeks.org/default-arguments-in-python/

Q: what lectures are needed to complete assignment 6?

A1:  Everything up to last Friday

Q: so will the method always be changing the variable you created in the constructor?

A1:  doesnt have to change an instance variable.. but it can

Q: Why did he say the filename needs to be lowercase but then wrote out Classname.py with a capital C? Are all characters in the name supposed to be lowercase?

A1:  Perhaps a typo. Often the files are lowercase

Q: Can you define a class in the same .py file along with all the other code?

A1:  you can, but its customary to write them in their own file

Q: Hi! I was just wondering if an IG was planned for occur for Assignment #7?

A1:  No IGs for assignment 7.

Q: Is self the python equivalent of this in Java?

A1:  Yes they are similar.

Q: will there be a final?

A1:  Nope!

Q: Would is the advantage of using OOP instead of just setting count1 = 0 in the main and then changing it from there?

A1:  You could have recreated this functionality with integers. Classes can do many things ints cant, but this was just a simple demo to show the mechanics. Good question.

Q: so what if we need to pass any other param to next_value() will it still need self?

A1:  yes! You have self, then your additional params

Q: What if self.ticket_num was not initialized at the time of construction? will the counts still happen?

A1:  no! That was necessary

Q: I thought you didn’t have to return the object because python already knows? Why did he return in the class function?

A1:  you can optionally return anything you want in a class function (aka a method)

Q: because we might have trouble focusing today, when can we expect to see the recording posted?

A1:  I hear you! You can find them here: https://canvas.stanford.edu/courses/124529

A2:  We will post it later this evening!

Q: so where does the instance variable live? heap or stack from previous lectures?

A1:  Great question! Its in the “heap”

Q: So what does __init__ = "__main__" mean?

A1:  I think you are referring to this code: if __name__ == '__main__': main() It says: when you run this python file, call the main function.

Q: So returning in a method isn’t necessary?

A1:  not necessary

Q: what’s the difference between an object and a regular variable?

A1:  nothing, all variables in python are objects… but in this case the objects are of a variable type that *you* get to define

Q: if we write up code with the help of a teacher, and use that code in our assignment, is that okay?

A1:  A section leader is fine! If it was a teacher outside of the course staff you should have credited them: http://web.stanford.edu/class/cs106a/handouts/honorCode.html

Q: What are the benefits of using OOP over imperative? How do we know when to use what?

A1:  OOP lets you write really large problems. Its the next level of decomposition

A2:  You can use OOP when you want to define a new variable type!

Q: what's the difference between heap and stack again?

A1:  Its optional cs106a material. Its the two places in memory where your variables live — stack is where variable names live, heap is where their values live.

Q: Will Chirs hold his Group hours sometime this week since we missed it this Monday?

A1:  We are going to pick up again next monday at the normal time!

Q: Didn’t Mehran need good grades to get INTO grad school though so therefore they matter???

A1:  From what I have observed, grad school is often more about showing you have done some cool projects than good grades

Q: so UNITS_TO_GRADUATE is still called a global variable even if its inside a class?

A1:  UNITS_TO_GRADUATE is a constant

A2:  its called a “constant” but it is visible to everything in that file

Q: So what’s the relation between def __init__ and if __name__ == ‘__main__’? Is there a relation?

A1:  they are different, but they use similar syntax (the dunder). __name__ == ‘__main__’ says: this is what happens when you run this function file. __init__ says: this is what happens when you create an object of this type.

Q: do you need the get name function? Could you not do name = self.name?

A1:  self.name is an instance variable, not a function. But you are correct, you can use that syntax to get the name of a student

Q: so what is special about the dunder how do we know when to use it in our method name or not?

A1:  only use it for “special” functions. In cs106a this will often just be just __init__. Later you will learn about __str__. There are a few others, but I would focus on them later

Q: How does the get_name function know the names already? Where is it getting the info to return?

A1:  It is getting the information from the instance variable stored in self.name

Q: Is there a way to autogenerate accessors/mutators for instance variables in a class? Or do we have to type all of those methods manually?

A1:  I am not sure if pycharm has this autogeneration feature.

Q: does this program interact with user in any way? does it ask the user what their student ID is? how many units they have taken?

A1:  This will happen in the stanford.py file.

Q: can you have multiple constructors that take in different parameters? (i.e. primary and secondary)

A1:  no! But the init function can take “optional” parameters

Q: so if strings and lists are classes how come they don't need their own py files for us to use them

A1:  Since they are so helpful, they are inherent to python. So just by having python you have access to this information.

Q: Are classes always created in separate files?

A1:  They do not have to be, but it is good style to create them in separate files.

Q: for assn 6 till what lecture do we need?

A1:  Lecture 19

A2:  Lectures up to and including last Friday’s lecture

Q: Can you get units earned by using s.units_earned in the main function?

A1:  that does work…

Q: Do you need to define every parameter as self.variable = parameter before you can use it in your class?

A1:  yes

Q: Can you create immutable objects?

A1:  python actually makes this truly hard! Its not a native ability

Q: In real-world programming, will we use constants as often as we do in this class? For example, I imagine that CS106A_UNITS would be stored in a gigantic file full of course:units pairs, or something similar? Should we expect to see many constants?

A1:  actually putting constants in a file is very popular for larger programs! Good insight

Q: just curious if the chat for the whole class was disabled for a reason?

A1:  I think its enabled?

Q: where can I find all the information regarding the def of objects, instances, variables, heaps, stacks etc.?

A1:  live answered

Q: What’s the paradigm for thinking of a concept like Class in the first place?

A1:  Try to think about it in terms of nouns and verbs. Nouns become your classes/objects and verbs become methods in those classes.

Q: can you post more practice questions for finding bugs in given code?

A1:  Sure!

A2:  live answered

Q: i like your haircut chris :D

A1:  Haha thanks!

Q: oh, for me the chat only goes to panelists. it makes class more fun and social.. not a big deal tho

A1:  Interesting! We’ll check into that next time :)

Q: Just curious, in what occassions should we use object and class?

A1:  Style! Why would you want to define your very own variable type?

Q: Can Mehran elaborate on why grades don’t matter for undergraduates??

A1:  live answered

Q: can Katie talk about ethics for elections and ballot counting etc?

A1:  Go to her office hours and ask about this!!!

Q: What would best enable a student to get into the CS coterm program?

A1:  Come to office hours!

Q: so while class is the blueprint an instance is an object that is built from a class and contains real data?

A1:  Yes, that is correct!

Q: I dont see Katie’s OH on the http://web.stanford.edu/class/cs106a/oh.html

A1:  They are on Ed!!

Q: What does a + or a +checkmark on hw? I'm trying to figure out if I'm passing the class.

A1:  You are doing well!!