Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
executable file 12009 lines (6496 sloc) 907 KB
interview20130405IanDardik
i ok here with ian dardik and we'll begin with the consent from ritual
p i say i consent?
i i have read and signed the consent form
p i have read and consigned signed the consent form, he he
i thank you, alright, so, um i have an interview script and i'm asking you for um say 2500 or maybe even 1010 or 3502 if you've taken or are taking now
p i nver took 1010
i ok, did you take 2500?
p yes, i took 2500
i ok, so, do you remember whether uh i basically want to talk about proofs
p ok
i do you remember any discussions about proofs
p in 2500
i yeah
p um, that was a while ago, um, i mean yeah it was about proofs, i remember we learned we discussed some irrationality of the square root of 2, and we talked about induction and like we learned things like
modus ponens and tollens and stuff like that i remember that, and it was actually one of the courses
that inspired me to become a math major
i awesome
p but um and i thought i remember is was ... because i thought there was this course transition to
advanced math that you had to take as a prerequ for a bunch, proof writing i thought 2500 was it, boy was i wrong
i huh
p there's a lot more to proofs than 2500, computer science i guess to be ...
i ok, do you remember whether you had to furnish proofs of any kind?
p yea, i remember uhm uhhh my professor had she assigned some homework problems and some of them
were proofs i remember i remember doing something like the irrationality of square root of 2 and
not understanding the proof at all, but uhm there is more simple ones that i understood, and
i found really really cool and interesting when something in irrationality of square root of 2
seems so trivial at this point to me but back then god, i just didn't understand it because
what i did understand was the uhm the contradiction was the fact that you know you say square
root of 2, suppose it's equal to a/b where a is relatively prime to b, we came up make sense but i could it was the first proof for course i ever took so it didn't make sense
i yes, well proofs by contradiction um there is a lot of talk about ... Brouwer that fixed point theorem, which is done by contradiction, decided that he didn't like contradiction anymore
p he he he he
i um, so, uuh, you've given me some example proofs, you're anticipating what's in the interview script, um,
p he he he
i why do you suppose the course 2500 treats proofs?
p why do i suppose that it
i what's the purpose of having 2500, and having it deal with modus ponens for example
p well it's introduction to logic for computer science majors, proofs are important for for example, took 3500, i needed it to uh the professor would give us written homeworks, and you'd have to do like, prove this, prove that, and induction seemed combination and the sometimes really cool when i first learned it of course it didn't come in as handy as i thought it would use to like took 3502
uhm, that was kind of cool, i remember the professor presented us with that little fake induction proof that was like suppose there is a uhm you know uh all there's a great horses in the world you can show by induction that all of the horses in the world are grey, but of course the flaw's in the base case that was bewildered at that point, but as soon as do mathy stuff in my math nature i understood
i i love that problem, i'm so glad you brought it
p i thought it was so funny, i wanted to show my friends who are non-technical majors, but there is no way to show it to them i was like this is hilarious, but there is no way to show them, he he he,
i why do you think that , that's a really cute example, why do you think that uhm for example, 2500 you said was preparing computer science majors for proofs that they're going to have to do in the future, and yet it deals with the irrationality of square root of 2. so, why do you suppose that a course that aiming at computer science would use a proof that particular example?
p i mean it's just like a miniature proof, so it's good to include to include other mathematical concepts even thought you don't see, but the course is interesting and because we introduce some interesting proofs that weren't just computer science, inspired me to become a math major, so
that's a good thing, and also even though i didn't understand at the time, it's a good place to start, you can't start off with like prove that this is np complete, you know, he he,
i many ideas,
p too many ideas, but uh, also want to mention before uhm i got a little side tracked with what it's useful for, i completely forgot to mention i'm taking 4500 right now, algorithms class, and it's very helpful for that because you want to do run times prove this runtime, prove that and it of course it's essential for that and
i something that
p this might be more constructive, something i think that it may be good for but 2500 didn't necessarily hlpe me do is the language, there's some definitely an art to writing a proof,
and like getting down the language which took me i thought it i thought i had, i was good at proof writing in 2500 and then i took transitions and then i thought i was so good and then i took analysis and then i was like a slap in the face ... he he he... i realized it took me like a half a semsester to get good at proof writing in analysis and it was hilarious because by the end of analysis i was reviewing for the final and i read some of the proofs i wrote and laughed out loud, this is hilarious what i wrote and finally im taking analysis 2 and as far as undergraduates writing a proof and so you know it's useful for something liek 4500 where it's like prove this and it's simple
i thank you
p you're welcome
i um, let's see, have you, ok so you've already, you're anticipating all of these questions i was going to ask you if you'd noticed material related to proofs previous course supporting later course and you've already told me 4500. If you had to choose mathematical symbolic formulation on the one hand or software code on the other hand to articulate carefully a concept you were trying to express, would you find one easier than the other? You're a great person for this question, since you have the dual, so how does , are you a math major who's a minor in CS?
p double major
i ok this is great
p dual degree, because across the schools
i ok, ok, so, if you needed to articular carefully a concept that you were trying to express, like,
you know there's this stick breaking algorithm, when you're doing a mixture model, in other words you want a bunch of fractions, proportions, that always add up to one, and you can express that in a simple summation, with a cute multiplication in it, or you can write in a maybe 8 lines of code, so
uh, for precise understanding of your audience, would you find the code easier or mathematical formulation
p certainly depends on the audience of course, um, now, if you saying this formula being precise
i choose the language of math because what is more precise than that? but maybe if you're trying to
be you know get at the concept across and you're talking to a computer science major, maybe by
presenting pseudocode, you can pretty easily do, sometimes, although mathematical notation's very precise, sometimes it's a little convoluted and tough to understand and quite honestly i would suggest if you're trying to do this for something complicated, what i would suggest is give them the code, the mathematical notation and a picture, and there's no change, you know, they'll understand it in that case, he he
i thank you, thank you, yes,
p
i i didn't pay him to say that
p he ha
i ok, uh does it ever arise that you wish to convince yourself, or somebody else of a technical point?
p uh, all the time
i yeah, all the time, in math class
p in math class,
i ok, so, how do you go about doing that?
p uhm generally uhm i would say uhm most common is my math classes, uh, this arises because math this this talk about math, it's kind of, they nothing better to talk about than math, pretty interesting and quite often we'll just be talking in words, and at some point i'll notice that i'll be talking to someone and i don't understand what they're saying and sometimes i'll be talking and i'll notice they might seem like they're paying attention but it's clear to me that they may not really understand what i'm saying so that that's where it most often arises so i don't necessarily go down and write it down for them technically, i'll just maybe try and explain it to them you know in more clear terms but uhmi don't know i generally do this by studying alone so i don't always have that problem
i un huh
p that's i already forgot the question
i so, um, so, we're talking about when you want to read something and understand it precisely, do you have a preference for code or mathematical formulation
p oh, me, oh
i and then uhm and you said that if you were trying to get something precise across you would do a picture, and you would do a mathematical formulation and you would do code, if it were somebody who was used to code
p right
i and that triple threat kind of arrangement
p sometimes it takes all three
i i find nice to use all three uhm and so then if you're trying to convince yourself of a technical point, what would you do? what machinery is most comfortable to you? and then if you were trying to convince somebody else,
p ok, i see what you are saying now, um, in other words, completely off topic
i no, you're fine, perfect
p ok, but um i would say i would say my answer to the previous question, i would give someone code uh notation and a picture is you know i ...that precisely because that's what i want to see, when i um, when i study for my parallel systems class, the book will give an algorithm sometimes some notation, and generally a picture, and so normally i look at the picture first, and quite often it's good enough, you know, i want to see a picture very often, but sometimes i just i look at the picture and say what's going on here, you know like, i'm not going to bother and like read the footnote, whatever this that, so sometimes what i'll do is i'll look at the algorithm and the notation first, get an idea, but sometimes some of the notation is just too convoluted i won't understand it and that's when i turn to the picture again and i'll be like ok now that i understand that, i can see in the picture what this little bit of notation means and then the picture will help clear up the final picture
i like mean value theorem, the picture is so immediate
p yea, ha ha, i guess that's a good point, in that case, a ok, that's such a great thing to even think about it, if i were going to understand mean value theorem, i would want to first to look at the formula, and you're going to see alright it's f(b) - f(a)= f b-a and you're going to see this c, c between b and a, you might not be able to conceptualize, you're like ok i see that that there's a window on the left hand side which is f(b) - f(a) like a vertical window, and then you've this horizontal window on the right hand side that is b-a so you could look at the formula and understand that then you see the f'(c) and you might think to yourself, ok uhm this is something what exactly,
then you look at the picture and you see, oh, ok, i get what's going on now, and so you so it's you just look at the picture you might be like what i see a picture, but if you look at the formula first, you see the formula, you wonder about the if you see n and the picture clears it up, i don't think a picture's an explanation, i think a picture is like the final clearing up, that's what i think you present the it's a it's that's
i thank you, this has been great, the 20 minutes you said you had is elapsed, so, thank you very much
p you're welcome, if you have more questions
i the professor who taught me how to do these interviews, said i should always ask, what do you wish i had asked, what would you like to have said on this topic
p i think i said what i want, the only thing i would really want to make sure i mentioned about in 4500 class how i thought uhm ok want to mention in my 4500 class it's definitely beneficial i'm a math major, the first homework assignment he had us do was all about asymptotic analysis and some proofs and it was simple for me, it was like, and the language was very clear uh suppose this, in particular consider this, choose c such that, language was simple you know like like do some of the analysis proofs it's real simple so i don't know if you could necessarily train all computer science majors in such a way if they all have the passion for language, but i think maybe if uh 2500 should go into more depth, it's you know, it's an intro for sophomores, but i would honestly think that uhm, there at least should be an option for computer science majors to take more the theory course in proof writingl not transitions, transitions a cool course, but its' a little overwhelming i would have to say, defnitionely tough at the beginning,but uhm you know you might want to liek a proof writing course or something like that cause for someone like me who's down all the math and the analysis it was straightforward but i just wonder if it were tough for other kids in the class, i don't know, i just wonder
i i suspect it was, you said you learned a lot about proof writing in this transition, also in the analysis class you learned even more
p yes, in transitions you did proof writing whatever but it was more like uhm it was more like uh getting taught you how to do it, and then in analysis you actually did it, so in transitions you get the theory and know how to write a proof conceptually and then analysis came along and it was oh well i actually have to write these damn proofs
i so when you took analysis was it from Rudin's book?
p no, it was from Wade?
i Wade?
p yeah, i don't think he does a tremendous job, personally, i don't think the book's great, but um, my teacher i like my teacher
i who is your teacher?
p if i ask her name is oh, Lisa Lonason, something like that
i lisa juanason, i should be able to find
p i don't even know if that's her first name, lisa, i think, a lonason is just something like that, ha ha ha, but she's a very nice lady, she does a good job, i think she's a little new to it, so she's not seasoned and in the way she you know you can tell like um someone with more experience might be better than her but she does a good job, definitely does a good job
i thank you very much really appreciate making time for this
p of course as a person who is a mth major little proofs i
interview20131101
t so, tell me anything you remember about experiencing proofs, of any kind
p. in 2300, in 2500 specifically?
t any case high school, seemed like this to me, now it seems like this to me
p in high school geometry that was probably first I was introduced to proofs, it was so long ago
I don't really remember much, I know everyone else in the class hated it, I didn't enjoy it that much,
it was math class, and math class was math class, so that was fine for me
definitely different from everything else, i
it kind of had,
there was a separation between proofs and normal math
proofs certainly more about logic
not very much, but proofs even more so
I guess that's all I really remember about it in high school, difficult, challenging but not overly challenging
in 2500
hum,
I found 2500 to be very difficult because of all the proofs, yeah,
like i really like it when things are incredibly logical and
like, i like proofs, i do think that they have like you said in here a certain kind of beauty
um, but their also challenging and also frustrating
but I like, I like seeing why things are the way they are, and
showing, showing the indisputably that something is the case, I guess
t so, after, proof is done, as by somebody else, you can understand it,
you get this sort of rock solid, you know it is so, you know why it is so
but the creative aspect of it is very different from seeing it after it's done
for one thing the process of creating it is not all visible, only the result is visible
p un-hun
t so it can be like watching olympic figure skating, looks beautiful and smooth, nothing extra
nothing out of place, maybe I could do that, but then, when you set about doing it, you
see more about how hard it is
t challenging, people typically do, then 2500 was the next occasion?
p There must have been exposure to proofs in there, too, but I'm not sure on what occasion that was
maybe several times in other math classes but never where it was as exclusively stated that it was a proof that we were doing
t there are times when people are proving things and they don't say, they don't put the syntax on there
what about debate club, were you in debate club in high school
p no, though I do like debating, that's part of it too
I consider myself to be a feminist, in being a feminist, when I
like i need to be like i talk about a lot of interesting issues, and i need to be able to support those issues
and so like my points need to be clear and concise and they need to be connected one to the next
it is very much related to proofs, can see how those relate
t see a relation between proving in 2500 and say something to do with programming?
p like, i very much the same logical sense, um, like with programming there's no ambiguity,
everything is very structured, like proofs are structured in much the same way
i enjoy programming more than regular proofs,
particularly why, maybe because it's more fun to see results, when you program something
t what about, imagine you might have to use a proof?
p when I use a proof? um
t sometimes it's not entirely clear if the answer is accurate, or in all cases, for example,
if curve, and your software has the job of predicting where that aircraft is going to be,
when aircraft has deviated from its intended course, how would you know when your software is correct
p barring the case of intended glitch
t well, so suppose the people who are running the airport want to know how low can the clouds be before we have to
reduce the arrival rate on the runway, the arrival rate is controlled by how safely the aircraft can land
Can you prove to me that i can run my airport, landing rate, the aircraft safely, ceiling, algorithm has the job of , how do you know that the aircraft
will be safe using the algorithm you are proposing to sell. It's just one example of sometimes people have to prove
that alg is accurate. They might have to prove that algorithm doesn't use the battery up within a period of time,
there are occasions you can need proofs to show things like this.
p using a proof as a way to explain the algorithm and prove its validity?
t yes. This hasn't come up in 2500? Sometimes you are so busy learning what you have to learn, that why you have to learn it doesn't seem like a relevant question.
p hard to say exactly what i've learned from 2500, did you say 2300 or 2500
t meant to say 2500
p my abilities, to think logically, as a whole, has increased, but i wouldn't
be able to say specifically what i have learned,
certainly a lot of like logical symbols that i didn't know before
t using logical symbols is a powerful skill to have
p makes things more concise
t yes.
t probably learned about sets, probably had to do proofs regarding sets, one set is contained in another, a way of denoting membership,
you can write these down succinctly. I don't know whether people get that before 2500 or whether that is the first time.
p for me 2500 was the first time I'd done proofs with sets, that I can think of.
used sets before definitely, but not proofs
t venn diagrams?
p venn diagrams
t not a rock solid feeling
t so, have you taken 3500 yet
p no, next semester
t probably be seeing proofs in there, how much maybe memory gets used while algorithm is running,
algorithms where you can find yourself trying to reserve an exponentially increasing amount of memory, or
require an exponentially increasing amount of time to get finished, problematic, don't have
p n log n, or
t so, proving that your algorithm takes less than a certain amount of time is something you can expect to see
p doing a lot of that in 2300, the other class i'm taking, in data structures, a lot of analyzing of run times
t what are the proofs like in that course?
p I don't know if I would say, definitely not proofs in the sense that we have them in 2500.
t ok, you have analysis though
p yes, it in that class it's more similar to just looking at each line of the code and determining how much it is and writing it down as far as runtime
so it's much less ..., I would say, easier to understand, too, does kind of have a lackluster feeling, I kind of understand, I can see, but I don't feel
it's very solid
t do you have to analyze recursive algorithms in that class?
p yes, a lot of for loops, I don't know if we analyzed that many recursive algorithms, I wouldn't be surprised
t ever, proofs were sort of unsatisfying and difficult and then suddenly something got better, or a gentle increase in capability?
p um, my first instinct that it was kind of a general increase, getting better at them
t i remember having an epiphany, had done a lot of proofs in a course by N Lynch at MIT and never really felt satisfied by them,
and one time in 2010, wait a minute, I'm going to prove every little assertion, why something has to be true
p suddenly saw this? pretty cool
t a professor, I made an assertion, and he said you're wrong, and I said well let me explain this, and I was able to prove it to him, and and he apologized ...
p no i still, i still feel that it's still vague like hasn't become second nature to me yet, so
t I don't think it ever becomes easy, but it can become, like you know you are right
p un hum
t did you know that some things cannot be calculated at all
p such as
t suppose you write a specification for what a program is supposed to do, and you have a program that is supposed to meet that specification
in general you cannot build an algorithm that can in put any spec and put in an implementation and determine whether that meets that,
so when you take 3502 you'll learn that
knowing that some things are not possible at all, in some cases you can learn
p it's impossible to prove that certain programs
t in general, take a spec, write an algorithm take a program, whatever program you give me, whatever spec you give me, the general case
Here's another, write a program whose job it is to take in another program (e.g., a compile takes in a program), take in a program
and decide whether that program, once starting running, will it stop? Sounds pretty basic, right, you cannot do it, you can
prove that it cannot be done
p How?
t with a white board I could show you. Have you ever heard of a proof by diagonalization
p Cantor?
t yes. Taking in a program and a string. Let the string be the program. Have D and H. H will decide whether the program halts. D will invert the output of H.
...
t think about when you are posed a problem to do that involves a proof,
what happens when you start to think about it?
p Um, in general, I to think everything that I know about the problem,
what I know to be true and why it's true.
Trying to think about proofs that I've done and how I've gone about it.
p starting at ground 0 and moving up from there, yeah,
t sometimes you can work backward from the desired end, work back towards the hypothesis, trying
to prove something is true, and can't , try to prove it's false, and find out
why you can't, find out why it's true
t take small cases, find out this and this, additional stuff, like saying in case ,
sometimes can partition out, have true in each of the different cases,
There are various techniques, books, Polya, proof solving books.
t can you think of anyone giving you good advice, a particular one or in general?
p good advice in general
t about proofs in general or about a specific proof, it would be too broad otherwise
p um, not, not that I can think of, like i feel like i've had a small enough small enough amounts of experiences
that were like specifically related to proofs that all the advice I got was good but I guess never
assuming anything is kind of like a piece of advice, I don't know if gotten that advice from anyone specifically,
shows us certain groups, in this place says this is obvious but it might not be obvious to everyone, so
t what about strategies, to come unstuck, programs as well as on proofs, some walk around
p cry
t took a written exam in a different school for doctorate, any one tells you grown men don't cry, room full of them
t talk to other people, books,
p come back to it with a fresh set of eyes, like, try to look at it a different way, hard to do that if you've been staring at it for 5 hours
t 300 some years to get Fermat's last theorem proved
p ?
t lawyer in France, communications with other famous mathematicians, in margin he wrote, pythagorean theorem $a^2 = b^2 + c^2$,
cannot do this for any n greater than two for integers a, b and c. So he wrote in the margin of one of his books that he
had a nice proof, but didn't have space to write in the margin, and for 300+ years mathematicians trying to prove that cute little thing
p I remember that.
t recently Andrew Wiles, had a proof he thought was right, someone helped him find an error, then he fixed it. If you're ever feeling disheartened,
p anything else?
t no, I'll shut this down
p thank you for the ice cream
t you're welcome.
interview20131113
This is with Andrew Schaffer (pronounced with a long a.)
Start by saying tyhat you're read and signed the consent form.
p I read and signed the consent form.
t ok, great, so, what I wouhat would like you tell me everythign you can remember about learning about poofs, even if it started in geometry calss in high shcool, any aha moment you had, anything that was odd suddently became clear, what you think they're for in computer science, stuff like that
p ok, um, i guess the first the first thing would be in geometry class like you said i was in 8th grade, um, and the first thing that was it was really hard, it's a lot harder than just computing linear algebra uh
but it seems really ... uh to acutally build a derived facts and uh and whatever proofs in geometyr in
the next most significant experience for me would be um the first year of college, where it took me
advanced calc sequence and so that class was those four classes were entirely proof based
t
p um that was very very very difficult but rewarding also uhm, we really uh a lot of calculus
because the fun was to whatever as a proof based discussion uhm, what else where you saying
t well um so I think it's normal for people when they first start learning proofs to say wow,
I can really be sure of something, if I go through this process but on the other hand,
creating proofs calls for certain amount of you know imagination
p yea
t some times when you set yourself a ting to prove, don't know how, maybe a couple years of practice
having to do proofs, and you look back at that earlier example, say, yeah, I mean that's really obvious
that's truly easy
p yeah, first there are proofs, ok, well how many prefer this, it always seems to be some kind of trick,
how could I come up with this working on it for years or whatever, I think it's more the systematic
thing, oh, this is a contradiction, or induction, I can definitely do that, and that sets' you up
a framework, you can actually prove something through that, then it becomes more obvious
t so there's a time when you don't know that this frameworks are available and then there's the time where you start seeing examples of them, and then there's a time when you say, oh, I've seen several examples of this,
there's this framework here, and then, you can get it to work
p yes it puts in a perspective
t so I'm really interested in how it happens that people think these logical steps so for example I talked to one person not too long ago, who told me that he was not confident of his proofs, where he had to
required to produce proofs, he produced something, he wasn't confident that the answers were really right, on the other hand he knew what modus ponens was, he knew what modus tollens was and he know that arguments that were composed with those would be good proofs, but there's a step there that ``I'm going to use those'' that wasn't made yet, everyone goes through some succession of stages of appreciating, whether there is a framework, that there is a framework, how to use that framework for themselves, so i''m really interested in what helps people step over one threshold or another so it if you can remember anything about, you know
at one point you could not do something and at a later point your could and what happened in between that would be really helpful
p for the first one there are different kinds of proofs. it's, at first it seems as if it's kind of arbitrary that you could just set up something into if a then b and not b then not a, you could just
say that, but then i don't know, it took a lot of looking at the encyclopedia and just getting
examples i think was the most helpful for me, or just simple logic, ah, like analogies I guess,
so, doing that really helped
t ...one idea the relative utility of diagrams, uh, variable names, and text ...you know that the perceived utility of these has been different. At the time of Euclid, diagrams featured a lot, then there was a time, I don't know how long ago,
certainly in living memory, a time when diagrams were really frowned upon, so
when you are thinking setting about how am i going to create a proof for this,
which if any of those do you use?
p well i think concept reported first, for me it's it's being able to picture whatever it is
what the problem is really
so i'll um i guess it was more telling myself to not draw diagrams but instead to do more i guess
more technically rigorous uh rigorous proof that way
but I think diagrams are very helpful for understanding the concept
t so when you say rigorous proof, I would like you to give me more detail about what makes a proof look rigorous to you
p ah, I guess systematically uh observing every possible case for every thing so ah going through that
um
t sense of completeness, having a sense that if going to use cases, has to be a partition
t so here's one um I think is intriguing, I was working on a paper that uh working on reading a paper that talked about the um stick breaking procedure coming up with an unknown number of fractions that always add up to 1. it turns out there's a cute little mathematical expression you can use to describe all of those different fractions and how to derive some, you can also write it in pseudocode or java or something,
and just for fun I wrote it in java and then said ok, to me it looks easier in java than it does in mathematical formulation and why is that? I've tried this out on different people, who, like you, know computer science and know the mathematical formulation, to see if there is any difference in their mind between the two, and if so, which one seems easier, so do you know the stick breaking thinkg
p not really
t ok, so you start with 1, and you break off a piece, and then so you pick the next fraction by recursively breaking a piece off of that, so obviously they have to add up to one, so you do this, all the formulation is the sum of all those, keep putting in the factors for the fraction, that's the proportion of what's left
so that you can't possible, how ever many that you do, so, it's a summation of terms, with the factor
and that's what, but in java you can imagine just describing how you take a piece, and the new piece is the new whole, the remaining pieces' new whole
p i think um in pseudocode it's more an algorithm, so you can actually go through and run it in your head and to you have a method for obtaining results, and I think i feel I can improve general like an atmosphere of how the proof will go i guess not really a good explanation it seems more general out there and not step by step um not step by step process but more of a step by step way usually eliminate things that are wrong I guess
t do you have a set of possible techniques, not really a closed set, but for next I'm not doing to use induction in part going back to the algorithmic expression vs. the plain mathematical statement, the
algorithmic thing was shows you what steps you would take in constructing, the mathematical expression had an equal sign, and after you know that it's a recipe you know what that equal sign means, but before you know it's a recipe, it's an assertion that two things are equal, and they might have independent realities,
so whether they are equal, that doesn't happen in a recipe, in a recipe, there are ingredients and process steps and the result it's not like result a is necessarily equal to result b, how do you know, haha, so
so the mathematical notation has more power case that not being used but familiar with power you can have more expensive ... I wonder whether that assertion is true, as opposed to, if you do these things, it will be equal to this
t so having had that little bitty insight into the approachability of coding representation compared with the mathematical formulation, wonder whether there's a way to make proofs easier by having step, I don't know that there is
t do you think that application of this framework that you were mentioning earlier involves recognition
of certain circumstances as being familiar and associated with
p you're right (?)
t um you might say alright, I see that this problem has several different regimes, I'm going to divide it up into cases an prove each case in it some way, you might have proved something for a function that is piecewise linear, for example, you might be tempted to say well ok i'm going to take this piece that is linear, I'm going to prove within that region, and that, and the regions where they touch each other, and then you have covered the space
t other things don't necessarily say cases to you, but they might say, oho it's a recursive algorithm, I'm going to prove using inductive proof
t there is a book by velleman, who, does instruction structured approach, he teaches students, ok know recognize this, for these we do this, for these we do proof with, of course it doesn't solve everything, but the initial level proofs, it's kind of nice, cookbook approach
t have you taken differential equations
p yes, it was for the advanced class
t depending upon how you approach differential equn, which my professor taught me, lamented to the class that he was doing so, ok recognize these equations, this equation has this solution
p yeah, it seems almost too rich damn way it's hard to remember now i suppose
t he wanted to show us the beauty of these equations, not just recognize that this is type ``a''
t he wanted us to feel what the equation said, so um, you've had 2500
p yes
t you must have had some proof techniques in there
p was on this figuring out because pretty much fall over dead calc stuff
t
p so it was not really new, uh, but as soon as .. then that was course, but
t did you see the class discuss anything about what was the connection between discrete math and computer science?
p yeah, sure
t so, did you ever find yourself wondering why am I practicing this kind of proof?
p I feel like I would have had I not taken this calculus sequence, it just seemed more, it just seemed
we're doing this because it applies directly to computer science in whatever way, so
t is it more the students who are struggling who find themselves asking, do I really have to do this?
p yes
t if you can, you're just going to do it
p it's certainly a lot of work but it's easy, so I can write them
I kind of which they taught it earlier in elementary school because
just watching it all
boolean logic, boolean algebra really useful for calculus course
t did you think about connection between discrete math and computer scienc
p yeah, sure
t so, did you ever find yourself wondering, why am I practicing this kind of proof
p i feel like i would have had i not taken this calculus sequence, but it just seemed more
it seemed like preparing us because it applies directly to computer science in whatever way, so
t I think it's more the students who are struggling who find themselves asking you know do I really
have to do this
p yes, i could see that
t if you can you are just going to do it
p it's certainly a lot of work, never easy, so ... i kind of wish they taught it earlier, like in
elementary school, use logic at all, boolean logic or anything, boolean algebra would
be really useful for a 6th grader
t there has been, some experiments in the 1930's there was a professor named Fawcett, who
teacher taught gradeschoolers how to reason logically. What do you suppose happened? These
students proceeded to make very cogent arguments with their other teachers, who were not
up to it. So, it turned out to be a political problem in the school.
p ha ha, uh, it's so frustrating, yeah, but i've i honestly think i'd be an ideal, it's not,
it's not, immensely harder than any kind of math that uh at that level, would be perfect
t that would be a better place for logic, if everybody, probably easier to teach at a young age than later
p absolutely
t probably using proofs now in 3500
p yes
t have they gotten any more difficult?
p not really, um, just because considering it's usually of a certain type of proof uh they usually
as we were talking about recognize the proof, oh, it's just this, so it's fine
t hum
p not as much, see again some more complex things, as um it's just the just is familiar, i guess that's
why you take these other proof classes, so
t have to count things, counting, combinatorics, big thick books written on it, can be tricky to count things
p sure. can be a problem.
t have you had 3502 yet?
p no, next semester
t there's a few proofs in that, uh, I don't remember which chapter it is, maybe chapter 2, but uhm
there's a bad proof that you have to poke a hole in it to find out what the flaw, and uh, you know
it's wrong, it's a proof that all horses are the same color
p the blond hair people proof, did you hear
t probably, blond blue eyed girls?
p yeah, that kind of thing
t so if you were going to teach a younger sibling like i don't know, 8 year old or 10 year old
how to prove something, how would you start?
p uhm, i would start really, really getting to know the problem, uhm, analyzing every possible
manipulation, um, it doesn't have to be a math problem, it could be any kind of logic problem,
uhm, then i set i feel like being able to conceptualize anything is a necessary first step,
when you're learning it, so, and then from there you can expand
t in an issues class or an ethics class, I was trying to get students to use moral reasoning,
it's not always easy
p it's hard to find where the truths are
t uhm
t I'm teaching this at UMaryland, this semester, in the beginning they had what was an implication,
what was contrapositive, what was converse, made sure that everybody know the converse was not necessarily true, 8 weeks later, they have a problem that they had to do, I asked them to prove that the graph of the seams on a soccer ball, a punctured soccer ball, was a planar graph.
and sure enough some fraction of them decided to compute the Euler number and claim that
since the Euler number was 2, therefore it's a planar graph, but in fact what we had
was the implication that if a graph is planar then it will have an Euler number of two
so I was sad to have to tell so many people, you know, you are using the converse, look back
at week 1.
t do you think it would be easier for people if they had to practice using proofs all of the time
p yes, I do, so while every sick person begins having doing it over and over is definitely helpful
for getting an approach to it and from there you can...um, but later on i think it's a hindrance, so
t thinking about one student i had in 3502, as you will see, you'll have to be given strings, and asked, or given a representation of the set of strings, and you'll have to prove that some such sets of strings
are not in the class of what's called a regular language. and there's a lemma called the pumping lemma
which describes a property that regular languages have to have. and if the language does not have
that property, it's not regular. so you can capture that property and capture that you have tried all
the ...so there's the implication, if a language it is regular then there will be a way to divide up any string over a certain threshold length, in that language, into a first a middle and an end part.
The first part and the end part are allowed to be of zero length, but they don't have to be, and the
middle part can be present in the string as many times as you choose, either, from zero up.
and uh students have to prove, if a language is not regular, there must be no such segmentation that
you can fit the string, they have to convert an implication that contains quantifiers in order to
and they cannot
there are some
all the segmentations out
and uh it's popular to believe that an example constitutes a proof, a popular error
p yes
t and what frustrated me is that we showed a case with a parameter for the length of the first string
so, you know, some x to some to some exponent a, a is allowed to take on the value 0 to the length of the string if you want, but that range of values, and I had a student tell me that no, that exponent a represented exactly one number, not a range. I said well can it be 2, yes, can it be 3 yes, 4 yes, well what about the range 2-4, just as well? But he wanted it to be 1, so it would be an example, so that an example would be adequate as a proof. and the level of engagement with the material was ok i know I put a letter there, a, and then I assert that everything is fine, but if you don't know that a represents a range,
you don't really get it, you just what some people call plug and chug, i put these things here and I say this. so i wish i knew what is the step that people step over that says ah,
he says yes it can represent 2, it can represent 3, it can represent 4, but it can only represent one of them
he's so close
p yes
t so anyway, what i'm doing is i'm studying all the different places that people have found in terms of their appreciation of doing proofs, and that...try to figure out what the student body looks like and
how to help those that are at the earlier stages to advance further along, sounds like you have really good
approach
p you know i was pretty lucky...
t do you remember anything about what made it difficult?
p uhm, probably not sufficiently understanding uh how the logic worked i guess, for certain techniques
of proofs
t some people talk about epsilon delta proofs as being difficult, so you remember getting started with
epsilong delta proofs
p i remember being very confused, and now it's almost for real, use it everywhere, you know, this floating point number small enough, we have epsilon for it, so, I don't know. I do remember being...but I don't know i'm not sure, there's always I don't know what normal is.
t diagrams?
p i yeah. uhm. definitely 2500 i remember we could be sitting down, different, continuity, and you figure it out saying how long
this is how it is, and go through examples trying to disprove it.
whatever uhm, so yeah i think i think being able to visualize it is definitely, at least for
and for
uhm
truly understand that sort of thing without i don't know. I guess the whole point of it is, it's an abstraction of...uh...it's really hard to say
t no, abstraction is very efficient thing to be able to do, lots of progress in math took place when
people were able to make abstractions, this analytic geometry Descartes said you know, i'm going to take this distance and put it in this direction, take this distance put it in that direction, now I can measure these shapes, he did that, and analytic geometry was born.
t do you have any chance to do abstraction? It's supposed to be rather hard. Prof. McCartney sometimes lamenting that you can't get people to be more willing to use UML diagrams, which are a form of abstraction.
and I just had somebody today say to me, this thing, code out onto this,
p ha, ha
t this diagram used for,
t some combination of bottom up and top down
p it's hard to decide
t what's your favorite kind of thing to prove?
p uh, i used to like doing contrapositive proofs, because they're usually pretty easy
p i like computations, uhm, i'm not too fond of induction, for whatever reason, i don't know why
i think that one made the least sense when i was learning
i was learning you could just say there's a base case
i increment once
and i guess abstracting from that, and it's true for everything
it seems i don't know, it seems kind of weird, sometimes when you think about it
t yes, but if you can get from k to k+1, and you can do one
p right
t then you can get from one to 2, and the dominoes take over
p yeah, i mean, it definitely makes sense on that level, when it's more of a weird problem i guess
i can just deduct here somehow
t you'll see in 3502 there's a section of context free grammars, there's a very lovely inductive proof
and it just it gets over with so fast, it's like wow, can I really, I mean it seems like cheating,
I'm not cheating, but gee, that's all there is to it. So I like those, 'cause you get a lot for a little.
t I also like the ones like there's the Pythagorean theorem proof, where you basically draw squares on the sides, and you can see how the squares assemble, and uh, that's you know, being wordless, it's very sleek.
t can you see a connection between, as I recall you were really good in CSE1010 about the recursive programs,
do you see a connection between the recursive programs and inductive proofs?
p um, i mean especially tail recursion I guess.
t yes
p i mean it's pretty much the same thing i guess
t it's the same thing
p he-he-he, induction does seem more algorithm-y anyway
t yes, that's true too.
p yea, right, (t there are steps), exactly
t my teacher who taught me how to do interviews, always end by saying what do you wish i had asked
p uhm, i had no idea.
t Thank you for doing this.
p Thanks for the ice cream.
FIN
interview20131114
t I would like you to tell me everything that comes to your mind on the subject of proofs, including when you started havingt proofs in school, or it you started with informal learning instead,
p I feel like I started proofs earlier than my earliest memory of them, but uh the first time that I specifically remember clearly remember
doing proofs was 10th grade geometry in high school. They have very specific structure, um, we had to use a specific set of
axioms and theorems and based on that we would construct sort of um a proof of some other geometric principle.
t um-huh
p um, and, from there on in I you know in calculus I did not do that many proofs, but proofs very clearly came to the fore when I went
back in college into distri, uh discrete systems and theory of computation.
t un-huh
p so, uh, the the the things that come to mind specific to the college experience which is what I assume you are interested in, is
uh, so the proofs became less structured by definitely a lot more formal, and by structure in high school i meant like we had to write
them in a really specific way and all that stuff but formatting wise, but now they were much more rigorous uh from an academic point
of view, and what I remember quite clearly is that you uh we had to so obviously along the same principles we would learn
theorems we would learn axioms, uhm, and then we would construct proofs based on that. however, you know the big difference were
these were a lot more conceptual, geometry, i've always been good at because it's very visual, here, there many different proofs
one of which specifically for me there sort of divide into two kinds, there's prove that this is wrong with and all you need to prove
that something is wrong is a single counter example, that breaks the proof, breaks the idea
t un=huh
p and then the other kind of proof is that i had to prove you know prove that this is right and this is considerably more difficult
because you have to prove that it applies absolutely every single case, so all of a sudden you have to consider all the each cases,
all the stuff like that
t un-hun
p so, um, comes to mind
t ok, so, a couple of things caught my attention, one was rigor, in when you were doing the geometric proofs in high school,
did you have the notion this was the most rigorous thing you had ever created?
p no. so, I distinctly had the notion that obviously when a proof was correct it was very clearly correct.
but i did not feel like it was the more rigorous thing I had ever done. Notably geometry was very easy for me, I never
had any trouble with it, so, I definitely felt like the ones in college were a lot more rigorous.
t so it isn't that you look back from your college perspective and say oh my high school proofs weren't rigorous, not that I know, but it was also the case that as far as you can remember, when you did not regard so I want to make a distinction between I think rigor means that the proof
itself holds up, as opposed to that it was difficult for you
p oh, um, so no no i believe that both of them were equally rigorous in that respect,
t
b both of them both uh sort of groups of proofs were very obviously correct its just that the ones in high school were very simple
t ok
p they were not particularly sophisticated, it was like you knonw prove that you can have three lines at 90 degree angles to each other, stuff liek that
t ok
p so
t so they felt easy at the time, and as you look back the proof are still rigorous in terms of holding up
p yea
t but they weren't that hard then, and now they look even easier than they did before. Another thing that caught my attention is, visual.
So because there have been, since Euclid, visual element of a proof has been prominent, but more recently than his time uh people were
developed a prejudice let us say against visual proofs, not only because he made an erroneous proof
p
t having to do with lack of completeness in the number system and the necessity of overlapping lines of circular arcs that didn't necessarily
overlap in fact, without the understanding of a complete number system, so I'm really interested in what role visual element plays
in people's understanding of proofs of others, and in terms of their creation of proofs for themselves.
p so, for me personally, visual proofs were just always easier, even to this day, I find that things that I can visualize I tend to do a lot
better with, so I you know I had very little trouble for example with graph algorithms., because graphs for me personally were very, very easy
to visualize, but heaps for example don't have like heaps are not a distinguished by their visual element
p ok
p and as a result i actually struggled with heaps a little bit as I was learning them, now I understand them, for me being able to visualize
precisely what happens, and sort of replay back in my head is the final level of understanding something.
t uhhun
p so once I can do that, I can probably do the proof
t unhn
p so the visual aspect may be a lot easier. I understand how visual proofs are not in complete in 90 percent of the time a visual explanation only shows only one particular situation, you know that we may encounter, whereas in proofs you have to , you know, go for all of them, but you
know sort of visualizing it has always mad it easier
t unh
p at least for me
t right, ok, um, so what sort of uh resources do you bring to bear when somebody assigns to you to create a proof?
p uh, so, if it were today when I don't remember all the sort of tools that I had when I would do first, i would understand very precisely
what it is they're trying to prove, understand the principle that they're trying to prove, and then I would go about sort of
considering all of the edge cases, so in my own head i would sort of try any examples, that might make it wrong, and certainly waste a lot
of time trying to figure out what are certain assigned proof was wrong, uhm, and once that's done i would take my understanding
of this particular thing that i'm trying to prove, and then sort of um and then try to so probably go over all the all the logical
elements, that we had to learn for proofs I would go over any related axioms and theorems related to this proof and then I would try to
uh and then I would construct an argument from the original uh thing to all of the to show that all of the cases all the edge cases
are satisfied.
t here's a slightly different question. not about having proofs assigned. do you ever decide on your own that you want to do a proof?
p no, I just tend I tend to just write code
t uh huh
p or
t uh huh
p it's always been proof enough for me, yeah
t um, so did you take uh did you take 3500?
p 3500 is algorithms?
t unhuh
p yes
t did you have any proofs in that course
p yes
t and they were mainly about resource utilization?
p uh, the so most of those proofs were like were about design algorithm that does blank, in such and such time
t unhun
p and then prove that it does indeed do blank in such, and in such and such time, so it was resource tulization and fulfillment of the requiremenst
t yeah, ok, um, have you had any interest in formal methods?
p no.
t ok, um. did youlike? You liked proofs when you were doing them in geometyr
p yes
t did you like them in college?
p I liked them so, I didn't like them as much in discrete systems
t um hum
p but I really liked them in algorithms. I liked the algorithms course in general, so I at the very lieast I did not mind them in algorithms, I think ....
t did anybody ever explain to you why proofs were used in any course in which proof were used?
p no, I mostly came to the conclusions myself
t so for example, we had proofs in 3502
p yes
t but I don't remember ever actually saying ok, guys, this is why we're using proofs.
p no, don't remember saying that. I believed that in the academia proofs are important because you know validate your particular theory.
and in that respect it's important to be able to prove that what you're doing is right. I've concluded that proofs are often
important when designing new algorithm, you can prove that the algorithm's correct and nail down whatever issues your'e having to actual bougs,a nd proofs are important for practicing and making sure you understand, but nobody ever explicitly told me.
t what would you think about the idea that uh a proof is a way of seeing consequences of an assertion? I f what you assert is your hypothesis
p for me that would overwhelmingly mean that if the hypothesis is somehow incorrect, a great way to find that out.
t un hun
p if I know it's correct, it becomes immediately difficult to
t what if you thought the hypothesis was actually a creative act, and the proving part was an exploration, does that seem to make any sense?
p it makes some sense, yeah. I can see that.
t ok. so Lobachevskii is a famous example of that: Well what if instead of Euclid has a theorem about um what, triangle have to 180 degrees in the plane.
p yes
t and you can say, what if triangle to have 180 degrees (sum of interior angles)
p yes, assume the opposite
t right, so that was an amazingly fruitful line of thought, mathematical research that was begun by Lobachevskii. So one view of proofs is that in fact they are our mechanism of seeing consequences of hypotheses, that we can dream up. Which is kind of different from the notion of something's true. We're allowed to make it be true.
p yes. so I guess from a scientific method point of view, um, proofs wouldn't, so a proof would be a tool to prove that your hypothesis is correct, it wouldn't entirely replace experimentation, it would certainly back up your experiments.
t so geometry proofs were easy for you, so you probably don't remember any aha moments from time. Any aha moments doing proofs in college?
p so I actually proof by induction
t unhun
p I didn't get it for a long time, to this day I still forget it, and then I go over it again, and I get aha, that's how it's done, the aha
moment have always been proofs written for induction, despite the fact that I've done them multiple times, they go over my head and I have to relearn proofs by induction
t so what about recursive programming? Is recursive programming a technique that you use, that you consider early, in solving a problem?
p yeah, to the chagrin of several managers whom I worked with in industry
t ha ha, ok, do you see a relation between recursive programs and inductive proofs?
p yes, so I see the relationship, but I I often have times have trouble making the formal connection
t yes, so now I have another pet problem that is similar in a way so there's this stick breaking algorithm, the algorithm's purpose
is to give any number of fractions that always add up to one.
p ok
t so, you don't know in advance how many fractions you're going to need, but your going to want to ask for fractions, and when
you're done asking for fractions they have to all add up to one. And there's an algorithm for that called stick breaking,
so you imagine a stick and declare it to be of unit length,
p why couldn't you divide one by the number
t because you don't know the number in advance, otherwise it would be easier
p
t so we have the stick, normalized to one, we break off a piece and that's our first fraction, and we have the rest,
break off a piece of it, and whenever anyone calls for you to provide a fraction, you have your stick, and you break off a piece
of it, and when you're done, they will all add up to one, no matter how many times people come asking. And this can be written as
an algorithm.
p ...
t and it can be written as a mathematical formula, in one line, right, so uh, you get a description of the fraction, and you have a sum
and you have the proportionality constant the diminishing thing that's left over and you have your piece, so when I first saw that
formula, I first saw it as math, and I said oh, does that work? And I turned it into code, and then it obviously work
p ...
t and then I looked at the math and it was obviously the code, so I wonder what is the stepping stone process doing, that I go look at it
in the code world where it's obvious to me and I go back and look at it in the math world and it is now obvious to me, although it was not in the beginning and in math you have the left hand side and the right hand side and the assertion whatever they are they are equal, even if
they arrive from independent places when you are doing, they are the same/ The algorithm didn't have that nature to it, the right hand side was what I did and the left had side was what I got, The left hand side didn't have any independent existence, so the equality part of it wasn't so demanding in the code world as it is in the math world, it struck me funny, what's going on there, that by sidestepping over in to the code world, and coming back that the mathematical formulation was so much more clear, so I wonder what, so we talked about induction, we talked about recursive programming which is the incarnation of an inductive approach to arriving at something, and then when you back you say of, of course, induction, it's recursion, it's the same thing, and now it's path is clear and memorable, so this process of stepping, ok we're going to see it with our math once and now we're doing to see it with our coding, and then we go back and say, oh, yeah, now that it's kind of related to this active coding we see it in another light that makes it easier to comprehend.
p i get that a lot in straight programming, a lot of people have this mathematical explanations, and then in code it all of a sudden makes sense I think part of it has to do with the uh it has to do with the procedural nature of programming we're in state a, we move to state b, state c, state d and in the end we get an answer
but equation is like an absolute constant total truth
t unhun
p and you have to take it all in at once in order to understand it, whereas code you easily understand piece by piece the other part of it has to do with fluency, right, because we don't speak math, but we don't use I always learn things best when forced to use them and this applies to code, too, languages that I haven't used in a while I forget
t unhun
p but languages that I use all of the time, I remember, and it's easy to remember them, and I think that's what's happening here because we don't actually use the math language to accomplishing anything
t
uh
p the equation is one total absolute truth whereas the code actually accomplishes something, it's easy to go from state one to state n. That's my sort of 2 cents on it.
t I almost wish there was a way to teach the use of math that bore some more relation to the way we teach the use of programming languages.
And whether in fact if we did that, they, um, math would become equally fluent in math as we are in coding.
p I think to a certain extent yeah, if we think of programs like excel,
t un huh
p you know we have, we're using math, we're using all of these mathematical principles, but the difference is that a proof is something you only use once, you've proved it, and that's it, and total absolute truth, there's no other way around it, once you have the equation, the mathematical equation, that's it, there's no way around it, and, but, with recursion for example, learning recursion, if you can apply the principle to many algorithms and see how it's recursion, you can do this with trees, with literally any principle of computer science, apply it here, apply it here, but proofs, that's it. It's absolute and true and you accept it and you move on.
t unhun
p you don't have to accept it's still going to be true
t he, ha
p ha, ha
t another sense of context-switching. ok, thank you very much, I really appreciate it. We're done, we're off.
interview20131115
t fri 15th, rebeccca, start by saying i read and signed the consent form
p i read and signed the consent form
t ok, thanks, so anything you remember about learning proofs, working with proofs, deciding to do proofs on your onw
p like in geometry or in? uh
t yea
p i just remember disliking them in geometry, I don't really remember why i think like mathematical induction um uh because
they they they verify themselves, like you you use them to check your answer, and you know if you've arrived at the expected
answer most likely did it right. I generally like to do any kind of proof that has either like a given like set of steps
like mathematical induction has a set of steps where you have your evnetual condition, you verify your um you verify and
then you do the inductive step and then you can conclude
p um then things
t hopefully theres a connection between the inductive step and can get , can start from the base case and then
p yes
t and you can go on, sorry i shouldn't have interrupted, so, um you had geometric proofs in hs, did you have induction proofs in hs?
p I don't remember
t but you brought up inductive proofs
p we did that in 2500, and then we also did like the um the laws of logic proofs, like those
t modens ponens?
p yeah, and those are they're a little more difficult it's almost like a puzzle i guess, so sometimes work forward and backwards at the same time
t very good
p so i'll start at the bottom, you know what I'm supposed to get to and try to modify that and see if I can get it to look more like my other roules and start linking them from both ends
t sounds like you do well in that class
p still in it
t ok, doing well in that class. uhm did you remember thinking about either because it was brought up by the instructor or the book, thinking about how this material connects to the rest of the curriculum?
p for the class, or in general?
t well in general
p in general we're learning uh i mean even now in 2100 uh the data structures calsss we're learning about graphs and we just went over and we're going over graphs from a mathematical and you know theoretical i guess perspective in 2500 and then in 2100 we're going over them in a practical like usage in terms of like solving a maze is what we're going to do with them, so it was really cool when we started doing them in 2100 seemed liek ``I know these, I already learned how to do this''
t it's nice to see one class supporting another, it can be really good, um so, have you looked forward at all to your professional career, thinking how this material might be useful to you?
p I actually belive like 2500 uhm i'd really like to i asked you know professor some of the things that you would do with this and uh she mentioned artificial intelligence, i think that would be really really i dont' know a heck of a lot of it, I'll probably take it
t there will be graphs, there will be searching around graphs
p i think it would be really, really cool because it's all logic, and that's all it is, it's just logic
t so you might do some work in AI, some research in AI, become a professor of AI
p I hope so. I'd like to teach computer science
t so, do you remember any aha moments while you were proving things? YOu know, some people have trouble, realizationa, aha
p it's usually after a couple of examples, like if somebody gives me the stips and you know there's the official formal definitiona dn you stare at ti and you;re like what on earth is that but one you go through a couple of examples, i'm personally a huge fan of examples they help me understand things, once i've seen it applied a couple of times, once twice, you know i'm usually pretty ok with doing it myself
t uhhun
p um, but it would depend on the class, depend on the professor, usually just leaving it at the formal definition is
kind of aaahh, I kind of work backwards with those, like I get an example, then ok this relates to this step that's what this means, that's
t i've heard tell that Einstein thought that examples were the only way that people learned, he was definitely in favor of examples. Have you ever noticed, ever looked at, talked about procedural steps, they did this, they did this, have you ever thought of going after a proof
as if it were that you were writing a computer program?
p I don't think so. um, I'm a fan of like having like a set of steps to do something with, rather than so i know like what to do next uh
t ... elements...show you (getting Velleman book).. this, takes a very procedural approach to proofs, even has a website where you can, peel
this part of the proof seems to be as if we can handle it like this, and then put this, make smaller and smaller environments, instead of proving the whole thing
p something like, when we do they ah what i had to start doing with my physics problems was breaking them down into i have this chunk, i have this chunk, i have this chunk, i'm going to label and use this chunk, i'm going to label and use this chunk and then i'm going to see how they all fit together
t unhum
p even if there's like even if it's almost like in straight programming, there's a few ways to choose form , you know now to solve a certain problem, if you can choose between like one or two or three you know different steps that;s fine to but when it's kind of like solve this problem here's the formal definition go for it i'm like whoa
t if you can move it form that form into a form that feels more comfortable, then you can... so I'm curious whether you ever find yourself proving things outside of class
p i mean i do like i find myself i like to learn, i love learning, um and i like to know why for a lot of things
t uhhuh
p so maybe not necessarily proving but maybe asking for almost almost asking for a proof, like a I was shown an equation and ask my physics professor where does this come from and he's like here's the algebra, here's this, and i'm ok, i follow the proofs like in multivariable whenever he does proofs i'll follow along same thing with 2500 because you know i'm not going to be tested on it you know i'm not going i usually don't take nots because i'm not going to be tested but i will pay attention where most kids will zone out, he said i don't need to know for an exam, it's interested to know where it comes from , I remember in calc 2, where we proved the formula for the area of a circle using integration i was like cool
t yes
p i thought it was pretty neat
t do you think that middle school kids could practically be taught how to prove things?
p uuuummmm, i mean it would have to be pretty simplistic, but yeah, if you give them steps, the same thing if you're doing a kind of experiment, solving a math problem, if you have a math problem you have a set of steps that can be used to solve it, you have a set of steps you use for your proof, you do this step, you do this step, if it was simplistic material, i definitely think so,
t i think we could too, there was a small experiment from the 1930's where an instructor named Fawcett taught some middle school kids to prove and they became such ... arguers that they got into arguments with the other instructors which was not a good outcome
p great for critical thinking, too
t yes
p leads to curiosity, you know, why, personally I've just been curious, but if you can get you know even one or two kids to start to start asking why for you know not everything but for most everything, if you can start asking why, and you want to find out why, that's i think that's incredible, the best thing any kid could ever have because it makes them want to learn, and when you want to learn you're going to find a way, go to school, go to class, find the fun things, I have a packed schedule, you know i have 2 hours multivariable lectures, but it's fun because we're learning new things i kind of plan out different things, in this class we're going to do this, we're going to do that
t thank you.
uhm
t since you're taking 2500 now, have you had the occasion to think, if I were going to teach this material i would approach it in such and such a way?
p I'm actually a really big fan of how my professor teaches it, gives us the formal definition and then gives us a bunch of examples, she'll read through the formal, half the class will kind of zone out,which is fine, everybody has to understand there's a formal definition but going over it personally I would use a lot of examples, i love examples, i'd make sure everybody understood every step, they do take a long times to do, i'd do maybe one or two my professor does by hand on the board, ok there's this step, here's this step, you know and every step you like do you have any questions on this step, you know and make sure everyboyd understands, and you know maybe somebody had a little more trouble be able to help them you know in office hours or things like that um, I don't like a bunch of writing on powerpoint slides, because I feel compelled to write it all down, I hate powerpoints to begin with because I feel compelled to write all the information down and it helps me memorize ot too, I'm sure it's the same for a lot of kids, you're reading, you're writing, you're hearing, so you're rememberin, so I guess fewer words or you know give kids more time to write it down, but fewer words
t when there are classes with powerpoint and powerpoints are not handed out, that always handed out that always amazes me, why not give them to the students
p posted on line so kids can print them out, I can't afford to print out powerpoint slides for every single class every single time, plus, what helps me too is the actual writing of the information, like visual, auditory and writing learners, we did a fun little test one time in 6th grade, you're all , um it was like a fun little thing, and what i find is best for me is when i can hear see and write it at the same time um this just if i can write it because i'v reading it i'm wriging it i'm saying it in my head as i'm wrigin it
t do you find when you go back and look at such notes, as i imagine you do occasionally, can you remember where the professor was in the room, do you find that?
p it would depend on ths class
p paying attention to the professor
t two years later decided i wanted to transcribe some notes form a course, and I was transcribing i realized that there was like a movie, and I knew where the professor was standing, oh yeah i remember at this point he did this, i though wow that's amazing, writing down really helps
p i remember comments, i'll write little notes next to, comments professor will say that I think might be important, that he didn't put on the powerpoint, but might help with those extra few points
t that was really quick, you used up all the ideas that I had, um
p if you think of anything else you could write it down and let me know
t let me try this stick breaking idea out on you, there is an algorithm called stick breaking which can be used when you need an unknown number fo fractions that have to add up to 1. This can be written in a single line, a summation, in mathematical notation, or it can be written in a few lines of code, and people I've shown this to have said, they can read the code no problem, it's obvious code you can follow, and when you think about it yes, that is going to add up, no matter how many times you go around that loop, the sum is going to be one, you can imagine taking a stick and normalizing its length to 1, breaking off pieces, retaining one that is infinitely subdivisible, so when you visualize it it's really obvious, when you write it in code, to a person who's used to code, it's really obvious, when you write it in an equation, it's like, ah, are you sure? and I wondered what was going on, um, and I'm curious, can you guess what it would be, if anything that would make the mathematical formulation more intimidating than the code version
p summations
t yeah, there's a summation
p summations, the second I see a summation, I'm like oh god this is some really long thing, or my professor's going to ask me to put in you know
ask me to find the equation for this summation and it's just 'cause we did a I think it was calc2 um they had us do they gave us sequences and series and summations and they're like write the eqn for this and they were awful, just and summations are just weird because you're writing out this really long thing, used them in uh, some of the stuff we used in like 2500 for one of them we had to write out the actual summation i don't know
t ha, ha
p but when you look at that little squiggly (o god)^6
t have you taken analysis yet where you learn that for sum with an infinite number of terms where not all of the terms are of the same sign, you could have for example alternating + and - signs, that you do not, if it's an infinite sum you do not get the same answer depending upon the order in which you add the terms? Yes, very cool, I had that with Professor McKenna, and it was creepy, aha, it never occurred to me that the sum would not be a single number, but, it's not
p it makes sense, you could start with -1 or +1 I guess
t you can add up all the negative terms, of which there are infinitely many
p things happen when infinity is involved, weird things happen
t the stick breaking phenomenon, I think that when you see an equality, and assertion of equality, i wonder whether the left hand side and the right hand side have perhaps an independent existence, like here's the recipe for the left hand side, and there's a recipe for the right and side and whether they are equal or not depends upon what those recipes are, whereas in the code sense, we say, i'm going to calculate this value and here are the steps, it's like
p i guess it's just because everybody's expecting like you know cause it's , they're expecting to be met with, like writing out a whole bunch of like math, because whenever you prove things, you have to prove left side = right side, a whole thing like induction, didn't bother me,
math, simplify, show all of your steps to your professor, so that I guess the need for that because they have to understand that you understand what you are doing but then it becomes tedious, if you can skip a few steps in your head and you're writing out step after step for something that might be really long um it just ends up being you know somehow you just know tedious not absolutely hard just tedious.
t I have this notion that when you're showing the professor that you know something it's not so much that as you are showing them your though processes in case they need to help you, it took me a while to come around to that perspective, some teaching did it to me
p that kind of makes sense
t so this sounds as if you are quite good at proofs, um so I'm going to try to get you to remember back, in case there was, to a time when things were not obvious, is geometry, um,let me ask you this, remember when you had to bisect an angle, did you do this geometric construction
p yes
t and then some students decide that they really want to trisect an angle, I was one of those, I spent a lot of time, do you remember that?
p It's been a really long time
t it turns out there's a way you can prove you cannot trisect an angle, which I did not know, but I was having so much fun it didn't really matter.
p ... as long as you're having fun
t i have found myself taking on things that I want to prove, because I enjoy it so much, so I have, so I'm calling this initiative which is really not the right word for it, but since I discovered that no student yet that I have asked says oh yes, of course I set out trying to prove, I set myself the goal of proving x, it's like a non-happening. so somebody was saying a proof, well you do it once and then it's over and you wouldn't do anything like that again until you had to
p I mean, for things like you know if we're doing the work for class like mathematical induction i'm probably not going to go home and do mathematical induction practice for fun, but I mean prove like if I were to prove something in a way more fun you know I guess like why something works you know from playing around with my computer, oh, why does this do this? you know, oh, this is related to this, but you know i guess when kids when people hear proofs they think and then oh god geometry, they're like oh god, because you have to remember all of those different, you know,
so there's this thing called Euclid's 5th postulate, and for 100's of years people were trying to prove that Euclid's 5th postulate was completely unnecessary and could be derived form other postulates, and Lobachevskii took another approach, he said yes, Euclid's 5th postulate is necessary to the geometry we are doing and in fact if we make another postulate it amounts to saying that triangles angles have to add up to 180 degrees. and what if they don't. So you have these two cases, they add up to less, they add up to more, and you get different geometries from those, and some some people even thing that the shape of the universe is the hyperbolic one, not the flat one we use. So, that's an example of
p hyperbolic like a parabola?
t yes. Imagine laying a triangle out on a hyperboloid surface, then the angles are not going to add up to 180. so, what Labachevskii did was a creative act, and there's a lot of argument amongst mathematical theoreticians where math is there already and we are just discovering it, or whether we're creating it. I'm one who believes that Lobachevskii created that idea, and that once you have set that as a hypothesis you can use the techniques of proof to explore the consequences of , oh if we know this, what else do we know? for some reason i find that really appealing to be able to find out stuff that we also know.
p it's always good too because if you're even it's really reassuring when you're expecting to find something and then you find that and find out why in the process, so you have like you know what you're looking for so it's almost like working backwards, i know what i'm looking for and i know where i'm starting but if i can work both ways i can find the path pretty easily
t so your exponentially exploding world of possibilities, at least the depth of that tree is cut in half when you start from both ends, so i think it's amazing that there was this burst of mathematical creativity in France um at the time when there were aristocrats. These were people that, Fermat was a judge by trade, but he amused himself doing math, Mersenne, for whom Mersenne primes are named, Mersenne was a minister, a priest.
p what's a Mersenne prime?
t ok there's some formula, 2^n-1, we can look up Mersenne primes, Wolfram ok, 2^n-1, n is prime, in order for the Mersenne number to be prime, n must itself by prime. ok.
p 2^n -1 for n =2 gives 3,
t so I was saying that these people were uh financially secure, they're well to do, and this is what they did in their copious spare time,
it was advanced mathematics
p if you don't have TM
t true, they did not have tb
p no tv, no internet
t chamber concerts,
p that requires going outside
Y go to his room and just do math
p that is
Y go to his room, do math
p only if really, really
t i'm glad we had Lucian
p,Y yes,
t ok I think we've arrived at the end, thank you very much.
interview20131120\_15
t ok thanks, so i'd like you to recall anything at all associated with proofs, maybe chronologically when you first saw the,
what you think when you have to start writing them, anything
p first time i encountered proofs was in earlier math classes like calc1, I never could prove them because there's always a theorem
prove to the professor or to the class that was it , the first itme i ever had to use proofs for an assignment was in this class
and I'm not particularly fond of them, so , yet that's the feeling when I've encountered in class
t they're rigourous, require you to pay a lot of attention
p so much attention to detail, and it's so intricate, several ways of going about it as Prof. Peters demonstrated, there are different ways of strong and weak induction a whole procedure and try and so yeah there's a lot of details that go into it
t so, um, do you have any notion of what they're for, why, for example, that course is in the curriculum?
p actually, yes, yesterday in class, Prof Peters's TAs was explaining this to us, he says, the point of the proofs and
the things we learn in this class is for other classes that are nearby in the curriculum, 2300 and 2100 or more like software engineering 2102, but anyway if you can prove that you know hardware example hardware application that a certain thing is true, that you
can the hardware ...true, the same for software, you can prove that small blocks are true, the same can be said fo rthe
whole program, that made a whole lot os sense to me, before that i was not sure why we, obviously they are important
for mathematics, but, computer science and engineering, that really cleared it up for me
t since we have a recent launch of a spacecraft, we can refer that, if you wrote a bug in your program and found it after launch,
which has happened, there was an craft on Mars before, that was experiencing an error, and they figured out where it was
coming form and they were able to fix it remotely, ...some error... but when you have to release your software on a
spacecraft, you don't have a chance to go back, or maybe you are writing a flight management system for an airplane,
you really want to be sure that there aren't any errors, and you want to be sure you aren't using more memory than you have,
it turns out that get proofs get used for that as well, how complex is that algorithm, a resource consumption question,
so you will have application for this, but I think frequently in classes the professor will also have a proof that they
show you but you have to be sure that its right, be convinced by it. Uh so, and it may be that you to create proofs
yourself, so but in Professor Peters' class, you had to create proofs, so, can you tell me something about what goes
through your mind when you set out to create a proof?
p when I start to create a proof, most commonly mathematical induction because this method of prove seems most straightforward
to me, and most of these assignments we did mathematical induction, so that's what goes through my mind first, and
t when you produce su
p not always, because the thing that that induction is there are steps to it, you prove for this case, you prove for that case, plus one, I can go thourh those steps and by going through the steps I'm sure it's correct, because it's the right steps but in my mind it's a little shaky and i'm not
t right so there's this other thing when you get ot 3502 there's a problem they use in the textbook, where there's a proof by induction, it has the base case, it has a way of advancing through the integers, and it proves this completely ridiculous proposition that all horses are the same color.
p yeah, right
t which you know is not so,
p of course not
t and you look at this proof and say what's wrong with this proof, that's the problem
p right
t so if you think of it as steps, but you don't know why the steps are what they are, that's one level of thinking about the proof, and its better level than some, uh, but if you don't know in your heart and mind why those steps are adequate, then youre left with this feeeling of well,
I did it, but I'm not necessarily coinfivnece
p yesh, that's precisely the feeling I've had
t so with inductive proofs i like to visualize them with dominos, you can prove that one domino you can knock it down, dominos can fall down
then, if you can prove that neighbor dominos knock their neighbor domonios all the time, and of course there's a space, you have hto have them close enough for that to be true, then if you stack all the domainos close enough and you can knock the first one over, and you know the kth domein
which is allowed to be 1
p right
t then for sure you can knock over
p that makes sense
t so you have to have a base case, you have to know that you can get from the kth case to the s+1 case
p yeah
t and it has to be that the base case is good enough to get you to that first k, after that you're completely covere
p right, ok, yeah
t so i think there can be gaps in , for example, I talked to one person who said well he was not confident about these proofs, he knew what moduls ponens was, and he know what modus tollends was, but, he would write proofs and not be confident
p yes
t the connection between the two was not there. The educational process allows for gaps to happen and if everything were tied togehter, students would say, ah, now I get it
p right, yes, yeah
t and i think it's maybe you know people are tyring to cover a lot of material and have a limited amoutn of time and students are trying to take a number of courses usually grater than one, and so these gapts occur and people get stressed out or just don't feel confident
p yea, yeah
t so the purposeof what I'm doing is finding out where, coause everyone inows the gats are there, finding out whether they are all culstered in one place or sprinkeld all ove rthe place
p right, right, right
t so i'll tell you another story to get you talkeing about suomething, I teach discrete on line at UMD, and I had students in the first week we talked about what an implication was
p ok
t what a contrapositive was
p right, right
t ok, you remember that. and what a converse was, and I convinced them iwth counterexamples that the converse was not always true, so, uh, then 7 weeks later, they had a problem which was take a soccer ball, imagine the seams to be edges of a graph, imagine the vertices to be where the seams meet
p umhm,
t puncture the sphere, lay it out flat
p yes
t is it a planar graph? If it is a planar graph, prove that it is, if it is not
p ok
t so you need to know that planar graph means no edge
p right, yes, yeah
t and I had students who would compute the Euler number and say, ah, the Euler number is 2, now we know the following implication:
If the graph is planar, then the Euler number will be 2.
p ok, yeah, right
t so if they come to me and say it's planar because the Euler number is true, that's the converse, so it's not necessarily true, so it's an inadequate proof
p right, right, right
t so I needed them to say, as you lay it out flat there's no need for any edge to impinge on any other edge, that was what the proof was
use of converse, misuse of converse, use of contrapositive, does that get you thinking about anything?
p it has that story because that was kind of pretty didn't really after we went over it we wouldn't really use it that much on the assignments in that homework it makes me realize that yeah there's a gap, what am i trying to say,... for just proofs in general think more about
so many ways to go about ...prove a few things.
t although there usually are many ways
p but you can't leave any gaps like in that
t or it's not a proof at all
p you can think you proved it, students did, maybe I have in the past, but unless you cover all the bases, make sure there's no gaps in the proof
t There's a professor Velleman I don't know what school he's at, he wrote a book I found very appealing because it was aimed at people who were used to programming, he has a website where you can go and use this tool, he poses this problem, he starts and says look we can solve this in the routine, formulaic way, and says now look, here's a bigger problem, but it breaks down into parts
p yes
t and the parts we can solve in this formulaic way, so let's talk about combining parts, so then he goes to more and more elaborate
theorems the students have to prove, and shows about breaking them into parts, it was so much like making a subroutine it just appealed to me
p yeah, yeah,
t that would be a nice thing to do
p absolutely, it goes back to what the TA was saying yesterday, you prove the small blocks of the program, then you can prove the whole thing is true, form there you can build up, you build up to larger programs, of if you have a large one you can break it down to small parts and prove each of them
t so we have the TAs assertion that these can be combined, but it's to know that there's a method for combining them, too. So, did you have proving in geometry in hs?
p No, not in HS.
t and when you started in calculus, did they have epsilon/delta continuity
p those I really did not like at all
t did they say anything to you about um a proof by Euclid, that had pictures in it? Actually a lot of Euclid's work is accompanied by diagrams.
p I think he may have brought it up.
t so there's one proof in which he draws two circles
p yes
t and points out that they intersect
p unhn
t without really proving that they intersect,
p yes
t and then draws a line between the points of intersection and goes on from there.
p unhn
t The problem with that proof was that if the numbers are not complete, which they were not at the stage he was discussing, proved to be complete, then you could imagine there are tiny little gaps in the line, it's continuous line to us because we're looking at the large scale, but there could be some, number in there
p right
t they did not have the rational numbers
p yes
t at least as a concept, of course they existed, circles still had diameters, but uh, the proof didn't concern itself with whether the lines necessarily overlapped, and so people became disinterested in pictures accompanying proofs, but when you try to teach people about proofs, it can be very tempting to draw a picture, and when you did the epsilon delta proofs, there probably were pictures
p there was, yes
t so i'm interested in where what your perception is of the utility of pictures in explaining. So people explain proofs in words, they explain them with mathematical formulations and they explain them with pictures, tell me about if any of those are helpful to you
p i think picture are for me at least form are useful form of proving things because the epsilon delta i mean speaks about it was the whole very small deltas as things approach each other, it was a little foggy in my mind, then when you draw a picture on the board, i still don't really see that
t you x axis and y axis, and this curve
p yeah
t so as you shrink down the amount on the y axis
p yes
t you tend to shrink down the amount of the x axis, so somebody gives you one, it's fixed, then you can shrink down the other one at your liberty until its small enough to satisfy the constraint they gave you
p yes
t so once you know the one is fixed, and the other one can't chase after you, that's helpful to appreciating
p right
t so if things something like um for any epsilon there is a delta, somebody has to set the epsilon, then you can make delta as small as you please
p yes, but so once I saw the picture then the mathematical expression made a little more sense, and I''m trying to remember other kinds pictures have been fruitful, helpful
t so I saw another proof one time, I saw an expression for something called the stick breaking process, the stick breaking process is used, when you're in a position, you want to have some number of fractions, you don't know how many fractions you're going to be asked, but you do know that how ever many you are going to have, they all have to add up to one, as a free for all unconstrained problem, how do you know, you might, next time you get a fraction , you might have overspent your budget, so this stick breaking, somebody gives you a stick, then they say, I'm going to ask you for bits of the stick, not going to tell you how many, but when they're done, now it doesn't sound so bad, because you're breaking the stick, which you allowed to do as many times as you want, and if you need another fraction you just break a piece off, and retain a piece which you can then subsequently break. There is a mathematical formulation for this, has a sum, a couple of factors, and you can see that in the mathematical formulation, you could also write out the code for the process. And so I did this because I had to explain this process to a class, and I thought, Im going to explain this by giving them the algorithm, and to me the algorithm looked so much easier to understand than the formulation, but they me4an the same thing, so how can that be, and I decided it's because when we see the equality, it can be an assertion. The thing on the left hand side may have an independent life of its own, also the right, we say that those are equal, we have to check, but if it's code, the right hand side exists, and the left hand side gets made. so in once sense the code is less demanding than the equation but in fact it represents the same thing.
p yes
t so, once you know the variables are free or bound in that result, so I wonder whether if proofs like mathematical formulations, could be rewritten as algorithms
p yes, yeah
t would the computer science students find them more readily understood
p absolutely
t and maybe even easier to create
p yes, in my opinion yeah, absolutely, because for me ... code fragments I would definitely look first, because that makes a little more sense than some of the assertions, the equalities, an algorithm you can trace through, you can write it out, things like that, it's very beneficial,
t i know Prof. Peters is concerned never to make a step that is not understood, refers back to the textbook that he and I both know by Halliday and Resnick in which the phrase ``is obvious'' was frequently used, and people complained about the first edition and in the second edition there were some that were revised to say ``it's really obvious'' which we did not regard as an improvement. so Profe. Peters wants to avoid that error. Uhm, I think that having a line of code or lines of code will guarantee that it's obvious, because the computer knows what it is, and we're trained to know what the computer does
p right, right, right.
t so have you heard of the method of invariants?
p no
t aha, well I'm not going to teach it to you, but it is something in your future. If you know that something is supposed to be true as your code is going on, you can actually write a check, you can think of it as a guide to error messages, every once in a while the code can check over its own shoulder and say, this ought to be true, if it's not, print something out. Invariants are used also if you want to prove that code is
accurate and you know some things about it, can say well it will always be true, after I do this, these things add up, or some number will be even, you can toss in these check
p assertion?
t uh huh
p ok.
t so you have heard of it by another name
p yes it seems assert this or that, testing in that way, yeah
t so there is really this close connection between what proofs are, what proofs are for, how we express proofs, how we use proofs in code. and it really strikes me about taking a real historical perspective, prior ot the French revolution there was an aristocracy, and some of these people are famous mathematicians, so they were not paid to be mathematician, these are people who wrote proofs for the pure fun of it, it was a lark, you know
p yeah, yeah
t and if you were to look forward to computer science education and see you know in some part of your education your going to be able to sit around and do stuff that French aristocracy used to do, It's proofs. Why it seems to me strange that would be the reaction that we would predict, on the one hand, you know get to live the aristocracy would n't that be wonderful, do proofs, maybe that doesn't sound so wonderful. and yet, people
really enjoyed the mental exercise of it
p yea
t so i wonder what are we doing in the pedagogy around proofs that people find them stressful rather than super fun.
p i think it's just like the culture shift back then yeah i would rather be doing proofs than working on a farm or something like that, but today,
t an aristocrat had the choice, chamber chorus telling them to play for you, working on the farm was not, for these people
p right, right
t i think something oppressive has been introduced that they did not have, maybe it's just students are concerned about their grades, and
they think oh you know if i don't get this i'm not going to get so many points, I 've had students come to me and say, do i really have to know how to do this to be a programmer because i want to be a programmer and i don't what to know about prime numbers
p right, right, right
t it just seems to me that the fact that the aristocrats had so much fun doing it is an existence proof that this can be done in a very pleasant way, an engaging way, I'm trying to find that way
p find the way in which people can enjoy doing proofs
t some people enjoy writing code
p of course
t I happen to be one of them, I will write code instead of sleeping if I have the chance, um, I would like to see proof-making be like that
p i can see that, you know. because i think the thing that draws people to coding is problem solving, the feeling of achievement when something works, i mean, and so why couldn't the same thing be a part of proofs, I guess, I can see it in that way, like that
t so, we have ways of checking whether our code works
p yes
t if we had ways of checking whether our proofs were good, before finding out what the professor thinks of it
p that would be nice
t it turns out there are such tools, and their used for really heavy duty proofs, but if we introduced this into the curriculum, proof lab, use this code, it'll check your proofs for you, you can know you're right, you can find out when you are wrong, when you are, you could keep trying
p that would be useful
t what do you think of the idea of teaching proofs to kids, gradeschool kids?
p I think, if it could be made accessible, in ways they could understand, then I say it's a good idea, but I''m not sure if I could have enhoyed it if I were that age. a good idea for sure
enjoyable
p if it could be enjoyable of course, because algorithmic thinking things like that, even younger age, maybe even computer you know a more basic foundation prove something like that, then I think it would be beneficial
t in 1930's a teacher named Fawcett taught some grade school students proofs, I don't know what they were proving, he taught them deductive steps, they formed rigorous arguments. What happened was, they proceeded to get into arguments with other teachers and their parents, and they won, and they knew they were winning, This did not go over well for Mr. Fawcett, and it was discontinued. I think if we managed the transition, it would be a good thing to have kids starting out thinking and this organized way and i think that some confidence for kids is really important, I really think that part of the Harry Potter phenomenon, they have powers they can accomplish things
p absolutely
t 7 year olds might not have a lot of opportunity to exercise power
t so the combination of knowing you can do small proofs, knowing how to stitch together small proofs into larger proofs, and having feedback
from this system that says, no you didn't get it yet, or know, have a look at line 3, when we code we have source editor tools, lint,
if we had that for writing proofs, I think people would actually have far more
p i ... so too
t ah, my teacher who taught me how to do interviews, always ask people what did you wish I had asked you, so were there any question syou had in mind you were hoping I would ask?
p nothing really, but, I mean, I really want' sure what to expect,
t so what do you think about, we talked about computer based feedback like an editor or even like running a proof by running code
p yes, yeah
t what about sort of having a designated person you could go to, we have instructors, we have TAs is there anything about that system
you know that could be made better with people?
p uuunh i'm not really sure, like how it could be made better, like, someone you could go to with the assignments, and ask them about it
t yes, so, you know, feedback on assignments, ah, when you have a big class, it's really hard, when I teach at MD, I have 40 students,
p i
t I make what's called a rubric, it's school policy, ok they do this wrong, so many points off, while you're at it, you can say, ok if they do this wrong, i give them feedback specific to that error that they have made, and then they built this new learning management system where you can put feedback for the different parts of the rubric, then you can go throught the homework, by rubric, tick, tick, the feedback is automatically added on,
I'm used to writing the personal feedback, not all instructors have time, sometimes get -3 may not have time to pursue
p yeah, exactly
t even if it were coming out of like this automated system like I described to you where the particular error identified in advance, the feedback that goes with that error, so it's not your own personal handwritten answer but it's this, this, you seem to be in this category maybe these remarks would be helpful to you
p i would like to get that because some of my assignments and some of classmates' assignments, would be red 1, prove this, or this is incorrect, I say how, why is this not right, not much feedback sometimes you get points off and don't know why, so it would be helpful to receive feedback like that, re-evaluated, maybe have uh some motivation to go back over the problem myself my own time to figure out what i'd done based on the comments, 3 points off i'm not sure and then oh it's good, before that was thinking before maybe that would help bridge the gap, in your knowledge in the class because sometimes in my other classes in my other computer science classes there can be a gap in my knowledge it gets filled in sometime studying fo rthe homework doing things like htat, i do the assignment and i don't have much intention to go back to it once its done, i'm not really sure, so i think if there were ways that could help fill in those gaps in our something ive thought of
t thanks. I have to check my watch because I have a class at 3:35. I have a little time left to walk to ITE, 10 minutes, 3:35, I need to maybe 5 minutes. Well you've given me a lot of helpful stuff, I really appreciate it.
p you've given me a couple of points too, you've given me insight to real life applications, satellite, spacecraft, in my circuits textbook
to make robust circuits make sure bug free and check because they're are not many technicians on mars, make sure its good, software especially, fix it from earty, really ideally, proved before you could launch the craft, so
t so there's the story about the real time bug the company that fixed it is called VxWorks, and of course they are very proud you know that they did that
p right
t uh, there's a method of ensuring there's a technique called pre-emption, and if you have a task that has can also inherit a priority, so some taks that was allowed to run, but was a low priority task, but it takes a big chunk of time, and maybe it's opened up a database and have to wait until it's done closing it, and then a higher priority task comes along, well, you can either uh wait for ,in fact you have to wait, but if it has a lesser less significant priority, then the higher priority task can interrupt it, the higher priority task gets the processor, but cannot do its job because the other task is holding a resource that it needs
p i see
t now you're stuck, you're not going to do either one. That's the situation they had gotten themselves into, because they were not allowing priority inheritance to run. What happens is, a task of insignificant priority holds the resource, the more significant task comes in and interrupts it, what should happen is the less significant task should inherit the priority of the more significatin task so that it gets the processor, finish what it needs and get out of the way, and there was a bit that turned that off, and the programmers developing had neglected to set it in the right way, and luckily the telemetry supported a command to change that bit, and had not scraped that code out, had left it and were able to switch it and so everybody was really pleased about that.
p yeah,
t anything else?
p no
t I shall shut it off.
interview20131120\_17
it's wednesday, and we're talking about proofs, so, oh yes I want you to start by saing i read and signed
p i read and signed the consent form
t great, so, um, i'd like you to tell me anything that comes to your mind on the subject of proofs, such as first time you ran into proofs in whatever year of school that might have been, whether you like doing them, how you go about doing them, what you think they are for, that sort of stuff
p well as it happens, I started out as a math major and switched, picked up computer science, i first really encountered proofs my freshman year and they were kind of a nebulous thing before then because i liked reading about math, but, um, my actual math doing i never really did proofs before
freshman year, um i took an alternate calculus track um it's kind of a misnomer in my opinion the advanced calc series it's sort of like a proof based curriculum calcl 1,2,3 linear algebra and differential equations
um, so that was my introduction to proof writing, it was really different at first, i did not do too well for the first you know few
...understanding, but i think i mean proofs are about um you know building the next layer of truth kind of showing what you could do or compute um so
in computer science for example uh by proving something we're just showing that its possible um we're kind of setting bounds on what
we can do and can't do i think
t this all sounds great, so i want to ask you about at one time proofs were maybe awkward or unsatisfying and then they became good
p well at times, um, i mean i am of course like most people i think really confused about what i want to do so you know the exact
applicability of proofs my future is uncertain um so there are times that i find the results really interesting and there are times
when i don't so i think it kind of depends upon what i'm proving um so uh in the context of the algorithms class i'm currently taking,
um i haven't found the proofs to be all that great because um from the math background proofs have always had to be very rigorous,
if there is any like leaks or holes it
s not a proof, but the way proofs have shown up in computer science classes because it's not the math department are not very
rigorous really lend me a sense of worth so when we're showing things in the algorithms class it tends to be maybe i'm just not doing
a good job on the homework also a distinct possibility
t feedback on homework of some sort
p yeah, yeah, the language is more verbose you know, i mean it's a problem solving course it it's not the writing it all out in very technical
specific language it becomes increasing ly difficult i don't know that i fully know all the syntax to write explicitly what i means when im
talking about an algorithm maybe i'm missing some notation or something, so for example, uh the homework i'm working on right now is
minimum spanning trees, i have to prove that uh if there is an edge um connecting two points and there is a path connects two points
with edges with all weights less than this edge have to show that that edge wouldn't be in any minimum spanning tree, a lot of things
going on there, not like a theorem with a couple simple assumptions and you have to show result, you know you have to show there are
multiple minimum spanning trees possibly things like that it's not as uh i mean the way proofs come up isn't as straightforward
i find, makes a little bit confusing sometimes,
sorry i rambled so much
t no i have a great time with these interviews, transcribing, analyzing there are techniques for analysis of text and so it's fun, um
let's see, so ,in the computer science applications of proofs, um, it doesn't seem to give you the same sense of crispness, you know
what you have to do, you know you're right, you can tell that your answer is right, um,
p sometimes, i mean uh, theory of computation right now, and that's really a i mean it's been a very interesting course, and I think
definitely some of the proofs from that class have that crispness you mentioned i like that word
t is that prof. sipser's book?
p looks like daVinci drawing on the cover? That's the one.
t alright, by Professor Sipser, who is a math professor
p yeah, uh, i uh, i think that book's good, cause also it i mean an instructor text like that you can't expect it to be totally rigourous
in decidability and so forth i think um you know the level of approach it takes is well explained and appropriate, um, but i find that
sometimes in the algorithms class at least the work that's expected of us it's not so clear cut what's expected which makes it confusing
t cause once you're used to a well formed problem, a well articulated problem, you like that, and you
p yeah
t you don't want to give that up
p i don't know there 's also just the odd when you're saying your sense and you're expected to do a lot of coding but computer science
is really theoretical and not necessarily about software engineering, i like taking 2100 um with prof. mandoiu,
t mandoiu
p mandoiu? and he had a really um very well implemented implementation part of uh the course, i say that because we have this website
submit code to ,run it for us and tell us how the code did, a really fantastic part of the learning experience because it wasn't so
much like, it wasn't really proof based at all, it was about looking at what you constructed and how it solved the problem, and
by doing it that way you kind of see what it could and couldn't do, which seemed a little more appropriate to the subject matter
to me, so right now in 35-- there isn't any implementation, i understand why that is, there's a lot of material we have to cover
it isn't unique to any one language, implementation would be focusing on the wrong things but i feel like
that kind of also detracts from the point of all this, that we'er building solutions, um i means not to sound like an
engineer or anything like that, at the end of the day, my understanding of algorithms were meant to be implemented some how
and while no one what they can and can't do through proofs is of course important i just keep saying it get's a bit confusing in this class, nebulous sometimes
t there's um a technique of sorting that can be linear but nobody ever does it? I've been told, but it's really nice to go through
to understanding of how it works...so a lot of classes have that, even though some professors will say it's there but nobody
because QuickSort or something like that, let's see, so you were saying you liked in prof mandoiu's class there was a website,
it would tell you whether or not you had gotten the solution that was desired, if you had a technique like that for proofs, you were
about to say something
p i think this might, but the website also tells you how long and how much memory, so that you could tell whether your algorithm was up there, correct asymptotic order
t good to know
p yes, sorry
t so there's professor Velleman, book from him, website, talks about making proofs in a structured approach, it's little bit like
thinking in a structured way about how you're going to write a program, you can think in a structured way about how you are going
to prove stuff, it's not guaranteed to work, but if you, you know how in differential equation you can teach DE you know with the deep
insight in to the equations or you can teach it with the more superficial if it fits this form
p tool box, yeah
t so this is a sort of toolboxy way of getting to recognize oh, i'm in a situation like this therefore i know blah proof technique, this is a time for induction, e.g., so he has this tool and he also breaks apart larger problems to be proved into smaller parts, so you break
them into smaller parts, there's a way to connect the parts, and when you break them into smaller and smaller parts, you eventually
not for all proofs but for some, eventually get to the case where oh, this is one of the ones I know how to do, and so
it gives you practice, it gives you feedback, uhm, it gives you an organized way of approaching problems, some problems, i think it's cool, i'd like to see it made avail, have, see students made aware that it's there, in case they want to try it out, uhm, so, if you, if there were a way to approach proofs sort of the way you approach a program, do you think you would use it?
p
t i'm glad i'm asking you this question because you are coming from the math side, you already have your habits about how you approach proofs
p um i uhm you know i sometimes when you're doing...start like, can't remember
t happens all the time
p sounds like a really useful tool and that, but i think building up uhm intuitive understanding of how the how the statement breaks down is
is is is more important in proof writing so last year i think the biggest thing that changed in my proof writing in the math side i didn't really have a good understanding of logical statements, like an if and only if, like i kind of but not explicitly which is important, if you have and if and only if you need to show both implications or show use a thing that builds off
t both sides, p implies qu and q implies p
p or build off theorems that has that double implication in it, so you're using the biconditional the whole way through,
t uhhun
p so well i mean you know you could if that tool's available you could break down that problem and look at the tool but really i think it means if you if that i don't really know why you would be writing, if you just had to write a singular that might be important but if you are writing a lot of proofs it would be good to have that as a reference to learn from but ultimately that should be committed to memory if that makes sense
t uh huh
p ... a lot ...
t i'm not looking for a specific answer, what you think, no way to get it wrong
p the thing about proof writing, um, is i mean it i guess i'm a little biased on this but it definitely seems to be very it's within the domain of math, and the language of math, and i mean many many many fields use mathematical tools um and and as an extension of that need proofs to show
why those tools work, but there all derived from the same body of knowledge, um, so its kind of a language in and of iteself,
and the best way to learn about things you can do with proofs, and how to write proofs is to do them, so i think
the problem a lot of people have is they just haven't written very many proofs and are expected to do things
and they just haven't built up the toolsets to handle that you know i mean it would be like if you were expected
in an english class to write a well constructed 7 page paper that forms an argument and hows why that's true
and you really haven't done any essay writing, you wouldn't know how to approach, it wasn't till freshman
year that i understood what a well formed argument would entail
but i've been writing essays for a while, you know, so i think kind of the same thing applies with proofs
that you just have to go through a variety of proofs a variety of contexts, differential equation proofs
you encounter different clacu , analysis or algebra or theory of computation, but they do kind of like
you are saying break down to the same patterns, if there, if statement you need to prove both implications
if an argument is true for a countable set you can probably use induction, um, so
i means kind of looking for those familiar patterns, but you're not going to be able to see those patterns unless
you know you've encountered tem before
um which is why i think a tool like you were describing would be useful um as a reference not necessarily something that
you go through every single time, because you will be able to recognize the shapes someone had taught them to you
or like talking to yourself
t early on you said something that caught my attention and i want to go back to it,
the idea that you can explore paraphrase i'm sorry i can't remember exact words
something on the nature of you can explore the consequences of a hypothesis, using proof steps
do you remember saying something like that?
p yeah, i, if I can remember, i think i mean proofs let you bound what you can and can't do, um, so or, or
ways of doing it, um, so if there is a i mean i guess it kind of goes to algorithm, sort of a computation
you have to form, and you could brute force it but you could also show how a nice little linear alegbra matrix
solution makes it a lot quicker, but you have to show that that's try in all cases, or show in what cases its try
for, before you can go and use it in the wild, proofs allow you to establish and know that your tools work and why
they work, and probably most important where, what problems am i allowed to use this tool on
i think
t yeah, um, i'm really curious because i've interviewed some other students not all of whom have had the benefit of the math track that you described earlier, and can you you know without naming any names, describe how you other students you have seen and how they are like
sort of not getting it as far as what proofs are for, or what they mean, so
we talked about if you have a hypothesis, consequences come about from that
you can explore them with proof steps, and you can know, certainly, some things
and there are other things maybe you cannot derive from the hypothesis, from an implication
p hm
t not all students have as profound a grasp of the material as you do, and i don't know
if you're talked with any others of them, or have any insight into what's going on,
something comparative
p i think uh i think my biggest experience of that came when i took discrete systems, cause
that for a lot of people it seemed was i mean, which makes sense, because proof writing isn't, if you're
doing even a math minor or are just taking the usual set of math courses you would take for any other major,
they don't do proof writing, the normal calc track doesn't have proofs in it, you never see epsilon delta proofs of continuity
t too bad
p yea, or anything like that, so, i don't have a specific memory to point out for this, but
i think the thing a lot of people hadn't really had to deal with before was just the level
of abstraction that comes with proof writing, which is inherent with computer science,
but a lot of time when we talked about problems it's always through analogyies, i mean
the traveling salesman problem is about cities and moving but that's not really
what it's about it's about graphs and paths and stuff if you want to recall
so when they were talking about continuity epsilon and delta and how it could be
arbitrarily small, those ideas don't really have any grounding in a real problem, which
i think a lot of people have been used to, i mean i never have had to use a calculator in my math class
problem in my last two and a half years of my math education, i haven't i can't remember the last
time i solved a math problem that was related to any class,
i think the biggest problem i was watching people face was the fact that a lot
of the proof writing doesn't have anything to do with a specific problem
a specific circumstance
the abstract form of the problem
um which at this point in my 3500 3502 people are more comfortable with that
the tests we take in 3500 are really proof based, we get a new problem, we have to develop an algorithm
run an algorithm that's already been shown, the last two tests, the last problem on the test
has always been a new problem that we haven't seen, but employs a similar technique as some algorithm
that we should now, dynamic programming was a bigu unit, the last test it was pretty well guided through
but it was a new dynamic programming problem we had not seen before, i mean i looking at other people's tests
isn't exactly a common social practice, everyone said that problem was really really hard,
because all the dynamic programming problems we had done had this specific, i mean, even if it was kind of not necessarily
related to anything, it was a specific problem, finding maximum subsequence, best way to align two strings or something
so the form of our solution like what it is we were doing abstractly i think was kind of lost or people didn't
really recognize it as much because they were so concerned with the specific problem as with the general technique
we were applying, so in the algorithms class like some of the homework asks us to prove things, demonstrate
our knowledge about things, but at the end of the day it's an application class, developing solutions
to problems but the abstraction from proof writing is still very mcuh present, looking at the problem for what it
is, not how it applies to any one thing.
i'm, ... brought back to a point, so i think the thing that i was better equipped to deal with,
than some other people i've seen, i mean i haven't i'm definitely not the best student in any of the classes
i've taken but i've gotten a's im definitely about an average of some kind that's why i feel ok saying this
i just think i've been better prepared um to handle just that the taking taking the abstract form of a problem out
like, looking at the technique you're employing as opposed to how do i solve this specific problem when i encounter it
or how do i turn this problem into another specific problem i've been handling,
one way of looking at it but not going to help you out as much
or when you have a brand new problem
t it doesn't have the strength that abstraction gives you
p uhhun
t yes, how to practice students so that they are able to abstract more is a challenge in computer science, and it in is entirely
possible in my mind the way is to give them better math underpinning
p i mean you know i feel like you know if you keep on going outwards it totally turns into education reform because i mean
this starts at a very young age, i mean math education isn't about abstraction until very very late in the game
um if you even get to that point in the game at all, up unto a certain point it's just about computation,
and i don't disagree with the logic that you know that having a good memory for you know multiplication and addition tables
is really useful in you know accelerating later on, but um that's not quite where the focus is anymore, and
the same thing with computer science when people are just encountering this idea, these ideas at this age you hve to
they come to college and you have to build them the foundation first, that makes it really difficult, i feel as though
ideally if you're teaching ideas, people be familiar with abstraction and so forth or know that it is something that
they like to do and i mean another problem before i give an example is i think another problem when computers a really importatn
tool, convert any kind of information into any other kind of information, anythign you could do you know, so that fact
that computers as a tool aren't part of more curriculums is kind of sad because i've seen a lot of kids who want
to use computers for what they'd like to do, so they study computer science, but that's not what they want to study,
they want to study music or graphic design or art, or some kind of science, but they end up studying computer science because
they thing that that's where you learn to apply computers but that's not what computer science is about, so i had a friend
for his whole life reading history and he went to computer science, get a job, did like computers you know what i mean,
video games and so forth, but abstraction is just not his forte, he's a really smart guy, and he's got a lot of things he is good at,
but that kind of abstraction that you do in computer science and math just isn't something that came to him, maybe
that's from education or nurture, nature, but the point is it just wasn't the right curriculum for him, late stage,
want' appropriate, wasn't prepared whatsoever, so i mean how, how do you get kids in computer science to be better at abstraction
but if they have to start at this point maybe learning more math would be the way to go, but a lot of people
are conditioned to not like math, so i don't know how many people would take to that either
t i bought my kids mathematica when they were in grade school
p i love that program so much
t they liked it, i started them with a drumhead bessel funciton, and they were ooh, and jars of water and drip drips into them,
simulation, real, cool. I bought the school that they were going to, a copy of mathematica and their math teacher took it up,
and guys we're going to do this, there was such an uprising of the other parents, they wanted their kids to learn arithmetic,
i was horrified, and they eventually fired that math teacher, because he was horrified that you know here was his opportunity to
teach all of this great stuff to , and the kids minds were open and eager, and the parents came in and said you know i'm a doctor
and i know my kid has to know their multiplications tables, alright they're doctors, they have more clout with the administration,
p uh,
t there was this teacher in the 1930s in the US who decided that middle school kids could be taught to make good arguments, Fawcett,
and he taught kids to make good arguments and what happened was, that they argued with their other teachers, and their parents,
effectively, ha ha, so they stopped doing it, ha,
p that's a funny story
t they're both stort of data points that this could be done, if we could figure out a way, managing the transition, while the parents cannot
argue
p outside of my even range of regular article reading, but briefly i'll hear or read about other countries that have implemented
programming curriculums at a much younger age, which is essentially the same or similar to foreign language learning or
any other thing we're better equipped, we're just as well equipped to learn when we're younger i don't know about that kind of stuff
but i mean but everything i do know seems to suggest that kids are really good at learning
t languages, especially
p yeah, better prepared really is what most of this boils down to at the end of the day, because language, i mean, you know, controls the idea
that you think about
t yes
p and how you break down the world and how you think i mean the biggest shocker to me, i've been waiting to learn about Turing machines
since
i got to college i hadn't really read about them that much, one of those things look about too incomprehensible to put time into, I got
to theory of computation, alright kids, it's all about language, what but it makes a lot of sense, it really does, that's what a lot
of this boils down to, class ever explicitly stated in any math class most of math is about developing appropriate language
to describe what ou want because it's math it has to had an absolute meaning because no ambiguity involved. developing machinery they call it all thse other things they don't usually call it a language but i'm pretty sure that's what it is
t i think so too
p by saying kids are good at learning languages, that's the universe, they could learn anything, so teaching them
programming and how to describe things in terms of programming at a young age i think would be would have amazing
results, i don't know that much about it, i'm not around any culture that does that or so i mean the languages
i've been learning since i was little were not nearly that helpful
t so berlitz, who had a famous language school um he learned a language for every new relative he thought that, when he was a little
kid, that all adults had their own language, and if you wanted to talkt o them you had to learn it, an aunt who spoke russian,
an uncle who spoke polish, he had at least 17 languages when he was 12 years old, and found you know it's not that easy for other
people, language acquisition people who study linguistics say language acquisition slos down at age 8, so im' from candad
lots of immigrants speaking different languages, go to walmart or homedepot here's the 5 year old whol can do eveyrthing find,
the parents are translating throught the kid, the kid, if we taught those kids the language of math, where you have the ... as you said,
and people have gone to the trouble of making things unambigous, the minds yusing tyose languages would be so much sharper
and more capable, i think it would revolutionize the world, so id on't know if you;ve ever looked at greek. in english we say you and it can be singluar and it can be plural and you can see we in a group of three people and it's ambiguous, whether it's the person talking and one other member of the group or all meant by we. in greek you can't do that, it's you know, i, we-two, you know, or all of us, so it's exclusive, there are different words for that and i think wow if a person has to be thinking in that kind of precision from their youth talk to their parents and siblings, what does that do, what extra you know benefit do they get out of using their mind more articulately
p um, i think it's, well, ok, so using uhm myself as sort of an in between model, i mean not ... figure of mine...i mean i didn't ever to a whole lot of extra but math and science, lot of attention to, i loved legos as a kid, my mom, my brothers animals and then when you were old enough to ask question you turned your bike over and sked about gear ratios, liked that a lot, thinking about things in those terms, so i mean, i definitely have found that in pretty much any english class ive taken, it wasn't 8nitil freshman in hs that i found out that writing could work for me is disliekd it for a long time very strongly but then i had one teacher the profs were reallyg good and i could write about hitngs i had interest in, wow, i can express myself through language, this is great, and so for the most part any time i've had a wrigin class iv'e engjoyed it, i had a really good experience in freshman class, totally tangentaila, basically finding the fact that i've been trained and liked to somehow manage to think
more articulately, more specifically you can't have fuzzy verbose language, you have to have concise, precise statements, that has always
made my papers a lot better than that of many of my peers that aren't used to having to whittle down an idea into a precise notion
or um you know otherwise kind of edit their paper to actually mean something as opposed to throw the ideas in there and they kind of make sense, the notions aren't precise you know what i mean, people who like to study english arent' really taught about i mean i can't say it because
im' not geting mey degree in that, but from what i've seen the notions of precision isn't really the same but they concept
t the goal
p yea, the concept is really important when you're writing, i mean, obviously not fiction or entertainment or philosophical ideas were you're supposed to kind of process and thing about it, but if you're writing a paper that's refuting an argument, i don't really like writing argument papers that much but that's a really important genre, you have to understand hwo to make an argument and make it precision and so forth and i think that would have.. thought about that too much
t was that here, that freshman year was here
p yeah, so, they i don't know if it's still around,m but they had this program freshman writing was if you were in a learning community, you took freshman wrigin with your learning communicty, really good idea becaseu have shared interest pool to write aobut the ting was i came here and un you know through some suggestions from my mother i just got decided that you know learning communicty would be a good idea general roommate pool, like woundn;t be great if math science and engineer learning communit
t is there one?
p for women
t oh
p there are reasons why things are the way they are, and i didn't wnat to learng the engineering, wasn't an engineer at the time, not sure i like the engineering culture, that's another thing, i ended up joining humanities house, everyone has an interest in humanities,it turned out that the only thing we all had in common was that we'll join the humanities house although we were supposed to have had the same interset, but the only similarity we had was that we had joined h house, but we had a really great graduate student, put a lot of attention into it, i wasn't doing well at the beginning, i was summarizing, i didn't really get the notion of how to make an arguement, supporting of points, not summarizing, once i got that the class was really really fun and in particular, um, we read this one place called arcadia by tom stoppard it was all about the development of a lot of different like there were a lot of ideas in the air during the mid 1800s thermodynamics, lady Ada and programming, a ton of really interesting things and that was just the stuff that interested me in that play, not romanticism that the english majors would find really interesting
the play had this duality, this manor, the family that lived there, loosely based on lord byron's family, then you know like the modern family that lived there, so it was kind of talking about, although the ideas back then people were gietting these modern notions based upon ideas of that time,
i got to write this play it was about chaos and determinism and unpredictability of the universe, all these things i'm learning about now
i kind of had a loose understnaind i got to explores them really thoroughly in 8 page paper and had a blast, read it in a symposioum
t congratulations, byron was off in greece
p character in this novel, was related to Ada Lovelace
t he's her father
p i couldn't remember what it was. in the book there was this young girl in the household who was kind of loosely based on that, exploring a lot of other ideas, she was uh, really interested in in in in fractals, but it wasn't ever explicitly stated it was just something you kind of could gather
from she was talkeing about imaginary numbers like the guy's really clever they guy who wrote the play and knew enouhg about math to understand what he was implying she was looking at how you could have an imaginary number, you could set them aside you could sequare them they come back she was looking at sequences, kind of like Mandelbrot these ideas like a fractal geometry that was more descriptive than normal geo a lot of ideas like that were described by this young girl in the play, like the heat death of the universe, it was really cool, i don't remember why i'm talking about this
i apologize
t that's alright, we were talking about the expressibility of language, and how people get practice with thinking precisely, if they have that kind of language training but otherwise they may not
p ok, i guess an example, looking for precise ideas, there were things in this book that gathered my attention i could write about them, that essay in particular, because we had group proofreading, read each other's papers and give feedback, a lot of people struggled to find a distinct arguement to make, a distinct set of ideas, because it was a play about a lot of things, it was difficult to think about precise notion, so sometimes having these toolsets really lets you analyze a complex world, figure out what it is you're interested in, a lot better, you know
t so this is nice, it shows up not only in math, not only in the application of math to computer science, but even in careful analytical writing
p i don't really want to be a mathematician, i don't look at my professors and say i want to be you when i grow up but i will be forever grateful that the language that was given me, the tools cause talking about english really really imprecise language which makes it nice for poetry meant to be ambiguous meant to be interpreted by the reader
t leavels of meaning, double entendre
p definitely has its place, we're humans, i feel like just studying that alone would make you so confused about the world
t yes, i'm definitely on the engineering, math side with what i want to accomplsih, but i have more professors i wish i were like rather than fewer.
... walking away from microphone?
t my professor who taught me to do interviews said, always to ask the participant what they wished i might have asked. Did you have any hope of something i might ask you to discuss?
p i knew proofs, happy, never had gotten to talk wtih someone about this before. The math part ... keep in it, boring department, don't even have a computer ...not really a communal lounge, they had a library, took it out, put a conference room in
t do you know Ian Dardik
p he's a good friend of mine,
t i was going to say he'll be good to talk to.
p we have class together this semester, been really great, the frist math class with group homework, it's been good to have someone on realtively similar page to talk to and do problems with
t the idea that proofs can be used to explore, to see more, is a wonderful idea and what makes me sad is that so many people miss it, they say proofs i have to do them and when i'm done
p i was going to ask you , obviously, becasue i haven't talked to other poepl aboue this too mch, i mean at least outside of ou know, math department,
i'm kind of curious what other people think about proofs,
t you should hear professor russell, he will have a lot to say, he would be my favorite to ask you know what do you think about proofs, and then you know, as much time as he has, he'll tell you lots
p what about some of the toher students?
t uh,besides Ian, I would say that you are the most sophisticated that i have interviewed, more rather, there cases of people are trying to learn the absolute minimum to get by, like they never want to do a proof, i tell them you know in the late 1700s aristocrats did proofs for the pure job if it, and they're like, who would ever want to do that?, so for example, one person is looking the superficiality of, ok inductive proofs, i know how there are steps, 1st step is i find a base case, the second step is i solve the one going from i to k+1. he said, but i don't have the feeling of why that makes a proof, and i said ok, let's look at dominos, you can do one domino, you can set the dominos so that one always knocks the next, and k is allowed to be one, then you get all the numbers, and he was like, ``oh'', so compare that with the depth and value that you're able to see in proofs, there's a huge chasm there, so what i'm hoping to so is to help that close up, help the people who haven't gotten to the stage that you have already, catch up, because you know they're doing proofs because they have to and when they don't have to they're not going to do it, they not doing it they don't feel secure, think of all they're missing
p they is an interesting kid i worked with in summer time,
t ok
p kid ...couple times, and uh, he's an electrical engineer, and grew up not likeing math at all and not doing very well at ti and after than at some point in my hight school and changed and starting doing really well, so confused, didn't get through, like that, now he's staying an extra year, and i didn't i mean icould have guessed at this i don't know about electrical enginerring, linear algegra, really high level and intense computations you have to run, he was saying that all of a sudden the proofs had become so much more interesting, so relevant to what he was interested in and wanted to do, andi think this kind of goes with what i was saying, people take computer science but it is not what they are interested in , proofs particularly in discrete systems, base layer, examples that you've seen, until you can get to proofs that are relevant to, that explore things you want to do, it isn't as um it just isn't as interesting, i mean i feel ike i don't know about musich theory, there will be proofs in there too, really interesting to musicians, may not be interesting to me, probably even wouldn't know the language to work with them
t things are harmonious, and some things aren't, there are are ratios, it is not an accident that we have harmonic numbers, it's the same word,
the same meaning, and so, there are bound to be proofs, maybe there is something about how long a dissonance is pleasnat before it becomes unpleasnat
p i feel like that part of it is that, i mean, ...you know, too, too deep and philosophical discussion, i feel like part of what would halp people bbecome more passionate about proofs, if they have proofs, but zero passion,
t things wanted to know, which now knew for sure
p so part of that is that there are kinds in computer science who don't really want to be in CS, do the bare minimum or whatever, so i think that's part of the problem, not going to get kids who want to do proofs in cs, if they don't really want to do cs, people probably should encounter proofs in a wider range of subjects than they really do, certainly isn't the only place, there are 3rd year college they have to do some proofs and get really alarmed, probably comes up in linguistics, state machines, there are just so many fields that use mathematical tools, um, i mean
t linguistics is a good choice because after all we have context free grammars in 3502 and they come from Chomsky, that's why there's Chomsky noraml form, and he's from linguistics
p a friend a co-worker, taking linguistics, making state machines
t we know what they are
p can only extrapolate and guess maybe there are some proofs involved too, if you didn't want to do linguistics...interesting
t unless they turned out to be state machiane proofs that we liked for other reasins
p proofs are part of what let math have that precise meaning, axioms and definitions, to make more precise notions, you need to have precise ideas about what they do, you have your taylor series, doesn't matter if you don't know what it can do
t why did i have to memorize this thing, how about generate all of those curves?
i think that's really cute, i'm glad you mentioned that, if the proofs are about something that the student wanted to know, like, you know,
can i keep an airplane up in the sky, Bernoulli, look if i did this, the thing would fly, if they would be turned on, they would feel the value,
people coming in saying do i really have to do this to be a programmer because i'm not sure i can get it, but how to collect those examples,
a good pool, ok, well we're going to prove whether or not this helicopter will fly, i think that ouwld be really valuable,
p no problem, the other half ot ehat is you know getting people to be itnerested in something and that i think is a much bigger problem.
really search
t it's out of the scope of my research, that's correct, i'm mainly on proofs and how people experience proofs, and i tend to push toward
and how could we teach them better, but there's push back, i'm just
p how did that end up in the realm of computer science
t because proofs are needed in cs, and proofs are a hangup for some students in cs. They would rather think that when they walk about the door they'll never hear of a proof again, or some people have internships, say well you know i've been a programmer i've had a summer job or i have a side job and i don't see any use of proofs in the part of work that i'm doing, but if they stay that way they can find themselves too the lower paid parts of being a programmer, well you might say Steve Jobs probably couldn't do a proof, and he's not confined,
p Bill Gates
t i expect yes.
p wasn't sure, there's an algorithm
t there's something with pancakes actually
p pancake flipping problem...Bill Gates made this.
t so, uhm, i was president of my debate club in high school, i just think that being able to think clearly is like i mean you would not give it up
once you acquired it, so therefore i want people to have fun, you know, getting that, and having that, and so it struck me so odd that
people when they're, we're trying to teach students this thing this capability that will make them stronger better it should make them happy
we aren't necessarily succeeding in every case, there are some cases of people who feel harassed and are glad it's over
p i see what you mean
t so i find my self in computer science as you mentioned several times people show up in computer science even though they want the computer to do something else, ...so i'm learning techniques, bunch of tasks that i want to do, i want to find out why people who have als, neuromuscular junction, a lot of simulation...in fact there are computation such that we want to do in parallel, know how to do that it's the biology that i don't know yet, but...there are task things i wish i could simulate, i have some techniques, some with nothing to do with, tasks i have no way to do, trying to bring those into alignment, and get work done
p i forget where i heard this analogy, back in the day before we had computers, there were a lot of people had to build things, carpentry was a skill that you know if you knew how to build things out of wood, you could build a lot of things, but different from being a shipbuilder,
but if you could build ships, but probably not furniture or something but you might need to study carpentry to build a better ship, there's definitely some feedback there i see what you are saying, want to build this intense computational system, study some computer science to build an efficient implementation, but doesn't detract from the biology, toolset to solve all their problems.
t thank you very much for all of this
p this is enjoyable
interview20131122
t ok it's friday, this is Seda, and um so please start by saying i have signed and read the consent form
p ok i have read and signed it
t thank you. I hope you will reminisce any thoughts you have about proofs, i know proofs are important in the work that you do,
so i'm very anxious to see what your perspective on this is.
p my perspective on which points
t ok well let's say you were setting out to do a proof
p unhun
t you would have built a context in which it became interesting to you to have a proof of a certain thing, and so you
may be have ways of going about getting started, you may have ways of estimating how well a certain approach a certain
approach is going, you might decide i'mb going to try a different approach any thoughts of that kind
p what we do in our research is mostly ...first we have some expectation of what the complexity results would be
and then we try to find an approach to prove the most thing we study time complexity, work complexity, macht complexity for the algorithm
but while working on the algorithm we first somehow anticipated that that's going to be the result sometimes we
anticipate and we cannot prove, which might still be the case but we cannot prove it, in that case it's maybe the simulation
studies also can be done ...can somehow prove theoretically, we studies the techniques, how it can be proved
and tried to prove it
t so, aah, from an outsider perspective I imagine and i'm sure you may correct me if i'm wrong, isn't it that there are proofs
sometimes of lower bounds, something cannot be done any faster than, ah, ok so a lower bound would be,
lower bounds and upper bounds, so it you have an algorithm that provably is as fast as it can be, then you know
that perhpas is no point in working on improving that algorithm
p ...
t on the other hand proof that an algorithm must take at least a certain amount of time, and if the best known algorithm,
is taking longer than this time that is as far as we know that we know an algorithm cannot be faster than a certain bound,
excuse me cannot be slower, cannot take less time than a certain amount, but that amount serves as a lower bound,
it might not be the highest lower bound, but it's the highest lower bound we know of, that we can prove,
yet the best algorithm we have been able to find takes much more resources, time, memory, messages, then those proofs
show us a window
p that's true but that's not what we did. I studies two problems or three but for the problems i studied one of them
we haven't yet proven the lower bound depending upon the model we know we anticipate what lower bound is going to be
we haven't yet completed the proofs for that, and the problem wasn't padded before so the best we could have found is
compare it with a related problem, that can actually serve as a lower bound for us. so the lower bound for our
problem is not the lower bound for the problem i'm talking about, but the lower bound of the problem which is
the dual problem we have been a lower bound for us
t uhhun
p we come quite close to that, of close the models under which they are studied are different conjecture that was we had reached
one of the models lower bound yet could be true but that's true, for another problem which asymptotically reached a lower
bound of course but it can be bad, i mean it has some constant, they are small constants, but we reached an asymptotic lower
bound but it could have been a little bit better, so we specifically haven't yet found any lower bound
t do you see a implications or hypotheses as proofs, you can create a hypothesis, you create your setting, and then you can use deductive techniques
to explore the consequences of these choices, right?
p what sense?
t again in the sense of resource consumption, possibilities, you can you know before you have any proofs or any conception of your
setting, everything is wide open, when you say i'm concerned about this setting, cut down the context
p that's where the failure model comes in, it's sometimes you not you cannot tolerate that many failures for example,
always assume that some processors should turn imperfect results with some probability do not bound the probability there
is no chance that we'll calculate the result correctly so we have to somehow bound then if that adversary is allowed to
crush all the processors it may invalidate our model so we have to put some restrictions on the adversary
otherwise the only thing we can do is put the impossibility result because it's just eventually it doesn't make sense
that it would work, so yes, you have to put in some restrictions, when you doing the analysis or even it you are writing
an algorithm, you know that it you prove something specific way, you might get better bounds but then the analysis are so hard
you decide to sacrifice a need, and say ok i don't care, i'll get a little bit worse result, but it's not going to be
as challenging and time consuming to do it, but you obviously see the benefit of doing it, it's just how you prove it it's a
big question, so you ... sacrifice on the algorithm
t the mathematics can help you see, the mathematics can also be quite daunting, you can decide not to explore
p so practically you can make the algorithm faster or pending less be the complexity so dependent on how much information
you share your messages bigger, but then you have to send incremental knowledge and you have to figure out ok how this
knowledge increments, what's being sent, well if you send everything you know exactly what you are sending, and
that makes the analysis easier, but there are algorithms
t i think this rigor in thinking um this power that you get of knowing things for sure is wonderful that people should enjoy
having and using it, not all students believe this but it's part of your life, so i wonder do you find that you enjoy
making proofs?
p yes and no. it's very enjoyable when it's done, but it cornerstone on what you are trying to do, pressures you too much sometimes
it annoys you you get infuriated with stuff sometimes you think that it has to work and you cannot prove it so it becomes mind powers
see you have sense of accomplishment when you are done it has it own goods and bads at least for me i can't say just doing
just the process without any results gives me big joy, i cannot say that truthfully, sometimes it gets the point that, just infuriates
t have you compared that with some of the French aristocrats who were doing math, just because they liked to, Fermat was a judge and a lawyer,
he didn't have to spend his time doing proofs, LaGrange didn't have to spend his time doing proofs, D'Alembert, they were well to do,
and could have lived lives of leisure, Mersenne was a priest, he had his income, certainly I don't know of him getting any income
from his mathematical expeditions, there were some members of English aristocracy who decided to be mathematicians, do you have
any thoughts about what was going on with them and proofs?
p no
t i think Lobachevskii was a grade school teacher, maybe a high school teacher, but he did not have to do proofs, and yet he revolutionized
our thought.
p yes, that's true some people i think are more enthusiastic about what they're doing and some ...a little bit inconceivable the geniuses
what they have done, you think how one could have thought of these and they really came advantage of...his being used now, in essence
when we do the proofs we use all of the stuff that was invented prior, inconceivable how, if it wasn't there, so i haven't yet reached
a point that i can just say i invented something extraordinary after ...do you think that was a good thought, how could have I not think about it, but i don't know how their ...
t but you have to, you do proofs, you get stronger, do you feel you get more able as you get more practice:
p i think you get more knowledge, you know how to tweak (intuit?) things, you know how to expect things, and since you have knowledge,
you know what to apply to so, what you need to so your horizon enlarges, but i still don't think i can prove something revolutionary
t do you find it fun to think about things in this more powerful way?
p it is fun, it's, it's fun, it's fun when you when you think about the algorithm that no one ever thought before or you model it
a way that you put it you can analyze whatever was done before but still for myself i found that just reading about what was done
was a major part because if you don't have the background knowledge, you cannot really appreciate what you are doing, if you cannot appreciate
how to be, or what is the missing piece, so i think i learned mostly i just reading what people have done and then also when you read
the proofs you learn the techniques, so
t reading proofs, where did you read proofs? there could be original literature in which you read proofs or could have looked at a textbook,
or,
p when i was studying i read from the textbooks so when the way we studied, in Armenia was that every class had an oral exam, every oral exam
you involved basically having to learn all the theorems and proofs that were explained for us during a class, besides the
fact that they could also give us a problem to solve, the actually had to know all the theorems and proofs. so you could just you're
teacher could just ask us to prove i don't know, what theorem, prove how it take that so that's how we got introduced to the proofs
of course we never thought how actually to prove it, we just learned how someone did else who did but yeah and then anytime for research paper
that was interesting to me i always try to find a longer version of that paper that actually includes proofs, so i always
if it's some if i'm just reading to know what's going on, then i do not spend time reading the proofs, but if it's something
very specific to what i am doing, then i will actually read the proofs, and then just how to tweak the wrong things, why did they
assume a certain power of adversary, start to understand and appreciating of what changes based on your assumptions
t i want to be sure i understand um, do you find that reading, what i'm thinking about as you were saying this, i'm thinking about chess games, you can learn the rules for moving of each chess piece, and there's a huge gap between knowing that and being able to be a good chess
player, so in 2500 for example, we teach students some of the steps that they can use in deductive arguments, and we ask them to do
easy proofs to get them some practice putting these together and uh so i think there may be a certain correspondence there, where you ca
say ok, so now learn the chess moves, look at these games, people who are avid chess players look at formerly played games, and say, ok,
this was good from this aspect and they kibitz over players as they are laying the game and think about what was a good move. so, i imagine
that with respect to proofs, you can learn some of the basic ingredients that are required to make an airtight argument, which
does not necessarily give you any ability to actually construct such a thing, but you can sort of practice constructing easy
proofs, but then there's this step of becoming masterful at creating proofs, and i imagine that reading other people's proofs may help with that, so it sounds to me as if you said that but since i thought of had that thought prepared in my mind already i want to be sure
p yes, i think you gain a lot be reading the proofs done by other people because as you read you understand that more likely than not
... and there are certain number of approaches this part not very involved proofs that you can easily get away with just knowing that,
but I do think it would have been helpful if someone that actually helped me how having these pieces ... because we were taught how
someone else proved it, eventually we're taught they didn't really teach us, ok, you have these pieces, now, figure out what to do after that
t have you heard of the Moore method?
p no.
t in Mathematics teaching specifically about proofs i have read there's a method called Moore method, and where this professor Moore did very much what you just invented there, his students were given a mimeograph (this was a long time ago, ) sheets saying, these are the lego bricks, you may use, this is what you have to prove, go do it. so the class was , and it is said that a class could take two weeks and no one would dare stand up and try to prove, eventually a student took the, this professor moore did not lecture, he merely set the situation, the student would eventually come up to the board and try to do a proof, upon which the entire class including the professor, would critique immediately it must have been a rather, you know, emotional experience to go through these classes, and it's said that uh it was divisive topic, some people who've gone through
the moore method swear by it and use it all the time because it makes people who know how to construct proofs, other people say that it was
unpleasant and they would never do it, but see you have just invented that idea right here as we talked, uhm,
p yes, i think every person is different and it works differently for everyone and you just have to find what works for you
think you could have been ...someone actually taught you
t it sounds very appealing to me, i would like to try a class like that.
do you every find yourself trying to share with others the ways in which you prove things?
certainly when you write articles that include descriptions of proofs, you're conveying your proof.
uh, do you enjoy that kind of writing?
p yes, it's fun, when we are not only we are not only trying to sketch what the proof would be, but actually are trying to detail it
so that someone reading it understands it and i think it's a it's a big challenge to write it for someone who doesn't know what you
are doing because sometimes since you have done it seems trivial to you , and when you get a perspective from a person who is just
reading your paper then you understand that ok it's not actually that trivial from the outside, maybe i have to write it in a better
way and in a better way so improve your own writing and explanation techniques, sometimes you think that it, they might think it's too
obvious, and you will not write it
t...
p and for some people it would be obvious, because you submitted the with the names out papers to specific ... people who always do the
same things, so, in a sense you do expect them to know, so it's always hard to find a balance of not trivializing and at the same time
explanatory enough so that they don't have any grey areas remaining while reading the paper it's still ongoing challenge
t unhun in talking with some undergraduates about how they receive explanations of proofs, uh, i've been surprised to find certain
so there's an educational researcher named Marton who talks about different level of appreciation and how an appreciation of something
can be very profound and multidimensional all the way up to appreciation of something can be completely superficial so i've been
sometimes startled about the particular level of superficiality and some students are so close to a level of understanding of induction
that you couldn't imagine they would not have it, and yet they do not, so, for example, one student knew that inductive proofs contain
a proof of a base case, and a proof of an induction hypothesis, but had never had the thought that in fact the base case glues onto the
induction hypothesis, therefore you are able to go off through the countable number space, they just knew the procedure, i do this, i
do that, but they didn't see the connection and so they found their own inductive proofs, following the recipe, to be unconvincing,
and they weren't really sure why they were getting perfect scores. so it's hard to know what, it's hard to guesstimate what people
know and what they don't know, what kind of explanation...there are some courses different situation when we have a specialized
audience
p that's true
t undergraduate courses can have a variety of preparation. so, do you notice yourself thinking more rigorously about you know, whatever,
comes up. I imagine that somebody becomes strong at something, their strength is just applied all of the time, and uh so maybe you would
not notice it so much, but then again maybe you do.
p i don't think so, i can guess just signs that says signs from our people i think they think in general but i don't think just strength more
certainly more research i'm just standing is changed personally but i think that people ... basically too front approach life differently
t so in can you tell me which courses you took and which proofs were used or taught
p you mean, here?
t anywhere
p i don't think here actually i learned anything that involved proofs i found the techniques the teaching techniques here were much more
different than what i used to do in Armenia, in Armenia all of my classes in proofs included me knowing the proofs of everything i learned
here no one every requested i mean the proof was done, was taught during the class but no one expected me to know the proof, they expected
that apply the theory to some other problems, but not the proofs, so which i actually found more useful and entertaining since sometimes
during the undergrad studies we really didn't understand why we needed all of these theorems, i think would have been better if they taught
us, ok having these you can prove these, more practical perspective, because just learning math and not learning where to apply, you don't
really appreciate it.
t i think it feels more fun when you get to apply something
p we did some ... problems, but not the problems that maybe they were trivial but they weren't those, they weren't those that theoretical,
ok you know how to solve the question , you know how to do differential equations, you know how to solve blah blah,
in our opinion in our ... we didn't say ok why do i really have to know the proof of the theorem...right we didn't see the point,
no one taught us.. that's a very important part that was missing
t ok, at what age proof teaching begins?
p i think my personal opinion learning it in college if you because if you are in high school unless you are taking AP course or
anything very superficial unless you know that that's your future, i don't think you can be interested in it much,
you really don't care if you know that you're not planning to be a physician, mathematician or any science related discipline,
if i'm in the arts, someone is teaching me how to prove things, it might be helpful but i can't imagine a person being very
enthusiastic about it, so i think the audience has to appreciate what you are doing, what teaching, so it would be proper to
ap class that is special for
t there's a story in the united states in the 1930s, a teacher named Fawcett decided to try to teach middle schoolers deductive logic
and he was successful, in a sense. The students became very capable argumentarians, they did however take this skill into their discussions
with their parents, and their other teachers in the school, so it was not well received, and it was discouraged.
p tactic um tactic percent i mean he didn't i assume he didn't teach very scientific proofs, he just taught them again i assume
the way of thinking and they were actually successful in applying to ... very important if you are a lawyer you need to know how
to detect, one thing from another, but just plain ... so Chernov bounds one of the
t right, it doesn't sound like a middle school
p not interesting for them and if you lose the audience from the very beginning, they are never going to like science
t
p i think that it's important for some reason i believe in united states more than in the country i come from people are scared of math,
t there is the notion of math anxiety
p and i understand why, it's just people talk about, i think kids growing up already think math is somekind of no one understands and it's just
going to be hard and it's going to require a lot of things, i think that the notion of kids being brought up is a little bit different
t definitely, i hav e nephew who posted on his facebook page that he found a place to a calculus resource that was so helpful one didn't have to actually learn the calculus and i sent him a note saying you know tut tut, zachary, you wouldn't go to a gym and have the instructor do the exercises for you how would that be, he said, well you know i know i'm going into magic and being an actor and i know i 'll never use this and i just don't want to do it, and if instead it were presented as something is fun, and makes you more powerful in terms of your thinking
and your appreciation of the world, and gives you dimensions to think about and explore that you wouldn't have other othwe, we wouldn't have people saying here's a way to cheat
p i think it's important how teachers approach the problem, how they make it hard and entertaining, not all that fun but, when
the kid is growing up, they shouldn't be scared of it, they should at least give it a chance, when you go into something
thinking you are not going to succeed, chances are you are not going to succeed because you don't believe in yourself,
and then if something is a little bit hard for you, you are not thinking of overcoming it, you are just thinking, it's really hard.
because you have five more minutes only you would otherwise do.
t go back to when you're working on a proof has it ever happened to you that you see far away from your goal, but then something happened and you were suddenly, achieved the goal?
p yes, sometimes it happens, most of the time we have reasonable expectations and if you do not reach your goal chances are you are
not going to reach it anytime soon, so we have to scrap ...first because we just don't get what we wanted to that happen once or twice
that it truly took us a long time to get what we wanted, but
t i'm thinking of being, 1102 students, who are learning how to program, they don't have the sense of how close they might be to a working program, because they are beginners, in this case, that they can be pretty easy to fix and find, and they can get kind of discouraged because they can't fix and find them, and they when they are fixed and found, they say, ``Oh'', it was only a semicolon away from a working thing. so i just wondered
whether proofs had that same sort of nonlinear progress, ah, about them because they are either there or they are not there. i don't know whether
there's a way of sensing that you are close to Here's another question, do you approach proofs, say, top down, planning lemmas that you'll get to later, and thinking about how you would assemble them first, or do you build? Certainly you have a great many tools built, theorems that you know, other people have provided, just curious how you go about planning
p well first have to i have to establish what ... actual pieces are required for me to prove things, then put them into little lemmas so that
every piece is not as hard because if a proof is very long you may lose the audience halfway. so you always try to split them into tiny pieces that are easier to prove by themselves. and then so you have to prove quite a lot of lemmas and theorems until you actually get to the your main point, whatever you were trying to prove and then you combine all of these pieces in other say ok i've done it
t so this is an explanation phase, after you have the proof, you can explain it in pieces, you can present it, you could break it up into pieces,
p not it's not an explanation, you think in pieces, what do i have to do to get to that point
t unhn
p i have to do this, and they you split, what do i have to do to get to that point, so you have to actually find what are the required pieces for you to solve the problem so and every single piece, they you have to prove by itself, so that can i get to the second step, can i get to the third step, because if i lose the first proof, i will never get to the second, because i already established that my second piece depends upon my first piece, so i cannot move forward so i have to divide into small pieces and try to prove them
t ever get redone? you might imagine one architecture of components, and then try to prove those pieces, and then if one is really difficult, sort of replan, resketch, rearchitect how the pieces are to get around?
p yes, sure whatever your first notion, understanding what's going to happen, what's likely to fail, you have to make a new strategy, have to
t ok, thank you very very much
p ok, you are welcome. glad to help you
t it will
interview20131206\_17
friday, patrick, we're talking about proofs, please begin by saying
Patrick Long, ive read and signed the consent form
i'm hoping you'll tell me anything that comes to mind about proofs, first you had to do one, saw one, any thoughts you had while learning, any aha moments, any confusion, all really valuable to me and i appreciate it
p as for proof in general, the first time i got introduced to the material was in CSE2500 class, i forget the name at the time, it was more of a math oriented course, there was a lot of like relational truth, evaluating and
t so, did you see a relationship between what was in 2500 which i think is now called discrete systems or something between that and general department?
p i didn't really notice a correlation between it and other courses.
it introduced proofs, a bunch seemed like mathematical, math oriented, others seemed to be like more like
closer to relational algebra, but after like the more advanced part nothing really struck me as oh i learned this in this class
t did you like it
p yeah i did enjoy the course, and working with proofs it was kind of like puzzle solving, some of them took me a while, especially proving that -1 is a rational, you know proving that the square root of 2 is irrational
t it is rather a cute proof
p some of them took me a while, but for once i finished, i would get a nice sense of accomplishment,
t yes, so uhm have you, you've had 350 have you?
p i have
t did you see any proofs in there?
p that was more of an algorithms course, like CSE2100, mainly from the book we learned different
er different problem solving methods like, we ... like the divide and conquer, that's it.
t and then master theorem
p yeah, master theorem
t so did you ever have to prove anything about how complex an algorithm was, like its asymptotic complexity
p i had to measure and analyze, ... kind of a program, but we never had to prove it, ... like that, it was more like open ended,
it can run at most n times, so it's open, or we know that this problem is np hard,
t what about 3502, the theory course, proofs in there?
p i believe there were proofs in there, but i don't recall too many of them off the top of my head
t ok, um, there are some domains, where you have to prove that your algorithm is correct.
p yes.
t uhm, and you can't always do that by tests, and it can be the case that tests were too expensive, even if you could do them,
you couldn't afford them or they would take too long, so there are analytical ways of proving algorithms, if ...and programs,
if they're written in a way
p right
t so, one of the reasons that 2500 is in the curriculum is so that people who need to prove their program or programs are correct,
or that their programs consume no more than x amount of resources, can use those proofs, so, i'm glad that you liked 2500 or part of 2500
p um hum
t do you remember any of the particular, like, styles of proofs that you used in there?
p yes, there was there was proof by induction
t un huh
p proof by contradiction, those are the main ones i can think of off the top of my head
t so can you explain why a proof by induction works? what is it, talk to me about what is a proof by induction
p let's see proof by induction essentially trying to determine that a proof works for k iterations of something, you then want to prove for the next iteration, or k+1 iterations. therefore you show the kth case one, you show that the k case one and they you therefore prove that the k+1 one, the following case works.
t do they connect that with any programming style by any chance?
p oh yes there are some algorithms i remember now, 3500, the knapsack problem
t recursive algorithms
p oh yeah those would be very helpful for proving that recursive algorithms work, the base case and ... then be able to show that it could work for any number of iterations, show it's a very valuable algorithm
t so in that induction step, you're allowed to make the hypothesis, starting your proof that the kth case works.
p yes
t and if you have the assertion that the kth plus first case will work, if the kth case works, and they you write your algorithm as solve a problem of solve a problem of size k+1 and i invoke myself on a problem of size k, and you can reach the base case
p then you are there
t so i have occasionally had students come to me for help
p unhun
t in discrete math, and what they want to know is, do they really have to know this to be a programmer, because they
have done some programming, had an internship on the side, and don't see any relationship between discrete math and programming,
and they were finding it a little daunting, and they wanted to be reassured that just because 2500 was daunting for them,
that that didn't mean they had to quit, and now, so i'm curious
p unhun
t did you go through a phase like that where you wondered why am i doing this, or,it was so mcuh func
p i never really worried about it, i enjoyed all the, i enjoyed doing the proofs, and once i finished ... other classes
t now that i'm telling you that there's actually a subset of the develop proofs world where you get paid extra for being able to do proofs about
code working
p real world applications it does seem a lot more valuable
t do you think it might be something you would pursue, you enjoyed it that much?
p uh huh, i wouldn't mind going into doing that
t so uh this is one of the things UTC was asking about, trying to get people to learn how to do that, be capable at that, so that they can hire them, so, um, if uhm, there were a course on it, would you be tempted to take it?
p on how proofs are related to computer programs, or proving the efficiency of programs
t how to use formal methods to prove that your code works, so maybe you're writing code for a flight management system in an aircraft, and you want to prove that this thing can land at airports in such and such visibility
p yes, i would like to take a course like that, because throughout my career here at uconn a lot of the projects have just been, write this assignment, code this assignment, give me, maybe give me the runtime, but in the real world, before you can do that, you also going to need like
definitively prove that it works per the parameters, i don't really feel competent enough to do that at this moment, any more preparation would be greatly appreciated
t neat, so, do you enjoy thinking about stuff like, do you enjoy thinking about math abstract math?
p like differential equations?
t well, the reason i'm asking is that, in mathematics so i'm told, some people look at proving as discovery
p yes
t and they say that these mathematical proofs we can arrive at, proving to have their own, do have your own existance, and we're learning about them
other say we're creating them as we, i know that i don't know enough to have an opinion, but that being said of course i have an opinion anyway and my opinion is that when you write the hypotheses, that's a highly creative act, so loblachevskii what it the sum of the internal angles of triangle could be bigger or smaller, what happens then, i think that's the creative act and then the proof steps from the hypotheses, they are explorations of the consequences, i just wondered whether you like thinking about stuff like that
p i haven't really given it much thought, don't do ...
t the reason i was going to ask, was whether you were the discovery person or creating part, if a proof's creation, or if a proof's exploration, some people ponder it a lot
p yeah
t so i have this ... 2010, proving something for professor Shvartsman, i just said i'm going to write down the explanation for every single thing, until i realized that i was tremendously confident about the result came from going step by step, i was unshakeable, people could yell at me and i would not fear that i was wrong, do you remember going through something like that?
p hmm, i never had anything similar to your experience, i guess the closest would be feeling sense that i've actually solved the ... prove, took maybe an hour or two.
t imagine the satisfaction of Andrew Wiles, who proved Fermat's Last Theorem, which people had been working at for 300 years. so i do like that feeling now i can know that i am right
p that is a good feeling
t did you have geometry in high school
p yes, i had geometry in high school
t did you have to do proofs in there?
p let's see, no we didn't, it was only just like calculation problems, shapes, we did it in freshman year in high school
t we had proofs, and my teacher said, oh you definitely have to go into math, and went home told my dad, and he said no, you have 5 brothers and sisters you're not going to do it,so i said well, she said i should do law, he said absolutely not your not going to law school, but i was
thought at the time...so i'm curious whether you were ever involved in debating
p i'm not really involved in debating, i'm more of a listener than of a talker, convincing people of my opinions
t but when you hear other people making an argument, do you ever find that their arguments are not especially strong?
p yes, i find that sometimes
t if you were going to do something differently in 2500, have you ever thought about what you might do
p uh huh, i haven't really given it much thought. i took the course, got a decent grade, no regrets, learned some good skills from it
t it's my favorite course, well actually i like 3502 better, but uh, this past semester at Maryland i did teach their discrete math and it was great
p nice
t the students, i gave them, they way instruction works, you can either unfold the week's work every week or let them see everything,
so i let them see the whole thing, and i told the students you know, you can go look at see at the end of the course what it is you'll be able to do, some looked and some didn't, then i gave them very basic step by step every week exercises, and some of them took the you know like fish to water, others it was oh we never really had to think like this before so, ok, take it slow, take it slow, by the end of the course they were all saying wow this is really cool, so it was fun teaching this class for me
p nice
t but they knew, because, it was tied to programming, because everything is shared in these conference areas, everyone sees everyone's weekly work only the homework is secret, is private, so i had them, each of them you know, here's the technique we're doing, here's an example, now you find an example, give the example, and give a corresponding program
p oh, so they had to connect it with programming, yeah that's a lot more ... than what we had to do in 2500
t one of the things the contrapositive, has same truth value as the implication, and you also know that the converse and sometimes have to learn that the truth value of the converse is not the same as the truth value ofo the implication necessarily, so we did that in the first week, then in the 7th week, they had something about, do you know what a planar graph is? you can draw on a plane without any edge touching, except at vertices, so i said consider a soccer ball, it has seams, places where seams come together, abstract that into a graph, and prove to me that it's a planar graph if it is prove it is, if it is not prove that it is not, and they had in the previous chapter they had in the same chapter where they were introduced to planar graphs they learned the implication that if a graph was planar then it's Euler number is two, so they are supposed to prove to me
p the Euler number is two or not
t because the implication is, if the graph is planar, then the Euler number is two, um hum, contrapositive you say, it the Euler number is not 2, then it is not planar, but what i wanted them to do was prove to me that it was planar if it was, or that it was not planar if it was not, and
an adequate proof for that is to say, puncture the soccer ball, smush it out into a flat sheet, more like a balloon, smush it out and at no time
do the edges cross each other and by the time you 've got it smoothed out onto a plane, it's a planar graph, some people actually drew it, electronically drawn, there all the seams were stretched out, that was a lovely proof, it was the people who used the converse that i harped on, the converse is not necessarily true. It is a really fun course.
there was a teacher in the 1930's named Fawcett, who was teaching middle school age kids, and he decided to teach them to reason deductively and carefully, what do you suppose happened?
p let's see. they probably took to it and were able to understand it.
t un huh, and then what
p they were able to prove things around them
t they became critical of the reasoning of the adults around them.
so it turns out, at least at that time and place, middle school kids could be taught to reason perfectly well, however
there was a culture shock going on, the other teachers didn't say so much about the parents complaining but the other teachers
found the students too hard to handle. so, about middle school kids, do you think they can be taught to program
p oh yeah,
t unhun
p if you can teach them a foreign language, you can easily teach them how to code
t i think that teaching them reasoning at the same time would be neat. my professor who taught me about doing interviews told me i should always ask, what were you hoping i might ask you?
p as for what i was hoping that you'd ask me, i was hope my only expectations were that you'd bring up cse2500, how it would relate to the other class, i kind of wanted to talk about not to expect too much and try not to like essentially the word i'm looking for is try not to worry about it too much, essentially a casual interview, and if you worry about it too much you'll get it done.
t well, thanks.
interview20131206\_20
michael, Fir dec 6 and we're goint o talk about proofs
please start by saying i read qand signed the consent form
p i have read and signed the consent form
t great, thank you, so, you took 2500, you may have even taken geometry in high shcool
p of course, i have taken both
t did you have proofs in geometry in hs
p yes, we did, it was uh probably the greater part of the second semester.
t did you like them
p yes, i loved geometry, the proof part was difficult, but once you understood it it was very helpful, very useful
t so, did you have anything in proofs between then and 2500?
p um, i did, i took uh statistics, AP statistics and there was a little bit of proving involved in that, a little
t i bet that was hard
p that was not fun
t ha, ha
p but we got through it
t you get so much power, once you learn how to do it
p yes
t keep looking at those things, when am i going to take that, ...all that stuff, i 've got to learn to do that
p very difficult
t so, and you got to computer science
p yes
t and you arrived at 2500
p yes
t those, i taught discrete math at maryland this semester and i found that people were just initially floored by having to think about
things differently and i don't know whether that's a general experience or not, but, what did you think of 2500
p i thought of 2500 at first i thought it was going to be you know just all math, add subtract, do this take integrals take that and when i got there and learned that it was proofs i was a little frightened at first because proofs are very hard at first, as time when on and i learned more i learned how useful they could be in proving things that seemed simple that you could prove by example but that's not the right way to do things, we learned fast that you can't do things that way, i was a little taken back, o boy, proofs again i was good at them when i took geometry oh it will be just like that of course it was much different but at the same time i was ready to start learning, i was ready
t um, did they tell you what they were for, or just, here's how to do
p they kind of explained here's how to do it and they did explain what they were for, we learned many different types of proof, by mathematical induction, which i found to be one of the hardest but one of the most rewarding, when you finally get it right you make you know, base case, you do all that, you finally get ok this works, this is really cool, um we learned by i think it was proof by contrapositive proof by contrapositivewhich was very difficult or by coutner example, which was good for proving something's not true,
t (contradiction)
p yes, by contradiction, but not by proving something is true, we did a lot of proofs by induction, that was the main focus, not of the class but that was one of the main focusses
t tell me what makes a proof by induction a proof?
p well it starts off that if so you take this general rule that you're trying to prove, you get the theorem or you get the equation, whatever it is, whatever you're trying to prove, and the way it works is you make a statement, you make an assumption, you start with ok i'm going to say this is true, then you take, you make a base case, something that you want to go back to, if you know the first thing is true, if you can take the next step and reduce it to that first step, we know that that's true, and everything else is true, so then you prove that, you take the next statement, and you show that it's true for k+1 or whatever the variable is you're trying to do, it's a number proof, something like that, and if you can prove it's true for k+1 and you can revert to the base case you can prove that it's true for all k
t great
p that was very useful, and prof. peters would be very proud of me for that, very proud
t now does that connect in your mind with any kind of cmputer program
p yes of course the firest thing i thought of when i saw induction, was recursion, they beat recursion into our brains since i got there, scheme i wish i could say i get to the end, matlab we didn't , java we learned, recursion becomes the driving factor for most of the programs you write and do because how useful it is
t it's so sleek, you cannot hide a bug in there, so small
p so small and so precise, but one little error and you will null pointer for days
t he, he, he
p i still have my minutes about those
t the connection between inductive proofs and recursion proofs of programming is not clear to all the students
p it's not and it comes from induction proof, assume that this is true, then you take the k+1 you increment and you solve back to the base case, once you just do those two steps you see that ok it's true for all, when you're writing recursive programming you know you have your base case you have your whatever your loop or whatever your tring to reach you r base case it's not clear how that steps through for higher balues or for what values you input, for simple when you compute a factorial that's the main example they use that's how they do it, when you start with 7!, you can say in tyour brain i know this works by you take 7 time s it by 6 and times it by 5 and by 4 that's how recursion works and for most programmers and most kids who see it they understand that right away, but when you give them a harder example, you take numbers our of it it, make numbers more complicated, like a fibonnacci or pell numbers or something like that it's not as clear so when you right the recorsion, not sure how to hit the base casen, not sure, an induction proof you get the basic idea but sometimes the setps aren't clear, sometimes you can say ok i'm assuming this is true prove that for the next steps it's true so that it's true for all k, but one paper it's a lot easier to see that and you can see that you hit an error than you do when you're staring at a computer screen and you get an exception, you're recursive call insn't your whole program, so the first thing you don't assume it's the recursive part, and the next thing you know it is in there and you spent an hour debugging what should have taken 10 minutes to write
t have you taken 3502 yet,
p no, i have not
t the reason i mention that is there's a recursive proof in there, so you're, it has to do with what are called context free grammars, which were actually invented for lignuistics by professor noam chomsky but are used for computer languages just as well as human languages, and so there's a proof in there, something to look forward to
p i hope so
t so, um, so you can see the connection with programming, have you seen proof techniques applied in any of your CSE courses?
p um, proof techniques, um, not as carved in stone as it's been in uhm the 2500 and other places that we've seen, like, recursive calls when we took java programming and scheme programming, but, i can't say that i've seen like a hard core, like seems like in calc 3 and i've taken uh linear algebra and differential equations, we do get theorems, and we do get proof that i did have a professor that used to step through all the proofs so i have seen like i don't think it's not a proof i have to do, but to understand, proofs are...everyone looks at , i think people have trouble with they see a proof, they see it, that's a theorem, that's a proof, that's true, i believe it, they don't look to see how is it a proof, everyone understqnds when you're staring at the screen, my recursion should work, my mathermatical reduction works, but it's the steps inbetween that noone has an idea about, it's like a nbridge, you start at a, you get to c, but b is the journey, and everyone skips that, they understand a, c but they don't
t checking a proof, there's that adage about, you can learn all the moves in chess doesn't make you a good chess palyer
p exactly
t if you know all the steps, a proof that somebody else gave you, a legal move to me, turn around and writing proofs is like a whole 'nother dimension
p and i think this goes for all the programming class iv'e taken here i know that much, that whole big like ok i can see all the moves and
what i can write this code because i have all the code there, but when it comes time, when we hit 2100 and it was no longer like write this
method, write this statement, you would then have to do this, do this, it was just a paragraph, write a stock trader that will handle this input and output this output, i panicked, i had no idea, i didn't even know, we learned how to code, but w3e didn't learn, we learned how to write code but we didn't learn how to code, the same we learned proofs, but we didn't learn how to write proofs, the only place we saw that was 2500 it helped close a gap for me that i, i'm still not perfect at it, it definitely helped to bring me along which was good
t heavens, Fermat's theorem took 300 years to prove, you can't be sure, you you could do any, till it's done
p exactly, but that's one of the joys of computing is now that we have the power and the technology to write all these great codes and have computers that can run them, we can put aq lot of things to shame, to prove that back then we didn't have the knowledge, not that, but, we didn't have the technology to prove
t so, um, did you take a course that's about data structures? I forget what the number?
p yes, i took data structures and algortihms, 2100,
t and did they show you proofs?
p no
t so, did they make you do any?
p no, they didn't make use, they would teach a data structure, and then they would show it a base for an algorithm, and they'd show like the skeleton code for it
t un, hun
p and that was it and they'd say use this skeleton code and this is how you make a linked list, and this is how you make a multistep array, something like that, whatever it iwas, so go do it, they design a program around it , that was actually one of the problems i had with 2100
it should be almost like a full year class, at first you learn how to you know the basic block of code, the diagrams of code, this is how you do this this is wha'ts nromally around it, what they are and how they truly were, and next semester put it all to the test, because it was too much,
too hard, way too fast, and i feel that's liek, that's the class that most kids get to and they're like ok, i know how to code pretty much,
i've taken java, i've taken object oriented, matlab or scheme, and just got flipped on it's side, you had no idea what you were doing it, but
you were takeing skeleleton code, just writing till your hands were falling off, enought to get a 50 or 60 with a curve you'd pass the class
you'd take algorithms, software engineering, now 3666 we're using mips, even that, even though it's simple to write code in that, it's very hard to understand how the algorithms work, we did a mergesort and i was totally lost, i can't tell you how many of those ive done at least attempted to do
t when you were talking about data structures, did they talk about tree structurec
p yes
t did they talk about what kind of algorithm goes nicely with that?
p i believe they did, yeah, you can do basically based around sorting
t u
p all sorting algorithms you could do, bubble sort, which works by first constructing a tree, and you bubble up from the bottom and that's how you sort, we learned that radix sort, bucket sort, but those i believe were with linked lists, but i believe the tree is essentially a linked list, put in order, no? not put in order, that's the wrong thing
t even in the beginning of, chapter 2 of the scheme course, they started talking about data structures, heaps, stuff like that, some built out of trees, and then, if you look at a tree from the top instead of from the bottom, from the top, and you handle the top node, and you look at its children, you've got subtrees, so it's like you can recursively decomplse a tree
p yes, i remember back to scheme correctly that's basically when we learned about trees and we build trees that was how we basically all algorithms, it was basically all it was you know constructing, pull a node off and you'd have a new tree, once you take a node off the top, and push to the stack and you keep you know the fifo and first in frist out, last in first out, that whole nonsense, this, not nonsense, but all complex algorithms designed with inside that
t so what i'm getting at you know inductive proofs go with recursive algorithms, and recursive algorithms work with tree data structures
p we're trying to put together here that trees go with inductive
t i want to toss in another thing, that proving that algorithms work, as opposed to testing to show that algorithms work, uh, thought of by the manufacturers as a cheaper, more thorough, better way to go because testing is really expensive, so it you can write algorithms that are suitable
for proving, then you can save most of the test money and have a better a product when you're done, and the safety critical world, like nuclear reactor cooling systems, flight management systems, you know things like jet planes, are now able to be certified by proofs instead of by tests so there's this standard um in the us, it's called do178c and it's for showing that safety critical systems work, and c just came out, for many years it was the b version but with the c version now allowed to use proof techniques, so, ah it looks to me as if there's going to be a great deal of money to be made in analytical proofs of software
p i believe that 100percent but then you go back to it's you know like the reason why i choose to be a computer engineer, a computer science engineer it's because that's were the jobs were and the money was i love what i do now and i wouldn't trade it for the world but that was the driving force, that market, by proving, prove instead of test, it's defintionely more cost efficient, and you know what i'm saying, you take millions of dollars you would spend, let's say jet plane, you know what i'm saying to all the hours of testing, the noncertified engineer, you to to get a pilot, all that, so i feel that's a deadsman market because how do you we learn here that we ... on such a small level, the way you prove you prove an algorithm works but then you test it, and you test it over and you test it over again, to truely it's almost how you gain understanding of how it works and it's such a shame, there's very few professors here, not only, they tell you ok thei is a proof, and then they step you through it and they say this is how it's proved, and you write your code and you test it and it works and the professor goes ok how does it work, and you can say back to them, this is how it tests this, that, unfortunatley it's hard to grade and to assign on a level like that whereas most professors you know they give the statement they say write your code, it has to run to this test specificaiont, so you as a kid you know start writing your code you look at the proof of the algorithm and you write it out and you take it on faith and it comes time to etst you code and you test it, the first thing you do is you don't look at the algorithm you look at your code and students have at the learning level had no way to know is it my code\ that's wrong, or the algorithm, they're going to assume it's their code not the agorhtm, if they get it to run or not the student will always feel it's the code that failed, not the4 algorithm provided by the professor, even if they found or they read that was talked aobut, so i feel like there's, the market is defnintely expanding, it's going to be a few people who make probably billions, they're going to save companies understnad the proofs and prove them tehmselves, oiunderstnad how everythign works, i can prove it like this, do it like this, take it put it into useable code data that meets all the specificaions in c whatever language and ok that's it, stamp it that's the test
t i did see some numbers from a place called software enginerring instutute which is run by carmegie mellon university and it is, when you take the whole nation, it's acutally billions of dollars a year, shocking
p the same thing when you looke at mechanical engineer, even eletrical or architectural engineer, when you get you're pe, your professional engineering and you look at drawings an dyou can stamp that it proves that you really7 understanting, you're pitting your whole livelihood against it, most, the way coding started, you know a few guys folling around, once you open up this huge floodgate, 100s of kids, some in my classes know more than my professors, from the time they were little, codeing and reading on line, this, that, and people, it hasn't come that far yet, obviously now it is if you can get a stamp that says like, we don't need to test this, there's been enough in the mechanical, in electrical, things blown up, things that went wrogn, now people have that specification, coding, you don't have that yet, giving people the stamp, it's going to be great, but the first guy, i wrote this code, i understand this proof, i understand this algorithm, the first guy who gets a plane up there and then it crashes it's going to be huge, now we have to rethink things
t there was a rocket called Ariane 5, that crashed, due to a software, and there was a rocket that was, a thing sent to Mars, initially didn't work, and luckily. The programmers had made a mistake, but the people who sold them the operating system knew what the mistake was, luckily they had not removed, scrubbed out, VxWorks, and of course on this web page how they rescued the Mars mission, but they did, they were able to switch the code from here, to change it to using the part of the operating system that they had provided, that they knew, imagine how happy those engineers were, that's a lot of money riding on seomting by the time it's been sent to Mars,
p yeah, but that's where it also comes into with the whole gap you kinow what i've saing, 100s of universityies, 100s ofprogressors who have been through the wringer, have seen it all from basic simple code to writing massive trips and massive you kinow code, and moving, i'm sure that it comes now how do we, find it in computer science in computer engineering, most people truly understand it, have trouble teaching it, and it has trouble passing on, so that in the class, when you have like a regular like a math class you'd see like a pretty fair distribution of you know like ok you have 20percent of the class they understand fully, you got 70 percent who they're willing to learn, and the profess can convey it and they can understand and you have about 10percent of the class that just doesnt get it, in cse if feel you have 15percent all stars, you know, they have to learn little, only about 10-15 percent of kids who can actually sit there and learn what the professor's teaching take it an apply it, and the other 70 percent having trouble, don't get it, staying up late hours to get nowhere, i find that especially for me because i haven't taken coding on top of coding, i had a semester off, i forgot more that i had to relearn and by the time you building a soft foundation on stuff you're going to lay heavy bricks on, it's not a good idea
t thing about teaching people, if you know something really well, it can be hard to teach people, somebody asked me 8 in the morning when i had 4 hous of sleep, with no warning he said, get up at the board and show us how to do this, really it was like three numbers, a fraction and multiplication and i just feel back on my old sliderule training, this exponent is 9 and this exponenet is -10, so, +9 and -10, first I'm going to rectify the exponents and then the rest of the multiplication and you know cancel the units and I'm done, you know 9-10, 1 tenth, here's the three, meters, and they were looking at me like what is she talking about, and i thought ok these kids none of them have ever seen a slide rule, they do it by punching in to a calculator, so, it's not wrong, it just such an off the wall
p the bridge is definitely increasing, you know it's supposed to be like my demographic is supposed to be this generation y, the new, yeah, were' not going to do like our parent did and everythings going to be different i truely fear for the generation coming after us, myu friend's little sister is in first grade and they all have ipads, they're not going to know what a paper and pencil is, my nephew just born will go to school and everyting will be eletronci, it will become a dead art, just like everything was, technology didn't grow as fast, when you look over the last 20 years, it was a huge change, and you look over the past 100 years, it's even bigger, as you go back but it was not as fast as it's growing now, it's an exponentional growth that started slow and now it's taking off, i fear for the future, i'm just happy that the time it'm in right now i'll understnad computers and code them or eletrical , i'm with the curve, i feel bad for kids who are math majors, soon they'll be put out of work by supercomputers
t there's alot now about mass education, make this really big movie, since they have very large datasets of students, they're able to imprve the courses really rapidly with good statistical data, because they have 10s of thousands of students, who knows, it will be interesting, somebody asked me the other day, the whole class, how many of you drive, well of course you know, suddenly talking about one of these Garmin GPS things, you know I dr4ive without one of those, it's not really like getting the time from the sundial, bult
p i hate to say it i'm one of those, everytime, i drive from long island, back and forth to connecticut now 4 times with my dad for sure if not more, 5 time with my mother, probably 15 to 20 times by myself, and i still have to take out my phone and put out the gps, i still go my own way but there's that safety net, now i go to my aunt's house, my friend's how, it's not give directions, it's just give me your address, all coversation slowly dies with that too, i think it was einstein fear the day technology will overcome and conversation and communication will cease to exist, see how mnay people go out to dinner and everyton's on the phone, still communicating, texting, surfing the web, sad really how much the art of conversation is falling apart, and i'm probably one of the biggest offenders, i hate talking, if it's not my mother, or someone very inmportant, a sinple text message will do
t cell phone...my professor who taught me how to do interviews told me i should always ask, what were your hoing
p that can be a very good question, i really didn't know, i was hoping it would be more guaged towards the classes that were taught to me, the structure of them, and how you thought they were, because iget to fill out my evaluation at the end every semester, and prof peters' class i likes a lot, he taught very well, but also it was he taught us like, he was able to teach something, tell about show about show how it pertained to his life, he showed us all these theings about taking graphs and drawing the shortest points and being abot to prove that this is the shortest distance, and this line and whatever and a big thing to do with graphics an de eagle eye and very cool to see that, it was very, i learned in that class, i left that calss, i worked my tail off and only gat o b, i worked my butt off but it payed off, Scheme programming, dta structures and algorithms, even now 3600, working my tail off, but for the coding jsut isn't there, you know what i'm saying, it's more about coding than about algorithms or proofs, i don't know where the bridge fell off, or where i lost it, but every coding assignment i get i cringe now,
about the proofs though i do see where the bridge is, if you correct that bridge, kids will understand a lot more
t so how do you approach a program, besides, after the crignging part
p first, then decide if there's any skeleton code, look at that, obviously read through the problem a few times, if i don't understand, if i don't know where to start i ask questions and try to get a little bit, when you're wriing java or mips or even scheme, though scheme doesn't really appy, matlab, you can always open , write the main method you alwyas start with what you have to start, mips comment, .data, .text, stuff like that, you're prompts, your ascii promplts, stuff like that, other than that, it's always to see how code starts
t let me tell you one of the procedures that's used in industry: You get a requirement for what you're supposed to do. You underline the nouns, if they're a noun phrase, you underline it as a group, so, then those nouns, you draw them as classes in a UML diagram, and they you look for the verbs, the verbs tell you something about the relationships between the nouns, Those turn into lines between the classes, and whenever one class sends a message to another class, that means the recipient class has to have a method that interprets that message. And, by the time you've got, you know your list of how evern many nouns there are, and all the messages and thereofre the methods that have to live in those classes, you know, you're program;s mostly done
p this is going to be scary, but i learned more from what you just said about how to write a program, how to start one, than taking 4 years of taking program, i love Jeff the first guy we took matlab from him, i don't have it as a coding language, you can do what you want, i still do my signals homework, it's so useful, it's very
t it's extremely powerful, all those add on things
p i know why it's not let's write in this, but, he taught she you know it was ok you're objective is this, write a method, write this class, write this put this in the method, do this, do that, then you got to object oriented, which was also taught by Jeff, he gave you a problem, write this method, write this class, make sure you have the main method, a little less descriptive than previous, not like you know highlight all the nouns, that's what he basically did for us, you made your bots, your ellipses, you got to see programming come to life, not just you know this is a graph, this is a monte carlo, it's agraph with x's on it, oh cool squares that have arrows, click them and tell them where to go this is awesome, then you get to data structures and algorithms, you feel you know nothing, nowhere to start, just a paragraph, write this and do this, somewhere in there just two classes to that class, supposed to just get this
t huge leap in there
p giant leap, that's were most of the problems come from, lose the 70percent of the class, 30 percent who know what they're doing, just be taught a little bit and get it, that's where you'll find most of your problems understanding proofs, that's the first really the first class where you get it, where it's not just you know, this is the proof, take it on faith, that's what they tell you to do, but that's where you should really selts see why this works, let's see how this is proven, understand this as a whole, once you get it, that's where the gap is where everyone kind of loses it
free math, get it, a few snippets of pseudocode, this is what the program does, ok well now i can turn this into a math formula, that's where the gian bridge was, and i know it's not, scary, but like of course as a computer engineer always surfing the web, looking up this, that, so i google a lot of my homework questions to see what kids, professors taught, and i find i'm in a 2000 level class, and i find the same assignment for a 5--000 level class somewhere else, i could understand 2100 if that were 2300,. bu .....maybe at other universities, i can't obviously that study leaves here, trying to correct that bridge by teaching scheme early on
t yes
p and he was a great class, i love that i took that half a semester, i'm still using stuff from it as it goes on, i find scheme as taught by two brilliant professors, they know more than anybody should know but they have also a hard time conveying it and if you've never seen code before
it's whole different language, it is, i feel like that's where you lose another 30 percent of the kids and by the time you get two years, you've squeaked through data structures with a c or c- or a d+ but you keep going and now you've got all these building blocks on top of this shaky foundation that's why a lot of kids fall apart and switch majors and try their hardest just to get out and why some of the upper level design class projects so burned me and my buddy had a group project, trying to help those kids who don't get it, not understand it but get by, and put someone like that out in the job market, stamp something that's his foundation, you can blame him, the company for hiring himn, but he got the grade but it was built on the shaky foundation
t i did have somebody in the AI course we had a team project and there was someone there who didn't know
p no idea
t you know me, i'm trying to help him, feeding him the easiest parts
p still can't do it, i fear, i spend a little time on my own, i read books now, i don't really practice coding, it's kind of hard, find stuff on line and books that say, try this example, i try a little bit, it's hard on top of my school work and summer job, interneships, resumes, it's hard, but i do try and that's why at least when i get up to those elvels i can at least put something into my group, there's some kids when you get an assignment on a tuesday and 2 weeks to do it and thrusday i just last minute, it's not working, this one part that's wrong, they fixed one part and the whole code works and they did it in a day and i hadn't even thought about it, i had no idea how to start, it's scary, there is like that 20 percent that get it, small little and a bunch of kids who don't get it, and i feel like that it's hard to correct that problem becuase it adds time onto the grade and you then have to teach different classes that may not make sense to teach because they should have been taught in other classes
t do you think we should have an anonymous forum, where students could make comments, like a department forum, talk to us, we won't know who you are
p kids that i work with, cod with, we're all kind of in the same boat, at least 10-15 kids who, i'm not going not 10-15, probably 5 who just have no idea and there's probably at least 10-15 maybe even 20 in a class i think my architecture class is 45 kids maybe who have a lot of touble with it, i know because we sit there we talk about it, where to start, don't know, don't copy code, don't work with someone, everyone sould have different code, and when you work with group you write this one code, ok i kind of understand that, let me take it a little bit further, change some variables, try a different way, see why it doesn't wirk, good, kind of backtracking, but as the semester goes on you get more work you know classes can become important and which ones, i can code for 20 minutes with these guys,get a 60 or maybe a 70 and that will be enough, most of the classes get curved it is a hard topic, curves, i'm not saying don't kill the curve because it helps a lot of kids i find there's a big group of kids who can code but don't understnat the written, and there are those who do understnat and do well on the exams cause there's no coding, i understand whaqt't going on, how it works and how it should work but i don't understnat the code as much as i should it's you know i think if you put up a forum, even just send out something every one in CSE department you kinow ask honest questions did you learn anything in this class, understand anything, get a lot more responses than you think you would
t i'm going to do that, collect anonymous, people won't
p have to make sure that get the whole demographic, jsut get that 20 percent who learned everything, teachers great, everyint fine, but if you reach out to those kids, every time they see a survey, oh yeah we love jeff he's great, by the time we got to datastructures, didn't really teach well didn't learn much but liek i still got a c+ because it was curved, so i could guess the professor was pretty good you din't get true evaluations because kids think it's not worth it they feel like nothting will change, even if it does, by the time they see the change they'll be long gone, it's terrible that's they way that it is but it's true
t there's growth going on right now, Prf. McC, department was going to grow by 70percent
p i heard they just hired a bunch of professor, the 3666 professor she's new, her first year
t this might be a really ooopportune time
p like i said i feel like every professor needs to go on and look, of course they use a lot of the same assignements because no one
wants to write new, not dumb down , but more for understanding, less for testing
t formative evaluation
p i feel like yeah
t so, what do you think about an apprenticeship approach, where you sit down with the, legitimately difficult problem, say, ok, how would you do this, so the student has a go at it, and the teacher says well consider this other thing, you know, there's a lot of back and forth
p i feel it would work but it's hard to find, especially with coding it's if you're a professor who teaches a different subject like english, you won't write the essay for the kids, of course you won't so you physically have to sit down with what htye write, you've got to change this, you can's say this, when you get an apprenticeship for someone to help you write code, hlep you understand everything, the first time they get a problem that doens't make sense or run short on tiome, just sending you code, use this and i'll explain later, never get's explained, that would be how it would happen, they take seniors who are like, oh well you get another student, apprenticeship, you get two, help them with code, meet an hour a week or somethng
t seniors are so busy
p everyone is busy, even the professors, set office hours, research on their onw, my signals professor teaches because he has to, not because he wants to, not going to curve, or fail half the class, didn't really teach us, he doens't care, he's doing research, that's more important to him, that what's its all about, you get this great degree you work for a company make a lot of money or truly like to work, do lots of research, some paid some not, do th research because that's what you love, those professors do the research becasue that's what they love and they teach because they are already here doing research so why not, or they teach because we need someone this is your field of expertise so teach the class, and you get professors who don't care, you office hours, they';; solve it for you and say here you go, i have reasearch to do, you have to find people who care enough, who will take the time, who don't, their full time job is to teach, not to do research or do other things, who can understand they givea an assignemeng and they see how the class is struggling, to not give exptra time but to tell them this is how you do it, lay it out, explain it more, tons of professors they give their prob and you want to make this arrya, and do all this stiff to the array yeah that hel;s a little bit nbut not much, don't know how to make the array, it's not helpful and you get there and it's due on tues and you come in mondya and none of us are done we don't get how to do it, professor ok next monday, ok that's good, helps the whole class, i mean it's terrivle, in some cases it does help, time, all it does it push off the worry, that's it. I remember 2100 day due all panicking kids strung across the whole buildling, tues night we'd all be staring around the lab, waiting for someone to say look what i just figured out, i got the main method, 10 more pages to write, we got it.
but some kids like me i'm not ok with it i'm doing extra work i even switched form cse to ece, i like the elegrical side, of course i'm still coding but i make a point to try to understand things i don't to be good at what i'm good at
t what kind of circuits are you doing
p right now i'm in device theory and analysis, so we're doing cmos, jfet's, mosfets, bjt, which i love, i'm actually doing amazaing in that class
t congratuations
p all that stuff, circuits 1 hard class, i took physics i can do this this is simple, the first time you see an opamp, what's that dorito,
t you don't wnat to anlyze that from physics first principles, that will be a lot
p once it clicks and you can see like, uh, i get it throught the lab, and averything's reinforced, you get it, it's nice,
you can see it physically, you can see it on mpapper, coding you don't really have, you write this whole programg, you pass the vaiable here
you amlke your recrusve call here, base case, the loop, that's what you have, and it's great, but you don't see whose individual steps, you
can't try a resister, you can only throw a null pointer, throw whatever
t null pointer's popular errlr
p there'e not like you don't get to see it, i have physical grasp of this, you can't see the variable being passed, it starts here, it goes therecircuits you can watch the
t scope and you can
p put it anywyere you wnat, it's kind of the same thing where you put a stop and a print, they odn't really teach us that, that was one thing i was shocked at i didn't learn that until i got to mips, because my buddy was helping, after every line put lieka print you can see whyere you are what happens, they tell you use the debugger, but no one shows you how to use, they teach it they just look at it, error's here, ok, got it, they haven't shown, you don't learn the tools you need, first write code, second debug,
t some time should be reserved for teaching the debugger, you can do println, always faster than do just one than learn the debugger now, but i did once make myself learn to use a debugger
p my buddy greg, i was so sad, will still say one of the best coders i know a brilliant guy made data structures look easy, and he knew how to use the debugger, and everytine he wrote, he'd write and write, and he'd run it, and step through the debugger, his code worked, it was polished, no extra variables, efficient, right correct code, great thing i told him you'll make a lot of money like that, when chief engineers write these great long program, this is how it's going to work, this is how it has to work, and he can sit there with the debugger what their writing on, you're here now, it doesn't work, very few people who i know can do that, this is only one university, this is only 1000 kids in the department, including professors
t i don't know, someone told me we had 125 graduates students
p there are probably like 4 or 5, when you look at a university of 20,000 kids right here, you realize how small it is, and why there is not so much emphasis, back in the day when you went to school, if you were a smart kid you were an engineer, if you weren't, you weren't an engineer. The second you tried, you'd fail. Here, we've started, party, aced all my classes, watched them have to drop out, departments all engineering itself, and there's this whatever but nowadays if they make it easier they don't lose so many kids but then you get what we have now, a bunch of juniors and seniors having a lot of trouble writing code, having a lot of trouble, squeak through because i want my degree, creates a big problem, that's the way i feel about it, if you ever wanted to know
t so, shall we stop?
p unless you have any more questions
t no
p then, that's it
t thank you
interview20131209
please start by
mon dec 9, oszur
please start by saying i read and signed the consent form.
p i already participate in this study and i signed already the paper and uh we will discuss about um ...
t talking about proofs, things that you have seen yourself, and maybe with students about proofs
p yeah, i have seen you know i am a ta for one course i have been facing some stations like suffering actually some
um, proofs, uh, what i see usually uh they are not deeply understanding actually the definitions parts and
then applying the proofs but some ... they are not fully understanding the definition of the lemmas and they are not
able to apply proofs appropriately for example, for the pumping lemma the pumping lemma says like some features the
beginning, then try to use these features to apply some languages and then if the properties are satisfied, then
can say, language is regular
t if the properties are not satisfied, the language is not regular
p when they prove it regular this fake language, if the it is a regular language or not, they just um they just writing
the properties, but they are not specify the letters they use then it's confusing, what they are doing, like
something like they don't specify like pumping length, for example, p, but they write, they write and they think they are doing it
correctly, but they are not specifying the what is p, what is length, what can just writing their features, like 2 or 3 features,
and their pumping lemma, and they are thinking they are correct, and when i grade their homeworks, i say you have to
i say to them, you have to specify which letters you are using and you have to define these things, otherwise, i cannot understand
what you are doing, just they're um hoping somehow they are hoping lemmas and they don't explain what they are doing and then
when i return them the grades to them and some of them complain because they are showing me i guess the three properties, and
i but i say them i am telling them you have to be sure you have convinced yourself first what you want here, for example,
what is p, what is you know they have to specify p is the pumping length, but giving just three properties is not enough
because you have to convince me you are doing the correct things, and you are applying these properties
t so, they read the book
p yeah
t they learn the expression of the lemma, the three properties, and they know how to repeat that
p yes, this is the biggest problem, you know because they are not focusing their definitions, definitions of the lemma, right,
what is pumping lemma, what are the properties, what do you establish, they don't know where to start, actually. They are just
writing something and they remember
t they remember seeing
p yes, in class, but the proof is to like um, if you do the proof something you have to you need all the things like all definitions,
t all the parts of the argument have to be there
p you have to know, otherwise, because, you have to, your judgement, use your judgement is uh, when you are solving a problem, your judgement
depends on something which will be correct some
t some flow of logical reasoning
p exactly
t so, these students, they were making an argument about why they should have a higher allowance, or whatever, they would know
that there should be some agreed basis, and then there should be some logical steps
p yes
t you think i should buy my lunch every day, lunch costs \$1, there fore you should give me \$7 per week, begins with something we agree on, and it
moves towards a direction of the conclusion
p yes
t by steps that cannot , so there's a coherency among the statements, so if the students are wondering why they should have a weekly allowance
because they're supposed to buy their own lunch, they would know the parts of their argument, and yet, when we ask them to give an
argument in 3502, we don't see that same kind of begin with an agreed thing, maybe we do see that part, but they don't see the coherent
reasoning steps
p exactly, yes, they are just writing something they remember from the class and they just prove, but not all things you know, we need
all things for the proof, because lemma explains you what you need when you prove something, you have to have these things you know
the proof, you know? Um
t so i think we have at least two populations, i think there is a population which could have put together an argument if they recognized
that we are giving them building blocks for arguments
p yes
t I think there are some who would not, for example i taught 3000, and we were talking about moral reasoning, and um i even gave them a reading
on levels of moral reasoning, gave them examples from their ... work, so they were motivated and they were alert, and then i asked them
to do moral reasoning in a different domain, having to do with say pirating music, so instead of applying the argument steps, they said
you know the companies that make music are rich and we are not so it's ok to take it, which i think is not a moral argument of any form,
but so i think we have some population who, although if we take it as an intellectual exercise, now we are going to use reasoning, here
are some reasoning steps, but then if they have to do anything on their own, they're going to fall back on some other approach,
p yes
t I think there are also people who are operating in the mode of, this isn't an argument, we have to reproduce something we have seen,
so if we can just reproduce it all that will be enough
p yes
t and it think there are people who misunderstand the mathematization itself
p yes, maybe, because like you cannot see the proofs like math in nature, right? You have to everything you know has
t like the world of ideals
p yes, ideas, it's difficult to put the students i think they are successful in chemistry, or other experimental
t hands on
p yes, everything is in your mind, you don't need any tools
t you need mental tools
p yes, mental tools
t but you can't hold it
p you can't hold it, yes, so you cannot see and if i do these and i will see which color, so
t you put the phenylthalein in, and you measure the pinkness, it doesn't happen, it's all abstract
p it is all abstract
t we can like it for that
p yes, but um, what i have seen so far, suffering doing proofs, and explain what they learn, yeah
t so, what do you, what
p some small, some other, very good
t oh, yes
p i am surprised, you know, because you can prove something in a different way, right, so, when some students have different ideas,
it's very good to see them, interesting
t very gratifying to see good students, but i'm worried about helping the ones who are not, that's why i'm concentrating, on the ones
we are most trying to help, so if you had an infinite of time, what do you think you would do, to try to help the students?
p we are doing the proof things in the homework assignments to see them what they are doing, and help to how to approach the problem
to solve and prove it, and homework assignments they learn and they know their mistakes, and then try not to repeat them, repeat the
same mistakes later, i think it's a good thing if a conscious student does this i mean efficiently he will you know he will be
better than before
t oh yes,
p but other students you know if they don't enough conscious
t i think you mean conscientious, conscious is awake/asleep, conscientious they care about the feedback, they use the feedback to do better next time
p what else?
t have you heard of Moore method? There was a professor Moore, and he taught students proofs by giving them a thing to prove, and an extremely short list of axioms, and said, here you go, just apply these two or three, you will be able make the proof, go do it.
p oh really
t and then he made them stand up in the class, he did not lecture, ok, try it, everybody will criticize you, so it was a grueling experience,
some professors write that they hated being in it, others convinced that yes this is the greatest thing, because you ... do it. Do you think
this sort of thing would help?
p um, like results, right, need to have see if everything you can do, you can try to prove, when you do a proof you know, you start, just start,
and try to follow the steps and it's somebody know you will see if it's not they will, too, and somewhere you will see if it's clear to you
or not, if it's not clear to you, you have to go back, do something else, right? you have to try, you have to always try to do, you know,
t i think, i'm going to draw an analogy to playing chess, the various moves, if they know each legal move, and they can look at other
people's games, and say, ah, that's legal, that is, they are all legal moves, so what somebody shows a proof, that's a legal step, that is, but
there's a huge gap between knowing the moves and being able to play chess well, maybe there is the same thing with proofs
p yes, you are pointing out this, yes, you can think chess move, when you prove something, because you know if you like in chess, the moves
like in math, the lemmas, you know the movements, so, but chess, two people, the game is yourself, so you have to do it alone, when
you prove something, you just try everything, you are not doing like wrong, but if it's not clear for you, somewhere, so it means it's not,
it's not the correct proof, right?
t oh yes, if you cannot convince yourself, the likelihood of convincing someone else...This is what i find, i have talked to some students
about 2500. They told me, i know inductive proof, i feel happy about those, did a lot in class, you do step 1, you find a base case, you do
step 2, which is do the inductive hypothesis, if you can assume k if you can produce k+1, and then he said to me, but i never felt good about
these proofs. I said, well you know think dominos, you can do 1, and the kth domino knocks over the k+1 domino, and he's nodding, yeah, yeah, and I said you know k can be 1, so the first domino can knock over the 2nd domino, and there you go, and he looked at me he was so grateful,
I was in shock you know, that that little piece hadn't gotten across, and so he's knowing he has done a good proof because he has carried
out all the steps he was taught, there is a list, I did them all, check them off, it's a proof, but he was not personally convinced, but
after i pointed out, it's really simple, k's an integer, natural number if you prefer, can take the value of 1, he said oh, that's it,
and i wonder have you seen any student who seems to you to be at that level, that sort of know they have to take k to k+1 but never
had the thought of combine that with the base case and get all the counting numbers
p I haven't faced it but have experienced some other strange things i faced before, and they not ... got the proofs, like, some students, like
suffering at applying this base case like inductive case the one time i saw like some students like messed up everything using many letters
you have to specify your base case and like the letter, right? ok, for example, they are using many letters for base cases, k, k+1, let's say,
and then they are using different letters, t for t and then for k+1 then t and k+1, so, it shows you they don't understand the definition,
they don't know anything about i mean, they know something, clearly, but the, not the whole definition
t so, do you get the sense that how we show them math because it's a powerful tool, want them to be able to use this powerful tool, but
all they see is we're doing math, we doing algebraic manipulations
p un, huh,
t but they don't take home oh my goodness this is like a screwdriver or a bandsaw i can use this powerful tool to carry out my reasoning processes, it's not like that, it's like they're talking gibberish, i have to copy it
p i think this maybe is the case, using the math
t excuse me?
p making them practice, because i think for me it is the most important think in math is the definitions, because without definitions you cannot do any thing, because the bottom level is the definitions, axioms, other things, then you can go up
t because it's the consequences of the definitions
p you have to use but the most important i'm i have faced they don't understand really the definitions of the math for other may um, and applying
these definitions, axioms, other tools, i don't know what the reason was, understand, i don't know if you understand what i mean, but the knowing the definitions, you can do everything
t i think if you know the definitions well, and then you what's the consequence of this, and put these two definitions togehter
p yes
t i considered them together, and a consequence arises, i generate that consequence, now i can use that also as if it were a definition
p un hun
t step by step explore the consequences of the definitions
p yes
t and learn new things that you might not have realized, or you might not have been sure of
p yes
t before
p yes
t Lobachevskii says, suppose the internal angles of a triangle do not add up to 180, what can we get from that? well, we get a lot from that concept,
but if they don't think of a definition as a tool
p umhum
t i memorized the following words, there's this depth dimension
p yes
t if you just memorize and reproduce, but not engaging your reasoning process, then can't take that next step, of say, ok, and then the consequence is, and i'm not sure how we're helping them take that next step, maybe we are just assuming that they necessarily take that next step, but i think sometimes they do not, and so how can we sort of them now, get some benefit out of this, feel good about this
p they could be learning the lines, when you are doing the proof, and understanding the proof, just like some examples, yourself, you an example, some numbers, it's not that abstract, math is abstract but you can just specify one example and prove it then you it will be better to understand
some things
t sometimes i think we should turn around and say ok here's an example of work it step by step, now you go do one, that's like only the tiniest
bit different, but make them copy the steps, it should not be too hard
p yes, give them an example, right, to apply the proof, and see if it is true, right but also make them. students are confused if you do an
example and a proof see if the proof is correct or not, is not enough, giving them is not enough, you have to generalize, but just
giving example just help you to understand, the abstraction
t yeah
p but some students instead of proofs, they are just giving examples, they are thinking, ok, i am correct, because
I choose the example myself, and it satisfies the properties, and it's true, so they are thinking, ok, whatever idea an example,
it will be correct
t serve as a proof?
p but it's not correct, it's wrong
t it's not enough
p it's not enough, they have to generalize, some proofs, counterexample, that you know
t contradiction
p yes,
t one day i asked a student, i think you and i had both been in the class, and they afterwards, many hours in the afternoon, i saw this student and
I asked him, do you think we were doing proofs today? He said, no. I said, well, did we talk about some things that are necessarily true, necessary consequences of some assumptions that we made. Yes, he said, definitely. Well, doesn't that feel like a proof to you? He said, well, yes.
So i asked why do you think we were not doing proofs today, and he said, well, nobody wrote like PROOF,
p it is the biggest problem
t I realized it was what i call syntactic sugar, coming from the language of compilers, you put something in the programming language, the programmer has to do it, it makes it easier for the programmer to see what's going on, but from the point of view of the compiler it's unecessary,
so, writing the word PROOF: on the left doesn't really contribute to the proof, though it may make you wake up a little bit, and he said yeah,
i guess that's true, so i guess, sometimes they don't know a proof
p yes, maybe it would be helpful, there is like um when they are listening after that they are like dreaming, they are leaving from class and going dreams outside, they are not focusing on the class, because the math you know is, if you miss one minute or one second, it's down
t hole in the argument, like hole in the balloon
p you will be suffering
t that's right
p it is important, you have to focus, the math courses, right, you have to focus, you have to give it all attention, the class every second you have to, because, you know
t or, go back over it later
p maybe you will be suffering all your life, right?
t un huh, or maybe they will abandon
p yes, and it makes you, math, right, other consequences, ... math
t think, cannot do it
p other things, i think, could be underneath, every you know every you go, even you will be successful in that area, but if that moment
you hate math
t let me ask you this
p maybe you will be a good professor, right?
t I can remember this was hard, therefore i will teach it carefully. Have you ever seen a student have an aha momemt, ``Now i get it?''
p actually when they are doing homework, some, like, not clear, why it's wrong, why they are wrong in that point, and
when i explain to them, give them an example, ``oh, yes, oh, right'', and they are like, they are surprising and you can see their smile
t yeah
p because you are clarifying their mind, by the problem, and they are very happy, even they are wrong, even their grade is not good, but
understanding is amazing thing, it s a miracle for them in that moment, and they are happy, and like and also like this thing, because
they understand, they can understand, and that moment they
t go ahead, events, yes . Do you remember what interventions you have done that has cause this? Same every time, different every time?
p different, they are different problems, and different approaches, solving problems, somes better than others, worse than the others
but, is a good thing to make them feel comfortable, you can know, you can tell them you can do this, you can explain this easily,
by giving an example, or make them encouraged, be happy, because you have to take, and some courses should be taken, right, mandatory,
t I think 3502 is required.
p so they have to , this course, right?
t I taught discrete math for maryland this past semester, and so for the first time i was watching the students grappling with the proofs,
and nothing else, but proofs were subsidiary in the work, you're suppose to do it so that you can see what's going on, this is not 2500 because it is Maryland, but in this discrete math class, they were rushing themselves, I have to get to the answer, and I said, no, you have to
understand the process, you need to take, if they are mistaken, take more time, go slowly, convince yourself, each step, look at this,
look, and they thanked me, and i would just turn it back, i didn't give them a bad grade, made them do it over again
p they are not patient, right
t no, but they learned to be, car more torque slow down
p proof systems, you have to , because they are, the proofs should not be, you know, how can i say
t well the proof has to be valid, and they were giving me invalid statements because they were not taking the time to actually understand, and
I said take as much time as you need, because if you don't understand it, it's of no use to you
p exactly
t and they did, and they were in shock about how slowly they needed to go; they are able to go a certain pace in other courses, and they expected to go the same pace, but i said no, the power of math is very strong, therefore you have to devote to it, the attention to make sure you are using
p you have to refer something you are using
t I think they don't see, you know, we're showing them, we know how to do it when we are lecturing, so we go at a certain pace, and they think
oh i'm going to write my own work at that same pace, but that's... somehow we need to tell them, ok, if it doesn't seem convincing and strong
and solid to you, it isn't. ha, ha, and therefore you will need to slow down until you really understand. ... the only way i did it in the discrete math class was say, you know, here's a mistake, you haven't got it right yet, and you need to look at this, and i give them examples of different problems, and say, but you can see that this is a modus ponens step, you can see this is a modus tollens steps, i gave them easily
understandable analogies, you know the soup tastes salty it must be that the cook put salt into the soup, you know we did converse in the first week, we had implication, and you know the implication is true, you have the converse, the converse it not necessarily true, week 7 i gave them
a problem, here's a graph, the edges are the seams on the soccer ball, and where the seams meet are the nodes, and i said decide whether this graph is a planar graph yes or no, and prove either it is or it is not. and they had in their textbook the implication, if it is a planar graph, then we know the euler number is true, and sure enough there were people came back to me, the euler number is two, and no, that is a converse.
p they think they are doing, they are not reading the question, you know like, the question is asking you, but they are explaining generalities,
they are not answering the question, and also just like number that comes to them, not reading the question, they are not, they are not
if they are not, they reading the question and understanding, how can they answer it.
There's another problem, they have to focus, they have to understand first, what it means. what it says, actually, then what you need, to prove
or solve this question, right?
t because the problem statement might include information that is not necessary
p if you don't understand the question, how can you solve, how can you make an algorithm, mind solve
t it's the depth, they're hoping maybe they don't need this depth, we must convince them they do
p my observation, like in class, does some examples and when the professor gives homework, the questions, they are thinking the same question,
we did in class, and trying to write the what they learned in the textbook, but it's this is not good, right, because the question could be asking more things
t so, if they approach it as just some manipulations where they don't have to attach a meaning to it
p yes
t and say alright, like what we saw, put up something like what we saw,
p this is the main point, if there's a for example the question is like this language is regular, and after this sended, if you see, prove, so you have to prove, right, not just saying we saw in the class, it was a regular language, and just not referring to the class, so this is the biggest question, the end, right, prove, so you have to write your own um letters, verbs, and prove it, right? not just enough to just to in class we did it in this second, in this minute, we did it.
t ha, ha, yeah, so the patience and the depth, seem to be somehow have to relay to the students, yes, you will need to take the time, and be
patient with yourself, take the time
p yes, you have to be patient
t and it is a tool, it's a tool, you have to master the tool which is powerful and when you use it it will help you
Thank you very much for taking this time
p you're welcome, i hope it helps you,
t yes it does i'm very happy with it. let me ask you this though, my teach who taught me to do interviews, always ask the participant what they
wished you would have asked, i have been very surprised, someone has been very patient, when i say what did you wish, then another hour comes out
p pretty much what you asked what i had in my mind , actually a very big topic, yeah, i mean, what the problem, how can we
make you know comfortable students apply proof systems, you know, and how to make them comfortable doing proofs
t we don't want them to suffer, and we don't want them to avoid proofs
p we want them to love it, right?
t yes, they should love it
p yeah
t and it's a shame if they miss out on that
p thank you
t ok, thanks a lot, we'll turn off.
line3t8005
ok, please start by saying you've signed the consent form
i've signed the consent form, consent
i just need, to know, you know you're being recorded
yes
my questions, as you may have seen
unhun
are what do students think proofs are, how do they try to understand them, and what , why do they think we're teaching them about proofs
i wish i would love to know the answers to these questions. Um, you know
come to the dissertation proposal
i'll be there
ok
um, but, yeah, so, uh let's do one at a time, systematic, first question, what do students think a proof is
right, they come into our classrooms, they've heard the general english understanding of what the word proof is, and they may have had proofs in geometry
yeah. They I don't think um I have no I think that vast majority of the students think that a proof is some kind of magical incantation, um, some of it kind of surprises me especially in the context of computer science, because um the analogous notions in programming are they're completely fine with, but
in the setting of trying to prove a mathematical statement, um, those things kind of go out the door.
Yeah
and so i think one of the things that um the students often struggle with a lowest level of just sort of writing a sentence that's true. Um, there's a emphasis when we teach proofs about the kind of one thing leading to the next, and kind of logical progression
un hun
but even writing a single sentence that's true is a real challenge for them.
umhum
um, and i think they get uhm some bad preparation from their ... classes because it's just there's a there's a a a common feeling that it's their interpretation of what's true, or their feeling, how they feel it's true, and a lot of well you know what I mean
yes
and there really /realized is this more specifically when i bring students in for office hours and i put them at the white board because you can't write a proof unless every proof has be appeal to axioms and definitions
yes
and if you one of the things you if you do the following exercise with a student you get amazing insight, you say, here's this thing we've been studying maybe all semester, for example, cavitation, find to find a finite inaudible, and they but at the white board, write it, which is not the same as kind of just tell me what it is
unhn
and they say well i don't know the definition but i can tell you what it is
hunm
and so right there (ha ha) there's no chance that they are going to be able to write a proof, because they can't appeal to the definition because they have a different sense, their idea of knowing what it is, and knowing the definition, and so this seems to be like the biggest gap because we can't teach them, i feel like you can't teach them how one statement can follow from another unless they realize that at some point they are appealing to definitions, the fact that every step they're appealing to their definitions, or true statements they've got before. now i tell them proof is the way to find true statements from true statements
yes
um, but this is again just too late, right, this is too far down the line
already
until you can really talk about true statements
yeah
this is one huge challenge that I think that kind of limits our ability even to have a concept of what a proof is
and it's prior, don't you think, to symbolization, it's just the idea that there is a definition, it's a precise tool
umhm
you can precise building block if you will, you can build bigger precise things out of smaller precise things
yeah
that is, that idea isn't always necessarily present
yeah, which again surprises me in computer science, because they do feel comfortable doing this in code
unhm
and they do realize that if they write one line of code that has something you know wrong in it, the whole thing doesn't compile
right
they realize they need that, just, they can't just make up a new you know operator (ha ha) "you know what i mean" to the compiler i say this to them, you don't tell the compiler well you know what i mean, and um, and somehow i often i've often tried to resort to this, um, this metaphor, because it's a concept they have that's pretty well developed, concepts for code
umhm
they're pretty well developed, um, the one that's most present, most um surprising to me is it's a difficult to that students really understand recursion pretty well, they can write a recursive function
yes
and they have no idea about inductive proofs
right
and um so i have done the following exercise: which maybe i'll have to follow up with this student to doublecheck now to see if any of this sunk in, I have a student who had no idea how to prove anything really, he had gotten through all of these classes but he had no idea and he kept saying the following thing, he said, he kept saying I'm just not good at proofing
umhm
and I would say well proofing is a word, but that's not what it means not comfortable with proving statements, but it's indicative of kind of the vagueness of this activity proofing is a thing, it's not even, notice how when you say proofing, there's no object
right
you know if proving math
right, intransitive verbs vs. transitive verbs
there's some thing to be proved, but you can't say it, I had to correct him like 10 times, the last time, one of the last times, and I'd say you're just saying that to annoy (ha ha) but here's what I did, um, I said ok like here's a statement and here's a thing very simple mathematical statement that you can prove by induction it was like the sum of
numbers 1 to n?
it may have been it was, it was the sum of the numbers 1 to n, so this is a very simple thing you can prove by induction. you also compute it be recursion i guess it's a very simple recursion um and so i said prove to me that it's true for like you know first case, and then I said, prove it's true, and i made him you know start writing these proofs for 1, for 2, for 3
umhm
and with the hop that we would start to feel like at some point this was a mechanical process, he could write a program to do it
yes
and then we actually wrote code
oh, how did that work?
the idea was the code would take as input the value of n that you're trying to prove it for, and would write this whole long proof
ok
which would go through all of the cases, and basically prove that well build up an entire proof for that specific case of n
umhm
um, and then the code of course was just recursive
umhm
and then I tried to so like you know like when we think about why this algorithm is correct and it's really just this algorithm is in one to one correspondence with the proof by induction ,there's a base case, and recursion, the base case of the induction, and there's this appeal, a recursive call to the n-1 case
right
is exactly appealing to the smaller problem
uhm again i don't know if how this worked, it was certainly, it was an interesting exercise, um, yeah, find out
i encountered another interviewee who on the other end of the spectrum was very successful um both in his discrete class learned how to do proofs by mathematic induction and understood what was going on, which is a separate, thing, but he understood and he also was perfectly fine at writing recursive programs which he was happy to do, when the situation warranted, and he said in the interview that it had never occurred to him that you could use proof by mathematic induction to prove that recursive programs worked. and i was sort of surprised, and i said how do you suppose that happened? oh, he said, well, when we were taught proof by mathematic induction it was all symbolic, there were no figures, and when we were taught recursive programming which happened in his data structures class, it was all done with diagrams
you mean draw pictures? like each tree drawing or, diagrams, you mean the output of the program was a diagram?
no at the board when the instructor was describing how to do by mathematic induction, they learned how to do the steps, everything was done in symbols and there were no pictures to be seen, which is typical
and so how what is the what kind of diagrams do you use to explain recursive
i don't know i'm only reporting what this individual told me, and he said we had, this was dealt with in the world of symbols, and recursion with was dealt with in the world of pictures, and he just didn't connect the two. You know Martin Gardner's types of intelligence, there are actually different separate intelligences almost as if the mathematical work were done in one part of his brain and the pictorial work was done in another part, and they just didn't talk to each other
yeah, so, with a lot of um recursive algorithms in fact especially we try to get past these kind of really simple the kind of recursive algorithm that leads to inductive proof, things that we want to get past in computer science, very quickly because we want to do thing where, for instance traversing a binary search tree, in which case, there's two recursive calls, now suddenly you get this kind of, you find, um, self-similarity kind of structure
yes, trees
yeah, and so but you don't um i wonder cause when you get it's um i mean students probably still understand the simpler kinds of recursion but um it's different with the exercises tend to be because we want to be interesting them to be interesting programming exercises, they tend to be kind of already step past these really simple recursions that like see in induction
right, just doing factorial, one thing to do, but if doing um searching through a tree
yeah
you have the whole tree, self similarity is everywhere, may need to look at all of it
right, i guess the other is uh, somewhere in between i think recurrence relations probably live somewhere in between these two
yes, structural induction
somehow they're yeah
so we can define a tree with a recurrence relation then we know it's a suitable subject for um attack by a recursive algorithm, and therefore what we do is subject to being proved by um mathematical induction argument
umhm
so it's all nice and lovely that it fits together that way and it's sometimes sad that students are learning these in what in my former world FAA are called silos, learn all the stuff that goes here, and learn all the stuff that goes here and maybe they don't connect
umhm, um, so that was one so that's was kind of one major issue with that understanding proof first don't really understand what a definition does for them
right
um, um, the logical step sequencing
umm
i expect them to have from programming but they kind of don't partly because there's just a difference in expectation of rigor but i notice this happens also with writing so when students have to write a couple of sentences, in computer science class, um i've found that unless you establish some clear guidelines it devolves into cavemen writing you know like periods, because it's i think they seem to have a feeling of once I'm writing math, I'm mixing in some notations and they especially because they don't know how to use notation grammatically, um, two years not this year but last year when i taught the class i found this was a huge issue and i'm sure the students can write grammatical sentences, but suddenly when they're introducing notation or writing about mathematical things they cease to have verbs and stuff, sentences, and run ons, amazing run ons, and so there was again a disconnect where they actually know how to write, someone must have taught them that in a different department but they didn't bring it into here, they felt like there was a separation, so this semester i made a a small effort to kind of push this so i have this i gave them a course a book a textbook on mathematical writing
oh, tell me what it is, i would love to know about it
it just was published but years the guy had it on line
Kranz?
Brand new book, um, I may have it, um, I'll have to send you the pdf
even better
yeah, he had it online for a while, um
it might be steven kranz, he has a book
is it new?
uh,
i mean
it might be two years ago
it's an undergraduate course, franco levaldi
another one, ok
this is ah i don't know too many other undergraduate books on mathematical writing
no, this one is a graduate
he wrote this book explicitly for that reason, they tend to focus on you know graduate level and so um find the table of contents course his there is a thing you notice about all of these mathematical writing books is that they're at the same time a course in discrete math, um, right, because what do you need you have to explain sets, how to write about sets, describe sets, equations, expressions, logical structures
suggest why might was to make this available in 2500
i think you would, and I actually gave the students a quiz on, i had them just read the first couple chapters, two chapters i hope to do more with it, but just didn't happen but in I asked them i game them a quiz where it had for instance a list of grammatical mistakes that can be made
yeah
like, comma usage, incorrect notation use, how to use notation and sentence run on sentence, sentence fragments, i gave them a bunch of bad mathematical sentences
umhm
and asked them to identify which was which, with the hope that they could bet a lot of practice um and they would get a huskyct quiz so i didn't have to go through and you know grade them all because you'd like them to get lots of experience writing
yes
but it is not the bandwidth to check, to read all of that writing, and to really give them that kind of feedback probably need um, i was how i felt like how i felt
i agree
suddenly so many students i wanted them to do you know fifty exercises and not but i'm not going to read 50 time
50 times 50 or 50 times 70, right
so, um, but also my hope was that by doing that first thing, because beginning of 3502, theory of computation class, you know, it reestablishes what notation have to deal with, students do not know these things, they don't know, sad
agreed
talk about sets, they don't know the empty set, the power set
a few deliberately pause at negating logical expressions
we're going to talk about that
ok, good, thank you
look at their, but ah, no actually this, because um uhm oh but my hope was i would set a standard and set an expectation because it like i said they have this disconnect they know how to write sentences but they that wasn't really what they're supposed to be doing, that that was part of what they're supposed to be doing, and um, not writing clearly not i mean writing clearly is a prerequisite for writing proof because it has to you have if you read about steps it's like leaving out logical connectors breaks proof
opportunity for a bug to be hiding in there
you've things that aren't even sentences. What do you do with that? um, so I tried to establish some higher standards by showing them this is what we're going to do, and I didn't get back to it as much as I'd hoped because i'd hoped to actually do chapter 3 here on logical structures, um, because of course this is worth things get really where they struggle, this is where they struggle with logic so um but there's a couple aspects to this right, because there's um there's meaning of logical things which i think actually they already struggle with, the meaning of quantifiers
yes
um, and uh and then there's logical abstraction. um, and uhm, i tried to do um i didn't do explicit logical abstraction like i didn't say ok sometimes you know out of desperation you do, because once you know these things it's hard not to think of them that way, for instance, you know some one has gives some statement and then someone says so you're saying i'm going to give you the abstract version i say =a implies b and they're like so b implies a, and you say, no, the statement doesn't imply its converse but of course now it's hard for them to get that in their head, you can give them an example but even then um clear abstractions of logic statements, logical implications, converses, contrapositives, um, it's um, it's hard for them to get past a bunch of specific examples
right
and a specific example doesn't help them that much, for instance,
sometimes a converse will come out to be true by accident
yeah, right, and so you say things like uh if i apriori i have an expected car just because if i have a expensive car then i have a ferrari is not true, and they say duh, right
yes
and this is actually why uh, there's a common refrain from students, about like this why are we doing this? or you know, just give me something I can understand, give me a concrete example, and it's true that you want to give concrete examples, but part of the reason i think personally i doubt of a loan often want to avoid giving concrete examples part of the goal is to learn to think abstractly, abstraction itself is part of the end, that we're trying to achieve
and bridging that gap, getting them to do abstraction
yeah
is an interesting problem, we give them 5 examples, and say, do you see something in common here
huh
but they don't always catch on
yeah, yeah, so, um, and ok so then quantifiers come in of course and this is a huge problem in this class, because you only have to do a proof to prove something about a statement that's quantified
umhm
uhm the quantifiers give you hints on how to start the proof, and so i think it might has some specific interest in the pumping lemma as a
i did publish a paper on students' understanding pumping lemma, trying to get them to apply pumping lemma and why they were having problems doing that
so i've tried different things, approaches, I'm curious to know what you thought, um
well, they have trouble with quantifiers, they can't manage when quantifier's inverted, they can't negate, one student came to me at 10:30 at night the day before the exam, and he said you know we have to do this in pumping lemma, and i said well you know you've got to negate this, this statement, can you negate the statement, and I put it in symbols because that's the most efficient for us, and he was nowhere with that, so I backed off made it simpler and simpler and I finally got to the point, ok, I want you to negate "There does not exist a dog." and I'm waiting to exist to say, for example, there is Jonathan the husky, and he couldn't do it, and I said, ok, you're too tired
yeah
you may not have slept last night, you know, before the test you need to get some sleep, and be sure to have a lot of water because the brain does operations during sleep that are better if you have enough water, have some protein, and get a night's sleep, because if you can't negate "There does not exist a dog" it's not intellectual, it's not a cognitive issue that we're facing right now, you're exhausted. He was not happy. But I think that some of it comes from the students make themselves too tired, and then some of it comes from they get scrambled with the quantifiers
yeah
the pumping lemma is particularly hard because it has five nested quantifiers.
There are five of them, if you write it out in that way. Sipser tries to avoid that, in that and so um one of the things that every both times I've taught this class i've always had the dream that somehow i was going to get past np completeness and do space complexity
yeah
but of course um this is where quantifiers play a major role because totally quantified boolean formulas is classic pspace complete problem, are you familiar?
not, sorry.
so, um, there's a satisfiability problem, boolean formula, like 2sAT, 3SAT?
yes, and given a boolean formula, does there exist a solution of the totally quantified boolean formula
you mean assign the variables so that the formula is true
in this case you have quantifiers, and uh, so can always combine if you have two in fact there are usually of the form where you have all the for all parts up front and they alternate. and so if you think of sat, it's just a single um existential quantifier, does there exist variables values x1, to xn, such that the following boolean formula is true. and now if you said you can instead ask is it true that forall some values of v's there exist some other values of v for all, you can add in more quantifiers, that gives you some boolean formula called the totally quantified because every variable has to be in one of the quantifiers, has to be quantified at this point, and this is the quintessential pspace problem, so if you want to solve a problem in polynomial space this is complete polynomial space, and um, there is a really nice way to think about it, so polynomial space and nondeterministic polynomial space is the same, turns out non-determinism with space complexity if you're allowed polynomial space and that's why for instance it's weird want to mention that because while we're talking about pspace and not np space and satisfiability, complete for np it's kind of generalization gives you complete problem technically for np space as well but, right, need to think about this problem games because if you have alternative quantifiers, now you have a game, because we're going to play a game and i want to know who's going to win, if we're playing a game so that i can always win if i go first, i mean there exists a move that i make such that for all moves i make exists a move i make such that for all moves you make and that's why and what is how is this different um from SAT now? SAT is puzzle maybe a better way to think of it, all of NP is about puzzle, because when you have a puzzle, you could put it in a book, a book of puzzles, because you know what when you solve the puzzle you can check if you have it right, it might be hard to solve, you can check if you have the right answer
yea
and so this gives a kind of difference, np and pspace, difference being puzzles and games, and so i hope, so get this because a fun thing to do and to realize the kind of philosophy behind these complexity classes but um in the context of the pumping lemma you have, you can have 5 alternating quantifiers, you've a little game, and so, i try to teach the students, try to tell students we'll play this game, where now i say able their um for all regular languages that you pick, there exists a p pumping length that i can pick such that for all strings you pick length p there exists some decomposition such that for all i that you pick the pumped string is in the language
that's lovely
in here's one of the problems i have um with this kind of approach exists happens with the course and maybe it's because of the structure of the book because the way kind of velocity we need in the course is that we do tend to do the following two things, back to back, which is um proof of the pumping lemma and use of the pumping lemma. what does this usually mean? I think it's kind of it means that students have to play both players in this game. and then they get confused who they are.
oh
right because if you're proving it, or you're using it, kind of, you play opposite, different roles, and so it many of my conversations with students they're very confused by what they did in the proof of the pumping lemma, and what they did to use the pumping lemma. problem because um it's actually quite natural to mix these things up if you have a if you think of the pumping lemma as doing something, as being like a
program
program, then, it's not unreasonable to inline that program
hum, ok
mean if i'm trying to do like i could have a language that i'm i want to use the pumping lemma, maybe i actually know, i just solved the proof of the pumping lemma, do i use it, or do i just reimplement it?
right
because i've said i have, and and the proof of the pumping lemma usually they have a picture this
umhum
because, yes, DFA, cycle, yeah
they say this is the pumping lemma, in fact i had a student come in, I said write the pumping lemma, and he drew a state diagram, and like there's a loop.
ok
right, he no ... in there, so that's one approach
There's a for all, loop, there's a forall looking at you
I hope so, but I didn't get that far.
so i think the order of presentation is a huge issue. this is also the problem with nondeterminism, in the next parts, because both nondeterministic dfas and nondeterministic Turing machines
umhm
um, in both cases i found myself presenting nondeterminism for DFAs NFAs nondeterministic finite automata,
yes
and then proving that they generate the class of
yes
but this means that we introduce a concept and then kill it. But how do we kill it, by simulation.
ok
so what is a simulation do? It creates a new DFA, equivalent to the NFA.
right
I asked him what's the nfa and they give you the dfa that simulates it.
ok
cause they didn't establish the nfa as a real concept before we already introduced something equivalent, in terms of what can not what type of object it is.
didn't consolidate their idea of nondeterminism?
right, in fact we immediately convolve it with something else. and this happens again with the nondeterministic Turing machine, because you say well it's nondeterministic Turing, many will tell you it's this three tape Turing machine, which is the Turing machine we use to simulate the nondeterministic Turing machine. um, and so the pumping lemma that happens as well kind of introduce it and then do something with it, and those two things because they happen so close in time before they kind of have a real concept of these things they get um they make it harder for them to understand. it's a little bit like someone was telling me about a study where students have a harder time learning heaps if you teach it right after teaching binary heaps teaching right after binary search trees.
ok.
so if you teach them binary search trees and then you teach them binary heaps they get confused because, the similarity in fact doesn't help them. you might think that oh this is just a change on the other thing, but until they really get that first thing,
ok, so when you start teach them heap after they confuse the search tree rather than
both, yeah
source of contrast or something
because they have these two things, very similar, and then they say well which is which
big arrow going this way, and this big arrow going that way
yeah, kind of the same problem, like what's a field, a ring, a Euclidean domain in algebra, if you take algebra class, this is you know a common
i know, just yesterday prof russell asked me you know so repeat after me the definition of tell me the definition of module and i said well ring, um, and there's more, uh,
yeah
this is popping up mean you have another appointment?
no
good i'm so glad
i'm till 11. um, ok, so, uh where were we, so yes so kind of idea of putting things together,
too close together, they don't have a chance to form a shell around the notion of this proof is a thing which i can now use. It's still too fresh, and it's like, it starts to decompose when you try to use it
right
so, here's the here the pumping lemma and I don't think it was about this is sort of a suggestion, Alex Russell gave me, you saying what he does, he takes a language he proves he just proves it's not regular directly, by essentially inlining the pumping lemma, but doing the same the proof that you can do, um, abstractly, with the pumping lemma, that is, for all regular languages, you just do it directly for a particular language
umhm
and this seemed to make a lot of sense to me because if you parse the pumping lemma in terms of all of its quantifiers, you can try to get lop off the first couple quantifiers, and try to prove some smaller statement, and build it up, and then the hope was, if you could understand that proof, so we should do the same proof for other languages and we shouldn't just keep writing out that same thing every time and so and so we should have some abstract, some tool that we can just apply there's a problem with this though which is that the proof of the pumping lemma, it's pretty short. it's not that much shorter than any given uh well depends on the level i mean given the level of which they can write proofs
yes
it's not it doesn't save them any time, just costs them in terms of uh cognitive overhead to write to do a proof in terms of the pumping lemma as opposed to trying to argue directly about the DFA given language and to say this loop, and so in order to try to make it worthwhile i tried i proved the pumping lemma in more rigor than just like picture and so clearly this works, right, instead of like, how do we really say this pumped up string is in the language, we actually have to show that this dfa that we have accepts that string definition of what it means for a dfa to accept a string it means that sequence of states such that you know the first state start state last state is an accept state and every state follows from the previous one. and this is tricky because you have to do this, it's tricky to do the mapping with the indices, once you pump the string out, because you have to say, you have this new string and you want to the definition for what it means a dfa to accept a string has these indices, if states are r0 to rn, you say ri+1 equal the transition from ri given si, where si is the i string element, but now when you pumped it up you need indices and so you have to do all of this weird arithmetic on the indices, this kills them of course, it shouldn't its always true, if you do it at the real level of rigor then you're not going to inline that proof.
unhn, yeah
when you see that you not going to but if the best they can do say well clearly there's a loop and so that it will get back to that same state and
way to express it in code, maybe lean on their facility with code writing
maybe
i have not tried it
maybe. So at the same time, so i tried to give them several different concepts for so i give them this idea that there's a game, think about quantifiers, uhm, i tried this dealing with the specific case and think about they give out trying to abstract or generalize the proof model, right. and then the third thing I wanted to get across which is something we don't cover a lot in the course, but is fundamental to complexity theory, but really any case for you trying to distinguish things is to understand the pumping lemma as an invariant, as a thing that's true about all regular languages, and therefore if you want to show that some language is not regular, show it doesn't have this property, some thing about it, um, and I did something that I thought was kind of fun I didn't bring it back from kind of give them a taste of this first day of class i used this um mu puzzle from godel escher bach, so you know the book,
i have the book, but i don't know the puzzle
chapter 1, think the one after, (paging book sounds) um, um, so it a it's a puzzle about strings, uhm must be chapter 1 the idea that you have some strings and uhh you're allowed to replace a string with a substring, certain kinds, not seeing it, oh here it is, uhm, the idea is you start with uhhm, you have some rules, you start with uhh i think you start with MI, and what happens is yes so you can do these um here are the rules, uhm, yes, end with an I, you can add a U at the end of it. and if the string is M followed by something, then you can double the something.
oh
ok, and now if you have three i's in a row you can make it a U, if you have uhh, um, two Us you can just delete them.
oh
and then the question is, starting from MI can you get to MU, and the this is a fun little puzzle to play with, what you find in the end is that um, if you get it right, you find that the strings you can generate on the number of i's is always uhhm one or two mod 3
oh
so, it means you can never get rid of them all. you can delete, you can take 3 i's and make a U, and um you can get rid of 3 at a time, but you always end up with one or 2 mod 3 Is. and so you can't get to MU, which has 0 Is. That's an invariant on the strings. So you prove that, all the strings have some property and U doens't have that property and MU is not in the language. already jumped ahead to this idea that the strings you can generate from MI is a language, push it, go back and push it uhhm, when they, when I talkeda bout the pumping lemmma, may have meant could because there is thas been very about the strings in a lanaguage andthe pumping lemmal proving languags in the class of languages, a tie in to languages, I thought would be more confusing
inaudible
yeah, the idea that you manipulating strings trying to say something about the class of strings you can create in different ways, um right so so they invariant view says ok a regular language is a language in which all of the strings can be pumped let's say what it means to be pumped, and this again is really just breaking it down in terms of the quantifiers, try to break off, if you take the parse tree of the pumping lemma, take a small subtree you can apply give meaning to, and you package them up into single concepts, like, string can be pumped, example tree, and so the whole point was kind of reduce the depth of the parse tree
lovely way to think about it
and it last year actually did something which again i used experiments but i never i don't know how they really work, but I had the students i actually wrote down a grammar context free grammars, they do context free grammars right after the pumping lemma, and so I uhm kind of revisited it, I wrote the grammar generate pumping lemma.so you get the pumping lemma valid statement grammar and the way you do it is to basically just a grammar that generates all strings having quantifier statements and then i have a predicate which was you know inner part, the totally quantified statement about strings accept, um,
$xy^iz \in A$ and the length package it up in a predicate, here's the grammar and I parsed it into this parse tree we can see how big how it gets deep, and um so this was a bit maybe too meta for them, I think again i don't know how
i wish i had done it
yes
sounds like a great idea
it does, it does, um, um, but what i revised at the end, all I was telling them is all I was doing them was giving them excuse why they didn't understand the pumping lemma, look how deep this is,this is why it was hard, maybe that's why didn't understand it, also kind of points to like the power of logical abstraction and parsing so the course has so many meta-elements uhm, because can talk about parsing but you have to use parsing, and so um i would love for the students to recognize that if they take a logical statement, extract, write it, and kind of parse it into its logical structure that tells you not just how to prove things but understand it, do I understand, well let's find some subtrees, I understand this the subtree in the parse tree, and try to you know think of that single idea concept
called
yes, right, I use the word explicitly, you want to chunk this, and um let because i don't i didn't ask them to do it i showed i did it i showed it happening
umhm
but there weren't cases where maybe this would be a worthwhile thing to do in course is that when doing parsing, have to have them parse mathematical statements.
good exercise
um, because just want a simple grammar that generates totally quantified even just totally quantified boolean formulas but again once in order to do it so they can write it, it has to be has to be very precise
umhm
um whereas the kinds of statements that they actually have to parse, the kind of theorems they might prove are not generated by such a simple grammar, like quantifiers are kind of hidden in there and i tell them, there are ways that quantifiers get hidden, and you have to figure that out
right
it really helps to figure that out especially if they are trying to prove a statement where the quantifier is kind of implicit
uhhun
um then a i don't know big if it's a real hurdle and Sipser does it a lot, he wants to keep his sentences from having a lot of clauses, because if you have quantifiers, real challenge to break that into sentences, in a way that makes it clear how quantifier scopes are handled.
yeah
this is another thing, i would love to be able to do better, but to try to explain how quantifiers assumptions generate scopes the same way variables have scope, because it literally is variable I don't know how the students do variable scope, is it still as big a thing in teaching them programming, is it absolutely necessary? but it used to be at Princeton, if you were um like in really simple programming basic or something it's really easy to have like global variables and teaching middle schoolers it's probably an ok thing to have, to give them use these things that maybe we don't do global variables, right, but, but when you just start um when you do that you have to unlearn oh well this variable is only applied in here, and
other guy will override it / overwrite it. I'm old enough to remember programming with dynamic scoping, I was sad when they , execution time was when you figured out the scope, when they restricted to lexical scoping I was sad because it was so easy
so what was the, oh but and so this is very interesting, may have difference, uhm, with code and proofs is that with code we talk about a variable having scope, and in a proof you have the statement has a scope
uhhuh
now, this becomes especially important for doing a proof by induction, or by contradiction, because it should you introduce some statement that says like you know suppose this is true this is and i try to explain this is introducing a scope, some scope in that range, that statement is true, yeah, and of course at the end, at the end of this kind of block of code, you get the contradiction it returns, this is not true, and that statement that is not true has scope
that's worth pointing out, yes
um, i kind of have these things are very connected in my mind because between generate scope generating hierarchical structure which is the same thing you get from parsing, right, parsing is you hierarchica
there's a paper by lamport on structured proving, i don't know whether you've seen it
no
i'll email it to you
i was looking for it, someone had seen it, ... give a talk about, might be the paper i was looking for just yesterday, um, .. gave a talk about, oh, it was kept referring to work that Lamport had done and i was looking for it, of course, i guess i was just switching to the wrong words i ended up finding leslie lamports collected works
ha ha
it was like well ok going back to like high school, something published in high school
i was lucky enough to blunder across this paper, and I will send it to you
is this the one he talks about trying to go one level lower than you understand?
i'm not sure about that, he definitely talks about carrying along so many indices so that you don't get lost, and he talks about how proofs and analysis textbooks that he had had, he found errors, and so he found the error, using his structured technique, and then he set it aside and he went back to the book and he also found errors in his own published proofs, but and then he some years later he went back to the book and he could not find the error, let me go get my toolbox, and he found the error
yeah, so, it's a very effective toolbox, and out of the i'm just lucky that somehow I blundered onto that paper
i think so if i only know this second-hand from manuel's talk when you saw him there's some idea where you get down to the level where you feel you've got it and then you go one level more than you think you need, um, and uh, unfortunately um often we're teaching students proofs we ask them to do things that they're interesting that um they actually do maybe one fewer levels than they need, should do two more levels of detail, but the standards are kind of low, uhm, at least in the computation course work, uh most of the teaching of proofs explicitly it's too it's supposed to be already done, i mean you can redo some of it, but you can't spend the whole course reviewing 2500 and so you if you take kind of what you have and try to just make it a little better, you don't get them down those two levels of more detail um but it also means that they don't get anywhere near what the real proof is. this is what alerted me to the whole situation i was teaching 3502, and got to the point where we're showing that pushdown automaton by which class as grammar generated, he has that proof where the stack is all the way empty or not, and I said you're going to love this proof, it's so sleek, it's so short, because you get down to a smaller problem, and you can use induction, lovely, and they said you know we never got that.
yeah
it was like, oh, well backtrack, we'll do proof by mathematic induction for the rest of the day and then tomorrow we'll get back to this, what was i said was there were students who learned it as a recipe, this part and this part, i do this, i do this, but they really didn't understand how it worked
yeah
and you know sipser has that cute proof i think it's in chapter 1, or maybe 0, about all horses are the same color
oh, yeah
the pseudoproof
so i decided that i will go over that
yeah
because the domain this proof, this proof has a domain over which it works, but you need to be able to say two horses, and you cannot
yeah
no overlap
no base case
he claims that one horse is one color which horse lovers will disagree with that but we'll set that aside
oh i see
the proof doesn't work when you have the set containing two, take one out, it's one color, put that back in take the other one out, it's one color, so then of course that one color is the same because there are some horses that have participated in both sets, that doesn't work for a set of size 2, for a set of size 3 you're fine, but the domain of the proof doesn't extend all the way down to the base case, so you can sneak in this
yeah, one of the ways that i tried to when i have give him refresh on induction one of the ways i tried when i one of the students try to see if they understand induction is to see if they can recognize or or construct with some pointers that every proof by induction can be rewritten as a proof by contradiction using minimum principle
oh, i don't know this
because you say suppose if i want to prove for all n something is true, for all say natural numbers something is true, then um proof by contradiction might be suppose there is some n for which not true, if there are such n, take the smallest such n, derive a contradiction, and not do the induction, it's hidden in here, but because what you'll say well then for anything smaller, it must be true because i chose the smallest one
yes
um and so it's a different perspective, that a mathematical induction just a special case of proof by contradiction. in the setting where you have a minimum, it's kind of, it's a given that you can choose the/a smallest element you're quantifying over something ordered that has a minimum, and so that was one thing i tried to do, but i don't again i,
timed out, I think?
is it? yeah because we emphasize induction so much in computer science, uhm, it makes sense for two reasons, one is then when we're dealing with discrete structures often asked graphs remove an edge you know bring an edge back in, the other of course is that we really want to prove the algorithms are correct, which also have this kind of um countable structure and you want to you want to package it up so it's true for smaller cases but i don't know it's more these just better than understanding conviction especially when they are uncomfortable with quantifiers. Yeah, I there's always a danger in trying out like imagine things like how did I learn this because it's so different but i know that for me at some point a, i, i, inaudible had some books, formal logic,
oh
uh, in logic in computer science, you know and i just learned it, did all the exercises (ha ha) so now I know how to
michael hoff and mark ryan
it was one of these cases where i came together lucky in a way i was kind of you know a freshman in college and i was always knew things and everything seemed cool at the bookstore and happened to buy these two books
i, yes, i just bought that one because professor michel recommended it,
one of the few books from the 70s, all the open problems are all solved, i think they're all solved now, you cannot ask the students to do that; one of the things i did get from this was i spent i just have all these little puzzles, to really prove logical thinking, this is real like fully rigorous propositional logic and then do really serious predicate logic
could i ask you to show me that because try to find myself a copy
um, you could borrow this one if you like, um
no, i have trouble with my collection of books, saying, oh my goodness did i borrow that from somebody or is that my copy, it's safer to buy,
i just write my name in the top, and then
like the punched cards, just write the slashes on there. I want to mention too that Hofstadter has written another book, about abstraction, it is called something and essences, it talks about how people form abstractions in their mind, and how they form definitions
umhm
you might enjoy it
ok. yeah. oh,
it's about the same thickness
yeah, yeah, yeah
his co-author was French speaking, they made two simultaneous, so there's one written in French from originally in French and one written originally in English, corroborated the whole time and they have cute differences about how you can say something about the time, or the weather, and in English, and in French, it doesn't mean the same thing because the words, some words
temps
are connected in one language that are not connected
i remember being in France, asking someone the time expecting asking the weather, weather and time, yeah, uh, so, personally i think i would prefer if the students like spent all of 2500 just doing real logic. like cause i don't think they really do it in geometry, it falls off, um and this has been a long time coming, partly because they don't know how to it into the curriculum, you know that the usual high school math curriculum goes alg 1, geo, alg 2, and now over decades the geometry part they want to sort of integrate the algebra into the geometry, what this usually means is that you do more Cartesian geometry, less Euclidean geometry, uhm, and so part of the hope i think was to give the students uhm, a geometric view of what of inaudible so they spend most of algebra 2 solving linear and quadratic systems in 2 variables, and graphing then seems very important to understand calculus and the graph functions uhm this i think this is a bit scattered for a couple reasons, but now i think that geometry courses tend to be heavily um algebraic and people forget that Euclidean geometry is not Cartesian geometry,
Euclid is prior to DeCartes
yeah, but, it's a different object, so you can say well maybe Cartesian geometry just instantiates a Euclidean geometry but it's not exactly true because you have a difference between what becomes an axiom what's a definition, what's a theorem, um, so, the fact that parallel lines don't intersect is sort of a theorem in , it's an axiom in Euclidean, but it's a theorem in Cartesian geometry, because you just can prove, you have two equations of parallel lines, and no solution, no common solution, and so, that's inaudible push that thinking to students who might be more visually oriented, don't recognize that certain algebraic facts for example, should probably be understood geometrically, like they do all of this, they think memorize the quadratic equation, for example, maybe that they memorize it for some short period of time
and forget it
and they don't even know when they're supposed to use it, on the other hand, you know, completing the square, is the, is how you first of all how you derive the quadratic equation, you get it by completing the square, and it has a nice picture to it, some x inaudible um equal 0, inaudible, um you want to find some square that gives you these terms, so two inaudible want this to be my x-squared, these two are going to be my inaudible bx/2 and this is going to be squared, something, extra, and say whoa how do i make this all work, x by x that works, b/2 here
yeah
b/2 here, then i know that b/2-squared and so i know want to know the difference here, you get the picture of this you could invent you could much you would even writing this, don't even need to write, all of the symbols, um,
there's the pythagorean theorem of that sort of thing, the folding one,
yeah, ok, in that,it's funny, to look at the, how geometry parts, you know i thought Kahn academy
i know it exists, i should spend more time there but i haven't any
i was out to take a first says start with Euclid and then it's like talk about proofs of pythagorean theorem most proofs of pythagorean theorem you see know do these things algebraically write down coordinates and it falls out pretty easily, now how Euclid did it umh ahm, so, close I do geometry especially because Euclid was Euclid's elements book of algorithms, full of algorithms and proofs of correctness of algorithms, that's what he's doing he, given, and it's such a different computational model, but he says, and axioms define the model, so defines straightedge model uhm anyway it's
i bet knot gardens
what's that?
do you know of knot gardens? They're gardens that you construct with straightedge, which is of course you stick a stake and you have a rope, and um you know you can choose you can make the radius be the same until you let go of the rope, you can draw an ellipse, you know,
yeah, yeah
two bird baths, and you have your rope tied in a circle
we have an anarchy garden
i didn't want to diverge, all of these compass constructions
yeah
are really nice in the garden
yeah
um, before we wander away from it, you mentioned having 2500 with more logic in it. David Gries has written abook called the science of computing i think it is or science of computation, and he's written another book with this name i'm forgetting right now (logical approach to discrete math) I proposed it to professor russell for this most recent 2500 and he said well if you wanted it to be logic based, and i was like, yeah, but
yeah, in this, this is the, the aspect that i don't even have an idea how you'd do this but, the two things they need seem quite far apart, one is that they need um ability to work with logical abstraction, but then they need to be able to write about them in actual in prose.
umhum
um and so these are two different skills and there's a third one connecting them, and that's um i'm not sure which of these skills they get, probably none of them. ha ha um, i mean exclusively like real is not a lot of work on because there is not a lot of work to take two on logical working without logical abstractions, doesn't feel like you gain , which is ok like, if the students it may be that just some weirdoes who find this kind of fun to try to use just the rules to prove these simple logical statements which may be mean nothing, just as
i think it's fun
well, i
austere beauty i think is what bertrand russell called it
yeah, um, so some students should get tons of exercise doing that, and that's the kind of thing they maybe ought to be automated, to be able to
inaudible autograder?
on the other hand they need to connect back to things we're doing, and um um so that also should be possible right and they said i think this had the book actually writing book has exercises where they do this kind of exercise where we have a statement and a lot of just write some statement; clearly, and so you can write it maybe in terms in some formalism, and then ask them to write it as a sentence
im so glad you told me about that, i'm going to look at it
yeah, um, yeah i can, so inaudible yeah, hard, question here but um, somehow yeah logic um its questions came more exercises need to just do 100's of these
yes, it would certainly help them
at a very fine level, i suppose at some point because i thought this it's supposed to be our mathematical thinking course and since clear thinking and clear writing go together some of my seriously propose that we make it a W course
yes
but here's someone uh Jeff Erickson, UIUC, looks like he had because he was talking about how there are algorithms class is like their writing course, i think maybe it should be earlier, maybe discrete math, he said no, no, no, discrete math is just about how to write sentences, and algorithms class is how to write paragraphs. and um the think is really true because it goes back to that first thing, they don't know how to write one sentence is true and from and it somehow it be ambitious teach them more and more interesting to us but i think i just we roll right over how they so we have no foundation to build on, take some more interesting stuff
researcher named vicki almstrum who did a study for her phd thesis she got data from educational testing service and she had a board of judges including edsker dijkstra decide which questions were really touching on logic making use of the students' logical reasoning vs. questions that were not. on the csAP exam. And then she looked at scoring and it turns out that students do worse they do significantly worse on logic related questions, so ah, so that's the population we have incoming.
unhn
so, you know the enthusiasm for getting them to write logical paragraphs does to have to be weighed in context that they have trouble with logic
yeah. I they think it's ok though, that's the other funny thing, i've had several students who said oh that's just something i'm not good at. like it's ok to just not be able to do logic.
some of the students i've interviewed have dual majors in math, or they are math majors with minors in CS and i'm beginning to form the impression that uh students who adopted math as their major understand that proofs are important to them, whereas our cs/e students aren't necessarily sure and they are thinking well maybe i can do the very minimum and scoot by, and so that kind of ties onto this last question, here, what do students think them proof for?
they think it's a weird punishment
a passive
i think i don't know i try to tell them that you try to give them examples in the theory of computation
things that are kind of counter intuitive,
they're sort of not feels
where you want to be have some higher level of certainty, i don't think they get that
um
they think it's just sort of one of these things that computer scientists do,
thing that professors do, and they want them to be able to do it,
but i don't think they really connect it to process of clear thinking,
process of doing things correctly
i told one of my classes a story, um, you know how beguiling some NP complete problems, you think, oh, yeah i ought to be able to do that, um, and uh i told them the story of a colleague of mine who stood up in a meeting and promised that his company was going to you know, by the next meeting, this is object management group, my company will have this problem for you. There were 5 or 6 of us looking out of the corners of our eyes at each other, saying, he shouldn't be taking this on. I was motivating my students, don't be Bruce, don't find yourself promising, oh yeah, I should be able to do that. ah
i guess that's what the cartoons that, there's a cartoon in the beginning of this book
ok
of a scenario like that
ah, so they were like well ok, i guess i have to know, and the additional story i told them was suppose your boss when you're a programmer developer um majored in psychology and is really good at getting times together but doesn't get the computer science part, and you've got to explain why the new person who says they are going to solve, how are you going to to be sure that they don't get your budget because they you know are claiming that they can solve this problem, you might want to be able to make a cogent explanation why something is not going to be done, easily, and they were like ok, i guess i really have to do this, i don't want to be embarrassed and i don't want to have my budget taken away
but, the funny problem of course is that, unless they can really the students with NP complete of course the students often goes to the heart of why prove things, but, you get to this point where you say well i don't know any other way to prove or solve um and students are pretty quick to say well you must you have to do the course just no other way, right, they have this feeling like whoa cause i couldn't think of anything inaudible this guy i can't find any efficient algorithm i guess i'm too dumb, which is not what the students think, i didn't think of it it must not exists, break the hardness and then uhm this is what they do, they say i can't find an efficient algorithm because no such algorithm is possible, uhm , and of course there's this, i can't find an efficient alg, but neither can all these famous people, yeah, it's ah, one version of this that i give the students is i tell them this is not for the reason for proofs but um one of the reasons for being rigorous and careful i say like you know is uhm imagine youre having your really hot and thirsty and someone will come and here's a glass of water, oh, thanks for the water, oh let me help just there we go
what was that?
it's all natural, it's organic, like yeah, ahm, i really inaudible like just the tiniest little you know little something like, are you going to drink this water? this idea that, because you know you just a little bit because a little tiny false statement inside a proof can make the whole think wrong, it's going to prove anything and it's kind of, this question of how you're going to um, how you can pollute a proof with just only one wrong statement and of course this i talk about this before i do the coke's theorem because cook's theorem the way you prove it you write the tableau
unhun
look, make sure you say, if they're some if I've cheated somewhere i have to be able to see it locally the whole point is to check that everywhere, everything is ok, and if i can allowed to tweak something any in one little place, can always come up, get down to an accepting configuration even though it's not really an accepting configuration, so, um again it's one of the meta-questions i'm not sure course for this, and where this a proof about proof, you know, like program it, kind of proof the program that is a proof that this string is accepted a sequence of configurations can be viewed as a proof, and i have proof and so it's natural to think about what proofs and what proofs mean for talk about kind of proof and we're going to say something true about proof and are we really got to know what proofs are. inaudible
Thank you, I really appreciate this has been a very, valuable interview for me.
ok
I want you to realize that
good, yeah, spend thinking about this stuff
have we run out of time?
yeah, i do have something
ok, alright, well we will stop then
yes.
line4t4343
please start by saying that you've signed the consent form
i signed the consent form
ok great, so I want to hear what you think about what do you think students think proofs are
what do they think they're for and
how do they go about understanding proofs
ok, so, is the question about after the semester, or the beginning, when they
didn't know what a proof is
anytime. if you see like something that helps them move forward, in their understanding, that would be good to know too.
so, they knew proofs is like a validation of a claim
uhhuh
everybody can claim, you can have a claim, but, why should you believe it? you believe it when you see a proof, then, they knew it very well, and then initially, they didn't really get the logical steps you use a series of logical stuff, then they got it,
so when they get a series of logical steps, do they see any structure in there? like, are they building lemmas and components, or, are they just thinking all at one level of individual steps? some of them
some are better than others, right, that's how it is. so, some of them, they could see the way it should go, but those are i guess exceptions, but many of them they could feel it, maybe they couldn't really write it down
so, they had an intuition
they had intuition, they could feel what should be done, for example, in many cases they could say, we should do it by contradiction, or, can we do induction?, contrapositive, those kind of things, so, they had a feeling, yeah, so there was this feeling that they felt, and writing a rigorous proof is another thing, so, how do you really flesh it out? do you other questions, what was the question? you asked can they see the structure, right
right, and they are more, you know how when you learned to play chess, you learn the moves
rules first
and then, there is
there a scheme
like emergent behavior of strategy, combine the moves of these over time, and I think some of our students when they're beginning proofs, they know ok I have to have a sequence of statements but maybe they don't know how to plan how to group these into so for example in 3502, there is a move that Professor Sipser makes when he's taking push down automata, he says, ok, make it so that every step either push or else I pop, so if I have a step that does both, split them into two, if I have a step that does not neither, I will make a step so that it pushes and then pops, excuse me, that's a sort of tactical step, it enables them to reduce the number of cases he needs to consider, but I don't see students taking the initiative to do such a clever thing
yeah. so, I my guess is, I cannot guess, most of them can't, some of them didn't see the point, why, why should I bother, then I tried to tell them well this is just a practice, you're preparing for the big fanch, you better know how proofs work, how you should do so that later on you can appreciate bigger statements, or you can really go on say something about mathematics or appreciate but now these are like there are two words figure to go through this, and for this you gotta have a plan, like, how am i going to do it, and then you ask, can i do direct proof, because these are the these are this is your arsenal
umhum
direct, or is it obvious, if it's not trivial, then, can you do it by direct proof, by a series of reductions, if it doesn't then can you do something else, maybe what's the contrapositive
umhm
does it make more sense, can we can we do a contradiction, is a contradiction obvious? if not, is there sort of counting, so that i could apply uh say induction, by counting, is it a discrete set, so your statement pertains to every element in that set, so these are the tools you have, you should check one after another and suddenly you have a feeling how it should go, if and only if you gotta prove both sides and they might look radically different, proofs can take different ways, now i tell them these, however, how far they understand is hard to fathom, because because
it's chilly, are you cold,
no, because the length of the discussion section really didn't allow to go deeper into it, anything, 50 minutes or 1 hour, is not really a good time to try multiple things
i wish i had come to the discussion sections, can you tell me what they were like?
i can tell what mine were like, moore did much better job than me, and
how can you tell?
maybe from my apologetic nature, so, in my words, i really, in moore's i guess, he sort of focused condensed what we talked about more on the rewarding nature, right, there would be problems you gotta solve you get points, I on the other hand focused more on getting the point across, rather than solving problems you did or you didn't are getting those grades, so it happened several times that i couldn't cover the problems with this class
umum
so two sections they really had different gradations, number of problems they had seen, or amount of time alloted to different parts, so, what was the question again, how section is like?
i want to see, from the discussion section, what were the students you know how does it relate to one thing you get to see them trying to prove, possibly, uhm, another, they might have asked questions about proving.
ok. so, a typical, typical discussion section involving proofs, i showed them, i give them some background, make up a joke or whatever, a story, a background, and with these a statement, do you believe it, is it obvious? they may say yes or no, usually it is not obvious. If it is not obvious, why do you believe. How do you go? Practicing, direct, i need direct proof and reductions, what, from arsenal which do we choose? Someone says, there is proof by contraction, maybe i know beforehand contradiction will be messy, i still go on, at some point we hit the mess
ok
ok, keep it, but let's try something else, why not try this other thing? some in many cases some of them would suggest so the way i was i just heard the discussion i shepherd them to the point where they would see stuff, and that way we'd proceed. this is in contrast to just giving them some time. stay silent, ok, times up, let's move on to next problem
right
i figured if i do it that way, they'll eventually learn, so i did more lecturing, and i'll give an example, last discussion section, i loved it,
so it was on graph theory, so Alex he gave us some topics to cover, inaudible kind of stuff, i tell them inaudible culmination was, prove by induction of Euler's theorem about there's a geometric statement, right, number of vertices minus number of edges plus number of faces
right, is equal to 2 for planar
what i did, i really loved it, i didn't really tell them that i'm going to do this, so what i did i just drew a couple of planar graphs, i told them what planarity is, i just drew a number of vertices, number of faces, they came come to the board, they draw the graphs, they just i just tally the numbers, can you see any pattern? Can you see any pattern?
aha
one, some of them, they saw the pattern like number of edges decreased, those are trivial, one guy is yeah, it's do, add those two, it's just two more than the, ok, is it true? It was true for all the graphs that were drawn here. Do you believe it's true in general? Some did, some didn't.
That's good, that's the best thing
what's way to go? How resolve this question? someone says, would it proof? ok, how are you going to prove it? and then they started thinking about it, and what are you actually going to practice statements? and we wrote a statement, and someone says, let's do proof by contradiction
umhum
contradiction was a big mess, so we couldn't really progress toward, ok, let's come back, anything else? Then someone says, uh, why not do induction?
Why induction? Yeah, it says that every graph can largest so start so ok let's try, what's the base case? someone says, a graph with one edge.
see, is it the smallest one? how about no edge? So this still works, so we've got the base case, now we have the next statement, how do prove the. They they were, I helped them, because they didn't really see many graph proofs, so I tell them about this construction so you should when you really prove a mathematical statement with induction not graphs just say some formula, did not structure, there's no construction but in graphs you can really talk about constructing a bigger graph, when you go from 4 to 5, you don't really see anything, but when you are building a graph from a smaller graph, it should really tell, what are you building and how and there are several ways you could do it, proof by cases, several cases to tally, if you do it this way, it's not planar, so this case doesn't work, if you do it that way, it's not connected, it doesn't work, so this only case it works, and yeah, it works. so here's the proof, so it took me long,
but everybody saw it, understood
and they were engaged, they were happy, so i had a feeling of fulfillment, so this was good. and, another one was, it was a sort of review section, before and before a homework, it was when they had to use the recursion, solve recursion
umhm
and I really looked it up, before the discussion, and circle was going on, and they figured very hard for them, i just tell them to solve problems because they don't know how to do it. So, instead, i presented them a cheat sheet
uhuh
this cheat sheet, if you see a recursion in this form, just call this, you do the polynomial, you solve it, now here's this claim, that this will be our solution, i don't, i don't know the proof of that claim, by the way, i always tell them i don't know, and they believe me
ok
so here's the claim and this is how you should go, this is a cheat sheet, now let's apply it i put this one side and i solve three or more problems and so they pick it up
recurrence relations?
given a recurrence relation, what would be a closed form solution, so i do several stuff and they really liked it so they took a picture of it, i think this helped because this is, this involves some one thing is coming up with the recursion, other is solve, two steps. coming up with the recursion is observation, solving the recurrence is rather mechanical.
umum
but they had to do it for the exam, so i sort of usually have proofs but they liked it because i sort of got down to their level, acknowledged that this is hard, they appreciated it, and
have you heard of the Moore method? of proving, of teaching proof
No. so, from a gentleman, a Professor Moore, and he gave the students theorem to prove, and a reasonable number of axioms, and said go and do it, sat in the class, didn't lecture to them, and week after week, he would do this. They got points if they went to the board and tried to prove in front of the students. Most of the class they would do the proof outside the class, and bring it in. but sometimes they would actually try while other people were watching. and people who have gone through moore method of learning how to do proofs some of them really, really like it, say it definitely taught them well, others of them
so he didn't really tell them how to prove at all
um, um
just started to teach how those fabric
he just gave them easier, really easy problems in the beginning, they he just, raised the difficulty as the semester so i wondered if maybe in discussion section you had asked the students to
this is different from others, for example, i TAd for programming things,
umhm
in those classes students are more responsive to come to the board and do stuff because what you're asked to do is \textbf{more tangible, more defined, write a line that does this function, calls this function}
umhm
in this discussion when i asked them they were really not responsive, maybe because of the stage they are in , maybe in freshman year they are more light minded, but now maybe they have some reservations, found it hard, nevertheless i brought them up for drawing graphs or writing something i think they like the other they initial classes i was not really good with this problems because there were some problems i couldn't solve myself, i'm not good at all, so instead i focused on discussing why this problem is important
uhhuh
why we care. i for several discussions i asked them, why are we here, why do you bother going to this demonic things? and they repeated like we need practice, at some point this will come as an instinct, and we won't have to bother about it at all, and we'll do bigger stuff, more beautiful stuff, so when they come with then we will see, so i do the same in my every every TAs so many things are mundane, boring, messy, why care? It's not about grades, i always say, it is not about grades i'm going to give you good grades, i do, but i want to see you work i want to see yo put effort, ask questions, come to the board do stuff i take them to the board all the time and i always have them work in groups, they enjoyed talking to each other, develop reasoning, instead of just watching me speak
express themselves and understand what the other person is saying
and what happens throughout the semester, they usually sit at the same places, they sort of develop a team around them, i think it works
you touched on something and I wanted to follow it up a little more, it was about students can construct programs, more ably than they can construct proofs.
yes
and i wonder why that is.
maybe programming
seeing something accomplishing something?
i think the proofs, the languages are more expressive and so it's like poems, poems and prose, for proofs you need ideas, for programs yeah you need ideas but those are more defined, call this function, if this then that, if, these are the reasons they, they interact courses they need, if else formulas, just knowing some functions, but for proofs, it really needs some sort of understanding of the definitions, how the numbers look like, it's really needs that feeling which they don't have at that point. I think for me when i was a student i would do much bad, i developed this vision, seeing numbers relationships among statements later. i loved it, but i was not good at it. i think it still happens for many of them, too, so maybe it's difficult for them now but they'll catch it up
what do you think about their understanding of definitions and the role of definitions in proofs
right. So, i guess in general they understand the definition, and when they are not the definition they can use it to the proof very well. and it's very important to just to mention which definitions we're going to need, and what those are, and just form those definitions properties in many cases they are able to hand wave the structure, the logical stuff that should go on just just put it down, which definitions you are going to use, and some missing pieces, how to connect them
i have found some students don't really have that appreciation of the need for careful definition. they don't like it when they are told the definitions they prefer to see some examples, and infer for themselves the definition, which they then use, rather than the actual definition
so, i think this might happen when you are defining something for the first time, but in discussion sections, you will already define, no new concepts. so think that might happen, so many of them know the definition, every time i ask do you know this, if someone doesn't know, raise your hand, and I raise my hand, so then some of them says yes, me too, i don't understand, so then i go on, define it, till they ask questions, make sure they know the definitions, then becomes easy, otherwise, my discussion sections were sort of laid back.
i have had students come to me for help on their trying to understand the homework trying to understand the homework problem, and I'll say, well, do you know what this word means, do you know the definition of this word, and they'll say no not really, or it might be something like this. And I say you cannot do the problem without knowing.
i do the same. i say, what does it mean? suppose, suppose x is a set, so there is some, so what does it means, they say i don't know, so you don't know it can go any further, so tell me what it is, definition is very important for proofs because that tells the endpoints and some middle points and you gotta
it warrants the arguments that you make
you flesh out the parts
I remember the first time a math professor she said, well proofs are just figuring out the consequences of definitions, that's it. And I was, oh, isn't it nice to know that a proof is circumscribed by that description.
yeah, because you use pacifist the beginning object what you have, the end object what you want to say, and some intermediate objects, which some other pervrug, this will relate them, definitions are very important
as you are shepherding these students, you are reinforcing the use of definitions
yes, i try to do that
but it's not something that they all just did by themselves? They benefited by being shepherded.
What do you mean by, not bringing it up by themselves
well, you spent some time reminding them what the definitions were,
yeah
so you are modeling the right behavior, and you are supplying the information
yeah
and i think that was useful
yea, it's like a recap, whenever you begin the next lecture, you spend a minute to tell what it was, just helps them to bring into the same thing, because many of them, they are not attentive, for any reason, so, then they really know what they are supposed to do, so these are your, these are you're hand, these are your paintbrushes, now draw. so now they have it in their hand, and it helps them. i tried, i just get them straw problems, do it, there are some kids better than others. they would try, many of the rest of them sit around
unhuh
and the bad thing with this kind of problem solving rewarding discussion is if you wait at some point i'm going to give you the answer.
and, some of them just play that game?
yeah, they're not really learning, so that's why i sort of abandoned that part, and i give them good grades, i used to decide, and i actually told them, i'll look into how detailed you sort of write down what do we discuss
unhun
and there's how you get so we had four or three levels outstanding, acceptable, something those alternatives. I didn't really grade for write or wrong because i i knew even i in their place maybe i wouldn't be able to do it, so if there were 5 problems in 50 minutes, more than 5, and they asking questions, so, it's very hard
that's a lot
what happens, you cram them, you don't really get anything across
i agree
so, a discussion is better than you give the problem, discuss, they try to solve it, but they don't have it's not a competition, i guess that would be better,
i like it when it's not a competition, i want, there's a sufficient competition between me and wanting to master the material, not others
when they really start writing down in detail they sort of understand what they are writing, and they know that they're not going to get points for being wrong, so then they start really playing with it, let's see if i can a living a to just hear peoples talk about it
playing with it is good to do
yeah, equally tells so if so you should really focus on the lowest part, right, so the guys could just working with the cell phone, or just giving a blank stare, what does he get, that's why discussions are important, stay silent, he doesn't get anything. The guys who are more self-driven, they will get it anyway. They don't need me much. but the guys that are giving the blank stares it's important to give him a feeling that he's almost there. Sort of gets it.
you're close
you're almost there. and it think another thing helps them, when i as a TA i become more close to their level. inaudible by not not i mean when i tell them that i don't know much, i make mistakes, i really make mistakes, and things that i can't explain i tell them i can't explain
umh
and in some ways when i mistakes they learn better.
yes, because they feel because they;re with you
not only because of that, they know what not to do, i went in this way, i messed it up because i missed next step, so i go back, i correct it, this is how you do it, it's better than just giving you the correct answer
right, because then they think, some people can do it perfectly, and they can't
yes, so that helped me.
the recorder survived, maybe i'll put this other stuff in the trash, so that it doesn't get let me take your things, ok, i've got it, you take this \ldots so did you ever talk in the sections about why it was that we were studying proofs?
yes
i want to be sure you are heard on that
yes, i tell them about GHHardy, Euler, Gauss, whenever i said those guys did, we're just walking at their footsteps, maybe you can laugh at what i just told you but it's true, so where do connect to what they've done, one for one thing, if you don't use it at for all for practical , but practical i mean say engineering or other applications, just being able to appreciate what they've done, and the beauty of their statements, the beauty of mathematics with exists even if i don't, those are some bigger things, like art, and you need it so that you can appreciate it
has anyone every said anything, any of the students, ever said anything about a beautiful proof, or proof as an art form?
Uh, actually we didn't really compare different proofs
ahhah
so, this comparison didn't some. I told them for example the talk about Euclid's proof about the root 2 is irrational, infinity of primes
yes
so I told them ok, so this is the proof which is like 2000 years old. so what do you think about it? Some of them, so we go on the existential discussions. I like it. I told them about volardis dis like beautiful proofs and those kind of things, but i'd love if the discussion section were longer, or maybe proof section of you just intro to proofs, maybe the next step, we'll do some other proofs
a follow-on course?
something like that.
Somebody's waving at us. Someone you know?
I didn't see. So there was this guy who is from the math department, he took some math courses
student?
sort of, he took some math courses, so these some of these proofs are very uh very easy for him.
yes.
and i saw that like when i asked questions, he gives some answers which i couldn't he asked some good insights, some good insights so that was he has a good feeling about it. Maybe he can't flesh out the proof, he has some good feelings, that comes from experience. I told them, being able to prove something if you want to prove it, you practice, it's like, it's a skill
yes
it's a skill, it comes from experience, and you're going to spend time, for exams, and also for really use it in practice. but yeah, the beauty things they didn't really come. I read about it, but that's the best i could do. and i gave all the students i said from the math department i gave my book of proof to him.
ah
the zeigler
yes, see if, how's your hip?
knee, right knee, yeah
ah, it works in this direction, or this way so did you ever have students trying to understand proofs, did you see how they went about trying to understand a proof?
(breath) some students told me they didn't understand the proof, so then they broke it down logically and really explained why i am doing it, for ex, classic example would be, just, prove that root 2 is irrational.
yes
you're seeing the proof suddenly the proof is finished, but you don't really see the magic, where is the point it works? then i go back again. right, at the beginning seeing this is the, what should i say,
the premise?
smallest presentation, like the fractions, reduced representations, here's the magic, just because i told these are the least, so those were denominator, numerator, they are in the least possible form, that's why it worked
right
what if it didn't use it? it wouldn't work. So, proof is a process, well, these only one guy i was talking to about it, he was not the entire class, so when i told the entire class, they, that's the problem, the classes are not that long, and we had to cover so many things, so, i guess i couldn't really spend time on stuff that i really wished i could
math is so rewarding, every time you spend time on it, it's valuable
yeah
so i always want to do more
i could work on it all day but alas i wish i knew math better
yes, i do too
what could you do. I guess Euler would say the same thing.
yes. I'm no sure we spend a lot of time having students write up their analysis of proofs, and yet by the time they come to 3502, and they look at the proof of the pumping lemma, we need them to be able to analyze proofs, and find them to be convincing. I've talked to students who did not understand why proof by mathematic induction was convincing. in fact, they were not convinced. They learned how to do a process. They learned how to find a base case, prove a base case, and how to find an induction hypothesis, and how to make a proof of that, but they didn't see that if you can glue the base case on to as the premise of the first induction step, that then everything falls after, so, one student that I was interviewing, I told him you know we're talking about works for k, works for k+1, I said well you know that base case, that 1, it can stand in as the first k. And there was like, he had been hit by a lightning bolt. It never just.
I, I, I did these things several times, so, almost every induction, every lecture I did it. Although I knew that they know it, this is how induction works.
Have you seen students who suddenly cottoned on to it?
Yes.
And I have had in an interview with a student who did very well in 2500 understood how to do proof by mathematic induction, did very well in data structures, knew what trees were, knew what recursive algorithms were, and yet it had never occurred to him, he said that it, during the interview was the very first time he had seen any connection between a recursive algorithm and a proof by mathematic induction. So have you seen anybody suddenly make that discovery?
Uh, I didn't really notice because there was a recursive algorithm and i asked them how many steps will it take since whatever the number, how do you prove it? Then that tilting was whenever you so they knew that they had to do it by induction. They didn't really connect recursive algorithms to induction.
right
but from the statement, sort of figure out, ok, we've got to do it by induction, so there is one number, n, at the nth step we'll see this, so i sort of tried to hammer it into them, whenever say something spoken about a number set of number or a variable that takes values from whatever set, discrete steps
when you getting from next, you have the idea of next
so, figure what they've said is, ask yourself you can put an order into them
yes
and see you can say something about the least item, and then you there is an implication, bam, you have a sequence
yes,
just induction, so i guess they got it, but i can't say everyone got it because it is very hard to tell, it's hard to tell, some of them did very bad in the exams.
oh
total, totals, some of them i know the guys who spent, they came to me, every week office hours, didn't do very well, i'm confident they'll get it, there's some stuff, you get it long afterwards, they will get it, two guys who always came to my office hours, they didn't do good.
oh, i feel sad for students who do not do well on exams, some of them
because maybe they somehow they feel pressured, they feel pressured but in general i see that they understand, but like you said, the definition, there is this guy who always used to come to me and he liked (lacked?) definitions
he liked or he lacked
he lacked, he really didn't know what transitive is, he didn't really know what metric is?
how does he expect to be able to do anything
it was like 2-3 days before the exam. He failed, you have to spend time and you have to spend it the correct way, do the definitions first.
so you have evidence who do not, or did not, appreciate the significance of
yeah, they are trying to go through homework, solve problems, but they didn't do proper time on definitions, you don't start with the problem, you start with the definitions
i told them these things are like legos, they are very precise, you can put them together and build a big structure, the precision will still be there, because you don't lose any precision as you connect these blocks, but if you have only a vague idea, instead of a precise, they you start building one vague thing onto another vague thing, and pretty soon everything is just going to fall down
Did you see a website like thou shalt not make any logical mistakes. com
sounds nice
fallacies in your reasoning. One small say bad reasoning, your entire argument shall fail.
well this is, do you want that over there? one bad line of code can ruin your whole program, and they know that in the programming world, so
but they don't teach them testing, they don't teach them debug, which is very bad, what is the day they supposed to teach them
in software engineering i taught both debugging and testing, much more, this is because we did test driven development, and by the end, all except one group had said, oh, you know, this is so much faster and so much better, we're going to do this all the time now, but one group said well, we didn't see any reason for testing, we built a project a certain extent and we could not get it to work, we switched our project to something where we can drag and drop off a palette, and so we didn't have to write any code, so we built the project that way. i thought maybe they should have learned a lesson, but they didn't, they found they could build something that they did not need to test, correct by construction..
unfair comparison, because different things
but they should have learned from when they tried to build without testing
that it didn't work
they got stuck
that's the thing that they should have
thank you so much for this interview, doing to turn this off now. That was very helpful.
line5t5109
first we're going to start by saying, please tell me that you have read and signed the consent form.
ah, well, I didn't sign it. I
oh
hm,
well, if you give me the interview i will not use it unless you after you read the consent form you can decide
alright i'll do that, we'll do that.
you were saying about work and Fibonacci
so, i suspect that part of the reason that
they didn't make connection between
inductive proofs and recursive programs is that normally in a workplace setting and probably in a lot of courses, too, you know the programs you write that use recursion probably aren't simply for like evaluating mathematical expressions or um they're not very theoretical so, you probably would never have to so there are a lot more complicated than an inductive proof like most of the problems you need us to prove for induction, so it's not immediately obvious that they're connected, and also people probably rarely you know he's been out of school for a couple of years probably and people in the work force are not probably asked to prove their programs like by induction or anything
There are special work environments where you would want to prove your programs
yeah
not the general, um, one of the things i think that in math class when they're teaching you to learn you know math, proof by mathematical induction, they want you to see the proof technique, so they don't really give you a really hard problem that would distract you,
yeah
and then people, i've had different people I was interviewing said well, they knew how to do it, but they didn't know when was the appropriate thing to do, so they didn't apply it
uhhuh
as you say, they're not going to get asked to do fibonacci or factorial at work, so, I asked them, well, if they knew that proof by mathematic induction sort of matched up with recursive programs, did they ever take it on themselves to do a proof
uhhuh
i'm curious about in your case do you ever decide for yourself to take on a proof?
well, i worked in a lab doing programming stuff for you know writing a lot of python code and c++ and i found that when i used recursion, which is actually fairly rare, uhm, most of the problems that we use didn't really have much of a recursive component to them at all, but when i did, it was a lot it wasn't store the structure of the problem trying to solve, it was just that you would make the code cleaner, for certain things, but it wasn't um immediately obvious that it could be written recursively now i mean i've taken real analysis 1, and we used some proof by induction for that for somethings like the natural numbers uhm but i've never found myself at work writing a proof
uhhuh, so when you do programming, do you ever use data structures that are trees?
yes.
so, um, this ties in maybe to what i was talking about other people not seeing when recursion applies, so if you think of a tree, you could think of a tree as being recursively defined, right?
yes, to an extent i do when i think about the first kind of way we implemented trees i see them as graphs too in java, was binary tree you would have a node and that node would be connected to the you know child nodes
yeah
and that i can't say that it's a rec, well, it's sort of a recursive in a way
it is, a tree is defined to be um a node that can have subtrees.
yeah. That's kind of a weird way of defining an interesting way of defining it, i guess
well, the neat thing about defining it that way, is that when you have a recurrence relation in your definition
unhun
it suggests that your algorithm can be recursive
unhun
and then if your algorithm can be recursive, it may be subject to being proved by mathematical induction
unhn
and i kind of think that's one of the reasons that people like to use trees for data structures
i mean, i also for a lot of things, it models reality really well, you know phylogenetic trees, family trees, so
so, all the good stuff in one place, you can get recursion and good models all at the same time
yup
so that's why i think that for this is how i found myself taking the initiative to do a proof, i was contemplating something, it involved a tree, and i thought, oh, you know, i can prove that
uhhuh
by mathematic induction isn't that nice. students i've been asking about this, the ones who say they like recursion, they like to recursively solve problems that they had in class, but, they never use recursion, even though they knew how to do it, because the situation never arose that they noticed that recursion would be a way
yeah
i can see that.
inaudible it might be nice to teach people how to notice the situations
yes, it would be tough to do that, um i guess it sort of one that you can teach people other than maybe asking these will just write more comma kid folds seeing inductive proofs a little more in classes and asking people the right i guess inductive proofs things a little more complicated
uhhuh
than what's covered, because most of the proofs that we do in my classes that we've done with induction are a little they almost seem a little contrived, like they're very simple, uhm
it's like they want you to concentrate on the technique
yes
rather than on what's going on, being proved
yeah, which, is good in a way, starting out, uhm, i guess it's sort of like how in the world like calculus classes, you really have two different chair in the grade each person's has to write half a page, or a page of applying the chain rule, or applying uh integration by parts, where it may sound
i think that students in like computer engineering, electrical engineering, computer science, have a different perspective on proofs than students who are mathematicians. For one thing, mathematicians in relating to proofs they know that that's what they're going to be doing, that that's part of life, whereas some cs students i've talked to, kind of think well, proofs, yes i had to do it in some required course, can't wait until i'm done, can't wait until it's all over
right
they don't really know why proofs are even in the curriculum.
unhun
so you have the perspective from math, that proofs are you know the way you know what's true
right
and that you also have the computing side, so, uhm, what do you think, why do you think we have proofs in computer science?
well, (long wait) i guess because well a few things is to first solve firms don't usually prove things, but, i guess if you're building you know say someone the guy who created the Ford Fulkerson algorithms or the guys
or Prim's?
or Dijkstra's algorithm, any sort of algorithm that's fundamental and used a lot and taught a lot about, you really can't just prove that, if we just thought of it by intuition and published it, and it turns out that uhm, it's not correct, then in some circumstances, it fails to yield a result, or an optimum result, just a good result, then that would be very bad because a lot of people are things are built off of that, whereas like a normal programmer, unless they're writing something like GNU scientific library, or you know, maybe like a Python library, something that's used a lot by thousands and thousands of people
or a car app, you know cars are about to have car apps
i mean in general you know something fails it fails and you fix it, and ends sort of there.
unhun
unless it's something like, and also most com, most problems are just too complicated to write a proof for, and you lose a lot of time, plus if you're getting paid like 20-30 dollars an hour, um, but i think you know we want to know humm, if something holds potential of being extremely useful in a lot of situations, we want to know that our solution is correct, so that is why we write proofs in computer science, also historically probably the first computer scientists some of the first ones i think Lady Ada Lovelace, Turing, were mathematicians. so like probably started off you know a history of writing a lot of proofs
that's a thought, since they were from math
yeah
proofs were what they did anyway, so they carried on doing , hadn't thought of it that way. You know von Neumann was one of the early computer people
i've heard of him von Neumann, wasn't he a big time math, a lot of
when he was 18 he wrote something that he wanted to call The Axiomatization of Set Theory, his teacher said, you know, tut tut Johan, um, or Johnnie he was called when he died here, why don't you be modest and call it An Axiomatization of so he did, but after he graduated he changed it
uh
but, he was a mathematician, and a polymath, as you say, and he became a computer scientist
that sounds reasonable, like i mean computer science at least to me a lot of it is just applying you know in math you derive a lot of properties about structures, or you know, and in applied math you sort of develop the methods that you use to work with those structures, and then i guess computer science is you're using those structures you're creating methods to use those structures on a computer um so i guess computer science is really applied math
yeah? I think there are some proofs associated with how much resources are needed to solve a problem
unhun
or, especially to make sure you're not writing some cute program that's going to take exponentially long
right
uhm,
or maybe you are going to use something that's tempted to be exponential like some of these constraint solvers, but you're going to be careful how you use it so that you get an answer out of it in a reasonable of time
not four generations, um, actually that's something i've always been curious, not always been curious, but, i've been hearing about constraint programming a little, not from Professor Michel, but my classes, i know a phd student, Eugene,
oh Eugene Kovalev
worked for Dr. Michel, you know the basal story about how one of doctor michel's friends made a program through the major league baseball schedule the games, he got like 10million dollars or something
pretty good!
um, like, how do they take i've always wondered how do they take those sort of problems that are you know obviously in exponential time, we don't know a problem, want to solve them, but sort of cut them down
right, so you know it's going to expand like a tree, and you're going to chop off branches and focus your attention, so there are several different techniques, of course you will learn if you take Prof. Michel's course
which one?
it's called constraint programming
is it undergrad?
no
ok
well you can take it, nothing is stopping you
so, I took it
unhun
and there are several different techniques, one is called local search
i've heard of that
i said something to him once about his book, and he said which one, so now i know he has multiple books, but i did buy one of his books on constraint based local search, and it's very readable
hm
i never thought someone would describe a book named constraint based local search as very readable
ha-ha. It's really nice to take his course, because he recommended like 4 books to read, one was by Chvatal, and I started reading Chvatal and I said oh i'm not sure i can read this book, but when i went to his lectures, and he talked about the ideas, and i would go and read the corresponding part of the book, i said alright i really actually can do this if i don't try to go too fast, the best lecture experience i've had, i think
i think the uh i want to say some of the best lectures i've ever had were in math courses, like analysis and someone like different equations uh i think it just might be the way it could just be because i've a very small sample size
well, who did you have?
um, differential equations i had a postdoc, no, he was a grad student, and actually a lot of times grad students some of the best teachers, i find. postdoc friend analysis michael have you every heard of michael pruitt? from the math department, he's a very good teacher, um, i had jeff for 1102, i like Jeff as a teacher.
every time i've seen him teach it has been really good. I had Professor McKenna and Prof. Choi, I think professor McKenna's name is he goes by Joe his name is really Patrick or something like that. He was really good. And I had Sara Glaz who's really good, and Ralph Schiffler, I think I took 3 courses from him, really nice. and Prof. Bridgeman
never heard of him, huh
and somebody i want to call melinda, like melinda and she's not melinda and she's not melissa, and her last name is herring, and she's really good (Milena)
i've had uh leach, have you ever heard of?
one of the postdocs. I had prob and stoch, and this semester i have stochastic systems, and he was, i think its partially that he's very excited about the subject, so he's always sort of inaudible actually CSE i guess sort of the i think it might actually just be the course material is very very difficult in CSE and not as in depth as math
there's a huge literature in math about education, so people i guess feel responsible to at least know some of it
right
if they're going to be teachers. I and there is some uh education material on computer science, perhaps not as much. I've discovered a little bit about this thing called the Moore method.
yeah
The moore method, mathematics students being taught proof, given a small number of axioms and some things to prove
yeah
and they get graded on the number of times they go to the board and present to the class. Whether they do well or poorly
unhun
they go to the board, they say i think i can prove this, i take this deductive step and this step and they get critiqued by their classmates
yeah
and if they just get up there and try, you know, time and time again,
unhun
um, they get a good grade
yeah
and it turns out that because people know they're going up there, they really are motivated
yeah
not totally ridiculous, uh, it works, wow that's a nice way to grade, all i have to do is count
to me yeah those makes sense because i guess the first thing is that would be people sort of use that and go up there and present nonsense, get a good grade, but normally actually really happens, because social pressures
right
hm.
do you think that would work in CS?
uhm
because, you can see why it works in math
i don't think so, because a lot of the cs well, for proofs it would, if you're asking people to given a set of axioms to address students to prove things, would work great, i think with people like trying you for an algorithms solve some problem, would be very uh i don't think that would work too well in a lot of cases, simply because there's a lot of to develop a good algorithm requires probably a lot of intuition, and then take that intuition and turn it sort of into um you know down levels of abstraction and turn it into uhm i guess a little more technical algorithm other sorry, let me start over. i guess you do that with like printing algorithms, you would have to present the algorithm sort of intuitively, if you explain how it works and stuff, um, but there's no way that say in the timespan of a class that you know someone can really critique your algorithm, unless it's obviously doesn't work, you know, it's something you know, nonsense, simply because it's not stated in terms of rigorous things like axioms or theorems usually so i don't think it would work as well. um, in math proof you can point out, oh this person applied this axiom but there's a theorem incorrectly, can't really do that as well or as quickly really in computer science
There's a kind of, there's a style of algorithm development
unhun
that's based on proofs
unhun
and one of the proponents of this is a professor named david gries
unhn
and i wonder if he ever tried like the moore method of you know the proofs that go with the programs
right. i could see that, um, is that method of development, is that sort of that seems tough to do because to really get intuition problem you have to work with it somewhat, and then develop your proof, like, how does that work, a little more specifically,
i have not seen this style of programming taught, i've read it in books, i know it happens, it happens at Univ of Texas, and um it happens at Carnegie Mellon, but i've never seen it, and i would like to, i would like to
sounds interesting
that way
that would solve one thing, i guess, where you know you write all this code, you run a bunch of tests on it, but they only tells you if it works for those tests, and if it works for broad big breadth of tests, then your algorithm probably works pretty well but you can't ever be 100\% sure.
right
so that would actually be kind of nice to know that your algorithm works it's not and if you want to know that not have to develop it figure it out and then prove it but sort of prove it as you're going along
so this is my latest excitement, would students be willing to. Just did software engineering, and saw that some students were not too enthused, at least in the beginning, about writing their tests before writing their code, and watching their colleagues who were doing test driven development go faster than they, so more people took it, by the end of the course very few people were not doing it. and i wonder if we could get some kind of if we did provable code by this proof first approach
right
find a way to have it come out faster, cause i think students appreciate fast. Maybe rather more than they appreciate having fewer errors.
right, well, i mean, provable, provable code would be you know most of the problems are really, really complicated
um
i think you would take forever not literally forever, it would take a long time and maybe to some extent a waste of time, to prove that everything you write is you know logically correct
um
um, so i think in practice that would end up being taking up a lot of time, unless should do it sort of like prom, and I'm not
might be hard to get students motivated about it
that, too, i mean writing tests is not fun, but it's also not that difficult, usually. and in you can if you know writing code after a while it sort of obvious that you should write your tests before hand because if you write your code and then come back later when something's wrong, it's harder then to write your tests
it's so much more painful to find the bug
yes
than to know, oh i must have just put it there because that's the new thing
that, too, because you have to go through the entire program instead of a little section of it.
it would be a challenge to get kids motivated to do proofs first. They'd have to think, well, you know, i'm going to grow up to be a nuclear power plant safety coding or you know
right
otherwise they won't, although, you know, i imagine some people will live to see the day of Mars being explored by robot swarms
right
and um you know maybe the oceans and i think de-mining is another thing that should be done by swarm robots
de-mining what's that?
somebody has put mines in the field
oh, yeah
want to use this garden again
yeah
it's a there's that one machine that goes along chains and spins, the ground, mines, that's ah very low throughput way of doing it, and dangerous, hum
i don't know i suppose the machines get blown up and they just have to start another
they have armour under them, i guess it's trying to a mine, i don't think i've every heard of anyone getting killed doing it but i imagine it probably costs a lot of memory to replace the armour on the side of those machines um
i think you know car apps coming, there may be more interest, there would be more opportunity you know, have to package it as, you know, you're super cool if you can do a car app
yeah. you mean like apps that control media in the cars, or like
no, not media in the cars, apps that tell you whether you can go, how fast can the car go
oh,
or your can't drive safely, human beings cannot drive safely over some reasonable speed like 50 but they do all the time anyway and that's why we have so many accidents, but if your car is equipped with apps, you could go faster,
hm
would people's safety,
apps like applications, software, huh!
you know, the kind, you have sensors around the car, getting close to the edge of the road
or another car or something, that would be cool
so now we have special lanes for high occupancy vehicles, so we could have special lanes for computer assisted driven vehicles that are safer and then those lanes would be faster
the only thing with that is like um you know you get i mean one you'll obviously software bugs which always going to be in that
we were talking about provable code, right?
yeah, what if i can see doing like provable code in java or something or python, maybe in haskell
haskell's functional, isn't it. yes, so, i think it's a lot easier to prove code that's functional
yeah, it would be, uh
my husband has this programming model, one of the mantra's of it is, data does not change, you don't have assignment statements so much, as, if you want to hold onto information you get a new location, you don't change an old location, you just get a new
so one thing component like you don't at least i'm sure programming you know like variables have values that you work with
it's like math, which is better
i used to write some haskell, and i sort of gave it up because it wasn't very useful in practice, no one else really uses it
he uses it
in the circle side, you know what i mean, i've never seen a really big haskell project done in haskell i actually Erlang, which is also functional language is used a lot of like telecommunications computers and stuff um but in that was Haskell was definitely aimed at people trying to do theoretical work, which was, you know, useful during theoretical work, um, yeah it was for in math, very mathlike.
i should look at it, learn what it is,so, keep hearing about it
have you used scheme
oh, yes
it's similar to
scheme: oh, this is like Lisp
variant of lisp
what?
isn't scheme just a variant of Lisp?
yeah, well, i mean, i don't want to say "just", scheme is very nice, really good pedagogically, and maybe that's its purpose
yeah, of
I thought Dr. Racket was cute.
yeah. I didn't take the scheme 1010, you know 1129 i think it's called now. um, in scheduling conflicts
too bad
from what i've heard about it sounded a lot tougher not a bad way, but more difficult than 1010 with MATLAB.
uhhuh
also sounded a lot more interesting
umhm
solving like a lot of us in 1010, wasn't really like MATLAB, was boring, at least in my head, like we didn't really work with matrices very much at all
oh, that's a shame
it was strange, we'd had linear algebra
that's MATLAB's original purpose in life
i've taught MATLAB in summer, for i think 4 summers in a row, and sometimes 2 courses in the summer, so, lots of MATLAB, and i make the students do projects because the course are small enough you can give lots of individual attention, they come in, some of them have never having used a computer other than for games, but just playing the game, and they walk out of there having written you know this four page looks like a publication, pretty graphs, and they like it
umhm
it wasn't really so much computer science as just how to get computer to be a super calculator for you
to do what you want, yeah, that's why they teach it like in mechanical and chemical engineering, each student, i guess, it is pretty useful for like solving
oh, yeah, lots of people are publishing, like biomedical engineering
yeah
and, and microbiology, saying, blah programming in MATLAB is available on our website
yeah,
so, it gets used, and Simulink is really powerful
i've never used Simulink, hum
you can do human-in-the loop simulation, systems like driving cars was the example that i saw, uh, but
well model how humans interact with the car
the human gets a screen, and they get a steering wheel, and buttons for the pedals and stuff like that, and then simulink would have the engine, all the parts of the car would be simulated explicitly and you could say, well what happens if we you know change the response of the car to be like this or that, maybe their designing rack and pinion steering of some kind, well you know, and then they can see what happens when people try to drive it under different driving conditions, and people are not too good at brakes on glare ice. Cause I have driven back and forth between Boston and Canada, i used to drive weekly, both ways, and there's some icy stretches in Vermont, where you there are these bridges and their just exposed to the wind because the wind gets ducted down whatever the bridge is over, be it waterway or other road, the wind is ducted through there so it's moving and it will freeze the water quickly so you get a lovely smooth surface, and then you get these crazy drivers who like i go through there i'm not going to have any traction, going to go really slow but some of them are just not with, not following that program
hm
and they come tearing by, passing, passing you, and you say, i'll be seeing them around the next curve, and their car
yeah
we're getting off of
yeah
off of the math track, though the proving track
i think maybe a lot of computer science students don't know why they're being exposed to proof
right
which is too bad
yeah,
you know, make it as clear to them as we could, why it's good for them, because there are some research studies that students who've been taught to program in this proof oriented way for some beginning programs, they when they go and do regular programming they have more, they have an appreciation somehow
they reason about it, more accurately
their code is more elegant, how that happens we don't know, because that's happening inside their head, but the code that comes out is prettier code
um, i mean proofs are also about you know sort of reasoning it's not just the math it's the you can do i guess that's probably why physicists and mathematicians make generally good programmers
yeah
is
forced to think
it's the that sort of method of thinking, works well with computer science and math something that i guess you can't really explain other than you sort of just saying well, it's good for you, grows you
um
forces you to grow, um, so a lot of people understandably that isn't really good for you so 'cause it's not you know well studied
are mosquitoes getting you?
no, they're like flying around here, but and other bugs
yes, i think math students are more expecting that proof is going to be part of their life
yeah
and computer science students are maybe not so sure about and so they don't have the same commitment i've got to make myself do this
right
or, i want to
I think it's also selection bias, that most people are not i'm sure there's people in computer science who go into computer science undergrad thinking that they're the reason they want to do computer science because they say like video games or like sort of applied, what can you do with computer to do what you want to do. um, equals people in math, you know, they take, an introductory proofs course, and like abstract algebra, analysis, if they don't like doing that, they drop it fairly quickly
uh huh
whereas with cs you immediately start one of the first things that you do is take a program, at least at uconn, and then you take another programming course, and then you take, you know, like 2100, which is basically prog, not exactly but
but still you have to use some programming
it takes a lot longer to like, to get to be, um, far really doing a lot of proofs, like 3500, 2500 and trying to think of the other ones oh yeah 3502 of course, to really start doing proofs, so if cs were a little more proof oriented from the beginning, it would probably filter some people out
oh
not in or maybe they decide they don't like that, but then again, in the workforce not going to be writing a lot of proofs so it's not
i wonder why people would decide that they don't like proofs
because they're very difficult sometimes. i mean you know, trying a proof by induction is something small is not that hard, but you get to like, more complicated things, they get very, very difficult
analysis
yeah,
certainly people like prof russell doing proofs in publications undoubtedly hard or wouldn't be going into publications
yeah, um, even like 2500 to an extent i think some of the proofs were a little tricky,
well, every time we change the book, also change the exercises
why do they change the book so frequently?
well, i guess a different person teaches it and they decide they don't like that book, or they haven't read that book, so one of the books that was used for quite a while is Epp, and her book costs like 350 dollars, so that's a real motivation not to use it, it's got a big marketplace, everyone agrees it's really good, on the other hand, who want's to fork over that kind, especially in a cs, she's writing for math, but in CS audience, that isn't even convinced that they're going to do proofs for a living, they're sort of hoping that maybe they don't have to see a proof again after this course, even though that's wrong, the last thing they want to do is spend 400 dollars on a book, this book that we had was really nice and it was free. it just didn't have graph theory in it, but there are other books with graph theory in it
why not just use um two textbooks, that one and something that deals with graph theory
i love a book by Devlin, he's at Berkeley, and he printed it himself, so it's like 9 dollars at amazon, it's really nicely written,
graph theory?
no, it's called introduction to mathematical thinking, he teaches a transitions course at Berkeley
oh, i have that book
do you?
yeah,
isn't it nice
it's the one with the funny shapes on the cover i think
he's written more than one
it's introduction to mathematical thinking
my version is just a blue cover
yeah, i think i have a newer version, but i have that book, yeah it's a good book, um, yeah
he has a nice explanation of implications when they are vacuously true
yeah
the first explanation i read about that was i think by epp, and i felt this didn't feel very satisfying, but when i read his i was like yes, of course
haven't touched that book in about a year. so i took 2710 and we used that, um,
i took some graduate math courses because as a grad student i'm not supposed to take undergraduate courses unless they're directly connected to what i'm doing, so i never even tried to exercise that, i just took grad courses, and the math faculty were very nice, have you considered taking an undergraduate course? and professor mckenna was very nice, he said how do you decide what course, and i said i read the descriptions and it looks interesting, and he said not a high probability of success, so he recommended a course to take after his, i took a course out of Rudin, first graduate real analysis and the book is really good, and he saw me laboring over that, and there's this one, it's um i think there's a proof theorem 2.41 or 3.41, and we had to reproduce the proof, and it refers back to prior lemmas and other theorems we had to do the whole thing out, and i just followed the path, you know, and wrote out each piece that was referred to, and i understood the whole thing and i was so proud of myself that i had it all, and he said, it's long, so there probably is a shorter way, but i didn't see it so,
would it make, um, is that introduction to analysis,
yeah, it think so
is that the one with the spirally thing on the cover
i don't remember, and, uh, so i had Prof. McKenna for that, and I was going to take the second half, which was measure theory
ok
and he looked at me and said why you don't take this course with Prof. Choi, so i guess measure theory has some kind of reputation and maybe he figured i was just going to
its sounds
but i want to take measure theory, so, wouldn't anyway
i'm taking graduate level probability next semester, 5160 and Joe Chan, and who's very strange because he used to have measure theory as one of the prerequisites, but this year, they decided not to
huh
which i haven't taken measure theory, curious, maybe it was someone put that in on impulse, and they they thought about it
no, i think when you are doing probability you do care about whether a set is going to have a measurable
right
support for probability, or a probability
yeah
and i think a lot of times they say this looks worriesome, but on the other hand its known to be, can't even use the right terminology, small in the measure theory sense, use a measure theoretic argument to explain why things are not a problem, for example i learned about the nyquist limit in signal processing
have to have twice, jyquist, yes
at least the highest frequency that you don't want to be distorted by the process, i said to the teacher, if you're right on, it's a sine wave, you're going to get a constant value, you are not going to be able to see the sine wave's frequency because it's going to look like a constant, and they said, if you had taken measure theory you would understand, the probability, don't worry about it. Measure theory has been on my list since then,
Is that 3101?
I wasn't here, i was somewhere else, i don't remember, well the signal processing course was 6. something
oh, yeah
somewhere else
graduate level, year
i don't remember, must have been, i did my undergraduate work in physics, it was only when i was a graduate student that i started playing around in other departments, well i did the occasional math course, which was 18 something
where did you do your undergrad?
MIT, fun place, definitely a fun place
yeah
people walked the halls, and they are like supercool, so, there's this like, there's a cancer research name, person, he's on the open courseware, he's on the first biology course, and he's drawing this little mouse on the blackboard and he's apologizing to the class for not drawing well, and he says this mouse has a really big smile on because he knows he's in an important experiment, he's go bazillion papers, h factor of like 200, and here he is drawing a mouse, people have character in addition to being marvelously productive. and the thing was that there were teachers who were really revered, like Doc Edgerton, there's this company called Edgerton, Germeshausen and Grier, EGG, that must be it, anyways valuable, and he's the Edgerton of that, he was taking really fast photographs along about the time that the army wanted photographs of nuclear weapon explosions he was the one who was able to do it so his equipment got used for that, anyway he went around being called Doc Edgerton, he was like Mr. Friendly, always taking care of his graduate students and he would wear shoes with holes in the soles, one of his graduate student's car broke down, Doc Edgeerton went over to the garage with him, grad student couldn't afford to repair, so he wrote the check out and gave it to the car guy, the car guy looked him up and down like why should i take a check from some raggy baggy person, so he wrote a number, and said call this guy, it was his banker, and he came back with his face, yes sir, yes sir, happy to take your checks, those are the kind of people that was one of the things that made it really nice, so we're really off the subject I remember his retirement, at his retirement he was reading his speech to us, i think we had about 2000 people, and everybody was really glad to be there, and he reread one of the pages, and nobody i mean we knew, we weren't going to say anything, and then he figured it out, and he cried, because he realized we were just there, caring about him, and he was touched, that we would let him read a whole page and not tell him he read that page already, you know it's just, when you have people like that, you can do any amount of work. I guess we've exhausted the subject of proofs for now, Thank you very much I'm going to shut this off.
line15t2949
ok this is Tuesday around noon and um please start by saying i read and signed the consent form
i signed the consent form, uh uhm do you want me to tell them my name?
you don't have to because this is allowed to be anonymous, if you want me to use your name i happily will do so, but if you're representing the students you're abstracting from the student body as an aggregate anonymous activity
yeah
which is what i hope to do
ok
so, um, so i would be glad you quote you of what you say uhm but i will not be specific about individual students
umhm
so, you know what i'm interested in, how do students deal with proofs, what do they think they're for, do they understand how to do them, anything comes to your mind about these students
so, basically i TA, i have been TAing like some um ah mathematical uhm uhm courses like 2500, and like 3502, and what i have ah been observing like students um uh struggling uh doing like some proving stuff, uh the reason is that like some people some students uh interest in like programming stuff, mathematical uh you know like uhm stuff um and like they are not actually some of them's working like reading the all the like lectures before the before the uh reading all the stuff you know reading all the book chapters like before the lecture like they are managing they are surviving, but some other people like when i'm asking them, so they did know the uh the chapter and did you read it before? and and what i ah get from them they are not uh reading a book. and then they are not studying
um
so basically if you don't study like mathematical um tch um courses, math courses, so you will struggle because ah all you need to you need to absorb all the definitions and because uh math like you are creating a new world, and like you are defining like some structures depending on like uh what you do, and then if you don't know the the definition you are not able to answer the questions.
right
it's, yeah
they guess the definition, instead of looking it up
yeah, yeah
they are very likely to be mistaken
yeah, um when you prove something you need to know the what you do, right, you what you have to do actually, so the most important thing like in math courses is uh lies in definitions. Some people uh doing that, like reading but still like uh like homework one uh observe problem to another problem for i mean the class they are doing like some proof techniques, and like some questions and uh they understand well but when they ask professor like ask another question that's related like or like a little bit different that what they did in the class they also like struggling
ah
yeah, because uhm what i say like is some people is interested in like programming stuff, they are not uh giving all focus you know they are not able to focus or ah what i also observe when they are proving things, they are giving examples.
yes
this is not good because some examples ok for the current model but maybe you can find one single example that like uh it's not true. so basically like uh what you want from the students we want the generalize, like general proof for these concepts not just examples Example is a good for you to understand what the structure goes, what you need to do, and what you have to see. and uh them many cases i saw like uh i have been seeing actually uh they are doing like some proof but using ah examples
they start out to do a proof, or they think they're starting out
yeah, they are thinking i'm proving things because my example is correct. But you want them to do like general proof because if in in one case is enough if you find an example, it can break, all like
(coughing)
uh structure.
so, do you think they since there are some students offering examples
umhm
which may not be representative of the general case, and they certainly don't uh comprise the entirety, they don't give the whole scope
yes, yes you are not able to cover all the structure, when they are giving examples
it seems as if the students do not know what the purpose of a proof is, if they would think that an example is adequate, they must not understand what the proof is about, what it is for
yes, yes
if we want to establish a general case
yes, yes, yes
they would know that a single example would not be enough
umhm, this is their, the previous problem i explained, i told you like um, that the definitions they have to know the the definitions and observe what it means, and also some students also like um complaining about it's not real life, like doing math like is not real life so basically it's difficult to understand because they are not able to see the numbers, like uh how can uhm how can they like think like in abstract way, abstractly
they see that math is about abstract forms
hmm
but they don't see the value of
yes, yes
reasoning domain
all in your brain right you are doing, but also like is another thing to good studying um it's better starting with like a pen and pencil, pen and paper right,
umhm
math, because all thing is in your mind, you are not able to see but somehow you have to convert to the real life or you know like using pen and paper.
what do you think about whether the students see any connection between the mathematical preparation we're trying to give them, and the programming career they're trying to get?
mmm. Is um is i think it's a good connection, for some, without math you are not able to program anything, right? so basically you need the algorithm, at the beginning, so basically this algorithm is to be efficient but how how what kind of efficiency we are talking about, if you if you study like in the computer science math courses, you will see but in outside way how the how can the algorithm can be efficiently produced and also for another branch, like in how QA they can do that
so, the qualities of service, are quantitative things, and they need to be able to reason about them umhm algebraically and maybe analytically, analysis
yea, yeah they need to have some algorithm part even they you are programming but you need to know some basic algorithm part which is related to math, right? so basically without the algorithm part you are not able to program it.
i'm beginning to wonder whether the curriculum more generally helps the students learn how to solve problems they are supposed to be able to solve problems of computer science kind, of the programming kind, they are supposed to be able to develop, and even if we teach them ok so this here's how you make a class, and here's how you make classes work together, i think there is a level and some students just walk across, they say oh ok i know how to make classes, methods, sequence diagram, solve a problem. Other students say well ok if you show me a template of a class i can make more classes that vary from this template. If you show me a sequence diagram i can make more sequence diagrams that vary from this template, but if you give me a problem i don't know what to do
yes
and i believe that reasoning mathematically gives them good practice which they would, they use as they solve problems
yes
we're talking about function mapping, types
we, we have kind of courses, i mean like some programming course they are teaching
which one, though? Where do you think the problem solving is? I have TAd 1102, I have taught 1010, I have TAd on the scheme course, i have taught 2100 which is the data structures course, and I have taught 2102 which is the software engineering course but i do find these student they come to me for office hours and they say i have to bring in this data from a file and the file contains a mapping i've a grid, and i've code in the grid, and then i have these other things which are little icons, i want to position the icons in the grid i want big picture ina file i want to break it up to make the icons, i don't how to do it. I say, let's get the file in, let's write a list of comments, read this file, have this stuff in an array, read this file, have that stuff in an array, have a nested for loops, i'm going to pull this out and put it down where it needs to be and then they say, so they you know they listen and they want to understand, they ask questions, i see that they are learning along the way, and then when it's all done they say, oh, i knew that. Yeah, ok, fine
so you knew that, but why did i have to explain to you now.
it doesn't matter to me what they're you know how emotionally respond, what matter to me, before they could not do it after they can do it, they're convinced they can do it, they are are happy, the thing that surprises me that actually writing down the comments, ok, i have this file, i'm going to bring the data in, i have this other file, i'm going to bring the data in, it will be in an array, now i can read out of this array, i can put into that array, that level of thinking organized have this maps to this, this maps to this, they don't have it. (Executive function) so when we talk to them about transitivity, it's no wonder that they're stopping and thinking
basically it also relates to the math course, right, function, function, take one from another set, one set to another set, yeah i think it's a you can't see like it's a math it's a like everywhere, so basically you need to know you know you need to know the math
it's the infrastructure support
yeah, maybe not much maybe like a small part, but you need to somehow you know like math, what you are doing you need to relate to math, so basically
and they think they do not know this, i think they do not appreciate, how can they with the perspective they had, looking back it's easier looking back to see, oh, ok, this organized, systematic thinking, i used this rule of inference, i used this rule of inference, i transform my statement to this, i transform statement to that, i arrive at the statement i wish to reach, you can generalize that, i want to transform my data, arrive at a representation that i'm trying to get
another thing um i'm observing from the students papers like um homeworks some people still confused about using parameters, like again it's related to the like definition, and parameter choosing, right? Is in the definition they say like you need to define a parameter with for this set, this set, this set, but what i observe they are they are confident about parameters, like, they are defining a one set and um with a specific parameters, they you can see this parameters changing all of the time, is very confusing to follow
um
for example the students define a set and set a as a um element of a set a is like x's and then you are later you are seeing these also changing, like um like then define another parameter for this set, like y, z, and then when they apply solving a problem, then all the parameters like like a confusing
hm
for the reader.
i think they may have trouble knowing when a parameter, the difference between a bound and a free parameter.
umhm
and we could help them with that, maybe if we did some more lambda calculus, the scheme people should not have any trouble with that.
yes. yeah. some people like um because our courses like offered for also like ECE department, right, also some people is from the ECE department, they are inaudible because i don't think they are like taking some math courses in ECE department, i don't know, so basically i talked to one student and he explained to me i uhm not familiar with or this stuff like uh proving techniques and uhm chops i think the problem and uh yeah i give i agree with him like if you don't have any background like math courses so is difficult, is difficult because that's
we can see that they need it, but I think it would be helpful if we could help them see that they need it.
yeah
they would feel better about doing the work if they knew it was progress toward their goal.
but math students are very productive. than its hm computer science because they know what they are trying to do.
umnm
and they see in each concept fit the definition they can easily capture the idea and then uh proceed. very easily. because uh some math uh some students from the math department are also taking the courses
right
so basically they're more productive than the CSE students, because they already know, they observe all the like method, mathe, ideas like, math's not structures, but ideas and uh the definitions and proof techniques when even they see new structure, like new definitions on that, they're easily to follow and easily to produce a solution.
There's a thing called mathematical maturity. I'm not sure exactly what it is, but there are many textbooks that say the background required for this is mathematical maturity and i think you are describing some of its aspects. They, when they see a definition they know it's important and they must use it exactly. Whereas i have interviewed students who said, "definitions, everyone sort of zones out
yeah, yeah
they're in trouble, they don't even know that. Then she went on to say, what i really like is examples, i infer from the examples, i don't want somebody telling me a definition, whereas the math students know they have to hear the definition, and they know that proof, they can be sure, they're ascertaining for themselves that something is true, whereas maybe our students are a little more willing to take things for granted
yeah. They should know that definitions are universal things, not the examples just specific one, right?
umhm. I think maybe if we showed them, there is a textbook by Polya called methods of plausible inference, and there we see the examples are used to make a pattern more clear, play around with examples, see a pattern, say oh let me use this pattern as a basis for a proof, then if you can get a proof, say ok great, now i have a proof, so here if they see the role of examples, they see it, examples doing something, not what they want, but something, ok, fine i have to use example to help me see the pattern, and then the proof comes after.
i see.
so, uh, maybe if we taught them that, they would appreciate that example by itself was not enough
um. Another thing is, ever seems that something, not counting the office hours, is other thing, like, uh, and they are coming, some people coming and really they want to learn, but but its just like maybe 10\% of them, just coming, even they are struggling, you feel it, but
some people are coming to learn, and some people are coming to get past a problem set
yeah, yeah
those are sad, i said to one, would you want to come back and talk some more, i know she's in trouble i said you know you should come back, and she said you know i don't have a problem set due now, and i said i will help you learn the course so that you can do the problem sets by yourself, and it just scared me that somebody who is a junior now presumably would be thinking i only need help to get my homework done
they are thinking the semester, i can manage this semester.
if they knew the course was really important to their career they wouldn't, i think, treat it that way
i wonder whether maybe later in the future they can think yeah and then feel sorry about and
regret
yeah, maybe they are thinking i should have done this you know like uh when i was something taking this course before like couple years ago
or more likely they will not find their way into jobs where they need it, they are cutting down their realm of possibilities
yes
and they don't even know it
if you are just a programmer, like if you have a some working and provide it to you, it's ok for you, but if you are uh producing an algorithm and like constructing algorithm, so you have to know the basic, like basic mathematical structures, right, not maybe complex things, it's depending on you maybe in the future you can have more complex model, but at least you have to know some basic math
bureau of labor statistics between programmer and a developer, and of course the developers get paid more, and they're the ones who know how to make algorithms, the programmer, j
just run the algorithms, right?
They start from algorithms and convert them into the language of the day.
yes, you are correct.
so maybe we could make the students more aware that this material is not, i think they are they know they have requirements and they have to do them, and so they do, because they know they have to, but we should explain to them why these requirements are intrinsic to what they want to do
yeah. every day i don't know maybe there is a way to explain to them like what's the difference between programmer, developer, in the real life, and developer what does it, what does he do and what programmer know. Maybe we can catch their attention uhm uh giving like some tidbit some employer employment things, like, developer does this and um every year you know like we need them or like something like that, if you are developer you know is is very low probability you can you know you not get fired or something
umnm
i you're not get job or something. high probability you can get a job. Of course if you have a all the things you get you are doing like for some programmer develops is the best, right? he-he
so, what about rules of inference? Do you see them using rules of inference, where you can they deliberately making transformation steps in their proofs?
uhm, yeah, yeah i some of them, but like few.
umn,
ahm, especially math people they get it, and also i'm surprising when they are going this, ok, wow, i surprised this guy's this guy shall be in math department
yes
i'm asking the professor, yes, he-he
so, i, i was talking to one student who really appreciated definitions and he was so happy about them, and he said when i saw this i decided to switch, i decided to take on a dual major in mathematics
it's also another thing here, can do like double major, but it should be hard.
yes
very hard
they have so many courses they have to take, even single
but if you manage both of them, you will be very good
employable
yes, employable, yes, he-he
so, ok, so they they they're not seeing the the necessity of definitions, but some of them do,
umhm
and then some of them can apply rules of inference
umhm
ah, Do you ever see people who are maybe they are wandering, they don't use the form of the proof, so maybe they are not proving the right thing, or maybe they start in the right place but then they wander off and forget what they answer that they're trying to derive
yeah, yeah, they are like losing inaudible, they're starting somehow good, a bunch of proof techniques, contradiction, construction, like some of them is um inductive proof
umhm
it's like they're like some people got the idea for like for example let's say uh proof by uh contradiction, they are they give the like good statement and then they are proving something and at the end they are not proving anything actually
he he, did they get to a contradiction and then don't know what to do, go back and say suppose not
so, basically they are not complete, what did you do? right?, so could you summarize? or just say uh, and also like uh uh some some some people like uh their assumption is they are assuming an assumption and they're still taking this assumption i'm talking about proof by contradiction, at the end still this assumption is there
oops
this is more, this is very,
so it's contradicted, but they don't give it up
yes, they are still using the assumptions that is not correct, you have to take a ok if you are proving something you negate first
yes
and then try to give the like a another negatings, is not correct, but still the assumption goes, you couldn't negate them like to find the contradiction
oh, ok
so, so basically there are other things, you have to for example like x if you are starting with yes, so you have to show no somewhere, no doesn't
you want to show yes, so you take no, and you deduce from no and you realize you cannot have that no, therefore must be yes
you are doing nothing, right, because just writing something (symbol)
sort of a ritual where they know that it's supposed to look something like this,write something, sort of hope it will be right
also, other proof techniques is inductive proof right? so basically, you're starting with like they are giving a problem and they're add, but you have to choose a problem
you have to do induction upon something
you have to really, choose a parameter, let's say n, and then says n =1 is ok, because you are doing ok, so you're assuming that n = let's say k, and then you're trying to do the k+1, if you after that you are done, but what i see, starting with n=1, and then uh n becomes k, k =t, and then
wander off
yeah, yeah, is actually like uh is like uh always changing the parameter like what i said before like so because so confusing because like parameter is different, right, so
so they know they have to use symbols
symbols
process of using symbols
but they are not fixing a symbol, always changing, problem, of course i'm giving them partial credit but not all
the meaning of the symbols, it's not obvious that they have it, they know they have to do symbols
yeah, yeah
this is wonderful, i really appreciate your telling me all of this stuff, if you think of any more i would be really glad to hear them
i remember just these things, of course if i have another uh observation like other things, i will share with you
Thank you. Thank you, i think i'm worried about my 2o'clock class, i have an hour to go, i'm just a nervous person. so, thank you
Thank you very much.
line24t2338
int ok this is Eugene Kovalev and it's the 14. Please start by saying that you've read and signed the consent form.
part i've read and signed the consent form.
int thank you. so, i would like you to tell me everything that comes to your mind on the subject of proofs including when you started having proofs in school or if you started with your informal reading instead, um, you know, just what occurs to you.
part so i feel like i've started proof earlier than my earliest memory of them, but uh uh the first time that i basically remember clearly remember doing proofs was uh 10th grade geometry in high school. uh, they had a very specific structure um you know we had we had to use a specific set of um axioms and theorems and based on that we would start, sort of, a proof of some other geometric principle.
int umhm
part um, and uh from thereon in i you know in calculus i did not do that many proofs, but proofs very clearly came to the fore when i went back in college into distribut, discrete systems, and theory of computation, so, uh, the the things that come to mind specifically from the college experience inaudible is uh, so that proof proofs became less structured but definitely a lot more formal. by structured i meant like we had to write them in a really specific way, and all the stuff but uh formatting wise, but now they were much more rigorous, from an academic point of view, and, what I remember quite clearly is that you know uh we had to so obviously along the same principles we would we would learn theorems we would learn axioms, um, and then we would construct proofs based on that however you know the big difference was that these were a lot more conceptual, geometry i've always sort of been good with because it's very visual but here you know uh there were many different proofs, one of which specifically from me you know sort of divide into two kinds, there's prove that this is wrong, with and all you need to prove that something is wrong is a single counterexample. that breaks the proof. breaks the idea. and then you have to prove that and then the other kind of proof is that i had to prove you know prove that this is right and this is considerably more difficult because you have to prove that it applies absolutely every single case so all of a sudden you have to consider all the edge cases, and all the stuff like that. so, um, yeah, mainly what sort of comes to mind.
int ok, so a couple things come to my attend to, one was rigor, uh, in when you were doing the geometric proofs in high school, did you have the notion that this was the most rigorous thing you had ever created?
part no. so, i distinctly had the notion that obviously when a proof was correct it was very clearly correct, but i did not feel like it was the most rigorous thing i had ever done, uh, notably geometry was very easy for me i never had trouble with it, so, um, i definitely felt like the ones in college were a lot more rigorous.
int so it isn't that you look back from your college perspective and say oh my high school proofs weren't rigorous now that i know, but it was also the case that as far as you can remember, when you were in high school, you did not regard so i want to make a distinction between i think rigor means that the proof itself holds up, as opposed to that it was difficult for you.
part oh. um, so no, no i believe that both of them were equally rigorous in that respect, both of them both uh sort of groups of proofs were very obviously correct it's just that the ones in high school were very simple.
int ok.
part they were not particularly sophisticated, it was like prove that you can have three lines at 90 degree angles to each other.
int ok,
part so
int so they felt easy at the time, and as you look back, the proofs are still rigorous in terms of holding up
part yeah
int um but they weren't that hard then, and now they look even easier probably
part yeah, than they did before
int another thing that caught my attention is visual. so i, because there's been well you know since Euclid, haha, visual element of a proof has been prominent, but um more recently than than his time um people were developed a prejudice let us day against visual proofs uh not not only because he made an erroneous proof, having to do with lack of completeness in the number system and the necessity of overlapping lines uh, circular arcs that didn't necessarily overlap in fact without the understanding of complete number system, so uh i'm really interested in what role visual element plays in people's understanding of proofs of others and in terms of their creation of proofs for themselves.
part so for me personally visual proofs were just always easier even to this day, i find that things that i can visualize i tend to do a lot better with. so, i you know i had very , very little trouble with graph algorithms, because graphs for me personally were very very easy to visualize, but, heaps for example don't have like heaps are not distinguished by their visual element, as a result i actually struggled with heaps a little bit when i was learning, now i understand them, for me, being able to visualize precisely what happens and sort of replay it back in my head is the final level of understanding something, so once i can do that i can probably do the proof. so the visual aspect made it a lot easier. i understand how visual proofs are not in complete in 90\% a visual explanation only shows one particular situation uh you know that we may encounter whereas in proofs you have to you know go for all of them, but you know sort of visualizing it has always made it easier at least for me
int ok, uh so what what sort of uhm resources do you bring to bear when somebody assigns to you to create a proof?
part uhm, so if it were today when i don't remember all the sort of tools that i had when i would do first is i would understand very precisely what what it is they're trying to prove, understand the principle, they're trying to prove, and then i would go about sort of considering all the edge cases, so in my own head i was sort of try any examples that might make it wrong, and I'm sure i'm going to waste a lot of time trying to figure out whether certain assigned proof was wrong, um, and one that's done i would take my understanding of this particular you know this particular thing that i'm trying to prove, and then sort of uhm and then try to so probably go over all the all the logical elements that we had to learn for proofs, i would go over any related axioms and theorems related to this proof and then i would try to, to construct an argument from the original uh thing to all of the to show that all of the cases, all of the edge cases, are satisfied.
int here's a slightly different question: not about having proofs assigned. Do you ever decide on your own, that you want to do a proof?
part no. I just tend, i tend to just write code, or ex- it's always been proof enough for me.
int um. so did you take um did you take 3500?
part uh, 3500 is algorithms?
int umhm
part yes.
int did you, did you have any proofs in that course?
part yes.
int ok. and they were mainly about resource utilization?
part uh, so most of those proofs were like were about you know design algorithm that does blank. Prove, in, such and such time, and then prove that it does indeed do blank in such and in such and such time, so it was resource utilization and fulfillment of the requirements.
int yeah, ok, um, have you had any interest in formal methods?
part no.
int ok. um, let's see, did you like, you liked proofs in when you were doing them in geometry?
part yes
int did you like them in college?
part i liked them so, i didn't like them as much in discrete systems, but i really like them in algorithms.
int umhm
part so i liked the algorithms course in general, um, so i at the very least i did not mind them in algorithms, i think i, i think i liked them
int did anybody ever explain to you why uh proofs were used in the course in which proofs were used?
part um, no, i mostly came to the conclusions myself.
int yeah. so, for example, we had proofs in 3502
part yes.
int but i don't remember ever actually saying, ok guys this is why we're using proofs.
part no, nobody ever said that. i believed that proof, you know i believe that in a in the ac, in academia proofs are important because you know validates your particular theory, and in that respect it's important to be able to prove that what you're doing is right. I've concluded that proofs are often important when designing a new algorithm because you can prove that the algorithm's correct and then you can nail down whatever issues you're having to actual bugs and i believe that proofs are an important teaching tool specifically for practicing and making sure that you understand the principles, but nobody every explicitly told me
int umhm. what would you think about the idea that uh a proof is a way of seeing consequences of an assertion? If what you assert is your hypothesis.
part uh, for me that would overwhelmingly mean that if the hypothesis somehow incorrect a proof would be a great way to find that out. but if if if i know it's correct it becomes a little difficult to motivate myself.
int what if you thought the hypothesis actually a creative act and the proving part was an exploration, does that seem to make any sense?
part it makes some sense, yeah. i can see that.
int ok. so, Lobachevskiy is a famous example of that, saying well you know what if, instead of uh, so what is it, Euclid has uh a theorem about um, what triangles have to have 180 degrees (of internal angles) in a plane , and you can say what happens if you could say triangles did not have to have 180 degrees.
part yes, assume the opposite
int so that was an amazingly fruitful line of mathematical research that was begun by Lobachevskiy. um so, one view of proofs is that in fact they are our mechanism of seeing consequences of hypotheses, that we can dream up. which is kind of different from the notion of something is true. We are allowed to make it be true
part yes. so i i guess from a scientific method point of view, um, proofs wouldn't so uh a proof would be a tool to prove that your hypothesis is correct, it wouldn't entirely replace experimentation, but it would certainly back up your experiments
int um, so so geometry proofs were easy for you, so you probably don't remember any aha moments from that timeframe. Any aha moments in doing proofs in college?
part so i actually proof by induction
int uhhuh
part i didn't get it for a long time, and to this day i still forget it, and i go over it again and i go like aha, that's how it's done. so, the the aha moment has always been proofs by induction for me, despite the fact that i've done them multiple times i always they always somehow pop out of my head and i have to relearn how to do proofs by induction
int so what about recursive programming? Is recursive programming a technique that um that you use, that you consider early, in solving a problem?
part yeah, to the chagrin of several managers who i worked with in industry.
int hahaha ok. do you see a relationship between recursive programs and inductive proofs?
part yes, so i see the relationship, but i i often have time have trouble making the formal connection.
int yeah, now so i have another pet problem that is similar in a way so there's a stick breaking algorithm that algorithm's purpose is to give any number of fractions that always add up to 1.
part ok
int so you don't know in advance how many fractions you're going to need, but you're going to want to ask for fractions, and when you are done asking for fractions they have to all add up to one.
part ok
int and there's a there's an algorithm for that called stick-breaking, so you imagine a stick, and you declare it to be of unit length
part why couldn't we just divide 1 by the number
int 'cause you don't know the number in advance
part oh, we don't know the number in advance, ok
int hehe otherwise it would be easy. so, we have a stick, and it's normalized to 1, we break off a piece, and that's our first fraction.
part yeah
int and we have the rest. we break off a piece of it, and whenever somebody calls for you to provide a fraction, you have your stick, and you break off a piece of it, and when you're done they will add up to one, however many times people have asked you for pieces.
part ok
int and this can be written as an algorithm
part ok
int and it can be written as a mathematical formula, and you know, in one line, right, so, uh, you get a description of the ith fraction and you have a sum and you have uh, the proportionality constant which is the diminshing thing that's always left over and you have your piece. so i when i first saw that formula i first saw it as math, and i said, oh, does that work? and I turned it into code, and then it obviously worked, and then i looked at the math and then it was obviously the code. so, i wondered what is this stepping stone process doing, that, i go look at it in the code world where it's obvious to me, and then i go back and look at it in the math world and it's now obvious to me although it wasn't in the beginning, and i decided that in math you have the left hand side and the right hand side of your equals sign, and the assertion is those two things, whatever they may be, are the same, they may have independent, they may arise from independent places, but when you're done, they're the same, but the algorithm didn't have that nature to it. The right hand side what was I did, and the left hand side was what I got.
part ok
int the left hand side didn't have any like independent prior existence
part yeah
int so the equality notion of it wasn't nearly as demanding in the code world, as it is in the math world. so it just struck me funny that so what's going on there? that by sidestepping over into the code world and coming back, that the mathematical formulation was so much more clear, so i wonder what so we talked about induction, we talked about recursive programming
part um
int which is the very incarnation of an inductive approach to arriving at something, and then when you go back you say, oh, well of course, induction, it's recursion, for crying out loud, it's the same thing, and now it's clear, and memorable, so, is this process of stepping, ok, we're going to see it with our math neurons, right? and now we're going to see it with our coding neurons, and they we go back and say, oh yeah, now that it's kind of related to this active coding neurons, we see it in another light, it makes it easier to comprehend.
part i get that a lot in constraint programming, there's a lot of the papers you know they'll have these mathematical explanations and then just encode it all and it suddenly makes sense, and i think part of it has to do with the uh it has to do with the procedural nature of code.
int umhm
part we're in state a, state b, state c, state d, and in the end we get an answer, but a mathematical equation is like an absolute constant total truth.
int umhm
part and you have to take it all in at once in order to understand it, whereas code you know you sort of easily understand like piece by piece and the other part of it is i think it has to do with fluency, right, because we don't speak math, but we don't use i always learn things best when forced to use them, and this applies to code, too. Languages that i haven't used in a while i forget.
int umhm
part but language that i use all the time, i you know i remember and it's easy to remember them
int umhm
part and i think that's what's happening here, because we don't actually use the math language to accomplish anything.
int umhm
part the equation's one total absolute truth
int umhm
part whereas the code actually accomplishes something and it's easy to go from state 1 to state n.
int umhm
part zzz, that's my sort of two cents on it.
int i almost wish there was a way to teach the use of math that bore some more relation to the way we teach the use of programming languages. And whether in fact if we did that, they um, math we would become equally fluent in math as we are in coding.
part i mean i think to a certain extent yeah if we think of programs like excel,
int umhm
part you know we have we're using math, we're using all these mathematical principles but the difference is that a proof is something you only use once.
int umhm
part eeee, you've proved it, and that's it. and izzzz total absolute truth there's no other way around it
int umhm
part ooooooo, once you have an equation, zzzz mathematical equation that's it., there's no, there's no way around it, and but with recursion for example learning recursion you can use, you can apply the principle to many many different algorithms and can still see how it's recursion you can do this with trees, you can do this with literally any principle of computer science, you can just apply it here, apply it here, apply it here, but proofs, ssss, that's it. it's absolute, and true, and you accept it and then you move on.
int umhm
part well you don't have to accept it, it still can be true.
int hehehe
part hehehe
int another sense of the word context switching,
part yeah
int ok. Well, thank you very much, i really appreciate it.
part ok thank you.
int we're done, we're off
line26t4454
ok, we're here on Friday at 4 o'clock we're going to talk about proofs Monday at 4 o'clock, we're going to talk about roofs, 2500 and anything related to proving in computer science and curriculum, so you were saying earlier that you thought maybe people who had taken a transition course in math department
yeah
might want to think about whether they actually want to take 2500
yes, so, um, i did not feel like i mean like i, i when i took 2730 i think, transitions to advanced mathematics um i really like it but that was kind of before i started taking math as seriously as i am now
unhn
which was you know i was kind of undecided, i think i just decided i was a math major so i hadn't really gotten to like i was pretty good at it i got like a B+ in the course but i hadn't really tried to hard so i was thinking that taking this course would be a really good idea now that i've taken this course and the semester before i took analysis I, I kind of realized that I should have probably have skipped this course, really any math major should have the option if not like almost definitely not take 2500 i don't want to sound like offensive but
no, i'm really interested in how your perspective on what proofs are changed during the transition course, and whether in fact 2500 reiterated or reinforced or was different from any of those.
so, i don't really think that like it was 27 that transitions class or even this course that is really shifted my approach to proofs as much as it was um like analysis I course, because that was just so, it was so hard, and like so rigorous, and it kinda really made me realize that it's not about if you know the answer to the problem, or if you can write down the solution but it's about how effectively you can communicate your mathematical thoughts and like you were saying the information and the definitions that you have to apply them because honestly like there's so many times where you want to come up inaudible you know your own idea, your you want to write it your own way it comes right out of your mind and you can do that for your first draft, but in the end it most of my proofs that are like that get really good marks are almost straight out copy and paste from definitions and things that have been built up and are known as opposed to things that i want to develop myself, which is upsetting, but i mean that's the world, that's math a lot of times, it's something that's already there
so, about definitions, were you ever tempted to infer your own definitions rather than say looking them up?
oh, for sure, when it comes down to like typing up homework like a lot of times i will, because i type in latex, i taught myself that
i like latex
a few months ago, so um whenever i took up my solutions i know the definition already but i'll always look it up just because i want to make sure it's recise and as accurate as possible i mean as far as that's like what i was saying with analysis i would lose point like saying for all epsilon there exists some m such that for all greater than epsilon blah blah it would be because i had forall instead of given any, i'd lose like major points for that it really made me realize that it has to be very rigorous and that's why it really shifted my approach to proofs because i mean in this course in my transitions class it was a little more hands on with the professor telling you what you did wrong, in this course it's such a big course that i think like the transition course is really more ideal, um, the online feedback is really good, however i think that the way that they grade it is like really,m i don't like the way they grade it at all, because like it seems more, it's not even like the rigor, or the how good, it seems like they just mark you down however they want, they're just hard on you in a non-discreet way. like a non-inaudible or what
so
sorry if i'm just ranking
the difference between given an, and forall
well, one of them is kind of more saying like given any epsilon, in most cases it should roll because if you have a forall then there esists is like 2 quantifiers it holds that for every single epsilon you have some n_epsilon so perhaps when i had written it down maybe i had said there exists some n_epsilon then forall which is very different there is a single value such that it holds for all the values so i mean there must have been something else there, but given any and forall, i mean, it, that's really just a semantical thing, i think, because given any kind of just applies to like it's kind of the idea that if you're taking some arbitrary x not then given any n_epsilon it would kind of be more how i think it should be worded while if you were saying forall x and then forall blah blah because that kind of is more universal like so i don't know if there's a huge difference there but that's how i would think the difference is
hm, is one of them more like when you say: fix an epsilon and then \ldots?
Yeah, so, i mean the same thing does apply though for like a forall and there exists, right, because that's saying for every value and then you fix that value, there exists some, right
umhm
which is essentially the same thing, but that, something about saying Given any then there exists, it sounds just much more like i guess not rigorous, but it sounds just more natural that there is a fixed value
so, anyway, there's a precision in how you communicate, and you learn in the class to abide by that, in your expressions fit that
yeah, for sure
and you learned it uh, in the introduction to analysis class, are you using Rudin for that?
Uh, Rudin?
There's a textbook by Rudin,R-U-D
I actually had Thomas Leitch for my professor, he's the greatest professor ever, let that go down on paper, he's a really great guy
unhn
he actually typed up the notes for the whole class in latex it's 400 pages of his typed notes, it's awesome, his notes are so good, he'll sometimes miss a definition or two, or like perspective, but it's pretty good
do you ever talk to the students in 2500 about like definitions or formal communication styles?
um, in my disc, i like, tch, let me see helping out a lot of people in my discussion section and stuff, i'm also taking like a math logic course so sometimes that that will um kind of conflict with some of the ideas that are being presented in this class
wow
just because like i mean not it's more in my own mind that they're conflicting because certain things in math logic like union and what not are treated very differently from how they are in this
oh?
i mean, not, ah,
still an operation on sets, right?
yeah, but it, um, so i think when we're going over topological implication, we went over that, right? Sorry, it's all just a blur.
I thought you were talking about the philosophical course. So you are asking about 2500, did we do topological implication. Maybe not by that name. Also, i don't go to Friday, so if you had it by that name on Friday
no, i
we know what tautologies are, so if you say true implies blah, that would be an implication with tautology as premise.
well it's for any like you know it says like for some p, if there's any truth assignment for that p, then it holds that some statement is true under any truth assignment, right?
all right, i didn't follow
yeah, sorry, sure there was a little bit of conflict i think it was in my own mind. Where were you, I"m sorry
one of the things i think that, math students, math undergraduates expect proofs to be part of what they're going to be doing
yeah
whereas
yeah
some computer science students may not feel that, they may think that well they've had an internship or two, have done coding, nobody every asked them to do a proof, what's all this stuff
i 100\% agree with that, that's even what i was surprised with, now i have a lot of friends that are computer science minors and computer science majors what surprised me when they were talking about it, just how much more mathematically based it is than like learn how to code and understand languages, a lot more like but being able to i don't know, generate some set of numbers using like functional programming or something like, it was much, it seemed a lot more abstract than i expected it i guess, um, but i mean, yeah, and i think a lot of the like a lot of kids i talked to who are math majors obviously will like proof, otherwise they shouldn't be a math major but a lot of computer science kids have an inclination to really not like proofs at all
which is too bad, because they need to not just be able to prove that their code is correct, or prove things about the resource utilization it has, but proofs can also be used, proof techniques can be used to explore consequences and choose what algorithm you want to use, you don't necessarily have to pull the algorithm out of a hat, think about it and the techniques of proving help you do that thinking of problem solving.
yeah, especially i think when you get into like a lot of the computing the amount of time that certain programs run for, because then you get that, if this one runs for this amount of time in sequence with this one, you know how long would this take opposed to a method hat is one shot
maybe you are searching through a tree and can discard half every time you make a decision and you see the log function. Sometimes i have students in 2500 who don't know what the log function is.
i think there is general just not understanding of like the natural number like whatever it's called e, sorry, that just makes me sound dumb, um i think a lot of people don't really understand what it means, along with sine and cosine, like people have an understanding of what it is, but like, there's still that like missing part, but i think there will always be that disconnect and i think that's a really natural thing because i think these are concepts that are deeply rooted in our own existence outside of almost like something we can just understand, but that's just my opinion
so, do you like proofs? except for this really strict grading experience that you're having right now
even that's not so bad, it's just annoying because i know my proofs are right these are like really easy proofs for me, and like when i'm not getting full credit, it's like what? it's like come on. But, um i really like proving things i don't really necessarily love reading proofs, depending on like depending on what is being proved and what like language or structure you're talking about, and i think that's also part of the problem i think that everybody can think like but not enjoy reading other people's proves, you know like inaudible like so technology being created but i mean for the most part it's being creative for the person that writes it.
well, i'm not sure that the computer science students always like proofs
yeah
inaudible
cause like a lot of the computer science proofs are like a lot more straightforward than math proofs
in your analysis class
for sure. i've like a take home exam in that right now we have to prove that there's two equivalent number that open set in one norm is an open set in another, i mean that's not even that hard, but it's stuff like that you're not even, you don't have numbers, you don't even have really like variables, you have these ideas that are floating out there that you have to deal with
you have to deal with open set
well yet, a different definition of open set at least, because vector spaces and we're doing like differentiation, like vector differentiation we're going to be doing like Lebesgue integration at the end
sounds like a nice course
functional analysis next semester
he doesn't give those notes away, does he
i have them if you want them, i can always email them to you, he would not mind i'm sure if you contacted him and were like could i take a look at your analysis notes he'd be totally fine with it, he loves like LaTeX and teaching, that's what so awesome about him, not only is he, he's very like supposedly he's very he's not huge in his field you know but he is pretty influential and he actually his papers are pretty like decently well know, but he also just loves teaching, which is like just exactly what you want
the best
cause like you know you could be a great teacher, but if you don't have some type of knowledge, some type of like slightly higher knowledge than the students you're going to slightly more ineffective, you could be the smartest guy in the world who even cares if you can't like communicate and teach it. but yeah, i mean that a lot good teachers in the past and that's kind of what's inspired me to do the PhD thing, if it works
i'm trying to figure out how best to help students of computer science
yeah
learn how to do proofs.
how to do proofs.
yeah, so a lot of them don't have the same sense of definition
i think that's really what they need to work on, I brought that up earlier, and that's all it is, like, it's definitions, and like, that sounds so like simple, but like it didn't like click for me until like you realize that like it literally is like word for word the definition, it's like even like the case like i feel like kids don't even, they take for granted just the definition of an integer, like that and that's like so essential for like almost all the proofs that we've got in this class, you have to be able to state that well if it's an integer, or even an even integer, there exists some 2n such that n is in the natural such that blah blah and like that's something that like i think in a lot of people's proofs where they lose points they didn't state something like that
i had a student
yeah, they just feel like it's even, so we know
this student said, all numbers are odd, all numbers can be expressed as 2k+1, (I thought) what is this??
i think another thing that another really nice perspective that i don't think has been taught it might have been, um the idea of like sequences that set. i really like this at least when i heard it in analysis, like um sequences that like saturate the natural numbers
i don't know what that is
so like if you have let's say we have like a sequence that has two subsequences, and one of the subsequences is like 2n and the other has 2n as the index, and the other subsequence has 2n+1 as the index, then we say that those two sequences would saturate the natural numbers, because ok when you put together their bases, you get all of them, and i really like that perspective because it kind of makes you think about how you could independently be analyzed one half,and another half and showing that these two things maybe converge or have some property
cover the entire space
exactly that even came up um i mean just recently with i think a lot of the modulo stuff that kind of connects to that because if you ever have like 2, and this is another thing they didn't bring up maybe he did but if you have like two numbers that are like relatively prime then they create a basis of like the integers
oh, how about that, ok
which isn't really brought up
alright,
so like if you have 4,7
they're relatively prime, ok
then you can have, they make a basis for all integers
express all the integers, combinations, you know i've been interested in what do you think the term mathematical maturity means. you see it a lot, such and such a book really just requires mathematical maturity, like ok, what is it?
i tutor at the q center, that brings up like an example of like difference between people who are mathematically mature and people who aren't is like the difference between students who are willing to sit there and try it themselves a bunch of times and not just ask for or want the answer but also the students who can understand math like yes a some of the things they might be looking mathematically a visual representation and using all the knowledge that they have about given values to come to like a solution instead of grades it's being able to understand like the concepts and like the broader picture of the definitions and how they interact, i think that's probably
inaudible, but you also mentioned something about definitions say thought you were going to say like take a perspective like a graphical \
yea, that's what i was like thinking, graphically i don't know if i communicated that well enough, you know if you have like kids come in all the time they'll ask like they don't understand uhm why a sequence converges.
uhhuh
and like, it's just so obvious looking at it when you have like a certain level of i guess like maturity it just converges because you know the denominator is greater and then you know the hard part then is communicating it so i guess there's like intuition, like rigor and i think when you have both of those at a very high level that's probably like what maturity would be
is there some kind of communication between the intuition and the symbolization for example?
i think that's just like that's hard because for about like the way that you think the language that you put your own thoughts into, because you know, maybe before i would have thought like every something has its value but now if i look at numbers i;ll be like oh forall that goes straight into communicating, yeah, i don't know that that really answers it um i think that the more you focus on like being rigorous, the more like it follows that what you're doing will be of that form
you're thinking, find gaps in your intuition when you try to express something rigorously, oh i didn't think about this
yeah, exactly, and i think it's something else that computer science kids need to learn like i feel like a lot of times they'll have like, even like programming like implementing a program they have a computer to help them and they're wrong, but when you're writing a proof, you have to like so you write out your first draft or whatever, and while you're writing out your first draft you should basically every single time be saying oh no this is wrong, think about why it could be wrong and then if you can't think of any reasons why, then it's right, you know you kind of have to do that, you go up and then you go down, you go up and then you go back and then you you keep on doing that because like if you don't build each thing on each other, then you're either going to contradict yourself or you're going to have this statement that based out of nothing, it's all about not having any gaps in your logic
every inference has to be warranted
modus ponens he-he, modus ponies
so, um computer scientists take a course called 3502 in which they have to understand (they're not creating these proofs, the proofs are put in front of them, and they have to understand them), and the proofs are all of the form, first we do a contrapositive, and then we do modus ponens, so in my section, in my offering of 2500 this semester i drilled them that and i gave it to them on the exam and there are still some who have trouble with that, and i tell them that you're going to have this exact argument in a next course, so oh yes, i remember, trying to
i still didn't know it then
um, i think that it does not happen. i didn't take the transition course in math inaudible, but um i don't know, do students get exercise on proof types?
yeah, i mean that's like the one thing i pulled from that class really, it was not so much like any of the proofs specifically it's like the types of proofs there are and i mean even with this class i think that's the good part about it it really does mention the types of proofs there are are, it guess it's different from different of proof structures, develop a lemma first, contradiction to prove itself, you have this mini thing, and i guess that was really like hammered in too much
there's an alternation between top down and bottom up, want to say, ok, how am i going to structure this parts i can break off and look into that
the problems are ok you start working one way and then you you want to flip it around and then start taking the contrapositive and working it back to what you already have but like it doesn't work that way
yeah?so, i don't know if you've heard of this series of conceptualizations of proofs, there are a couple of researchers, Guershon Harel from UCSD maybe, someplace in California, the other is Larry Sowder i don't know where he's from , they're both math professors, they're studying what goes on with student understanding as it's developed, and i don't know how many years of development it is i suppose it's different for everyone but they start off with what they call extrinsic conviction, where student writes a proof and finds out from the course staff whether it's a successful proof or not. And then, after a time uh so there's a certain amount of progress with one stage of just the last stage of that students are trying really hard to employ symbols but they're not good at it yet, and then they switch over to what's called intrinsic conviction, where they think they know, they have ascertained for themselves, they may not be perfect at it yet, and one of the stages of that is they'll prove something for individual picture, so, really there offering examples as if they were proofs, so these are students who they're convincing themselves but incorrectly, and there are several stages of that, so this perceptual stage
see it in this figure, right in this figure, next thing that happens they say oh but i can transform this figure over the range, and now i've through the states, so that's called transformational and this is also intrinsic conviction but this time the students are correct in convincing themselves, and uh and ultimately they uh
generalize it even more to all space, yeah
well they have axioms and they have definitions and they have warranted inaudible they get there inaudible um do you remember going through any of those things?
um, so i mean i'm definitely not all the way over on the intrinsic side yet, i definitely i know what i'm doing things right and just feel so good yes, this is it, and like you just know when you are right and you're doing it right and sometimes you might not have communicated it right, but you knew that like what you were trying to get at was the right idea at least he-he
these are the reasons, true because of this
right, and like i think uh i definitely even with some of the harder examples fall back into the oh like you know just like prove it to myself for at least one thing like i know that's not how to prove it but i want to do that just to even you know to check if a statement even is true, so i think that the perceptual i think you said stage it was, i think that's still pretty fundamental just to like doing it and i guess how well you can do that quickly like in your mind
a stepping stone i think people continue to have that
yeah, but i mean i think like the intrinsic part is i like everyone aims for but what's hard about that is you get you know what you're doing and you're doing it all right and suddenly you get to this point and you know that this is what you want to say, you're looking through all of your definitions you're running through every thing in your mind and you don't know how to make that one which is so dumb, uuuuugggghhhh that's where i in most frustrated with proofs
because you have it, you have the intuition, you know why
you have all the intuition, you have all the knowledge, you know exactly what you need to say
mechanics, too, of course people remain extrinsically convinced for really difficult ones, it's different for every level, so look at Andrew Wiles proof of Fermat's Last Theorem, what percentage of people understand that, intrinsically know that, what percentage are saying those other guys heard andrew wiles give his talk and they said he was right, that's extrinsic, and we don't all have the number of hours that he was able to spend
i mean i would find it hard to believe that anybody even intrinsically believes that
i'm sure andrew wiles does
i don't think so, i think he understands it with the communication that we are given, but i don't think that he can look at it, i don't think especially like his first time looking at it, i don't think he can just look at that and know that for every value that that's true because like he can't run through all the examples in your head
well it's infinite, right, so you're not doing that
and even more so like i don't think we have enough of a grasp even of like what the real numbers are or even what infinite infinity is to even be able to intrinsically grasp things like that, i mean that's my opinion at least
so, it's natural numbers, right, because it's positive exponents,
yes
so, um we just saw something Prof. Russell's course this morning where he did it in mod 5, he said, well ok first it's infinite, but now it's finite. so i don't know whether that inaudible Fermat's Last Theorem, wouldn't have taken 358 years
then you have modulo over like n, you'd have to be like inaudible arbitrary works for all and you inaudible not really good argument
so, so i think you're saying that for some proofs you see yourself along that parallel line Harel Sowder, and even you're beyond perceptual, beyond transformational, you're in that axiomatic
definitely
uh, for some proofs, and i' speculating that there are yet more complicated proofs where you might not be there yet, or, or, you know the right way, you know how to prove things well, it's just that that particular proof is too difficult right now
yeah
so you're not going to fall back and think that an example is a proof, you're not going to make that mistake
yeah, i know what does work, and i know what doesn't
priming, get yourself thinking, so do you like that book by Polya, Methods of Plausible Inference?
I haven't read it,
oh you might like it, you might like it, it's how to go about coming up with proofs
it sounds pretty good
have a toy with examples, how to try things and seek patterns you know clues about seeking patterns and then patterns you know insight into how to prove
his book is on how to prove stuff, or even just how to come up with things to prove, there's a big difference
prove stuff
because proving stuff there's like i feel like proving stuff is the easy part, but to actually find out like to actually figure out what we want to prove, or why we want to prove things i think is much more difficult.
There's another difference maybe between math and computer science because in computer science we pretty much know we want to prove that our algorithm is quicker than anyone elses, uses fewer resources, have these complexity classes, seems to require exponential amount of resources compared to the expression of the input
yeah, but it's so much harder
thing better to do yet
it's so much harder in math, look like something in game theory, why did he want to prove that? To see game outcomes, look it
i agree
look at where it's gone now, if he had even if he had known that would he have even wanted to do that still and like you know what i mean, like
i do, i mean i vaguely do, in that, in math, you would have all kinds of things that you might address, whereas computer science we are trying to do resource utilization, correctness, safety...
do you think that that then becomes a problem with proofs you know how you were saying earlier i think that first pick a specific examples, right, to prove things for, and then the more abstract, and then eventually can prove it and know it intrinsically, so you think then when you're showing things and proving them like perhaps when they are too abstract you don't even know what you're showing anymore to the point where like its you know what i mean
so abstract
lose any application
pretty cool when that happens, isn't that what abstract algebra helping us to do?
and category theory, i took the course from Prof.Schiffler representation theory
i'm taking combinatorics
ah. ok. it's like taking every math class, it's miserable
um, and it was very abstract
yeah
so, you know, we're doing mappings and relationships among mappings it didn't really have to anchor itself in any specific examples
one other thing. brought up actually because i'm in the combinatorics class i think two other really helpful concepts for the 2500 course would be pigeonhole principle, because that is like they definition to me of just like where something so simple has like these like ridiculously clever applications
yes
and like i think that now only is really interesting to people who are interested in math but also helps them with using a definition in a non-functional like different way
ahah
you know cause you have like the cases where it's like show that i think like if you have like 10 of one zero zero zero continuous, that 2007 will divide it and then you show that if there's so many 0s, if there's like 2008 zeros, then you have that like 2007 there divides it and the remainder, there's like 2 of them that will have the same remainder, something like that, since they have the same remainder, you subtract, a pretty cool proof with pigeonhole principle which is like crazy, there's another thing, sorry
ok
ah, there's another thing i totally thought would be helpful. hmm, one of may nah, not jet so they did generating functions which are helpful but for like solving ah recurrence relations, but you can use any method you want to solve those
i get use about mathematic induction, to see the connection between base cases, and the connection between the induction step and the recursive call at the moment i'm hoping i'm fairly successful at that, we'll see
oh, man, i had it too, and then it just started talking about tch
(coughing)
i forget. really. unfortunate.
i've tried talking to some people about pigeonhole principle because i believe with you that that is very valuable
easy to grasp at the start
but i've had students tell me oh yeah ok you know i have 9 nests and i have 10 pigeons, that means one in every next except one, and i say, no, no one said they had to be evenly distributed, all you really know is that one of those nests has more than one pigeon, and, so it's interesting to see that people put more constraints in their thinking than are actually there (in the problem),
yeah, that's true, because i guess yeah they always think like oh its evenly distributed, or like you known show that a soccer team scored more than two goals on one at least one day, and that means like you know maybe they scored all of them on that day
could be
yeah. Man, still bothering me now, i just looked through my book
sure, glad if you did.
feel like, are you cold by the way?
i'm fine.
i also don't like how there's not a text for the class i really like texts i've gotten really into
oh, Hammack, a physical text, you'd have to actually print it out?
is there actually no physical text at all, well i only became aware of Hammack's book online, and so i printed it, because i too like paper books
yeah
i write all over my books
it's the best, especially even like when you have professors that are basically teaching straight from the book, just to highlight what they're saying when they are saying it, it's more effectively than keeping up with them writing when they are talking. I guess it must be some other course. oh well. heah
something that goes with pigeonhole principle.
it was like one of those more fundamental than, but might have been math logic class, tch, i don't know
well if you think of it i hope you'll email it to me, no i definitely will it was actually better than that example, annoying part, but yeah i think pigeonhole principle would definitely be a case it's a new definition to them i guess, you know, if you run through just like one proof and then you have all these examples that are like it can be like so much harder and just different but like still showing just like the flexibility of a very rigorous definition of something very intuitive it's perfect.
they have a course, they're going to take 3502 they're going to take that and they're going to use pigeonhole principle in understanding a lemma that we teach them called the pumping lemma for regular languages and um when they don't get pigeonhole principle they don't see where this threshold comes from. Basically you have a state machine that's like a parcheesi game, a starting state, you either move out of the state or your don't you have moves, the move can bring you back or move elsewhere,
sounds like uh huh sounds like ah is a certain set of numbers in combinatorics its if you either move or stay in the same state and they you want to count how many moves you make before you get back to the same state, and sorry
there's a maximum number of moves you can make before you have to have revisited a state, even if you tour the entire place, but it's finite, you know, after you've done the tour, you're going to hit one or you may have hit one earlier, don't have to tour the whole place, if they don't have the pigeonhole principle, they don't get it. They have this thing called Myhill-Nerode Theorem that also makes use of that idea and they find that hard.
but you can't turn upward
ok, Cantor diagonalization? Catalan numbers
don't think Catalan numbers, might be, not sure, ooh, i was following, ooh, cause it's like the same thing where you can stay in the same state for a turn or you can move but yeah but that of course implies that there's not a limited number of squares, when you're doing like combinatoric stuff, but i think it's like the same thing with like the knight's journey, similar type thing
oh, knight's tour, oh it is the Catalan numbers,
oh, well, they'll get the knight's tour eventually if they take the optimization course, which they should because it's wonderful
i think i have friends in those classes, one of them is taking like AI course, ah, signals and systems, they hate that course, but
signals and systems
yes, both my friends are really don't like
inaudible
i might be ece but they are cse majors it might be like a required or related
cause i teach that but not here, i teach that for Maryland he-he, and uh, tch, students usually find it very fun but i think that the Maryland course might not be as demanding i haven't seen the one here but it's entirely possible that M's is not as demanding as what they have here, but, i love filtering, i love signals and systems, we can't please everybody
it's true
so, what do i want to, uhm, the big thing for the CS guys is to ask them why do have, do they know why we're making them do proofs, cannot ask that of a math major, too obvious hehe
is it?
so
i mean, yeah, it makes sense why we're doing them but at the same time like i mean some of the like most important fundamental things are yet to be proved. and like should we like whole like why does it need to be proved almost
well i don't know i guess you're the mathematician and i'm not my feeling is that if you haven't proved it yet, you don't know it for sure
you don't know it for sure, but like Riemann hypothesis, like
well, ok, yes
you know what i mean, like
i went to a meeting a couple of years ago a big convocation here about it, i saw my professor there and i thought is he going to think what is she doing coming here?
and i mean that's to me like where proofs should kind of off like when it just starts becoming like prove it to prove it, even though like it's essential hehe
yeah?
and then i don't know i mean this is kind of less so unrelated to the computer science people but it seems like to me what is bothersome is just like the language and like how it language is constantly changing but it still think like the same thing is being said so like you know even with funding you know like if your're doing probablility you're probably like more likely to get funded than if youre doing topology, but saying the same exact thing, applied, topolgy is like applied, if you apply topology saing the same things as probabilit a lot of that within math where it seems like that to me
well, i don't see that they're the same that's because i don't know as much as you, i took a couple of topology courses, and it was non-metric, right, whereas to me probability is entirely a metric thing, i'm missing it, but don't worry, math will be a wonderful hobby for me one day, I have all these yellow books with problems in them that i need to work
ok, thank you i really appreciate this
no problem at all
i want you to say that you read and signed the consent form
i read and signed the consent form.
Thank you very much.
do you want me to get that for you
thanks
no problem
hah
well i mean like and that's like i know what you're saying it's not metric, but isn't everything metric, you're going to be measuring, even if you're measuring the number of corners or vertexs something has,
ok well corners, so you have a torus, right, doesn't have any corners, but
you can then count how many holes it has which are invariants on that surface
that's right.
line39t4136
ok, it's noon on Friday the 27 of February, and um we're going to talk about proofs. I just want you to ask you to record that you have read and signed the consent form.
I have read and signed the consent form.
Thank you, ok, so i'm going to put this near you and um this i hope you will think back to when you first uh starting working with proofs, sometimes it's geometry class in high school and tell me everything you think aobut them, whether they're easy hard what it feels like to do them, ok
well you said geometry, geometry is probably the only time i've actually used the formal proof like T, if then this and so on and so forth, i found them to be very helpful, they demonstrated what was going on logically, reasonably and they were very easy to follow for the most part, this is in 8th grade, it's been a while since i've taken geometry
inaudible, almost posts of it the neighboring ops
yea, allowed
it's not on the recorder, i'll be worried,
as far as computer science i've only actually taken a couple courses here, we never used formal proofs like that, it's a matter of showing how something is done, but more using actual code or pseudocode as opposed to like sort of tree branch thing, however you want to call it
have you taken 2500
i'm in 2500, no i'm in 2100, i have not taken 2500.
great, alright, so, i think 2500 is the first course in this sequence here, where you would hit treatment of proofs, so this is wonderful, so you're giving me a picture of before, so, you've had to show things but in some classes, but you're showing was with code or pseudocode
yes, or just honestly a paragraph of words
ok, when i try to teach people proofs i often cast it as closely to an algorithm as possible, pseudocode or code, because i think people feel comfortable with that, they know that's their domain, whether they understand it or not, if they don't they are highly motivated to understand it, and i think it makes it easier, so, have you felt that um, can you tell me what's an informal definition of a proof?
um, a proof is a list of statements where the next one builds on the previous one to prove a final statement conclusion
excellent
so the sequence, when, it depends on what you can say at any one point in the proof, what you can assert to be true, depends upon what has gone before allowing you to say if that thing is true, so you build, you expand and expand the set of stuff that you know to be true
umhm
and when that expansion includes the thing that you want to show, you're done.
umhm
that's actually we did the same thing in philosophy, one philosophy class that i'm taking right now, have these proofs, proofs since 8th grade.
and do you like proofs?
not in philosophy, but in math, sure, yeah
i'm curious what makes the difference
cause in philosophy half the time the proofs aren't accurate or valid or there's a technical phrase, sometimes the statement that they're making just isn't true, you know, it's based upon an assumption or something
validity, that word has meaning in this context, which you'll see when you get to 2500
there's validity, and a lot of things, where like the statements follow even if they're not true, you know
there's an idea of warranted, you're allowed to say the new statement, the new statement is warranted by the statements that have gone before, ah, but that doesn't work if they're false he he
yeah
i mean the proof won't work, but there's like the 2 , the things are true and whether or not they follow, so warranting is about whether they follow
yeah, ok
ahh, but have you heard of implication where the stuff, thing that comes first is false?
um, i mean if it's i i would guess a lot of the time it could happen, i mean, i'm most free some like thinking about this in the philosophy subject matter, and a lot of the time the first statement is an assumption, and so you can't always necessarily claim those to be true, you know, it's just our best guess, you know.
so the idea of one thing follows from another we can put that in symbols, a arrow b.
a, if we have a, we will get b, b follows from a, that's called an implication
oh, yeah?
and implications can be false. You can make a claim that you know, if you're pretty you're bound to be successful
umhm,
and it would be a follows from sort of statement, it would be an implication, but it would be false. um, so when you say the things are not
what i was trying to get at, if you have a particular implication a guarantees you b, and you want to know, is that implication true, or not, um
if the premise, the first part, the a, if that's false, then the implication is always true
if it's a proof that works, it has to be true, right, otherwise everything after would be false
everything after it would be unwarranted
yeah, that's the problem of terminology
can't tell whether it's false either, it would be unknown still, not yet shown, um
so you liked them in math, and you don't like them in philosophy, because in philosophy it doesn't have that feel
it's not always concrete in philosophy, whereas in geometry you could prove, well i guess that's kind of circular, it's like self-evident almost
right, you can make things evident, proofs make them evident, they're great explanations, they have everything an explanation needs, sometimes they are hard to follow, because it's just rigorous thinking going on, but as far as having all the facts, having you know a sufficient argument, proofs are really good explanations that way
uh
hm, so when you have a proof in mathematics, do you, when you've prepared a proof attempt, shall we say, do you ever wonder whether it is a good proof or not? or do you feel secure?
um, well this is going back 8 years to the last time i did a mathematical proof, i mean i like i was 13 at the time, so everything that my teacher said we could use in the proof, i took to be true, like if x is reflexive, it's kind of its own statement, and that was like yeah, sure, why not, so i don't really question the validity of things she told me, not going so far back as to question the very, very basics of math, but every time i wrote out a proof statement per statement i would be 100\% confident in that proof.
yes, yes, there is a series that a professor named David Tall has worked out, where students approaching proofs, they are trying to do proofs, they have to try to do proofs, and they don't know for sure whether they've succeeded and those that category is called external conviction, in other words, they hope they've got it right, they hand it in, and the teacher says yes that's good, and the student says now i know it's good because the teacher says so, then at some point according to tall they latch onto some idea, and they say, oh, i have proved it, i've convinced myself by this argumentation that i've put down, and so they've advanced to internal conviction, but unfortunately sometimes they are mistaken
um
and so there's a so a greater degree of advancement where um they've passed from just plain ah internal conviction to like analytical correctness and uh so in that state where students have realized that oh i have convinced myself this is a thing that can happen um sometimes they convince themselves by inadequate arguments, like examples
oh, no
so, um, there's a joke from the timeframe that i was an undergraduate, where people would say, you know three is prime, five is prime, seven is prime, nine is prime, wait a minute, you know, uh, eleven is prime, and they would characterize this was a joke that was passed around in freshman year when people were trying to decide what their major was going to be, there were all of these jokes about differentiating the majors, supposedly scientists were inclined to admit 9 to be an experimental error, this is supposed to be a proof of "all odd numbers are prime", supposedly students going into the sciences would um allow for 9 as an experimental error, supposedly the engineers wouldn't notice that 9 was not prime, and of course the math, this joke was designed to make the mathematicians feel, that they knew, and therefore, it was wrong, but the reason i mention it at all is that it's a series of examples, but that doesn't make a proof
umhm
and students have apparently have a phase where there's an idea in their mind about what's enough in terms of examples, and they say well you know look you can see how this is going, and you just infer that it's always going to be true
umnm
and that's fallacious reasoning, you know, some students get over it, um, do you remember going through any, obviously it would have been before geometry, sounds like you were a crackerjack geometry student
yes, it was always easy, calc2 is when i started falling off, but before then yes it all came pretty easily with me, but yeah, no, i don't ever remember trying to prove anything through example, it was basic stuff, it was like proving all of the angles of a triangle add up to 180 or square up to 360, you know, things like that that are pretty natural in the first place, um, so, yeah i mean, we always had to formally write out our proofs, and you couldn't just say it works because it works, these first 15 times i tried it, we always had to take this rule set that we had of things we knew to be true and just use them to prove more things to be true, and so build on that rule set that we had
there's a method of teaching proofs due to Professor R.L. Moore, called the Moore method. I'm going to try to see whether your teaching that you experienced was like that.
ok
so, in the Moore method, you're given a list of rules that you are allowed to use, it's rather short
ok
and you're given a list of theorems that might be of length 1, and you're asked, assigned this, there's no textbook to read, you're not allowed to talk to your classmates, just, given this set of rules, prove it, and it was pretty much all in class.
sounds like what you did
sounds like what you did, ok, and so there are people who have have gone through moore method, they say that's great, i was required to think and i experienced that kind of thinking, i feel confident i can expand it to a larger domain, theorems like want want to prove rules i might want to be able to use, they love it,
yes
other people have gone through it and have said it wasted a lot of time because they spent a lot of time doing nothing, um, it sort of splits people, people are not sort of in the middle, indifferent
it may not have been so much, just like here's the theorem, here's whay you need to prove it, go, it was like here's the theorem, here's what you can use, the teacher would walk us through and take input from the class, we're figuring it out, not entirely on our own
adapted to high school
middle school
right, sorry, whereas the moore method i'm talking about, it's math majors as college students
yeah, in college im sure i would be fine with that and that's how i would go about it, i would probably use examples to help me figure out if i were stuck, ok, i'll try it with this, and maybe i'll get something intuitive that will help me figure out why that's happening
have you ever heard of Polya
no
ok, so Polya's a mathematician and a teacher and he wrote a number of books, and a methods of plausible reasoning i think is approximate title of one of them, and it's just what you describe, so it sounds like you're going to liek 2500
well, i'm not going to get the chance to take it, i'm graduating, i'm not a computer science major, i'm a business major with an interest in computer science
i see, uhuh
i should have been a computer science major, but i didn't realize that until i
ok, well, you can always come back you know
yeah, well i was thinking of going to grad school here, possibly
yeah
through the media design department, make like game stuff, that's what i like
yeah, it's a great opportunity, i've seen some people in that program, they were quite happy with what they were doing, i've a son whose a game enthusiast, i haven't acutally stepped into that world very much, i'm afraid that if i do that i won't do anything else
i haven't had any time to play them lately i've been so busy i'm taking a game design course too i'm busy making that, making them in my free time, trying to get that experience
you make the massively online
no, no, i'm making, i'm working on three games right now, one's like a very simple like the kind of stupid stuff you see on your phone, there's a billion download like flappy bird, you make it in a day, i started that last night and i'm almost done with it, it's not flappy bird but similar
the flappy bird person made a lot of person
that's the aim with that one, and then for my game design class we just have to make a side-scroller, and that's still in the concept phase so i'm not actually not developing that yet and completely unrelated to school i've been working for months on this bigger game, involves a puzzle, strategy, multiplayer, i don't know, it's way too ambition, i'm coding it in java and i don't know i'm just, there's so much too it
i hope you having fun
absolutely, i love it
do you ever ask yourself whether you can prove something? do you ever find yourself wondering oh i wonder about this and this and discover that you can in fact prove it to yourself?
it sounds like something i would do. I can't think of any immediate instance where i've done that recently but that sounds like something like a common thing that happens with me. something simple
i was driving around one day thinking about some you know computer programming problem and wondering what the complexity of it was,
ok
and then i realized, oh, i can show that by proof by mathematical induction
really?
oh, isn't that nice, and I felt so comfortable with that. um, and i've asked some students around here if they find themselves proving things to themselves, and mostly they say no, but, students, you sound really strong at the process of proving, i just wonder, you know, did you say, oh will the memory needs of this game that i'm doing exceed a mobile device's memory? or, how can i prove that if i only have this many as five players interacting at once, that the response time of the system will be something like that?
umhm, yeah, um, i mean i'm not quite at that phase but similarly yeah i've thought about memory capacity and a lot of the time with this game like i know my final product, what i need, right, every aspect of that, and i'm starting with nothing, so what i do is work backwards from that, until i have something i can make with my nothing, you know, and just like start at the root and build along that train until i finally have the thing, you know
umhm
it's you know when it comes to like oh i have the thought i know it can it seems like something i can do or i could prove in a sense so i can work backwards until it makes you know i've reached something that i know, it goes right back up
like an analysis process, a big thing breaking into parts
reverse engineering, basically
reverse engineering sounds compelling for that concept but reverse engineering probably means something else, reverse engineering is, you've arrived with somebody's product and you have to figure out what were they doing anyway
looking at somebody else's, but a hypothetical
no, reverse engineering, you've got a done thing, and you figure out what it is
so, i'm looking for more abstract concept
so reverse engineering is not the word that you mean, you mean you're doing divide and conquer, you're doing analysis, reverse engineering you have an existing product and you are trying to figure out how did they do this, often happens in the context of, people have stolen something and they want to copy
i mean i'm familiar with it i was just using it more loosely
ok
so you've had a really good time in middle school with proving, and you haven't had a chance to do it since
not formally
excepting in philosophy,
it's still logic and reason which is not math, it's statements
do you ever find it, uh, applying to moral reasoning?
unnnnn, can't say i have that i can remember
ok
i taught the ethics course once before and i'm teaching it now, and the first time i thought ok, there are rules and levels in moral reasoning, let's see if i can find the students' similarity between the reasoning they are doing, and so we talked about levels of moral reasoning, and sure enough i was able to get them to discuss those, but at the end of the class it was still you know, uh, if i can steal the music i will steal the music, so, uh, it wasn't a complete success, um, let's see. I've been, one of the goals that i have this tracing students' development of their understanding in proof as they go through the computer science curriculum, and as you say, you're not going through the computer science curriculum, and uh, what course were you, so i solicited, you're in 2100, and in 2100 you don't do proofs, but you have the same book as when i taught 2100 last semester, so i know there are proofs in that book, have you um, and they're not of the nice, crisp kind that you had in geometry, they're more what i call handwavy, where they make an assertion and they don't necessarily show you why it's warranted and they make another assertion and it's not entirely clear you know where that came from
umhm
and then, and therefore you he he
sounds like philosophy
um, Have you run across any of those parts of the book yet? I don't think so, because we are only up to Collections, we're still learning about the datatypes, and not so much what you can do with them
not performance of datatypes yet, you will see how binary search trees, balanced binary search trees and you know you're searching through the number of levels is the log of the number of entries, so there's a little proof for that
ok, we've had that at least, doing like big O notation things like that
yes, you want to prove what complexity class something is in, maybe it's log n instead of n, because you've balanced the tree, but there is some more complicated data structures that you'll see, some more complicated proofs, I know that i talked to the professors and most of them don't go over those proofs, (skipped)
so that world of geometry and doing proofs in that world, do you remember having any sense that it translated out of the world of geometry to a broader context, or did it seem like a self-contained
it was definitely a broader thing, it's, you could prove anything using a proof of that nature, you know, it's logical reasoning
umhm
and you apply that anywhere, you know
so, um,do you remember the difference between a direct proof and an indirect proof?
no, i remember those being words that i learned, i don't remember what they are
there are a couple of examples of indirect proofs, one example of direct proof is called modus ponens, "All men are mortal, Socrates is a man, Socrates is mortal."
That's direct, marching through, haven't taken any side turns, let me give you an examples of what a side turn is, for contrast um if you want to prove that you know blah blah blah is true, you want to prove that there is exactly one way to make a prime factorization of a number, so one thing you're going to do, you're going say where there has to be a least one way, if there's exactly one way, you can demonstrated how to come up with one, so now you know there's at least one, and you know what prime factorization is, you have a number and it has factors, or only itself and one which makes it prime, and if it has factors you make use of those,eventually you get down to primes, so there's a method so there has to be at least one, factors get smaller and won't be negative, so has to bottom out. so we have that there is at least one prime factorization, now we want to show that there is exactly one. So now we're taking indirect steps, we've been direct so far, now we're taking an indirect step, we want to prove that there cannot be two or more, so we say, suppose there were two (methods) the opposite of what we're going to do, then we say well we'll call one 2 to the alpha2 times 3 to the alpha 5 etc., we're going to name the exponents according to which prime they are associated with, and those exponents tell us how many times that factor is used, so if we have 2 to the alpha2 and alpha2 is zero, we're talking about an odd number and if alpha2 is one or more, we know we have an even number, so we have factorization with all the alphas being the names of the exponents, we can say we have another factorization and we're going to name those exponents beta, and then we take as a premise that 2 to the alpha2 3 to the alpha3 is correct, and then we take our number and we say we have this factorization, we know it's correct, so we can divide by 2 alpha2 times, and we do that, we get a new smaller factor of n, and if we can divide n by 2 that many times, then surely we can divide n expressed as this other factorization by 2 that many time as well, otherwise it's not the same n. so, we take our number with betas for the exponents, and we divide 2's out. If beta is too small, it's not a good factorization, because if n is divisible by 2, it is, it's not like that depends upon which factorization you use, so ah, and it turns out that after doing that for the 2's the 3's the 5's all the other prime numbers, so, if you run out you know that that second factorization with the betas isn't a factorization, it has to support the divisions, let's say it has supported all the divisions, and you ask, can there be any beta exponents left over? betas cannot be smaller than alphas, what would happen if the betas were bigger, and well that would mean that if you multiplied all of those betas out, you'd get a bigger number than n, so we've shown that each alpha has to equal the corresponding beta
umhm
so that means there's only one factorization, because you proposed a second factorization, but then you show there's difference to it
umhm
so it isn't really a second factorization, so that's an indirect proof, you say well i'm trying to prove only one, why should i say let's have two, that's an indirect thing to do, but when you do it you get around to saying, if you try to have two, you fail, so there has to be only one, that's an indirect proof, and it's a, there are um basically when you say ok so that my target, i'm going to assume my target is incorrect, and then you slice the problem down and you eliminate pieces of possible answers until you get down to where your desired answer is, and that's the only thing that can be true
ok
so, um, do you remember doing any indirect proofs, now that i've reminded you what they are like
i barely remember doing any proofs, i just remember the act of doing them, not any specific ones
in your proofs some students difficulty, and what they say is, you're assuming that the answer, so I didn't the answer i said sup if I want to prove there is exactly one, let me see what happens if i consider the possibility that there might be two
umhm
so, i no longer see it as assuming the answer i'm going for, and i don't can't see why students will think of it that way but i know for a fact that students do, not just because they've told me, but because in the literature, other students have told other interviewers that same thing. so, i'm curious now that i've just shown you one indirect approach, does it seem as if i have somehow assumed the answer in the process
i would say no, it's a less intuitive way of doing it sure, but you can prove a theorem by proving that it can't be any other version, you know
if it's not false, it has to be true, that's all that's left
yes, it can't be null you know. not in real life.
i wonder if that's problematic when you go to philosophy, because in math we have the law of the excluded middle, something is either true or false, but if you cannot prove it false, you allow it to be vacuously true.
in philosophy, i don't know whether, because i don't know whether it comes down to such crisp definitions of
what we're doing right now, this issue does come up a lot actually, you can't say it's true until you've proven directly that it's true, and you can't say it's false until you've proven directly that it's false, you can hang in between there, just kind of shrug at it, you know
it's undecided
yeah, a lot of the time whatever talking about in philosophy doesn't actually matter
hehe
it's all theoretical, yeah, it might be but it might not be the guy we're studying right now DesCartes, he's very of the you can't assume it's true unless you prove it true
inaudible
ok, so what he talks about it um do i exist, does everything exist, right? and so, i friggen hate this part, i think everything's real, i think this zip guy is real, because i just assumed my whole life that its' real but at the same time there's nothing to prove other than my senses and what not, but who's to say that my senses are real, you just keeps breaking everything down until he finally gets to the heart that well i think, therefore i exist
so he's cogito ergo sum
yea, so he gets to that, and but until he's established that, he can't he says that these aren't necessarily real, they are not necessarily false, but, we can't say they exist, so after he has established that he exists, because he observes himself to be thinking, um, where does he go next?
uhm, let's see he starts the main thing that he uses after that is that the phrase clear and distinct um possibilities, perceptions which basically is something that just comes naturally to you, like you think about it and you just know it's true.
so, like, i don't know, it's hard when using it in the context of Descartes, something you can't possibly think of something that would prove it's false, it just makes sense, it's innate, you know, so he uses a lot of that, clear and distinct innate perceptions
hm
to start building off of and that's what i don't like in this, because a lot of these perceptions, it's like well maybe you're just not thinking hard enough about it
he was a mathematician as well,he woke up one day and invented analytical geometry
and this whole thing we are reading is basically a selling point so that people will buy math, you know, the things, yeah, so, it's all trying to serve that purpose it's not actually like, kind of ponder do i exist? he's just trying to sell his research
do you know how he died?
i don't
he lived at a time where mathematicians were sponsored by royalty, it's not like he could go out and work for BASF or something, he was in the court of a princess or queen of Sweden, and he i don't know that he was necessarily sickly, but preferred to stay in bed late of a morning, and here he was in this very cold climate working for some royalty who said you should get out of bed earlier, and he tried and he got sick and he died
yes, he was a wonderful thinker in the mathematical domain, and then we have Cartesian coordinates and Cartesian products
umhm
Do you ever, in philosophy come across Pascal?
not in this class, but i 've heard of Pascal, Pascal's triangle right, the fractal type thing, maybe
Pascal's triangle definitely the person and he wrote a book called Pensees which i guess means thoughts or something, but as to the fractals, the only names i have associated with fractals are Benoit Mandelbrot, it might have something to do with Pascal i just don't know
so what do you think of fractals since you mention that?
They're pretty, I don't really know much about them we briefly went over them in i was to say my AP calc class in high school after we had taken the exam and nothing else to so, so let's talk about fractals, i really don't remember too much other than what they are
They have self similarity at a smaller scale, so as you zoom in on something, the shape some how remains the same
umhm
and there's a recursive equation that describes it
ok
and now you know everything i know about fractals
apparently it appears in nature al lot,
i've heard that when people want to draw simulated lakes, this matters to you for your games, you want to draw pictures in your games, if you want something to look realistic and be easy to compute, in other words you are making up the scenery, you are not taking a snapshot from somewhere, you can use fractals, a person is zooming in on the edge of a lake it continues to look like a lake you never get to a point where suddenly it's a straight line because you got bored, fractals are very helpful, being a compact simple small equation, you can calculate it, you can constantly use it to calculate without overloading your computational complexity that you need
it's very interesting though, yeah
you know you can draw a mountain, mountains that continue to look like mountains as you zoom in, other natural artifacts, i don't know what happens when you go to man-made structures,ah, i don't know what your games are looking at
they're very simple graph
ok, so, do you see the the reasoning processes that you're getting in philosophy as applying to later courses, inaudible
um, i mean i'm just taking this one class for the W, so, but within these by decartes that we're reading, there are 6 chapters and every chapter builds on the last so it's basically one giant proof, there's that,
yeah, so does your class ask you to produce proofs, but they're sort if wordy ones
yes, which i hate, i would rather produce a proof that's like 1,2,3,4 you know as opposed to an essay on it, but he's really vague on us pointing out which parts of the proofs we don't like, you know
ah
um,
where it seems like he's like descartes,
pushing something through without being thorough and careful
what's clear to one person is not necessarily clear to another person. i remember trying to get my mother to tell me the word red. She was reading me a book, and i was pointing to all these things, what they had in common was that they were red, and she wasn't getting it, i'd point to a red brick house and she would say house and i'd point to a red truck and she would say truck and i'd point to a red ball and she'd say ball, and she remembers also, that and how frustrated i was until she finally figured out that i was trying to get the word red out of her.
ok, and in the business courses do you ever do anything that looks like proofs
no, definitely not, he he
so you never have you know i'm reserving a conference hotel and i have to prove that i'm not going to need more than so many rooms or so much food?
nope, everything is pretty much taken at face value in business you know, as far as i can think
maybe there's somebody else just overwhelming find some inaudible
i guess maybe in accounting you would find that because you're trying to balance everything so you have to go kind of step by step with that but i don't really do much accounting, for some reason i remember geometry better than i remember my accounting class, it's just like basic addition and subtraction, algebra you know
isn't the interesting thing in accounting the judgment to classify things? No idea, just balanced equations at like a 7th grade level, pretty easy. they you know everything in business, yeah we know this you can use it, it's never proving it
Well, I really appreciate your coming by, and i would be glad to buy you an ice cream,
i'm going to work in a dining hall after this
ok, so, that's part of the exchange? when you work in the dining hall you get all you can eat.
yes and no. We can't of take a little bit of advantage of it.
Sorry, I didn't mean to inquire in that way
That's alright.
I had a friend in high school who went to work in a candy shop, her name was Cindy, i forget her last name, red hair, beautiful face, i asked her, how can you resist eating all the candy, and she said we're allowed to eat anything we want and for the first couple of days, people eat a lot of candy and then decide they are done with that, their appetite for candy is used, if we want one we take one but mostly we don't want. That was a good way, if they made the rules the other way around it would be tempting people to cheat, just let them, and they don't.
i mean this is like all kinds of food, so it's not that you're going to really get sick of it, so you take it when you can
I like the dining halls the few times i have eaten in them.
Some are better than others,
We will sign off. Flash, flash
line52time540
Professor Russell on beauty in proofs
and i can do that, and now I just want you to say that you know I'm recording
yeah I know that your are recording
so um prof.rota was talking about um what mathematiticians found beautiful in mathematics including in proofs, and one of the things that he pointed out made a proof beautiful if it were very short, somehow a directly to the heart of the matter
right
and uh other researchers have also written that brevity in proofs makes them beautiful and i wondered whether uh you thought so too
yeah, i mean i would basically i would basically agree with that, although i mean i have to say that um i think there are a lot of situations in mathematics where both from structural and even from aesthetic points of view, um, there can be reasons to prefer long proofs that are explanatory over short proofs that are
inaud
slick but obscure, so, there's some very famous examples of this kind of thing where we know how to give short proofs of things that are sort of 0 knowledge, that is, they um uh they show you that something is true but they don't do a good job of telling you the story of why it's true
yes, like,a where's waldo puzzle where you say here's waldo
yeah, and so i mean it's kind of interesting that that gian carlo uses that metric, because you know combinatorics has to be one of the major playgrounds where this this distinction between you know short proofs and explanatory proofs is really um is really profound, there are lots of situations in combinatorics where by like counting methods we know how to show that certain kinds of objects exist, and those proofs can be very short but um they don't tell you how to build, they just tell you that they exist. and so you know a great example for example is um uh like the notion of expander graphs, we knew that they existed and people struggled for years and years and years to actually give constructions of them and finally you know the number theory community, gave us some beautiful constructions, and so you know in that case, in that case, you know i think that um that even from the perspective of beauty there's something to be said for the explanatory power of a proof um you know as a dimension of beauty that is perhaps you know inconsistent with the dimension of brevity
ok, i was also interested in attention span when i was laboring under the impression that brevity a main component of beauty, i thought maybe it had something to do with being able to pay attention to the whole proof at once, ah, how about these longer proofs in combinatorics can you pay attention to all of them at once? or is it something that you have to sort of scan through
um, well, i mean i guess it depends you are understand it, if all you want to know that the thing is true then um a brief proof you know may have both um both
no, it's not all that i'm getting it is that you know it's true i want to experience it as beautiful
um, well, i mean i think that brief proofs that are == 0 knowledge can also give you this thing in aud ible which is that i think a lot of people find proofs beautiful if they are somehow unexpected
yes, that's mentioned in the literature
so definitely that's an aspect i guess that's relevant, for me personally one thing that makes the proof attractive is that I can remember it, so long complicated constructions that have a lot of detailed parts and pieces are frustrating because they are very hard to catch, work through them from scratch or you know , cache a lot of detail, proof, whereas, inaudible
property that you can retain them and communicate them to your peers easily yeah there's definitely something to be said for that
a propos of that i once saw a proof of Zorn's lemma which the instructor described as delicate. He did not want his elbow joggled whilst he was showing this proof.
un huh
is that an example of what you're saying, long with many parts
yeah, could be, so for example, going back to this business of constructions in combinatorics some of these are enormously intricate, so you know, so, you know you're typical combinatorialist is trying to work with these things or discover something true is probably really caching in their head both of the proofs, both the simple essential proof and the complicated constructive proof
my interest in this is because of research says that what students find intrinsically rewarding is easier to remember. and i think of beauty as one form intrinsic reward
sounds very reasonable.
Thank you very much
yeah, sure
line53t4132
ok, uh it's Friday this is matt and uhm tch he's going to start by saying that he has read and sign the consent form
i did and read and sign the consent form, and uh
thank you.
That's all i need to say about that.
yes
ok
so, i would like you to tell me whatever you remember about data structures.
(lots about data structures. then, at 33:07.9)
I would say I am quite comfortable with both (these being recursion, which he had in high school) whereas programming and inductive mathematical induction um, but, i don't think that i um i'm not sure that any of the cognitive machinery that i use to deal with either of them is common to the two processes
ok
um i mean so mathematical induction um i mean what when they first tell you what it is, um, you know you give 20 second high level description of an inductive proof and i remember thinking of obviously that works, why are you telling me this, and but then when i actually whenever i have an occasion to try to attempt a serious proof using induction i think i often find myself falling into that you know you're in two parts and i have to figure out what to put in each place whereas when i'm dealing with recursive programming or data structures everything is very visual spatial reasoning um
me, too, i always draw pictures
when i'm navigating a data structure i just visualize myself going through the data structure but when i'm doing any kind of search uh maybe not so much with tail recursive stuff but any type of tree recursive algorithm, frequently i actually think i'm imagining the call stack
umhm
um, and i'm i guess i if i had to conjecture i would probably conjecture that people who don't get recursion are just failing to do spatial inaudible spatial perspective
i'd glad you said call stack, because that's the phrase that i use, having built my own machines, with extremely finite memory, i know exactly, i have to think about call stacks because i can use up all my space, and uh i think students they don't focus on that very much and if they don't focus on it enough to actually realize it's there, they're looking at ok the program calls itself, variables named the same, where's that stuff get remembered anyway, it's all very confusing
so, maybe no one every tries this but, if the students were struggling with recursion, you might show them how to do it with a loop and a stack, see if they get it.
umhm
um, but i've never seen that approach before.
Thank you. That really helped a lot.
i hope so. I don't feel like i was providing anything very useful.
one thing that i find very nifty is that you had no trouble with proof by induction, you know all of those concepts, you had no trouble with recursion either, you had no trouble with those concepts, and when you stand them side by side, you say, you had not noticed any overlap between those two sets of ideas.
i mean i'm not sure i'd say that i never noticed any analogy, but when i actually have to do one or the other, i do it's an entirely different approach to reasoning about the problem
unhuh
um,
so, if
i mean
to prove an algorithm, suppose you chose a recursive algorithm to do some thing, and you had to prove the correctness of that program
right, you would use, you might use an inductive proof. um and the in that case then i mean it's sort of more than just an analogy, there is sort of an isomorphism between an inductive proof and a recursive program, but, um, but when you're doing other mathematical things like you proving something combinatorial statement using induction, there's no process to visualize
oh, i see, ok, alright, There are a variety of ways of processing math in people, and some cognitive psychologists i guess is what they are use EET machines to actually look at where the metabolic activity is in the person's head when they are doing math, and so, and when people learn math, they typically learn it on the left side of their brain, where the language processing is, and as time goes on, um, that stuff propagates to another part of the brain, i don't know that it's necessarily the right hand side, maybe it is, but it moves. in some people it moves and in some people it doesn't, and even very advanced people who are both lecturing math and writing articles in math will retain that processing structure on the left hand side of the brain, I remember reading about some early research on math, oh looky, you can tell the difference between, didn't know that they necessarily knew anything, but math can be done very very competently in these two different parts of the brain
well, yeah, some, it probably coincides with different strengths within mathematics, too, i mean if you compare me and Sixia um she can do algebraic manipulations in a split second, it would take me an hour
wow
but, when you're doing some sort of like trying to prove something in linear algebra maybe I'll just is why something in conventional space, and she has no idea how to go about it
ok, so, you do your math visually, at least you do the linear algebra visually,
right
and you do your programming visually,
but
and you did your proof by induction, is that you were saying you don't normally reach for proof by induction when you are doing recursive algorithms because you do recursive algorithms visually, and you don't do proof of induction visually, is that right?
um, well honestly i haven't had to do proof by induction that often
unhuh,
basically i don't think separate outside of a homework assignment for me
a lot of homework assignments look like algebra, assigning letters, moving them around
right my abstract algebra was kind of easy um just
this is very interesting, the visual component of it, i find even in teaching matlab, when i'm trying to explain something to people i simply have to draw pictures, so there must be it must be pictorial in my mind and i know there are people for whom these figures are not really helpful, it's just that i need to use them to explain
yeah
anyway, you did help me a lot, and i really appreciate it, so
well, you're welcome.
ok, so we'll turn it off.
line55t1925
hi, this is steven kimball and we're going to talk about data structures, and please start by saying that you're read and signed the consent form.
(lots about data structures, useful for some other manuscript)
sometimes i wonder whether um seeing something expressed two slight different ways you know seeing the same thing over again, you're told, ok this is the same thing over again but we're just using a slightly different means of expression brings to the fore the underlying structure
umhm
so, sometimes seeing something in mathematical notation and then seeing something in pseudocode it's like it jumps out at you in a way that it wouldn't in either one of the formats by itself
it could, um, when i learned data structures i didn't particularly find mathematical proofs to be very useful, but that's just the way i learned, a little more visual and not so mathematical, especially at that stage, where you're not really used to even even asymptotic notation, you still don't really know what it is yet,
right, the other students i have talked to have also said that this what i call Landau notation, big Omicron, big O, um was brandnew to them,
umhm
and so though the instructor may be thinking ok now we're focusing on successive division by 2 and how that's definitely faster than going through everything one by one all the way through to the end, um, students are grappling with these different means of expressing these different thoughts
umhm
and there's a professor Mattuck, a professor at MIT has written about teaching students analysis and he points out that one of the things that motivated him to write his book was that students came in from high school, freshman, they were unclear about how to work with inequalities, so you know algebraic equalities they know what to do, flip things, divide by equals, subtract equals, completely competent but draw an inequality it's like ooo ok, fractions, this one less than, want to multiply by -1,
that's news to me
yeah, some students have trouble with that, so if you're dealing with a student who has trouble with inequalities and you say well, big O it's a function, greater than or equal to, over the range, like
yes, definitely some wrapping up that needs to be done, i think that the data structures is a great place for that to happen, um, i don't know how much you mean to separate mathematical proofs from asymptotic notation and you know understanding the runtime of you know different like for example graphs traversals but i think that focussing on those very much would be um would be useful, as opposed to anything particularly formal
one thing that i like about proofs is that they necessarily explain, but, it's like too whom
umhm
you know, depending upon how formally the proof is written
right, formalism
it maybe that a computer solver in which case the degree of granularity is so fine
right
have to keep
right, and the syntax and the way that it's expressed get in the way of understanding concepts
it can, but have many choices about how to express proof
umhm
and so one of the things i'm thinking is we can find some way that you know maybe the proof is now called an informal proof
umhm
but it doesn't drag in you know all kinds of things like throwing an exception it sticks to the minimum and explains in conversational language insofar
umhm
ok, so we're going to say tree, and we're going to have a not a conversational notion of tree, have a computer science definition of tree, also binary tree, but we're not going to get fussed about whether it's a 0 or a 1
umhm
um, that's my, so, i want to contrast the sparsity of an explanation by proof where you limit it to those few things that really are part of the argument and leave out everything else, but express it informally so that you don't lose the person's ability
umhm
to pay attention, vs examples, now, do you remember any examples from the data structures course
umhm
or from the discrete math course?
umhm, um, the discrete math course, um, examples, yeah , yeah, there were examples.
There were, but were they free, uh, you know, in the discrete math course examples sometimes are from number theory
umhm
you know you may be talking about prime numbers,
yes, that was predominantly what we used
so, you're not really talking about, you're talking a lot about proof by induction
unhn
but you're not talking a lot necessarily about the um recursive algorithm
umhm
Do you see any connection between proof by induction and recursive algorithms?
Well, yes. For sure, definitely, i mean, proof by induction is is a recursive you know it's a recursive process that you make, you define your inductive step and you apply it repeatedly, until you arrive at your destination, um
Was that taught to you?
Yes.
In which class?
um, a variety of classes, it was certainly taught to me in discrete systems, it didn't stick, because back then i didn't fully i didn't fully grasp the notion of recursion yet, it was certainly taught, attempted to be taught, but it was a little harder for me to solidify it, and then i certainly learned it again um in oh lord um algorithms and complexity
3500
umhm
uhhuh, and the ground that was laid in the discrete systems course, made it that much easier for you to say oh now i get it
for sure, umhm, definitely
so, in the data structures course, ahm, the connection that i see is if you have a data structure that is recursive in nature, such as a tree
umhm
then if you're going to use that datastructure it sort of suggests to you that oh i could use a recursive algorithm. Now in the pseudocode, you had binary search trees and you had pseudocode, do you remember whether the pseudocode was a recursive implementation?
no, i don't remember
ok, let me ask you this, did you have a discrete class where you had first been exposed to the combination of proof by induction and recursive algorithms, even if the recursive stuff was so it didn't really stick, did you take data structures after that or at the same time
i took datastructures the same time as discrete systems
oh, ok, ok, so, the opportunity for recursive algorithms to really take a grip came later than that
umhm
that sort of has implications for curriculum planning
it does
because uh if if you already firmly in mind what a recursive algorithm was, then when you saw the pseudocode, you would say, oh yeah that's one of those recursive algorithms
yeah, and that was just another goes beyond the purview of your study primary suggestions that i would have for improving more effective curriculum planning
umhm
um, certainly from my perspective early on felt like disjointed very much, different classes it was taking, sometime teaching the same thing in different ways and others times confusing keeping them, distinguish the two, be taught something before you were I guess you don't really need 5.
inaudible especially not inaudible
um, and that was probably my fault, as much as it was the curriculum planning because i came in to computer science later, i started off as a major and switched and i tried to get as many classes under my belt as possible
which, department it was?
chemical engineering for two years
quite different
umhm
i suppose there is computational chemistry, but
i didn't do it, certainly not
so i'm thinking of this as a building, we're starting with the foundation, want people to know how to do proof by induction, and then we want to them to see that proof by induction justifies recursive algorithms
umhm
so, if you don't know for sure as you said it, so they touched on it in the class, but it wasn't able to really have traction, because it was the first time you had run across recursion
umhm
so, if you know shortly after that time, or even contemporaneously in the data structures course somebody were to show an application of recursive algorithms you might not have the sense that you could prove that it was true, you might not feel secure about, oh, if you saw a situation like that you would know for sure that you would choose a recursive algorithm with confidence that it should work
umhm
so, i think the appreciation of datastructures comes from knowing an appropriate algorithm that goes with it, which
umhm
and all the people that i've interviewed almost always they don't know what algorithm
they say ok i understand the principle and we were sent home to implement and had not a clue what to do, and if recursion were firmly embedded in their mind, they would first recognize it when they saw
umhm
and go code, and they would also from the proof by induction standpoint know for sure that it would give them behavior that they needed to exploit the datastructure and get the um resource utilization, the timing that comes, that becomes available when you have that data structure.
umhm
and I think that if every course touched on one of those topics would look back oh you know, you saw this, you know remember you were using proof by induction, isnt' it nice that you can use it now
umhm
um, and then also look forward so looking forward to when you get 3500, you're going to be seeing this again, when you get to uh analysis of algorithms
yeah
remember, you know, this was just an example you know, i'm teaching it to you now, but see how it all connects, so if you see it as, like a building, stories, ok, look down, remember where your foundation is, ok now this is it, now doing our story, and look up, there's going to be story later that builds on
definitely
ok,so, um my teacher who taught me how to do interviews, when you're coming to the end of an interview be sure you as the person, what they were hoping the interview would be about, because
what i was hoping it would be about, ok, i, i, don't know
ok, you're just being nice to let me have an interview
yes, i was happy to give my thoughts, i was definitely helping focused on you know the fundamental teachings of computer science, because when i was taught them it thought that my foundations were not quite you know adequate either from the lack of motivation on my part, or the teaching or a combination of the two,
it's more likely to be that there's a vast amount of material you want to convey, inaudible (or maybe i didn't keep up typing)
there's a lot of material, you have to pick, you have to be expeditious
umhm, uh so yeah no we definitely talked about what i expected
ok, thank you very much
of course, i'm happy to do it.
shut this off
line60t5926
ok, now we can proceed for real
alright, fair enough
so i want to talk about, i want you to talk about data structures, and um i'm more concerned really about students having difficulty than them having a great time and everything went easily um what i'm hoping to do is uh well i have an idea of what might be easier, because it's well known in the cs literature that students have trouble with data structures.
(lots of CSE2100 stuff)
will be a helpful explanation of the material, now um, and i've got this book about how mathematic proofs can serve as explanations but of course depending upon how you write the mathematical proof it can be easy to read or hard so it's like a two part thing, first, could it be expressed in a totally convincing way and could that totally convincing way also be easy to understand. so, um, do you remember anybody using anything that resembled a proof in your data structures class?
um, i took data structures and um discrete systems at the same time
wow
so i'm trying to think but i can't i feel like we saw some models of what like i see graphs, um, and then like some kind of like visualizations of what ... looked like. static kind of models what this kind of was explaining, but i can't remember anybody ever doing a legitimate proof.
ok, but you probably remember proofs from the discrete class
absolutely, yeah
so, um like what kind of proofs do you remember most from the discrete class?
um, i remember doing a lot of proofs with like series, um, and then what was that that was like induction i think we were talking about
proof by induction, yes
yes, and uh i don't know i remember we would like terms and so those weren't specifically like i don't think that the purpose of that was necessarily like the proof itself, but more so like understanding each step, like how to justify each step, so there was like you know i looked from this point to this point, from this premise to this premise via modus ponens, or via modus tollens
right, great, yes
i definitely remember i mean it was three years ago i guess
ok
i don't remember all like a lot of it but
do you remember what a binary search tree is? ok do you remember what a tree is?
yeah, it's like, well i mean uh i don't know if i know that things like tree-like algorithm
yes, so for a tree i'm thinking it's got a node which is at the top called the root
yeah
and then since it's a binary tree it's going to have two children, or else you know maybe 1 or 0 children that like not more than 2.
yeah
ok, so that's the binary part of it, and then uhm the thing that makes it useful for search is that like just like you were searching through if you're old enough to remember what a phone book is, but they used to actually print them out in alphabetical order, like a dictionary, so if you were looking for somebody's phone number, you could open it in an arbitrary place and pick a name and then if the name you are looking for is alphabetically earlier, you know you'd move to the earlier part of the book, and
do that
what
do you kind of do that arbitrarily, at any earlier point, right?
so, um, compared with having a list that was not in any order at all, uhm, it's helpful to have a list in order, because if you jump in in the middle, and you find out you have to go to the lower end, you never ever have to look at those ones that are higher than the middle, you can keep dividing it in half until you get there, and because if you think about a power of 2, you can divide in half only so many times, before you get to 1.\
right
and that number of times happens to be the base 2 log. (slience)
and so if you think of your power of 2 as actually written 2 to the something
right
every time you divide by 2 you're subtracting 1 off of that exponent
silence
right, so, eventually you're going to get to 0, keep subtracting you get to 0 eventually, and that means 1
yeah
and the number of times you can do that is the log, so instead of having to look at every single name in the phone book so you can be sure that your party is not listed there, you only have to do that a logarithmic number of times. so, having things ordered so that you can search in a systematic way um saves you the time, of course you have to pay the time to do the ordering, but once you've done it, if you maintain it, you know, you have that way of searching, which is faster
and so this is what we were talking about with big O, am i wrong? that
you're completely right
uh
you're completely right, in the first case if there is no order at all, and reading something tells you mothing about all the other ones that are in there if you really want to know for sure and the person is not in the book you have to look at every single name before you find out they're not there, but if you have them alphabetically ordered, every time you do a test, you are shearing off half of the names, you don't have to look at.
That's pretty good
yeas, so
yeah
big O notation allows you any constant, not a polynomial, it allows you a constant multiplier in the front, and then you have some kind of formula which in this case is going to be base 2 log and that's it, so it says that if i'm allowed to multiply by any large constant i want, like you know the largest last name if i'm going to compare them letter by letter or something like that, you can throw in some big constant, but the nature of it really as you increase the number of names you have to look through, that becomes the controlling factor, and we call that big N, and so we say that one is O(log N) whereas the unordered one is order of N, which is bigger, for big Ns. That's kind of all there is, i mean that's what big O is, it's making a function, that you can compare the actual and you want a strict upper bound, the actual search time
right
and like that's it, so there's upper bounding and there's lower bounding which is useful for, it's less easy to see why lower bounding is useful but it is, and so they use a different letter, omega for lower bounding, and then if both the bounds can use the same function, they use Theta for that, ...
all that sounds familiar to me but i've i never uh got to the point of conceptualizing it, i mean where you know that ... practical i guess.
yes, that's what people tell me. ok, so um I want talk to you about two things, the proof by induction and i want to talk to you about looking through a binary search tree.
alright
so, if i'm at the top node of the binary search tree, um there's going to be so if it's a phone book there's going to be some person's name, the middle of our alphabet is M or N or something so suppose you go there and the name is Neidermayer, and you say well ok, I'm looking for Abigail Abbott, so now I don't have to look at the second half, because I know that Abbott is less than Neidermayer, so now what happens is, you have the left half of the phone book that you're going to pay attention and the right half that you are not, and you draw those as if they were nodes coming out of, so you have the branch coming out of your root node, and one branch goes to the left, other to the right, and you choose to follow left branch because Abigail's last name is to the left of Neidermayer, and you can skip the second half, but now you're sitting at a node, just like you used to be sitting at at a node, you used to be sitting at a node with Neidermayer in it, and now you're going to be sitting a node with January in it. You know, so you're getting closer to Abigail
yes
but the idea is that the new problem looks a like the old problem. It's a node, the node has two children, you're going to pick which of the two children suits you better, on the basis of whether you know January is greater than or less than Abigail Abbott. So, the general appearance of the thing, of having a node and having two children, and having the left the lower ones on the left and the upper ones on the right, that situation has suddenly reappeared. and in a proof by induction you have the base case, right, which says that if i have only one node i have to check and see whether it matches, uh, but you also have the inductive step, do you remember what the inductive step is?
ye, um no
ok, well, the inductive step is if I know for sure that something works when there are k of them, i can prove that there is a way to solve when there are k+1 of them, so let's do dominoes. If you can knock down one domino, that's the base case, right? But the inductive step says that the domino on the left, if it's close enough will knock over the domino on the right, and because any domino, except the very last one, can be considered to be the domino on the left, you can knock down all the dominos. Does that make sense
yeah, like the whole process is like putting stuff in, everything out, yea
so, there's two parts, there's the base case that says, if i have 1 can knock it over because i am strong, and the other part says that if the two dominos are close and some mystical force is able to knock down the kth domino then the kth domino is allowed to knock down the k+1'th domino, so then we make the combination of those two things, you know, by brute force i'm going to knock down the k=1 domino, and then it's going to be able to knock down the k=2 domino, and now that i know the k=2 domino is falling i know that it will knock down the k=3 domino, the third domino is going to get knocked down and forever, however enumerable dominos, you can knock them down, so now i want to say if i'm at a node i can check the value in the node, and i can choose either the left node or the right node, and because that was a problem of size k+1 and it gave me two problems of size k (levels) or k/2 if you want to count nodes instead of levels, then surely i can keep going making the problem smaller and smaller and eventually i'll get to there is only a leaf, and can look in the leaf and you know if Abigail Abbott is there, you found her, otherwise she's not in the tree.
he-he
Do you sort of see a connection between the induction hypothesis getting from k to k+1, and going from a smaller tree to a bigger tree?
uh
i didn't hear you
yes.
ok
i was really i'm losing i don't get any sound
sorry, yes, i do see it, and that was incredibly elegant
thank you. The elegance comes from using math. The elegance comes from using a mathematical proof, and so what i'm trying to suggest is that what i'm trying to suggest when i write this up is that students will understand data structures a lot better if and and discrete math, too, if we give them the discrete math applications to the data structure problems, so, you know, if somebody i had students coming to me for help in 2500 one came to me and he was so discouraged, he said, we're doing all this stuff with prime numbers and I want to be a programmer, do i really have to know this number theory to be a programmer? and as far as i know the answer is no, and i think i know why they use the examples that they do, in discrete math, it's because you don't have to teach the students very much background, to get them enough number theory to do the proofs, you know, it makes it self-contained, but maybe self-contained is not what's best for students, maybe showing the applications that they're really going to be facing would be better. not all people take those courses at the same time, you did a very daunting thing, taking them at the same time, whichever course is first, maybe discrete math, we ought to apply that to the data structures, and then when we do the data structures course we have a look back and say hey you know remember when you were doing discrete math, this is the data structure again, let's look at this from the other perspective
wow, i think that this that like what about other math, other questions, i guess like even the taking you know linear algebra and multivariable calculus and all of these courses
wow
an kind of same time, i taken the prior to taking to discrete systems and data structures but i remember being in those classes and kind of wondering what happened those kind of never sure if that was like problem solving and just like developing kind of like an approach or if we were supposed to be thinking the concepts we learned in linear algebra and multivariable and applying them.
well, i don't see immediate application of multivariable calculus to either the discrete math course or to the data structures course. um, i'm not sure that linear algebra applies either, but they will both give you practice in using mathematical notation and using reasoning, so, i can see why they might have i think i had to take calculus both semesters of my freshman year even though i was not in computer science so i think calculus is a good thing.
yeah, i always felt like i was ... courses, especially because reading about computer science, when people say computer science is math, it's a lot i was always happy to be in the courses, i think it was always one of like when am i going to have that problem, seeing it like you know, this is the math, like computers science and math really aren't so different, i don't know that i ever had that probably because i didn't go deep enough into computer science
i don't know where that multivariable calculus would ever appear
computer graphics, or applied to that
oh, yes. Yes. I forgot about that, and i even took a computer graphics course way back when, and yes, it is nice there.
it's inaudible maybe but uh or now, tch,
yes, whenever you're rendering shapes you need to know what's in front and what's in back and how they get changed by being at an angle
oh, right.
so uhm, do you remember which data structures you had in the data structures course?
i think i worked with linked lists, um, there might have been one before it was like a version and stacks
yes
and there might have been one more, but i don't remember
well, probably queues and stacks might have come together is a familiar
so, uhm, but you don't remember trees?
uh, i, see i like computer science outside, so i remember trees from like i don't remember then in the context of any computer science that i did it in a classroom.
ok. yeah, some of the papers that i'm reading about in data structures they are contrasting the trees like binary search tree where the smallest element you can think of as being way over on the left, and the you know the highest correspondingly way on the right, vs. trees that have their highest values at the top and their lowest values at the bottom, and apparently um students get these two kind of trees confused. um,
i actually i did learn about trees in the class that's why i think about it so much, but it was confidence, not computer science, which obviously makes sense not obviously it makes sense it's just kind of yeah i remember being in cognitive psychology class and feeling that concepts were easier based on computer science concepts because mind is the computer.
so, um, when they when you talked about linked lists, did they make a big deal about how the linked list could carry you know text strings, or it could carry numbers or it was the same kind of linked list infrastructure no matter what data was stored in it?
yes. I think that we spent a bit of time talking about that.
ok, that's good. um
29:35
some of the students who have come to me for help in that class did not seem to know that.
(there is good stuff here, about data structures)
take you N. Uh, so i think if the proofs were shown in class and then the students had to so you know you write down the proof, and you talk the, e.g., modus ponens part, what's called the warrant, why you can take a reasoning step and then you send the student back with the proof write down for me why it is that you can go from this step to this step i think the result will be that the student will know the data structure. They may not remember the proof, and they may not think up what the warrants are, but in the process of trying to justify the proof, they'll really get used to what the data structure is.
right, that's a totally i feel like that approach is really ... in computer science, too, i love the kind of like the logical process and really trying to break down what was happening as i went through what i was making basically
yeah
and i i think it lost sight of that in the data structures course because i was so focused on like my half but and i don't know like i was getting lost in the actual like programming, and uh in the concept of it and so i does that make sense, like i couldn't get that like i understand this but i can't implement it because i was like trying to implement something that i had no uh yea i guess no concept of
it sounds as if your attention was actually elsewhere, than the data structure, like, the assignment made your attention go to a place which was really different from the data structure itself.
yes.
can you remember any of the assignments?
i, not really. i think that we were trying to i might have one of the assignments if you want me to pull it up, i can't really remember the
line69t5326
Do you pronounce your name Anton'ia or An'tonia.
An'tonia
This is An'tonia and she will you start by saying i read and signed the consent form
P: i've read and signed the consent form
i'm interested in any thoughts you have had around proofs.especially any changes like in my case i didn't used to know that my proofs were good,
and i used to rely on the grade coming back from the course iw as taking, to find out, and then something happened and i suddenly knew when my proofs were solid. so any thoughts you have, or i really liked it i choose programming style supporting proof, anything at all
Part um well first like study this just like what is the to formal definition of a proof
Int: This is under discussion by the mathematical community. The majority of the people believe that it is a convincing argument and the people you have to convince are the mathematical community, so you can use any kind of argument that they consider to be valid, modus ponens that you had in logic, um algebraic manipulations, those are called formal proofs, where you can just move the symbols around and you don't really have to worry very much about what they denote. but there are also proofs where they have a lot of meaning, and but ultimately it comes down to can you formulate a convincing argument, now logical proofs um that are really like bit by bit, there are theorem solvers that can do this, by computer, but the size of the information content with which they are working is so miniscule, that if people were forced to do proofs at that level of detail they wouldn't be able to get very far, so the mathematical community can accept arguments that are on a coarser scale than an individual booleans that you see, does that help
Part: so the question being just um how know how do i know when my proofs are good
That's one
Part really strong memory of my first introduction to 2100 and we were first introducing the laws of logic and we were assigned our first homework problem to um prove something with the laws of logic, and i was extremely lost and it was a lot of just moving things around, trying each of the laws, trying to piece together the proof, and i think that over the course of maybe my first five or 10 they were very just kind of me trying everything, just going in every single direction, putting in every law, trying moving everything around, um after maybe 20 to 30, I kind of saw where i was going and i couldn't i know my first one took me like an hour just to write i think it was a total of 5 steps using like 2 laws um but um after a while it got to the point where i could see it i understood where i was going with the laws and knew which ones to use that kind of make sense?
Int yes, there are reports in the mathematical literature of students going just through that, where they say ok, i know i'm allowed to use contradiction, i know i'm allowed to use proof by induction, i know there's this thing called modus ponens, let me try them on this problem
Part umhm, it takes a while to see which one you're going to use but defintiely after a while and after using them the time that it took for me to kind of react and realize which ones to use went down.
Int so, definitely a learning experience faster
Part exactly
Int more proficient. Did you see any connection between the stuff you were doing in that class that had proofs 2500 with anything in algorithms or any other course that you've had?
Part well um i'm currently in un data structures and algorithms, and proof wise, um we don't do a lot of proof work, he puts a lot of proofs on the board, which i find really really helpful to understand what's going on like earlier today we did a proof on how why you can't do a um sorting algorithm longer than or faster than n log n, with the upper bound, um running through that like i thought i understood why and in doing the proof showed me that i was completely wrong in my thought about this, it's sometimes a good thing because you know if you think your right, and you're not right, that can get you kind of stuck
Int did he draw a decision tree?
Part yes, that's exactly how he did it, he started with comparisons and how the comparisons turned just to n and sorting was log of something
Int height of the tree ended up
Part yes, that's how it was, it was fast because he was like you don't need to know this but i'm going to do it, and um i thought it was definitely really helpful
Int do you remember what recursive algorithms are?
Part umhm,
Int did have they, has anybody shown you how to prove that they work?
Part Prove that they work? As in ... Do you mean like when you do like when you do their trees and throw the numbers back? Do you know what i'm saying?
Int not quite
Part um i know the first time i was had a recursive algorithm, it was the factorial one, so uh what we did was like we wrote it out all the things, and when we got to the base case we did arrows saying this got returned to this place, this got returned to this place, is that kind of what i imagine when you say proving it, right? Um i think that was helpful cause i think recursion so far is probably the thing that i struggled with the most. it was kind of like a total foreign body like all the other math concepts that i had at the time so um having that kind of math of how to think of it was extremely helpful.
Int the arrows, they're a convincing argument. In um so you can see where proving ties in to being able to create and use algorithms, and know if they're going to do what you need. Do you remember any specific type of proof that you had in 2500? that's connected with recursive algorithms?
Part Not off the top of my head. Um, oh uh there was they uh, mathematical induction wasn't that recursion? um i know again i imagine that and i um i actually went to google, because i found that very confusing, and some general google um explained it as the domino effect, and from there it just made sense to me like the whole the whole thing was like witchcraft, how does this work, and i watched the guy set up a couple dominos and like that was actually really interesting
Int so it turns out that in recursive algorithm you have a base case
Part umhm
Int just like, so how does that connect onto the dominos?
Part um the dominos thing was a remember correctly mathematical induction works for you infer k+1 is true and you have to prove k+2.
Int that works
Part it runs like that, so it he was like imagine that if we tip over the k+1 domino and the k+2 tips over as well
Int unhn
Part then all of the other ones will fall, is how, Is that the question
Int The question, I'm trying, which according to the education community is very difficult, for students to transfer knowledge gained in one course on to stuff in another course, so you have recursion, you know maybe in data structures
Part actually let me say um what there was a moment in my uh multivariable calculus and i did this thing where I kind of like around when i sort of thing nonrecursive tell me and i never been to a math class before but we were doing um i want to say is was partial derivatives, and he was solving it and i'm like this smells like recursion it actually turned out within the next 10 minutes he'd mentioned think of this recursively and i'm like so that actually was a moment where i felt like it was kind of like a proof in my mind that i can't remember i could apply to a different force
Int so i'm thinking about a connection between proof by induction and recursive algorithms
Part um i don't think i see it. i mean again i just i really believe like i think of induction as the dominos and the closest thing i cut put that to recursion would be again like each piece falling i guess it's very start of look into my mind
Int that's really helpful to me, i'm going to give you what i regard as hints, and see where it would go.
Part ok
Int so, i remember recursive algorithms when i taught 1010 with scheme, we did recursive algorithms, and we had a template, take this part is the base case
part right
int and this part is the recursive step so the base case so the thing that says, is it the base case or is it not the base case, like an if statement, so it one branch if the base case branch of the if statement were true, we'd have some easy answer to return, empty set or 1 or the number that came in or
Part umhm
Int the other branch of that if was when we're going to apply recursion, and the way to recognize that is, that suppose my program name is prog, it's going to call prog, itself. Now you can have you know peter calls paul and paul calls peter, so it doesn't have to be directly itself, but there's a cycle, prog gets called, prog gets called again and so
Part recurring, right
Int one of the questions you might ask when you're applying an algorithm like this, is , how will it ever end
Part it's because of the base case right, if you don't put it in it goes forever
Int have to be sure it eventually gets there
Part right
Int one way of making sure it gets there, is, start with some number k that's higher than the base case and subtract
Part umhm
Int if you subtract always by 1, you're eventually going to get down to the integer that's the base case. So let's thinking about a recursive algorithm template, now think about inductive proof template, you told me about k+1 and k+2, if you turn that around backwards, from k+2 get to k+1
Part um
Int so what else do you have in a proof by induction besides the k+2, k+1 part
Part briefly if there was some sort of base case, it's been a while
Int there is
Part i don't recall what the base case was
Int ok, so, have another viewpoint i want to take on this proof by induction, Do you know why working with the k+1 version and the k+2 version makes a convincing argument? You can talk to me in terms of dominos if you want
Part go again, it's how i imagined it, i'm trying to imagine like a problem in terms of mathematical proof by induction, because i haven't done it since my midterm and
Int explain it to me with dominos, i know what dominos are
Part again like you assume that the k+1 is true, right
Int umhm
Part and you want to prove that k+2 is true
Int right
Part and that you hit the k+1 domino in order to make all the other ones fall
Int right, alright, so you get to say i get to hit the k+1
Part yes
Int and then after that, it hits the k+2,
Part which hits the k+3
Int and you can go on.
Part unhm
Int so the piece that proof by induction has, the part that you described, is called the inductive step
Part right
Int where you can induce the k+2 case
Part right
Int from the k+1 case
Part ok
Int but proofs by induction usually also have a base case, just like a recursive algorithm
Part ok, oh
Int on the first domino, I can knock it down by hand and then any kth domino can knock down the k+1st domino and then since k is allowed to be 1, you can knock down all the
Part ooooooh, yeah that rings a bell
Int so that's what makes it a convincing argument, because otherwise you don't know whether you can start or not.
Part umhm
Int k+1 gives you k+2, says I can continue, but it doesn't say I can start, so you have to start and continue, then you've got it
Part I suppose starting is a good place to start with most things.
Int so, um, i know that proof by induction has a big presence in 2500
Part umhm
Int can you think of any other kinds of proofs that you have done?
Part um, didn't have class the only sort of proofs that i recall were induction and setting up the laws like defining the laws of logic
Int ok
Part so those were um a lot more tough than using them
Int do you remember what a contrapositive is?
Part I recall correctly that it is when you just negate it,
Int things get negated, for sure, so do you remember what implication is
Part no
Int an example of an implication is, if I know p then it follows that q
Part yes, ok, right, the arrow
Int there's an arrow, right, so contrapositive is going to work on it's a process, it's going to work on an implication
Part right
Int so we would say, I took the contrapositive of the implication
Part umhm
Int so suppose your implication is p implies q, then what would the contrapositive of that be. There is negation involved.
Part that's between not p implies not q and q implies p
Int no, it's neither one of those, it is not q implies not p is that one of the ones you said?
Part yes. I'm very visual, the not p implies not q, right?
Int you start with p implies q, you're going to negate the p and negate the q
Part right
Int and you're going to change the order
Part ok
Int so not q implies not p
Part, so it's not q, ok, and that's the contrapositive is what you're saying?
Int umhm.
Part it seems vaguely familiar.
Int so, for example if you know that p implies q, which has a truth value of its own, and if you know that's true, you also know that the contrapositive is true
Part umhm
Int and if you know that p implies q is false, then you also know that not q implies not p is false. They have the same truth value whatever it is.
Part umhm
Int and it's just sometimes easier to do your deductive logic starting with not q than it is to start with p
Part umhm
Int i'm going to go back to um, you remember quantifiers?
Part mmm, uhm will you remind me?
Int unhn, there aren't very many, one of the nice things, I was reading this transition to mathematics textbook, it said well, there's one, for all
part oh yes, yes
int the other is exists exactly one, there exists at least one, so the exists one is the backwards
part E and the A
int and none, and those are all there are
part umhm
int do you remember how to negate those?
part i remember not liking it.
int mmm.
part i remember inaudible for all was like
int here's one
part i know it's like
int for all people
part umhm
int they are either republicans or democrats. So, suppose you were aiming to prove that that's false
part umhm
int what's sufficient, how would you go about proving that that's false?
part probably they're either republicans or democrats?
YOu want to prove it's false
int yes, it would be really hard to prove it's true, because it isn't
part there are some people who are independent?
int it only takes one.
part umhm
int if you can exhibit one example, it's called a counter example
part umhm There we are.
int what if you had to prove there exists a needle in this haystack.
part there exists a needle in the haystack?
int that's much harder to prove.
part i can't think of anything.
int there's no cute you know counterexample, you just have to take your magnet out and find a needle or not.
part um, do you want to negate that statement
int, not i'm just talking about, how would you prove this, how would you prove that, quantifiers, just you know, you have to prove a for all quantified statement false, then if you know a way to come up with a counterexample, you're golden
part counterexamples are as i remember a lot easier to think of than a reason why something works
int right, so, if you wanted to prove you know that all flags are red
part right
int um, it's not if you want to prove that true you'd be in trouble because it's not true, but showing somebody like 3 flags is not a proof.
part right, umhm,
int so for all's if you want to prove them false, then counterexample will do. If you want to prove them true, something to do with the definition, what it is you are trying to prove.
part think
int suppose you wanted to deal with an Exists. If you wanted to prove There exists is true, all you have to do is come up with one example, right?
part yeah, a lot easier. and to not exist would be the same case right?
find one?
int not exists is hard. If you want to say there is no needle in this haystack. That's hard
part ok, i see where you are going.
int but if you want to prove there exists a needle, then as soon as you have one
part you've got it
int so with forall , to get false, you only need one, with there exists, proving it true, you only need one, the other ones are harder, negations are harder
part ok
int so, um now that we've reviewed that part, can you remember what it was that was hard or slipperier about quantifiers?
part quantifiers, um if i recall correctly well what's hard is the fact that i currently cannot recall at least he's recalling um how to put it down, i know that writing it down like didn't negation of forall was like not for some and or something like that he i probably have it wrong and that was what i got into trouble
int so, you only have two, there exists and forall, so if you start off with forall and you want to contradict it, you say forall this is true, say there does not exist any for which it is false, so you say not in the backwards E,
part yes, yes, um, that took me a little bit however it think that the concept of linking it makes sense, just says like as you explained it now like makes sense
int umhm, sense making is a big topic in education
part umhm
int because you can memorize something without having any idea what it means
part umhm
int just make sounds. After making sounds you can make the words but you're not really paying attention to what they mean, you can start thinking about the meaning what the individual words mean and put them together and then you start dealing with concepts, so um, when the when you start putting the words together building your own concepts, and that's sort of a construction, semantical construction, so somebody can give you a sequence of sounds they can give you a sequence of words, but the mental construction happens inside your own head so nobody can really do that for you
part pitiful thing to work has taught me
int place opportunities in front of you, and some of those opportunities are more useful than others, so that's i think what educational research is trying to find, what are the most effective situations to put in front of people so that the construction happens inside their minds
part don't tell any other student i ever said this, but homework you think i'm that's like a thing that is like is useful, researchers know, but um i wouldn't be doing well if i wasn't doing my homework, like going home after lecture doing additional work, that is, you have to do the work, that is personally for me i don't think sometimes myself a little bit like slower than average, so time spent in to redoing problems, relooking through problems always is just helpful
int umhm. That's what helps me too. in fact one of the star department's star professors in our department, said yeah he just did all the problems, do all the problems in the book, you'll be fine,
part just got an email, is there any additional book problems additional exam, because i finished all the ones he assigned and he didn't answer, very vexing all the problems are good
int back before the flood when i was an undergraduate, um there were these books by schaum, exercise series, if you did all of those, you knew
part everything, do go back
int they were paperback, like 8.5 by 11 or biggish sorts, just problem after problem, it was great
part extremely my weekends
int so let's come back to um recursive algorithms
part umhm
int and data structures, so did you have trees?
part umhm
int um, do you see any connection between processing data arranged in a tree data structure and recursive algorithms?
part um, we do a lot of reverse algorithms on a tree, and i'm thinking specifically like we're doing a lot with binary search trees right now so um i know that doing the um post order and preorder traversal something that like we learned and what's in 2400 we actually did them recursively with code um on the trees and i thought that was really fun, um, it also made sense as well kind of seeing it from the work i had done on paper and then moving on to the screen you know because um in 2500 constructing the preorder and postorder traversals was just me draw my circles and my trees and things, hover, you know really see your trees in your coding, so um if your recursion is more like uh i have to believe that this is going to work, and i feel like the fact that i'd done it out by hand cemented my understanding of how they algorithm worked.
int right, so if i wanted to cement in your mind that the algorithm works
part umhm
int mathematical proof might be a way to go about that
part umhm
int so in fact you might even be asked to prove that some algorithm that you're doing on the trees
part works, umhm
int how would you go about that do you think?
part um, if asked whether one of my algorithms worked, on the spot, it in Sam and I know i was not given a tree to work on it i would most likely draw a diagram, i would probably be like this process moves to here, this kind of like back to um how i was first taught think of the recursion with the arrows. it is a name for that sort of table, jbut just like showing where the returns back to go, it would just probably look like that. It wouldn't be very mathematical.
int ok, well, so let me offer you another way to think about it. Suppose you could prove that your algorithm worked for a leaf of the tree.
part right
int and then suppose that you could prove that a node as long its children were leaves, it would work.
part children were leaves, would work? how would I go about proving that?
int no, suppose that you could prove for any given leaf, your algorithm would work
part right
int and then suppose you could prove that, if the algorithm worked for the children of a node, it would work for a node.
part wouldn't that say all of them worked?
int yes
part ok
int so, how does that it connect
part Dominos! That's what just happened in my brain, cover this tree with dominos.
int so, that had not, this was the first time that you noticed it? Is it the case
part no, i just saw, i never thought of that problem i suppose, i mean, if it's come up to me it wasn't in the context of recursion, that or at least not that i was aware of, am i missing something?
int no, What I'm getting at is, depending upon how this material is taught, it's split up between three classes right?
part yeah,
int and we know that transfer from one class to another is really hard, so that if you teach somebody what proof by induction is, in one class, and you teach somebody what recursive algorithms are in a separate class, and you teach somebody what algorithm on tree data structures are in another class, you don't necessarily get this like mesh, but in fact, as we've seen right now, they are all intimately related. Proofs by inductive style is extremely valuable for proving algorithms operating on trees can work
part there was one thing, my first homework for my uh algorithms started instruction algorithms class we had this one problem and it was a for a grid n by n, like prove that what the running time was
int unhn
part and i had no clue what he meant, he had a diagram and he was like and i walked up to him and i like is this induction
int haha
part he said no.
int oh.
part but it turned out that i ended up doing it by induction anyway.
int good for you.
part it took me way too long, because the answer was literally just the ncubed i think what he was trying to do was try some sets and see it was n cubed for a whole bunch of things but i instantly recognized it as that sort of problem. it's been fun.
int was this a dynamic programming problem by any chance?
part the word's been tossed around. i am uncertain what it means.
int well, one of the aspects of the dynamic programming problem is that you are going to do something along one dimension, and you are going to do something along another dimension that would normally be n squared, but, for each node in that grid, you're going to do something that also depends on n, and that's where the ncube
part that's exactly what happened
it probably was, and it just wasn't labelled that way. I know that i originally lost the problem and seeing a grid i thought ncubed or nsquare, n cubed just, i was going to, um, but uh, math's taught me otherwise
int what um i'm curious what goes through your mind when you are first um faced with a proof in data structures class.
part well again um there haven't been a lot of proofs, um, um, most of the time i'm sitting in class and he's doing the proof on the board, and i'm like following and following and there always seems to be one point where i get lost. and from there it we get to the end and i kind of see it. there's always that part where i can kind of see where you got that like e to f, i see why his answer makes sense, and i could reproduce this but it's not all the way there, and i think that that's kind of been my experience with all of the proofs in data structures
int so if you have that kind of feeling about a proof that's demonstrated to you, it doesn't sound as convincing to you internally
part well i mean there is kind of like that, it's almost like i'm not wearing my glasses for that part of the board, it's um but it makes sense and i believe it of course i'm sure like if i was able to you know clear up that middle part it would make sense however like it came up today with the um proving the upper bound for the uh searches um it didn't completely understand the entire proof however when he threw down the answer on the board i was like this makes sense i see where my original thinking was wrong and kind of which way to kind of send my thoughts.
int so suppose you're you know fast forward you're in some future job
part umh
int and you're wanting to invent an algorithm to solve a problem, you know if it's a safety critical thing, like maybe you're launching satellites into space and you want to be sure you don't want to run out of fuel, rover on mars or something
part scan for it
int do you think you would be inclined to avoid algorithms that you didn't know how to prove?
part i don't avoid anything. i go to google.
int ok
part umi think that in the case where it was safety sensitive, i would probably spend more time than just googling and believing result number 1 I probably try to teach myself and understand it more, um, i would probably in the event that like uh a proof came up that seemed extremely relevant to understanding something, um i would definitely take more time to learn to understand it, make sure that all the steps made sense
int so one of the papers i was reading recently that talked about students validating proofs that they you they are presented with a proof and they want to know you know there's, ok tell us, is this proof really about
part umhm
int um looking at each line and seeing whether the line was true was taking at most students applied i
part i read it like, like code, is this true? is this true? read it like a book, and like it says, there's usually like a point in the story where i get lost and from there kind of make it to the end.
int there's a thing between the lines called the warrant
part ok.
int if this thing is true i can conclude that the next thing is true. If the warrant is missing, the proof is invalid. YOu can list a whole bunch of true things, they don't necessarily add up to a convincing argument
part right
int so if your test for validity, is this a bunch of true things,
part ok, yeah
int it's actually not sufficient, and uh
part is this truth based on the truth about it would be kind of more, right
int has to be a connection
part umhm
int and uh especially if the last line of a proof is the thing that you are trying to prove, right, uh, and it has to be that the prior things make it so
part umhm
int otherwise the only way you could say the last line is true. has to be for some argument haven't mentioned
part right
int so, ah and they think when people are writing lines of a proof up on the board
part umhm
int they may be speaking to the board without writing the word down
part yeah
int or they might even not be speaking at all
part there are a lot not specifically in CS classes but in math classes where I'm just skip a whole bunch of these steps, move from here to here and i'm like ok
int so it goes back to that thing of if you want to do like a computer theorem prover stuff that steps are so minuscule, and there are are so many of them
part right
int that there's not time, so instead use bigger chunks are acceptable to the mathematical community but it's a lot easier for the instructor, the instructor has to decide when they're choosing how to expose a proof
part right
int not what the correct granularity is for them, but what the correct granularity is for the students and of course the students in class they are not all the same
part yeah
int so it may be that some people are getting it and some people are missing it, so it's a judgment call
part umhm
int one of the things i'm concerned about is since it is so hard for students to make the connection from one class transferring over to another class, that if something is the slightest bit unsure in the first class the likelihood it's going to make it over in a useful form in the second class
part yeah, yeah, that is something i'd inaudible yeah, not so much in CS might like but courses like think of something i didn't get that has hindered me in these courses and i just like can't think of one yet but again i'm like sophomore level in my cs courses um in math there have been things where i didn't understand it and moving forward you just missing building blocks it's like playing jenga except you're loving because toppled over
int so it's especially helpful to me to talk to somebody who also has some math background,
part umhm
int can you say something about the role of definitions in proofs?
part mmm. definitions in proofs: um what do you would it be like saying like defining what do you mean by definitions?
int ok. um, there's a style of math teaching not everybody does it but it's a very popular style which is um definition theorem proof
part umhm
int so, um an instructor will provide you with some definitions, and then propose a theorem
part umhm
int and then prove the theorem
part umnm
int and uh, beginning that's just like highschool oftentimes don't rely upon the definition, and when they're asked to prove something for the members of a set, they may take like some element in the set just like in the midpoint, of course sets are not necessarily ordered so midpoint doesn't necessarily mean anything, but they'll pick some member of the set that's easy to work with and say well look it works for this element, so for finite sets say you can actually exhaustively prove
part right
int but not all sets are finite.
part umhm
int so that technique doesn't isn't really sufficient for inaudible non finite set
part umhm
int but if you have a definition, suppose that the set membership is described by a property.
part umhm
int you know all even numbers
part umhm
int then you don't have you can't exhaustively do all the even numbers
part right
int but you can use the property of evenness, that property, and then you can prove something is true because of the property evenness,
part then it works for all even
int because it's the definition of the set you get the set
part irhgt
int is 2100 not all the kids from math, so i was quite interested in how a student talked to me before and i'm going to start tippy toe around, not going to tell you what she said, but she was, she chose to talk about definitions, and so i wonder if you have any sense of you know some kids in the class had math, some of them haven't some kids have had this definition theorem proof style of lecture, many of them have not, um, what's the role of definitions in 2500?
part um, well something that i think would be extra good to throw in now is to say that coming into 2500 i had very little math background um i was home schooled, so um i did uh couple of semesters at a community college in order to put me at like college level math
int umhm
part however, it was kind of a joke, we did very, very little work, um, so i didn't like where a lot of the students were like the use of things i remember in high school they were like brand new to me, so definitions as in terms of um things we defined in 2500 like set and like what like the graph theory stuff was like what a trail was, what a path was
int umhm
part would those be considered definitions
int sure, cycle, path, even graph has a definition
part what's the definition? I don't know how you would consider the problem if you didn't know what you were considering? so
int yes. well put. but people try
part yeah, i definitely think you need to define them, and um, that is the only reason that i don't absolutely hate powerpoints. it's because teachers don't forget to define things, when they are all there. um i know i keep on kind of like switching back to my math courses, but the you mentioned that there's like some sort of teaching thing where you define then say the theorem and then prove it
int unhun
part in my multivariable calculus course often and i love it i just absolutely adore it, the it guy all the things like we're going to talk about definition 1, definition 2 definition 3, this is what i'm going to prove and then he draws it, and it never in a class before have i ever felt that like i walked out of a class like i inaudible the knowledge of this class, contained in the class i've ever been in, and it think it really is because like it taught in the order that it should be, it's like you start from the bottom, you see where you are going to go, and then you go there
int it's built, on bedrock
part exactly
int clearly understood
part umhm, umhm
int so, um, this other student from 2500 said approximately well uh we have definitions sometimes and most of the students kind of zone out when the definitions are being given, and that's not going to work too well
part that happens in all the classes, i, like, sit in the front, cause i know that if i sit in the back i'm going to watch people on their computers doing other things um there's always kind of like after so many definitions it's too much, right? um which is something that in 2500 um it was a lot of content so i could definitely see that happening, um thnk focus on trying to see and like configure the definitions as they were given was difficult because there was no kind of work in between kind of like i said like when given a definition and then given the situation where you're working with the definition, you see like the objective is not cofacent thinking of it that way you remember it you're thinking of it you're going to remember it and all the context you're supposed to use it, whereas, the way that 2500 was taught, it was definition, definition...definition and then like the last three or so slides were like here are some examples, and it was a lot of just reading through the examples
int uhhuh
part um i think that maybe it would have been easier to combat that kind of zoning out if there was kind of like the definition and then using the thing we just topic, yeah?
int yeah, here's the dictionary, come back tomorrow
part that is a bit how that works, but um the only reason i think i like i really, really, loved the book for 2500, i don't remember which it is, and i know that my friends taking it currently have a different professor than i did have a different book as well and they don't like the book and they love the professor, so um i think that the book did a good job of again the definitions and then the examples and they were so many examples and it had kind of like a little about it i liked that i think really was probably the most educational part of the 2500 course for me
int so you know the definitions are what makes possible a good proof, because if you don't agree on what your terms mean
part right
int you can't possibly agree or disagree on an argument
part right
int and find it convincing, um, but you have also seen that the definitions are hard to absorb and using them soon after giving a manageable number of definitions and then working with those would be the easier approach than given a big laundry list
part dictionary like you said, umhm
int i think it would be fun if the if 2500 treated examples in datastructures. and then datastructures went back and proved that things that were right, so that the courses echoed each other,
part you'd think it would make sense. um i'd like i'd think about a lot of my friends in data structures did not like 2500. the terms why did we take this course? applied to that, i know i've heard ... people saying that. look at this, we did this kind of tree thing and recursion we did merge sort by hand do you guys remember that it was so much fun and they're like i don't know, i don't know why we did this so um i think that they were kind of a little bit more into blocks, a little bit less of that
int it's very eerie for me to hear in audible, i have one student who's a very good student, i don't why we spent so much time on UML, eyes were big
part i um, that was me
int no, it wasn't you
part no, it was how i felt, then you told me it was important and i believed you. so i understand, i very much understand
int do you think it would be a good exercise to ask students um why what they think about why this course was useful? i mean if they're saying a semester later, i don't know why, what use that course has
part right
int um, it how would it be if you know like at the end of every homework like, no points or maybe extra credit points saying, what do you think this is for? What do you suppose this is for? It calls for an activity that is called reflection.
part yeah
int in the educational literature, and reflection is supposed to be a valuable exercise
part right
int, i just wonder whether, you know what would happen
part if you issue points then i think they will work at it
int
part i've learned that about like every single homework, i see it i have it and i'm just like excited so i'm sure that if you wanted like something like that it would definitely happen. um whether or not people would be like genuinely reflective about it though, that's always hard to tell
int inaudible
part um i i'm very like um feel a lot icecream
int ok
part it could be waiting for me in my room
int what i want to know is um actually my teacher taught me how to do interviews told me always to ask um what were you hoping i would ask, what were you hoping to talk about
part i can't believe, i knew that i was eventually going to ask a question what are proofs, i knew that was going to happen, and other than that i really didn't know what i was walking into
int ok
part good question
int thank you i really appreciate all the stuff,
part this is um i really into education, like, i um it's sort of thing like more stuff like this happens like i assume that i would i would be learning even more and i'm all about just knowledge per minute
int ok, i'm going to close it out now
line74t3529
It's wednesday 11th, i'm here with Jared Bassett, and we're going to talk about proofs. Please start by saying i've read and signed the consent form.
part um i'm jared bassett and i have read and signed the consent form.
int ok, so i would like you to reflect on your exposure to proofs. maybe start with geometry, i don't know some people have proof oriented calculus, you probably had 2500 um just anything you remember about them aha moments, are good ha-ha
part um i don't know well i guess originally when i first started coming across them i just wasn't such a big fan just you know just kind of proving silly stuff like ok this multiplication you know works out this correct way
int umhm
part um, and so i didn't quite understand you know how how it was all important really, and it wasn't until you know taking some more the higher level classes i suppose in using proofs
int umhm
part um you know just proving like you know if p then q then this happens and building off of that
int umhm
part that it really started to ah i guess cement in me, and i was like oh now i see like why this is all important rather than just kind of using small silly little math problems for it it was actually a bigger, use
int what kind of examples, mm, seem like a bigger use, are they ones that you;re envisioning yourself or that other people showed you or both?
part um, just more the problems in class, um, just being able to use them and just using them for finite state machines and stuff and all the use with computers that they have
int yes, so, you can prove things about resource use, as the number you know some measure of your program, the number of elements your program is handling, goes up, so you have those asymptotic complexity measures, how much memory, how much time, execution time's important, but people are also concerned about power utilization, especially running in battery operated situation
part becomes really important with phones and everything else, since, i mean they're getting more and more powerful but you still need to watch the battery management and all the resource stuff cause doesn't happen quite as much as an actual computer still
int yeah, you're putting one of these bracelets onto a wild animal and tracking them, you don't want to replace that bracelet every few weeks
part yeah
int so there are proofs about resource consumption, there are also proofs about correctness, have you run into any of those in your classes?
part um. i believe so. i think but isn't there the a, just the halting problem, trying to prove correctness and that you've can't quite
int prove that you can never show that a program halts? or you can't in general build a program that will assess another program as to whether it halts, and have that work for all comers. um, so, uh, it's becoming more popular now to deal with safety critical applications. to prove that they work through formal methods rather than by figuring out the best tests. um, sometimes testing is just too expensive, exhaustive testing you know can readily become impossible, impractical
part mmm
int um, have you seen any examples of you know proving that algorithms are correct by formal methods? you know, mmm, always returns with My favorite comes from the aviation world, you want to prove that the automation in the aircraft is capable of doing something you know within such and such a cloud height, such and such a visibility, you know, that sort of thing, have you seen anything like that in the curriculum?
part um, i've probably seen it somewhere, nothing is really sticking out to me at the moment
int in like um interships that you do, or any job sort of things that you do?
part nothing in there. um
int did you think it was fun, when you had to do proofs?
part um, in a way
int ok
part i did enjoy it, it was interesting and looking back on it i really did enjoy it, um i don't know if i was a big fan during the whole time, but looking back
int there's a certain amount of rigor involved, and many people experience that rigor as tiring as opposed to filling them with enthusiasm, but there are people who have decided i've got to have more of this so i'm going to go minor in math, so, do you remember any you know any sudden feeling of oh i get this now? I didn't get it before, now i do, anything like that?
part um, possibly, i mean im maybe not exactly the same but in one of my classes now we've been, we had to use finite state machines and ah just building those again and looking back on it, it's been like oh wow i actually understand these, i know how these work, i already understand this material it's really helpful from the previous classes
int you know for sure, you don't need somebody to grade your tests, you know,
part yeah
int and that's a wonderful feeling, it gives you a sense of independence now, you don't have to, no authority needed, you've provided enough authority all by yourself
part yeah, being able to just i have a test question, it was build one of them, and it's like, oh good, i know this, i know that i can get points off this, i'm all set
int umhm, ah, do you see any relation between the structure of any of the proofs that you learned in 2500, say, or that proving techniques that you learned in 2500 with the kinds of programming techniques that you've run across?
part um, yeah, i think just with just looking at some of the proofs um it's kind of easy to see how we get different loops and different cases in programming, just sort of whole if then else statements and while loops you can kind of see that in the proof and so translating it to sort of pseudocode works out pretty nicely
int my favorite for that is recursion, you can do a recursive program and the structure of the recursive program, you have a base case and you have a way of transforming your bigger problem into a smaller problem, maybe you shave off one little part of it, and then you've made it into a smaller problem, but since you're going to make it smaller, you can arrange for sure that the base case will eventually be hit.
part umhm
int and then, uh, you know you can do the base case and usually you can look at it backwards, how the recursion goes down down, hits the base case, you know how to do the base case, and now you know how to do the inductive step which is how to get from the kth size recursive problem to the kth plus 1 size recursive problem, and it maps directly onto the inductive proof
part yeah
int so, um, so i think it's really sleek for that. um,
part yeah, i enjoy recursion, it winds up being really helpful and there was actually a homework assignment i had to do using recursion and so it was really nice but then the next problem was do the ah do it in a way that's not recursion, and i was looking at it and it's like, but why would you ever try and do that
int why would
part it's so much easier this way
int well maybe they were driving home to the people who hadn't realized it already that recursion was the way to go. I suppose you can fairly mechanically turn a recursive solution into an iterative solution if you wanted to. um how would you define you know if you just your own definition of what makes a proof?
part makes a proof, um it's tough i suppose um i guess i would say that using ha using certain theorems that you have on hand you would be able to take um in input and using the theorems be able to work with it to get ah to show that the desired output that you want is actually what you are getting from that input.
int umhm, so the output is what you want to show, and the input is like certain assumptions that you're allowed to make, uhm, proof is a deductive argument that allows you to connect the two things, the things that you're allowed to assume are right, and the things that you wish you could prove are right
part yeah
int so the deductive logic is key
part umhm
int so for example, um, if so there's this joke that was funny at the time that i was a freshman at mit it was you know how to pick your major, right, so they were making fun of people with various majors and i think this joke must have emanated from the math department because um they suggested that somebody in engineering would say 1 is prime (which is of course not true by definition) 2 is prime, 3 is prime, 5 is prime, 7 is prime, all odd numbers are prime, so that's one major's um version of it. Another is 1 is prime, 2 is prime, 3 is prime, 5 is prime, 7 is prime, 9 is prime (like, hello, that's supposed to be an engineer's version) i don't know why they were picking on engineers that day, can you think of a kind of proof technique that instead of requiring a sequence of deductive steps would in fact turn on a single example?
part um, what do you mean exactly by turn?
int ok, so somebody says prove x
part umhm
int and you say, here's an example, and it serves the purpose
part so, kind of like the whole if p then q
int ok, that's an implication if p then q, so to prove that false, what would you do?
part um, then if you had q then you wouldn't be able to prove that you actually had p?
int well, the implication if p then q, so in order to prove that that is false, you'd need an occasion where in fact you did have p, but did not get q
part yeah
int so that would be a single example, and that kind of example is called a counterexample
part right
int so counterexamples will do to disprove some things. I didn't make that easy for you, i left off the not and various things like that, so if you had to prove if p then q, could you would it be adequate to say, well here's a case of p with a case of q?
part um, like both at the same time?
int ok, yeah, right, so somebody says to you, prove all odd numbers are prime. so, can you prove it by saying look here's 5, it's prime, here's 7 it's prime, all odd numbers are prime?
part no, you'd still have to do, if you have the kth term you then need to prove the k+1 term works
int alright, and to have that you'd have to have an inductive hypothesis that takes you from the kth prime to the k+1'st prime, i'm not sure if we know how to do that. In fact we know that all odd numbers prime is false
part yes
int so, you're not going to be able to prove that it's true. ah, what i'm getting it is that sometimes we run across students who have exited 2500 with success
part umhm
int ah, but who will nevertheless hope that they can prove that an implication like if p then q is true by demonstrating a case of p where q is present.
part umhm
int so, you know, 3's and odd, and it's prime, therefore all odd numbers are prime, so, it doesn't work, demonstrably does not work, odd numbers, there are other cases where it does not work
part correlation doesn't prove causation kind of thing
int so, um, do you remember um ever wondering so here's another one that's a popular error, there's if p then q, we know it's true. Start with that, what about if q then p? which is called the converse.
part um. well, can't exactly prove that way
int right, you can't because it's not always true
part because uh, i mean could go you know, if it's raining then it's wet out, but if it's wet out it doesn't necessarily prove that it's raining
int, right, could be the sprinkler
part could have just been snowing, like it is now
int so i have had people who are undergraduate students not not here but in another place who um i taught a course somewhere 2500 and i taught them they could not believe the converse to be true, just because they knew an implication was true, they were all set on that in week 1, we get to week 7 and we have a case where i want them to state whether a graph is planar or not, and prove it, one way or the other. The graph i gave them is this seams on a soccer ball.
part umhm
int so, a soccer ball is not planar to start out with, but, uh, there's a graph on it, and the graph doesn't have to live in the sphere, right, you could imagine flattening out the sphere,
part umhm
int and you'd still have the same graph, so the question is, is that graph a planar graph or not. hhh. and they knew the following implication, if a graph is planar, (p) then the Euler number will be 2.
part right
int so i was disappointed to see a number of students offer to me as proposed proof that a graph was planar that well the Euler number is 2, therefore the graph is planar um so i think there is a time at least for these students there some of them there were 2 times where they got the jolt of oh, converse, can't use it, can't do that. Do you remember that ever coming to you?
part um, i mean i i've looking back i feel like i understood you know going if p then q going that way worked but going the other way wasn't, you couldn't do it
int right, it's not implied
part i can't remember a case where i ever really fell for it
int so i didn't pick a good example, but do you remember any kind of thing like "Oh, now i see!" , because it's the thing that happened just before that that i'm trying to find.
part i'm having to think back a few semesters now. um i don't know, i can't think off the top of my head what a specific aha moment. that would have been
int i took a course in distributed algorithms and i had to do proofs for that course, and i did a lot of proofs and i wasn't confident of my own, i didn't know whether my proofs were convincing to others, and consequently it must have been that they weren't convincing to me. so ah a couple of years later i was working on proofs again, and it just sort of hit me, you can't make any assumptions. every little thing that you want to use as part of your argument has to be proven. and then i was on to it. right, ok. so i proved something to myself told it to a professor, the professor told me i was wrong, and instead of shriveling up, you know, i said let me show you why it's true, and i could, so uh yeah so i know it happens, it happened to me
part but there was a, what, a deMorgan's law
int umhm
part that was suppose if anything a sort of aha moment, just looking at that and seeing how you could go from a and b to a or b.
int umhm
part was it was just a really nifty trick.
int yea
part that you could use
int deMorgan became famous for it
part yeah, um, and so that was just kind of a aha because ah, you know, could use that for a bunch of different things and it was just really useful in trying to prove different problems
int another thing i'm encountering is that some students ok so they've winding back all the way to grade school, in grade school their learning how to do addition, multiplication, division, having equations rearranging, then they get to algebra, having letters, operations are the same, can't combine quite so rapidly when everything was all numbers, a certain amount of familiarity with that, they grasped that algebra has introduced the letters, and they know how to do all the manipulations. but i have a sense that the there's a more profound understanding of we have letters, you know, we can do operations with letters, and that is the letters can be, are, stand-ins for um all the solutions that might possibly be. You say x is 3, ok, not very many solutions to x is 3, but you can say abs(x)=3, and now there are two. um, and you can say, a < 7, and now you have you know countably infinite set of integers, and even more of that if you are talking about real numbers, um and i ran across some students in 3502 who would say ok i've got this string and you know i've got this exponent a this exponent p and i prove something by example, by a single example, by all odd numbers are prime, by 3. Ah, and i had a tough time convincing them that you know for example p doesn't stand for a single number, unless you've got the machine, but in general it stands for a property, which is not defined yet until you have a specific machine, but you can still talk meaningfully about the property in the absence of the specific machine, and those exponents we use for a string that contains so many copies of such and such symbol also stand for not just a single integer that, you know, if only you had the equation you could solve it for x=3 or whatever it is, but rather they stand for you know any number of natural numbers might occupy that, might be associated with that symbol, not necessarily one. so, do you remember running across that usage in 3502, and what that meant?
part um yeah, i remember that, um i know i always like to uh try and prove stuff the other way
int umhm
part try to give a counterexample to it, because uh, you couldn't just give one example why it's true, but you could always give one example why it's false
int to disprove
part it's easier to disprove that way than trying to prove it, that it works for every possible case
int umhm
part um, just because i would have trouble trying to figure out you know how do i show every possible case, how do i do this? I know it works for this one case, but that's not you know like the other examples, it's just not good enough to show that it is true, so i'd i just felt like it's always easier to try to prove by or just prove by the contradiction and if you can couldn't figure it out that way or a if there wasn't a contradiction then you could more easily grasp but the yeah it was true
int it certainly helps you see when you try to prove that something is false and you cannot, those very things that stop you from proving it's false that connect onto reasons for why it is true. You can go after a proof either way. Of course in the segmentations one using the pumping lemma we had to show that there is no possible segmentation so uh you can get systematic about that though, so, uh we've touched on all the topics that i brought to the table, but my teacher who taught me how to do interviews one should always ask the participants, what do you wish i had asked you, is there anything you were hoping i would ask?
part um, not sure after you mentioned pumping lemma i wish i could uh remember that a bit more clearly,
int oh, so, regular languages are the kind of languages you recognize with these machines, i can go here, i can go here, ah, so that there may be, start here, and if we choose to go here if we go here it is because we admitted a 1, if we go here it's because we admitted a zero, so, dot dot dot transitions and initially we get to escape, sometimes called a final state or an accept state, so you know maybe we got here with a 1, and maybe there is some other way that involved any moves, there's more of this machine in here, so for example if i pick this 1 specifically a 1 and specifically a 1, and then, i'm out. one place, ok alright, so we have this machine this machine as drawn get to the accept state, only after 1 very specific string, so you start here, 1,2,3,4,5 if you emit 5 ones, you're there, but then you have to stop speaking, there is a movie with jack nicholson and helen hunt, where he's a restaurant customer and she's a waitress and said i always thought you were perfectly acceptable until you spoke, so, unless you have something that allows you to stay in the accept state, you fall out, and the string is not accepted anymore, a finite state machine, now we want to talk about one, this one's a machine that only accepts a finite length string, so we're going to increase that to machines that can accept infinitely long strings,
part so you put in a loop
int have to put in a loop otherwise you're drawing all day, terminate on a state not a branch, so we have some other so since we're talking about machines with cycles in them, we're talking about uh machines that can accept infinitely long strings, and we're talking about machines that have a finite number of states, when they have a finite number of states, they have a finite number of arcs and each arch corresponds to a symbol in the language, so, by the time i've used up all the arcs there are, if i have more letters in my input string, i must have revisited one of those arcs
part right
int so i revisited an arc, that means because this machine has no counter that says he you know you used up your 13 times around the circle, it has no such counter, it does not remember how many times around, therefore languages that go with a machine like this must have a certain property, you can segment them into the first segment, the second segment and the third segment. Now, x can be of zero length, length of x and y has to be less than or equal to p, z can be of length zero, but you have to be able to have this segment y repeat any number of times including zero
part right
int so, from the structure of the machine we've come up with this nice mathematical formulation, so, by the time you get here, you've hit the loop, that's what this x+y you've hit the loop, and this is obviously you can go around this, that's $y^i$, you're allowed to have x you're allowed to have z,
part x+y is p
int p is the number of states, and it turns out that every time you make a transition, you move to a new state, you use up a letter, so the strings are the number of, the length of the string is the number of arcs, and as soon as you have that many you must have reused a state, and once you rearrived at a state, what this is, once you're rearrived at a state, you've guaranteed a cycle, the absence of a counter means the i can be from 0 to infinity.
part umhm
int so the structure of the language if it can be laid out on such a machine, somebody gives you a language now and says well is it a regular language or not, if you can find any kind of x, any kind of z, the rest being the y, you have to systematically try all the possible x's, all the possible z's, to find these off it implies all the possible y's if you cannot find any mapping like that, then it's not a regular language. Pumping lemma only allows you to prove a language is not regular, so if you can prove that there is no segmentation of strings of the language, For no value of x, for no value of z, for no value of y can we make that language then it's not a regular language.
part and then it goes to show that it's always much better trying to prove that something's not true
int as soon as you find one case you're done. So the structure gives you the properties and the properties give you things you can test, and prove to see whether something matches. and i have people say, well, you know here's some arbitrary string, here some 1's some 0's and they would say well this one you know this maybe some dots in there for y you know this is size of x =3, z=2, that one doesn't work. so i'm done. I would say, no, you have to try different sizes of x and of z, case where i had people uh so they would see proofs where we had an a in for this 3 so a so b over here, and they would say well you showed me for a and that can only take on one integer value, and i said no i showed you for a and a takes on a range, so if a takes on the range, it's not a single example anymore, it's a space of examples, and so it were people who knew about using letters in their formula as in beginning algebra, but they didn't know that they could represent a range, and therefore seeing this formalization without an explanation, um, didn't really communicate to them, and so they could to some extent reproduce a formulation and inaudible but they didn't necessarily know what the implication was that went with it, so, catching people at an earlier stage where it's appropriate to spend time in the course to go over that, that would be art of the solution to helping these people learn this
part yes
int and so that's why i'm kind of exploring around where did these thoughts come to people, i've found some people able to get out of 2500 thinking that they were doing inductive proofs, when they were not themselves convinced
part umhm
int of these proofs, so they knew how to do the manipulations, the steps but they haven't understood and yet you can get a good test grade
part yah
int so it's disconcerting for those people to not really know why, they've done something right but they don't know why it's right, so i'm just trying to find different things like that to make people more comfortable. do you of anything that sort of sounded mysterious and remained so?
part um, it's not somewhat but i can remember back learning the pumping lemma and looking at it for a while, just like, i don't get how this works, or i see how this works but i'm not sure how i'm supposed to be doing this correctly and it did take a while to finally figure it out.
int there are a lot of negatives, and not only is there negation, but there are quantifiers, you know universal quantifiers, for alls, and there exists, and uh, we can grammatically or in speech negate one or maybe two of those, but after that it really helps to have a piece of paper, and say alright this thing, this thing, um yeah i've heard some people at the in the IEEE ACM joint curriculum for computer science undergraduate um now has that as optional material
part humph
int so, they didn't say why, but i think that that kind of reasoning is satisfying for people once they get it, to see that they can do it.
part umhm, yeah it is
int i would like to make it easier, for people to
part then it's always nice getting to the end of the proof and seeing, oh good, it's all worked out, summed up nicely, i'm good
int yes, think Andrew Wiles had 300 years worth of pent up expectation of getting so he's the one who gave the proof for Fermat's Last Theorem
part umhm
int huge audience, well, thank you very much i really appreciate it
part you're welcome.
int, so you have another final
part two
int ok, thank you for taking the time now, it was really good
part yeah, no problem
int alright, so, i'll shut it down
line77t4223
hi this is monday dec 9 ans ozghur and we're going to talk about proofs, so please start by saying i read and signed the consent form
i already participate in this study and i signed already the paper and we'll discuss about um tress um thesis
we're talking about proofs
proofs, yes
you've seen yourself and maybe with your students, about proofs
part yes, um, yeah i um i have seen uh you know i'm a TA for like the uhm one course um department i have been facing some stations uhm didn't like um suffering actually proving some um proofs uhm what i see usually um they are not uh they are not uhm uh depends understanding actually the definitions first, and then applying the proofs uhm but it some students umh just feel they are not uh fully understand the definitions of the lemmas or and they are not able to apply proofs uhm, appropriately, um for example, uhm, for the pumping lemma usually the pumping lemma says um features to beginning, and then tried to use a these pictures to apply some languages and then if the properties are satisfied, then you can say that these uhm languages regular.
int oh. If the properties are not satisfied, you can say the language is not regular.
part and then you prove it regular that's fake language if it is em is is a a regular language or not, they just um just writing the properties, but they are not specify the letters they use and then it's confusing what they are doing you know like for example like they don't specify like pumping length for example, p, but they write, they write and they uh they think they are doing correct things
int umhm
part but they are not they are um specify the what does p what is length, what can just writing there a pictures like 2 or 3 pictures in the pumping lemma and they are thinking they are correct and there's when i grade their homeworks, i say you have to i say to them you have to specify which letters you are using and you have to define these.
int umhm
part otherwise i cannot understand what you are doing. just their um copying somehow they are copying lemmas and um and they are they don't they don't um explain, now what they are doing, and then i return the grades to them, and some of them complaining because they are showing me i just wrote the tree, three um properties and in the book, and i wrote correct, but i say them, i'm telling them you have to you have to be sure you have to convince yourself first, what you wrote here, for example, what is p? What is you know they have to specify p as the pumping length, but giving just three properties is not enough, you know, because you have to convince me you are doing correct things and you are applying this exactly
int so, they read the book
part yeah
int they learned the expression of the lemma
part yes
int the three properties
part yes
int and they know how to repeat that
part, yes this is the biggest problem, you know because they are not uh, focusing their definitions, i mean definitions of the lemmas, right, what is pumping lemma? what are the properties? What do you should start with? They don't know where to start, actually. They are just writing as something they and they remember actually.
int they remember seeing
part yes, yeah class you know but um the proof is like um if you do the proof of something you have to uhm you need all the all things like all definitions,
int all the parts of the argument have to be there
part all parts you have to know, right otherwise it's not complete because prove means you have to you have your judgment you your judgment is uh your judgment is when you are solving a problem your judgment is depending on something that they should be correct, you think some uhm
int some flow of logical reasoning
part yes, exactly
int so these same students, they were making an argument about
part yeah
int why they should have a higher allowance, or whatever, um they would know that there should be some agreed basis
prt umhm
int and there should be some logical steps
part yes
int you know, you think i should buy my lunch every day and lunch costs me a dollar and therefore you should give me at least\$7. begins with something agreed on and moves toward the direction of the conclusion by steps that connect one to the other, so there's a coherency amongst the statements, so i think the students if they were arguing why they should have a weekly allowance because they're supposed to furnish their own lunch, they would know the parts of their argument, these same students, and yet, when we ask them to give an argument in 3502, we don't see that same kind of begin with an agreed thing, we do see that part, but we don't see the coherent reasoning steps
part exactly yes, they are just writing something they remember from class or just the book um but not all things you know we need all things for the proof because the proof because the lemma explains you what you need when you prove something, you have to have piece these things in order to, you know? um
int so i think we have at least 2 populations, i think there is a population which could um, put together an argument if they recognized that we're giving them building blocks for arguments
part yes
int i think there are also some who would not, for example, i taught 3000 and we were talking about moral reasoning, and uh i even gave them a reading on levels of moral reasoning, gave them examples from their anticipated work, so they were motivated and they were alert, uh, and then i asked them to do moral reasoning in a different domain, having to do with say, pirating music
part umhm
int and instead of applying the argument steps they said well you know the companies that make music are rich and we're not so it's ok to take which
but um so some population although if we take it as an intellectual exercise now we're going to use reasoning and here are some reasoning steps, they will do it, but then if they have to do these things on their own, they're going to fall back on some other approach
part yes.
int but i think there are also people who are operating in a mode of it isn't an argument, we have to reproduce something we have seen
part umhm
int just reproduce
part yes
int and i think there people who misunderstand the mathematization itself
part yeah, maybe, because like um you cannot see the like the um the proofs like math in the nature, right.
int umhn
part you have to everything is in your mind, as
int it's Plato's world of ideals
part it's ideas, it's difficult to they are like um faxes from chemistry or other experimental
int hands on
part yes, but math you have to think everything is non mind you don't need any tools i mean
int you need mental tools
part yeah, mental tools
int but, you can't you can't hold it
part you can't hold it, yes, so you cannot see anything if i do these and i will see which color is this, so,
int right, you put the phenophthalein in and it turns pink, and you measure the pinkness, it doesn't happen, it's all abstract
part yes, it's all abstract
int we can like it
part yes, we like it but i have now seen so far the students suffering doing proofs, and explain what they learn and
int so, what do you, what
part actually some small some others like some very good.
int oh, yes
part ever i am surprised, you know because like you can prove something different ways
int umhm
part, right, so some have different ideas, and very good to see them, they exist in, you know?
int it's very gratifying to see, but I'm worried about helping the ones that are not, that's why we're concentrating on them, not because they are the only students we see, rather the ones we are most trying to help
part yes
int so if you had an infinite amount of time, what do you think you would do, to try to help the students?
part i think um actually we are doing the good things, giving homework assignments to see them what they are doing, and how to approach the problem to solve and prove it and we homework assignments it um they learn and they know they they're mistakes, and then try not to repeat the same mistakes later i think it's a good thing if they um because if the student does this efficiently, he will be better than before
int oh, yes
part yeah, but other student didn't they don't they are not conscious
int i think you mean conscientious
part yes
int conscious is like awake/asleep, conscientious is they care about the feedback and use it to do better next time
part yes, what else? hm
int have you heard of this moore method thing? Moore method: there was a math instructor named moore, Professor Moore, and he taught students proofs by giving them a thing to prove and an extremely short list of axioms and said, you know, here you go, just you know, if you apply these 2,3 axioms, you will be able to make a proof go do it
part oh, really
int stand up in the class, he did not lecture, students stood up in the class, ok try it, we'll criticize you, so it was a grueling experience, some professors write that they hated it being in that kind of class, others convinced yes this is the greatest thing, because these people now do it. Do you think that sort of thing would help?
part Um. we should look at like um results, right, we need to have statistics, hopefully, to see if it was because everything you can do, you can try to happier, right, when you do a proof you know just try , and try to pull all the steps, and it somebody know you will see if it's not you know if he's not able to uh somewhere you have to you will see if it's a clear ... or not, if it's not clear to you, you have to go back, right? You have to try, you have to always try to prove, you know, something,
int something of draw an analogy to playing chess. Students learn how to the various moves, and if they know each legal move
part yes
int and they can look at other people's games, and say
part
yes
int yes, that's a legal move, they are all legal moves, same with proofs, legal step, but there's a huge gap between knowing the moves of chess and being able to play chess well, and maybe there is this same thing
part could be yeah, actually yeah you are pointing out this yeah we can uhm we can think as playing chess you know by chess may have proved something because you know if you know like there like in chess, the moves like in math lemmas, you know the lemmas, you know the moves, right? so, but chess ah just took a full people but the game is yourself right, so you have to do alone i mean when you prove something you just uh try everything you're not being like wrong, but it is not uh clear for you somewhere and so it means it's not correct proof, right
int oh, yeah, if you can't even convince yourself, the likelihood of convincing someone else would be low.
This is what i find, i have talked to some students who come out of 2500 and they told me, ok, i know an inductive proof, i feel happy about those we did a lot of them in class, you do step 1, which is find a base case
part yes
int you do step 2, which is you do the inductive hypothesis, if you can assume k then you can produce k+1, and then he said to me, but i never felt good about this proofs, I said you don't, well you know think dominos you can do one, and then the kth domino can knock over the k+1 first he's nodding and saying yeah, yeah, and i said you know k can be one. so the first domino can knock over the second domino and there you go. And he looked at me he was so grateful, i was in shock you know. that that little piece hadn't gotten across
part umhm
int and so he's knowing he has done a good proof because he has carried out all the steps, he was taught there was a list, check them off, i do all my things, it must be a proof, but he was not personally convinced, but after i point it out to him, symbolize integer, and therefore can take the value of 1, you know our natural numbers
part yes
int yes, he said oh, that's it, and i wonder how you seen any student who seems to you to be at that level, that sort of know that they have to do k to go to k+1 but they never took this to thought, oh you know i can combine that with the base case, and i get all the counting numbers
part yes, i haven't faced this, but i can explain some other strange things i faced before.
int please
part and they not pumping sorry, inductive proofs, no like um here some pigeons like, suffering applying this base case, like uh inductive case things long time i saw like a there some students like mix up everything using many letters, you have to specify your base case in a letter like, k for example, but they are using many letters for base cases ok k it calls the 1 and let's say and then k= then they are different letters, t for t and then for k+1, t and k+1, so it shows you know they don't understand definition right? they don't know anything about i mean they know something clearly but um not the whole definition you know?
int so, do you get the sense that we show math because it's a powerful tool, and want them to be able to use this powerful tool, but all they see is we're doing math we're doing algebraic manipulations
part umhm
int but they don't take home oh my goodness this is like a screwdriver, you know, this is like a bandsaw, i can use this powerful tool to help me carry out my reasoning processes
part yes
int it's not like that it's just like they're talking sort of gibberish to us and we have to copy it
part maybe this students care using the math
int excuse me
part scaring using the math
int making them frightened
part yes, because i think for me the most important thing in math in proof is like definitions
int yes
part because without definition you cannot do anything, because the bottom level will be the definitions, theorems, other things, then you can go up
int consequences of the definitions
part you have to something to you know um, trust right? like you use right? but the most important thing i mean i have based, they don't understand the definitions, the math and for other many uhm and applying these definitions and axioms to other tools. I don't know what you know what you understand i don't know you understand what i mean but did do Knowing the definitions well, you know you can do everything.
int i think it, i think if you know the definitions well, and then you start to think, what is the consequence of this, put these two definitions together
part yes
int and i consider them together
part umhm
int and then the consequence arises, i generate that consequence i can use that also as if it were a definition
part umhm
int step by step explore the consequences of the definitions
part yes
int and learn new things that you might not have realized or you might not have been sure of, before
part yes
int lobachevsky says well ok suppose that internal angles of a triangle do not add up to 180, what can we get from that. Well we get a lot from that it turns out. ah. but it they don't think of a definition as a tool, they think ok i memorize the words, i can write down the common words, but there's this depth dimension if you just memorize it and reproduce it but it isn't engaging your reasoning processes, then you know you can't take that next step of saying well ok and then...
part umhm
int the consequence is, and i'm not sure how we are helping them take that next step. Maybe they're just assuming that they necessarily take that next step but i think sometimes they do not, and so how to sort of help them ok now get some benefit out of this, feel good about this, you know
part inaudible when um also like when you are doing a proof and understanding a proof, you just you mean like some examples yourself, give an example, some numbers not get abstract, math is abstract but you can just um specify one example and prove it you a equal b better to understand it
int sometimes i think we should turn around and say ok, here's an example of worked it step by step, now
part exactly
int now you go do one, only the tiniest bit different, but make them
part yes
int copy the steps. it should not be too hard
part yes, even giving example, right, an example to apply the proof systems
int umhm
part and see if it is true, right. but also some um this students are confused if you do if you do give them an example and put the see if the proof is correct or not, it's not enough, giving ... is not enough, you have to generalize this, right
umhm
part just giving example just help you to understand the structures, like.
int yeah
part but um some students when they prove it they are just giving examples, and they
int yes
part and they are thinking i am correct because i choose the example myself and it satisfied the inaudible and it's true, so they are thinking ok, whatever i give, as an example, it will be correct
int serve as a proof
part but it's not correct
int not enough
part it's not you know you have to generalize it, right? you can use some proof, you can give a contrary example counterexample
int proof by contradiction
part we have this too, EM
int one day i asked a student uh i think you and i had both been in the class and then afterwards many hours in the afternoon i saw this student and i asked him, what do you think, do you think we were doing proofs today, he said no.
part he he
int i said, uh, well, did we talk about some things that are necessarily true
part unhn
int necessary consequences of assumptions that we made, 'yes', he said, 'definitely', well, i said doesn't that feel like a proof to you, he said 'well' and i said well you do we were not doing proofs today, he said well you know nobody wrote like 'proof"
part yeah, it is the biggest problem
int i realized that this is what i call syntactic sugar, you know, coming from the language of compilers, you put something in a programming language the programmer has to do it, makes it easier for the programmer to see what's going on, but as far as the compiler is concerned you could just skip it, syntactic sugar that is what that is, and i said you know writing the word proof: on the left doesn't really contribute to the proof, although it may make you wake up a little bit, and he said yeah i guess that's true, so sometimes they don't know it
part even though it's a proof. There may be, ok, say, um they are like um when they are missing like after that they are like dreaming, they are leaving from the class and going to other, like, i mean outside you know they are not focusing
int right, more passive
part, yeah, because the math you know if you miss one minute or one second its then die,
int a hole in your argument is like a hole in a balloon
part you will be suffering, it is important you have to focus like, the math courses, right, you have to focus, you have to give all attention you know, to class and every second you have to because you know
int go back over it later and find
part you lose it maybe you will be suffering all your life, right?
int or maybe they will abandon that
part yeah, and it makes you it makes you pained he-he to math right? and other consequences uh re arise, thinking math
int cannot do it, avoid it
part and other things like, could be could be and um even you know, even you will even you will be maybe you will be uh successful in that career but that moment you hate math, right?
int let me ask you this?
part maybe you will be a good professor, right? everything
int i can remember this was hard therefore i will teach it carefully
have you ever seen a student have an aha moment, now i get it?
part yeah, like, actually when they are again like homework assignments they are doing right, some students like not clear, why is wrong? why they are wrong in that point?
int umhm
part and when i explain to them, given an example, oh yes! right! and they are like very they are surprising and they are like you can see their smile
int yes
part and because they are you are trying to find their minds but problem they are very happy, even they are wrong, even they um their grade is not good, but they understanding is amazing, right? is miraculous, kind of miracle thing for them in that moment
int yes
part right, and they are happy, and like and also like in them this thing because they understand right, they can understand they have this inaudible and that moment they inc is encourages them to
int go ahead events, yes, so do you remember what sorts of interventions you have done that have causes this? Is it the same every time, different every time?
part different, because different uh different problems
int hmm
part and different approaches, ulll solving problems something is better than others worse than others ummm yes but um is it good thing to you know um make them feel you know, comfortable
int unhm
part you can tell them you can do this, easy, and you can explain these things easily, give an example or, make them encouraged, feel happy
int yes
part because you have to take, because i don't some courses should be taken, right, it's not, mandatory
int i think 3502 is required
part they have to allow this course
int i taught discrete math for maryland this past semester
part umhm
int and so for the first i was watching the students grappling with the proofs, and nothing else, but it wasn't the proof was subsidiary to the work, like in 3502 where you're supposed to be able to do it so you can see in , this is not 2500 because it was maryland, in this class the students were rushing themselves, i have to get to the answer, and i said no, you have to understand the process
part ha-ha
int and i said you need to (only to the ones who are mistaken)
take more time, go slowly, convince yourself, each step, look at this, and they thanked me, i would just turn it back, i didn't give them a bad grade, do it over again, till finally they learned it
part they are not patient, right
int they learned to be, it's like a car, you have more torque if you slow down
part proof systems, like inaudible, you have to patient, because when you are the proof should not be you know
int well the proof has to be valid, they were giving me invalid statements because they weren;t taking the tine to understand what they were doing, and i said you're going to take as much time as you need, because if you don't understand it its' of no use to you, so
part yes, exactly
int and they did. They were in shock at how slowly they were required to go
part i see
int because they are able to go at a certain pace in other courses, and they expect to carry out that same pace, and i said no, the power of math is very strong
part yes
int therefore you have to devote to it, the attention to make sure you are using this tool, not just you know write me something, understand
part you have to refer some ideas, something you are using, right?
int and i think they don't see you know we're showing them, we know how to do it when we are lecturing to them, so we go at a certain pace, and they think, oh, i'm going to turn around and i'm going to write my homework at the same pace, but that's somehow we need to tell them, ok, if it doesn't seem convincing and strong and solid to you, it isn't, and you need to slow down until you really understand
part yeah
int and then inaudible convey that, i mean the only way i did it in the discrete math class was to say, you know here's a mistake, so i'm not going to grade it because you haven't got it right yet, and you need to look at this, and i give them examples of different problems and say you can see that this is a modus ponens step, you can see this is a modus tollens step, i gave them easily understandable analogies, like you know, if the soup tastes salty, if must be that the cook put salt into the soup, you know we did, we did converse, in the first week, so we had implication, and you know the implication is true
part umhm
int you have the converse, the converse is not necessarily true. Week 7 i gave them a problem, here's a graph, in particular the edges and the seams on the soccer ball, and the places where the seams meet are the nodes
part umhm, i see
int ok, decide for whether this graph is a planar graph, yes or no, and prove either it is a planar graph, or not it's not a planar graph
part i see
int and they had in their textbook the implication if it is a planar graph then we know that the Euler number shall be 2, and sure enough there were people came back to me well you know, the Euler number is 2, therefore it's a planar graph, no, no that's a converse
part also like them them most problem think they are bringing, they are not uh reading the question deeply, you know like the person asking you to find specific but they are explaining general things but they are not answering the question actually, right, and also like i just remember some students not reading textbooks, they are not they are not if they are not they reading the question and understanding how can they answer, how can they prove, is another problem, like they have to focus a little bit they have understand first, the question, what it means, what it says, actually, then what you need to or sold is the question
int right because the problem statement may include information that is not necessary
part maybe yeah if you you know if you don't understand the question, how can you solve? how can you make an algorithm in your mind,
int it's the depth
part yes
int they're hoping maybe they don't need this step, so we have to convince them they do
part some my observation like uh students in class does some deep actually examples and when the professor gives any homework, the question they're like they're they they are thinking the same question we did in class, right?
int hmhm
part class, and try to write what they learned, but is it's this is not a good because the question maybe asking more things like
int so if they approach it as just some manipulations where they don't have to attach
part yes
int a meaning to it
part yes
int alright well this is what we saw, put something like we saw, here's some valid steps, not necessarily right place
part this is the main point, um if there's a for example the question is like this language is uh regular and if after this uh if you see prove so you have to prove, right, just not saying these language we learned we saw in the class, it was a regular language
int ha ha
part and just not referring this to the class, we just solve, so this is the, is the biggest question the end, right, prove, so you have to write your own um, letters, the words, to prove it, right, jot just enough to just class, we did it, in this minute of the class we did it
int yeah, so, the patience and the depth, they seem to be key, somehow have to convey to the students that yes you will need to take the time and be patient with yourself, and take the time
part yes, you have to be patient
int and it is a tool, it's a tool, you have to master the tool, which is powerful, and when you use it, it will help you
part umhm
int, well thank you very much for taking this time
part you are welcome i hope it helps you
int yes, it does, yes i'm very happy with it, and let me ask you this, though, my teacher who taught me how to do interviews said always ask the participant what they wish you had asked, and i have been very surprised sometimes
part umhm
int and somebody very patiently goes through the interview with me and they talk about, and then when i say what do you wish, then another hour comes out haha
part actually pretty much you asked what i had in my mind and actually it was very big topic this like you are doing and yeah and what is the problem how can we make you know comfortable students to apply proof systems in our how to make them comfortable doing proofs
int we don't want them to suffer
part yes
int we don't want them to avoid proofs
part we want them to love it, right
int yes, they should love it, haha, and it's a shame if they miss out on that
part um, thank you
int ok, thanks a lot, we'll turn off
line80t4931
ok i'm here with michael, it's friday dec 6th, and we're going to talk about proofs, oh, please start by saying i read and signed the consent form
i have read and signed the consent form
great, thank you, so, you took 2500, you may have even taken geometry in high school
of course, i have taken both
did you have proofs in geometry in high school?
yes, we did, it was probably the greater part of the second semester.
Did you like them?
yes. I loved geometry, the proof part was difficult but once you understood it it was very helpful, very useful
so, did you have anything in proof between then and 2500?
um, i did. i took a statistics, i took ap statistics and there was a little bit of proving involved in that, a little bit of proofs
wow, i bet that was hard.
part yeah, that was not fun, but we got through it.
int you get so much power, once you learn how to do it
part yes
int i keep looking at those things and saying when am i going to take that, anova's and all that, i've got to learn how to do that
part very difficult
int and you got to computer science
part yes
int and you arrive at 2500
part that's
int those, when i taught discrete math at maryland, the semester, and i found that people were just initially floored by having to think about things differently, and i don't know whether that's a general experience or not, but, what did you think of 2500?
part i thought 2500 at first i thought it was going to be you know just all math like very add, subtract,do this, take integral take that and when i got there and learned that it was proofs i was a little frightened at first because proofs are very hard at first. Um, as time went on and we learned more, uh i learned how useful they could be in proving things that seemed simple,that you can just prove by example but, that's not the right way to do things, we learned fast that you can't do things that way.
int yeah
part um so i was a little taken aback, i was a little like oh boy, proofs again, i was good at them when i took geometry, so i figured oh it would be just like that, of course it was much different, but at the same time i was ready to start learning. i was ready.
int um, did they tell you what they were for? or just, here's how to do them?
part um they kind of explained to us here's how to do, and they did explain what they were for, uh we learned the different many different types of proof, we learned by mathematical induction which i found to be one of the hardest, one of the most rewarding and one of the most prove it like when you find get it right, you make a base case you do all that and you finally get there you're like ok this works this is really cool, we learned by i think it was proof by contrapositive or proof by contrapositive which was very difficult, or by counterexample, which was good for proving something's not true,
int contradiction
part contradiction, but not for proving something is true, um, that was we did a lot of proofs with induction, that was the main focus, i wouldn't say, but that was one of the main focuses
int, so tell me what makes a proof by induction a proof?
part well it starts off that is you take this general rule that you're trying to prove so you get the theorem or you get the equation whatever it is, whatever you are trying to prove, and the way it works is you you make a statement you make an assumption you start with ok i'm going to say this is true, then you take you make a base case something that you want to go back to so if you know the first thing is true, if we can take the next step, and reduce it to that first step, you know that that's true and everything else is true, so you then you prove that you take the next statement and you show that it's true for k+1 or whatever the variabel is you're tyr, if it's a number proof, something like that, if you can prove it's true for k+1 and you can revert to the base case you can then prove that it's true for all k
int great
part it comes very useful, and professor redacted would be very proud of me for that, very proud,
int now, does that connect in you mind with any kind of computer program?
part yes, of course the first ting i thought of when i saw induction is i thought of recursion, they beat recursion into our brains when we got here whether it was scheme programming which i wish i could say i made it to the end but i didn't matlab we didn't talk about recursion java you a recursion becomes a driving factor for most of the programs you write and do because you learn how useful it is, it's a pain, but you learn how useful it is
int it's so sleek, you cannot hide a bug in there
part exactly, so small and so precise, but one little error and you will you will null pointer for days
int umhm
part i still have my mess about those
int the connection between inductive proofs and recursion programming does not clear to all fo the students
part oh, i mean, it's not and i would say that from so when you look at induction proof and you take you know you assume that this is true, then you take the k + 1, like you increment and you solve back to the base case once you just do those 2 steps, you see that ok it's true for all, when you're writing recursive programming, you know you have your base you have your whatever loop whatever you're trying to reach your base case it's not clear how that steps through for higher values or for what values you input, so for simple, when you compute a factorial it's done by recursion that's the main example they use, that's how they do it, when you start with you know ok 7!, you can say in your brain i know this works you tak 7 and you times it by 6 by 5 by 4 that's how recursion works, and to most programmers and to most kids who see it they understand that right away but when you give them a harder example, something you know when you take numbers out of it, even you make the numbers even more complicated like a fibonacci sequence or pell numbers something like that, it's not as clear so when they write their recursive function they doesn't always make sense they're not sure how to hit the base case they're not sure they get the like an induction proof you get the basic idea but sometimes steps aren't clear, it sometimes you can say ok i'm assuming this is true, prove that for the next step it's true and then so it's true for all k, but you don't always on paper it's a lot easier to see that, and you can see when you hit an error then you do when you're staying at a computer screen and you just get an exception, so your recursive call isn't your whole program, so the first thing you do when you get an error you don't assume it's the recursive call and you don't even think it's in there and the next thing you know it is and you've spent an hour debugging a code that should have taken 10 minutes to write, and you're very frustrated.
int have you taken 3502 yet?
part no, i have not
int the reason i mention that is that there is a recursive proof in there
part really?
int so, you're it has to do with what are called context free grammars, which are actually invented for linguistics by professor Noam Chomsky, but are used for computer languages just as well
part i believe it
int human languages, and um so there's proof in there you have something to look forward to
part yeah
int um, so, you can see the connection with programming, have you seen um proof techniques applied in any of your other cse courses?
part um, proof techniques applied? um not as carved in stone as it's been in um the 2500 and other places that we've seen like recursive calls i only took java programming and scheme programming, but, i can't say i've seen like a hard core i mean i've seen like in uh like one i've taken calc 3 and i've taken uh linear algebra and for the differential equations we do get theorems and we do get proofs that i did have a professor that used to step through all the proofs and do so i have seen like i don't think of them like that i just go along, it's not a proof i have to do, it's just one i have to understand but so i have proofs are apparent. everyone looks at a proof and i think the reason why so many people have trouble with it is they see a proof and they just take it for what it's worth they say ok that's a theorem that's a proof that's true, i believe it, they don't look to see you know how is this a proof and that's where it comes from everyone understands when you standing at a screen like my recursion should work, or my mathematical induction works but it's the steps in between that no one really has an idea about that does for all the it's like a bridge you start at a and you get to c but b is the journey and everyone skips that. understand a, they understand c but they don't understand how to do it
int understanding a proof can be like you know there's that addage about you can learn all the moves in chess, doesn't make you a good chess player
part exactly
int if you know all the moves if you can look at from one step to another of a proof that somebody else gave you, well that looks like a legal move to me you turn around and writing the proofs is a whole nother dimension
part and i think this goes for all the programming classes i've taken here i know that much it's that whole thing like ok i can see all the moves and but i can write this code because i have all the code there, but when it comes time when we hit a 2100 and it was no longer like write this method, write this you know write this statement you then have to this, and there was just a paragraph well write a stock trader than will handle this input and output this output, i panicked, i had no idea, i didn't even know, we learned how to code, but we didn't learn, we learned how to write code, but we didn't learn how to code. the same way as is, we learned proofs but we don't learn how to write proofs. The only place we really saw that was 2500, and it was nice for a change to a i think it helped you know close a gap for me that i mean i'm still not perfect at it, it definitely helped to bring me along which was good.
int Fermat's theorem took 300 years to prove, you can't be sure, um, that you can do any given one until it's done
part exactly, but that's one i think of that the joys computing, now that we have the power and the technology to write all of these great codes and have computers that can run them we can put a lot of things to shame. to prove that back then they didn't have the knowledge so not so good that's not the technology to prove
int so um uhm did you take the course that's about data structures? I forget what the number of that is, 2100?
part i took data structures, and algorithms, 2100
int did they show you proofs?
part no
int oh, so they didn't make you do any
part no they didn't make us do any, they would teach a data structure, and they they would show it a base for an algorithm and they'd show, wouldn't say a base they'd just show like this skeleton code for it
int umhm
part and that was it, and they'd say you know use this skeleton code and this is how you make a linked list, this is how you make a multistep array, something like that, whatever it was and they say ok so go to it, and they design a program around it, that was actually on e of the problems i had with 2100 i felt like we should have it should be almost like a full year class, it should be part 1 and part 2 where you learn at first you learn how to you know like the basic block of code like the diagrams of code that like ok this is how you do this, this is what's normally around it, and what they are and how they truly work and next semester put it all to the test. because it was too much of a , it was too much, too hard, way too fast, and i feel that's like that's the class that most kids get to and they're like ok i know how to code pretty much i've taken java and i've taken object oriented took matlab, took scheme, got there and just got flipped on the side and they all read like you had no idea what you were doing, but, you were taking the skeleton code and you were plugging and chugging you know and just writing until your hands would fall off and it would be enough to get like a 50 or 60 and with the curves you would pass the class and then they throw you into you know algorithms and complexity should be you take software engineering, you take even now i'm in 3666 and we're using mips and even that, even though it's simple to write code in that it's still very hard to understand how the algorithms work and how the we did a merge-sort and i'm just totally lost and i can't tell you how many of those i've done, or at least attempted to do.
ANNOTATION: Here is a student who articulates well understanding why inductive proofs work, and the utility for recursive algorithms, of the simple kind, for example factorial, and how some students have difficulty with slightly more complicated examples like fibonnacci, and then when faced with merge sort, which works because of its recursive nature, and did not understand how it works.
int i was trying to think, i had an idea what i wanted to ask you next and i've lost it. so if you when you were talking about data structures, did they talk about tree structured data?
part yes, they did.
int and so did they talk about what kind of algorithm goes with that?
part um i believe they did, yeah, you can do that class was basically based around sorting, so it was all sorting algorithms you could do, you could do bubble sort but first you constructing construct a tree and bubble up from the bottom and that's how you sort, we learned about was it bucket radix what is it bucket sorts but those i believe were with linked lists, but i believe because a tree is essentially a linked list, put in order, no? not put in order, that's the wrong thing
int even in the beginning, in chapter 2 of the scheme course they start talking about data structure and trees, they had like heaps and stuff like that, that were built out of tree
part yeah
int and then if you look a tree from the top instead of from the bottom, from the top and you handle the top node, and you look at its children, you've got subtrees, so it's like you can recursively decompose a tree
part yes, that's how we i've been i remember back to scheme correctly that's how we that's basically when we learned about trees and we built trees, that was how we, that was basically all all algorithms it was basically all it was you know deconstructing and how you'd pull a node off and you'd have a new tree and once you'd take a node off the top and you push to the stack and then you'd know you'd keep the fifo, first in first, last in first out that whole nonsense, it's not nonsense but there's all complex algorithms designed within inside that
int so, what i'm getting at is you know that the um you that inductive proofs go with recursive algorithms and you know that recursive algorithms go with trees
part yes
int data structures
part so we're trying to put together here that trees go with inductive proofs
int right, so, what i want to toss in another thing is that um proving that algorithms work as opposed to testing to show that algorithms work uh is though as by the manufacturers as a cheaper and better more thorough way to go, because testing is really expensive, so if you can write algorithms that are suitable for proving then you can save most of the test money and have a better product when you're done, and the safety critical world, like the nuclear reactor cooling systems, flight management systems, um you know things like jet planes, you have um are now uh able to be certified by proofs instead of by tests so there's this standard, um in the US it's called DO-178C and it's for showing that safety critical systems work, and uh so C just came out, for many years it was the B version, but with the C version there now allowed to use proof techniques so ah it looks to me as if there's going to be a great deal of money to be made in formal analytical proofs somewhere
part i believe that 100\% but then you go back to it's you know like the reason why i chose to be a computer engineer computer science engineer because that's where the jobs are and the money was. I love what i do now, and i wouldn't trade it for the world, but that was the main driving force, so you take now though that market by proving being able to prove instead of test is definitely more cost efficient, you know what i'm saying you take millions of dollars you would spend to you know put the plane up in the air down you see what i'm saying to do all the hours of testing all the non certified engineer people you got to get a pilot you got to get all that so i feel that that a get man market because how do you we learned here that you know we took it on such a small level, the way you prove, you prove an algorithm works, but then you test it, and you test it over and you test it over again and over again truly, it's almost how you gain an understanding of how it works. and it's such a shame that there's there's very few professors here that not only you know they tell you they say ok, this is a proof, and then they step you through it, say, this is how it's proved, you know, and then you write your code and you test it and it works and it works and the professor go well ok how does it work and you can say back to them well it does this, this is how it tests this, this is how it tests that, unfortunately it's hard to grade and it's hard to assign on a level like that, whereas most professors you know they give the statement, they say, write your code it has to run to this test specification, so you as a kid you know you start writing your code, look at the proof of the algorithm, and you write it out, and you take it on faith and it comes time to test your code and you test it and it doesn't work the first thing you do is you don't look at the algorithm you look back at your code, you say where my code doesn't match this algorithm, where did i go, and students have at the learning level have no way to know is it my code that's wrong , or my algorithm that's wrong, they're going to assume the algorithm is right and the code is wrong, they're going to debug, but whether they get it to run or not, the student will always feel that it's the code that failed not the algorithm provided by the professor, even that they found or they read or you know that was talked about, so i feel like i feel like that market is definitely expanding and there's going to be a few people who make probably billions of dollars they're going to save companies be able to understand the proofs and truly like prove them themselves and step through them and understand how everything works, i can prove it like this, i can do it like this. and being able to take it, put it into usable code data that meets all of the specifications in c or whatever language and then you know ok that's it stamp it that's the task
int i did see some numbers, from a place called software engineering institute which is run by carnegie mellon university and it is, when you take the whole nation, it's actually billions of dollars a year, shocking
part it's the same thing when you look at mechanical engineer, even look at electrical engineer, or an architectural engineer, when you get your PE, your professional engineering stamp, and you can look at drawings and you can stamp that, that proves that you truly understand in and out, everything that was on that diagram, and your pitting your whole livelihood against it, most the way coding started you know it was a few guys fooling around, you know what i'm saying, once you now open up this huge floodgate, you now have hundreds of kids, there are kids in my classes who know almost more than some of the professors, it's terrible to say i know, because they were in from the time they were little, i mean coding reading on line script this, that, look at this, and it's one of those things where you now have people you know what i'm saying, it hasn't come that far yet, obviously now it is with this you can get a stamp that says like this will you know we don't need to test this, this been enough in the mechanical field, enough to know for an engineer, enough things have blown up enough things went wrong that now people have that specification and coding world once again don't have that yet, so we're giving people this stamp and it's going to be great that they can prove it but the first guy who, you know what i'm saying, says ok i wrote this code i understand this proof, i understand this algorithm, that will work, the first guy who gets a plane up there and then it crashes it's going to be huge, you know what i'm saying, it's going to be, now we have to rethink things, now we have to
int there was a rocket called Ariane 5, that crashed, due to a software failure, and there was a rocket that was there was a thing sent to mars, initially didn't work, and the programmers had made a mistake, but the people who sold them the operating system knew what the mistake was, and luckily they had not removed, scrubbed out, that part of theoperating system, so there's this comapny called VxWorks, and of course it's on their webpage about how they rescued the mars mission, but they did, they were able to send, to switch the code from here, to change it to using the part of the operating system that they had provided that they knew would solve the problem, and they did. Imagine how happy those engineers were. It was a lot of money riding on something by the time it's been sent to mars.
part a lot of money, yeah, but that's where it also comes in, too with the whole gap of, you know what i'm saying, there's hundreds of universities there's hundreds of professors who are literally been through the wringer, have seen it all from the basic simple code to writing massive, massive, massive scripts and massive you know code and proving
int don't know what the professors have done
part it comes down how do we most i find it in computer science and computer engineering, most people who truly understand it have trouble teaching it, and it has trouble passing on, so like in the classroom, when you have like a regular you know like a math class, you see a pretty big distribution of you know like you have 20\% of the class they understand fully, you got 70\% of the class who they're willing to learn, and the professor can convey and they can understand, and you have about 10\% of the class that doesn't get it. In CSE i feel you have 15\% all stars who get it you know what i'm saying, they have to learn little, you have only about 10-15\% of kids who can actually sit there and learn what the professor's teaching, take it and apply it, and then you have the other 70\% who are having trouble with it, i don't get it, staying up till late hours to get nowhere. I find that especially for me, it's because i haven't taken coding on top of coding you know it's been some space that i had a semester off, and that semester off i forgot more that i had to relearn and by the time you're building a soft foundation on break some you know it's not a good idea
int that thing about teaching people you know something well it's giving me hard to people, somebody asked me like 8 in the morning when i had maybe 4 hours of sleep, with no warning whatever he said, get up to the board and show us how to do this calculation, it really was like 3 numbers and it was a fraction and a multiplication, and i you know i just like fell back on my old slide rule training, and said well ok this exponent is 9 and this exponent is -10, +9-10 uhm, and so you know at first i'm going to rectify the exponents, and then i'm going to do the rest of the multiplication, and you know cancel the units and i'm done, and so it's like you know, subtract 9-10, 1/10, here's the 3, meters. and they were looking at me like, what is she talking about? you know? and i thought well ok so these kids none of them have ever seen a sliderule, they just don't do their multiplications that way, they do it by punching in, so it's not wrong, it was just like such an off the wall
part i mean the bridge is definitely increasing, it must be like my like done my graduate generation Y we're the new like we're not going to do it like our parents did and everything's going to be different, i truly fear for the generation that comes after us, because my friend's little sister is in first grade and they all have ipads.
int first grade, cool
part they are not going to know what piece of paper and pencil is, my nephew is just go to school and everything will be electronic and he'll never know, it's going to become a dead art, just like everything has, the gap that was there, technology didn't grow as fast, it was very, when you look over the last 20 years it was a huge change, and you look over the past 100 years it's even bigger, it was not as fast growing as it's growing now, it's an exponential growth that started off slow and now it's taking off, i fear for the future, and i'm just happy that the time i'm in right now and i'll understand computers and code them or whatever it do what's on the up and up i'm with the curve, i feel bad for kids who are going to be math teachers right now, math majors and soon they'll be put out of work by a supercomputer
int there is a lot of discussion now about mass education, make this really big movie, that you , since they have very large datasets of students, they're able to improve the courses really rapidly with good statistical data because they have 10's of thousands of students, so, who knows, it will be interesting, somebody asked me the other day, the whole class, he said, how many of you drive, and it's like drive, yeah, of course you know and suddenly talking about one of these garmin gps things, and i thought you know i used to drive without one of those, it's not really like getting the time from the sundial
part i hate to say it i'm one of those, every time i go home, i've driven up from long island iv'e been back and forth to connecticut 4 times with my dad for sure if not more, 5 times with my mother and probably 15 to 20 times by myself, and i still have to take out my phone and plug it into gps, i still go my own way, there's that safety net, now it's not like you know like oh i have to go to my aunt's house, this friends house, give me directions, just give my your address, all over conversation slowly dies with that too, i think it was einstein said, i fear the day that technology will overcome and conversation and communication will cease to exist. and i see how many people go out to dinner and everyone's on the phone and how many people, still communicating texting surfing the web or facebooking or whatever it is, but it's sad, it's really sad how much the art of conversation has fallen apart
int mm
part and i'm the biggest probably one of the biggest offenders of it, i hate talking all the time, i don't know why, it's not like my mother, you know it's somewhat very important, i hate it, a simple text will do.
int i don't even have a phone, and people say, you don't have a cell phone, of course when my kids were little i had a cell phone, but now i don't
part you really don't have a cell phone
int yeah, i really don't, and i don't have a phone in the house either, but then i'm almost always here if i'm awake. My professor who taught me how to do interviews told me I should always ask, what were you hoping i would ask you.
part i can be a very good question, to be honest with you i, i really didn't know, i was hoping it would be more gauged toward the classes i that were taught to me, and the structure than you know how you thought there were, because you like i get to fill out mu evaluation at the end every semester, professor redacted taught very well i mean he did but also it was he taught us like he was able to teach something, tell about something show about something, show how it attained to his life, he showed us all these things about like taking graphs and drawing the shortest points and being able to prove that that's the shortest distance and this line or whatever being able to had a big thing to do with graphics and like showed us how he worked on E. coli and showed us it was very cool to see that, i learned in that class i loved that class, i worked my tail off and i got a b in it, i worked my butt off and it paid off. you go back to scheme programming, you go back to data structures and algorithms, even now, 3600 working my tail off, but the coding just isn't there, you know what i'm saying, it's more about coding than it is about algorithms or proof, it's just just not there, i don't know where the bridge fell off or where i lost it, but every coding assignment i cringe now, like, uh, i have to code, it's like very much, but this is about something different, so about the proofs though, i do see where the bridge is, and i do it's a huge problem and i think if you correct that bridge kids will probably understand things a lot more.
int so, how do you approach a program, i mean besides the cringing part, after the cringing part
part um, first, i look what it is, then i decide if there's any skeleton code, the first thing i do is look at that, i always redo the prompt a few times, and honestly once i uh if i don't understand like not sying if i don't understand the problem if i don't know where to start i ask questions and try to get a little bit, i mean when you're writing java or mips or even scheme, though scheme doesn't really apply, matlab, you can open up the script and you always write, like the main method or main you always start with what you have to start with, like in mips you write the comment block, the code block, starting off data. text, stuff like that you write the prompts your ascii prompts stuff like that, but other than that it's, it's always an adventure to see how code starts
int oh, well, let me tell you what one of the procedures that's used in industry, you get a requirements for what you're supposed to do, you underline the nouns, if there's a noun phrase, you underline it as a group. so, then those nouns, you draw them as classes, in a UML diagram. and then you look for the verbs, the verbs tell you something about the relationships between the nouns. Those turn into lines between the classes. and whenever one class sends a message to another class, that means the recipient class of the message has a method, that interprets that message. and by the time you've got you know your list of however many nouns there are, and all the messages and therefore the methods that have to live in those classes, you know you program is mostly done.
part see but now this is going to be scary part i learned more from what you just said about how to write a program and how to you know start one than i have in four semesters of taking programming. That was the one thing you know and i love him to death, redacted, the first guy we took, matlab with him, matlab i understand, i don't count it as a coding language it's very useful you can play with it all you want i still do work in it my signals homework matlab to me is one of the most useful i know why nobody uses it because it's very
int it's extremely powerful
part
int there are all those add on things
part exactly but i know why it's all the that's right, that's, but he taught you you know it was ok you're objective is this, write a method, write this class, write this method, put this in the method, do this, do that, then you got to object oriented which was also taught by redacted, he gave you a problem, write this method, write this class, make sure you have the main method, was a little less descriptibe than what he gave in the first thing, but you still had like you said take you know highlight all the verbs and the nouns, that's what he basically did for us, then you got objevct oriented, your robots your ellipses, so cool, you got to see programming come to life, not just this is a math or this is a montecarlo, it's a graph with all the little x's, oh cool squares with arrows i can click them and tell them were to go, this is awesome, and then you get to data structures and algorithms and you feel like you know nothing, nowhere to start, you just got to comment, you just got a paragraph, says well write this and do this, somewhere from two classes to that class you were supposed to just get this
int there was a huge leap in there
part there was a giant leap, that's where, that's where most of the problems come from, that's where you lose the 70\% of the class, and you pick up that 30\% who know what they're doing and can just be taught a little and i think that's where you'll find most of your problems understanding proofs and understanding algorithms, that's the first really the first class where you get it, where it's not just you know this is a proof, take it on faith, that's what they tell you to do, and you do, but that 's where you should really well let's see why this works, let's see how this is proven, let's understand this as a whole, once you get that i feel like that's where the gap is for everyone kind of loses it
int thanks
part you take discrete math and you get it, but there was no coding, you know what i'm saying, a few snippets of pseudocode you know this is what the program does, well ok now i can turn this into a math formula, but i feel that's where the giant bridge was, and i know it's i would not say it's scary but of course as a computer engineer, i'm always surfing the web, looking up this, i google a lot of my homework questions to see what other kids have done or other professors have taught they can i'm in a 2000 level class and i find the same assignment or something very similar and it's for a 5000 level class somewhere else, that's a pretty big, i mean, i could understand if that's like 20 2100 if that was 2300 ok like you know but full 2001 class, but it's a huge gap a 4000 level class or like look or maybe they go much slower at other places maybe at other universities i can't obviously study leaves here but i feel like that's where they tried to correct that bridge by teaching scheme early on that's how they did it i was one of the first ones to go and scheme is a great class i loved the fact that i took half a semester of it i'm still using stuff from it, i find scheme you know taught by two brillian professors they know more than anybody should know about but they had also a hard time conveying it and if you've never seen code before i'm going it's all a different language, so i feel like for those that's where you lose another 40\% of the kids and by the time you get to your junior year, you've squeaked through data structures, c+ or c- maybe you had a really hard professor, you keep going you have all these building blocks on top of this shaky foundation thaty's why a lot of kids fall apart, that's why you get a lot of kids who switch majors or try their hardest just to get out and that's why some of the uppoer level design labs you see the group projevct and in software engineering my buddy had a group project, you're trying to help those kids who don't understand it, get by and it's scary that you're going to put someonme like that out in the job market who's going to stamp something now, that's what his foundation, you can blame him, or blame th ecompany for hiring him, but he got the degree but it was built on this shaky foundation
int i did have somebody in the AI course, we had a time project and there was one guy there who didn't know
part no idea
int you know me i'm trying help him, come on guy, feeding him the easiest parts
part and he still can't do it, and i fear that's why i'm trying, i spend a little time on my own, i read books, i don't really practice coding it's kind of hard, but you find stuff on line and the books i buy they say try this example, do this, and i try a little bit, you know it's hard, on top of my scvhool work and on top of my summer job, internships resume, it's kind of it's hard but i do try that's why i'm so pleased i get up to those levels i can alwyas put something into my group, htere are some kids who we get that time on a Tuesd and we have 2 weeks to do it and Thurs they come in and oh i guess you know that the last loop it's not working but like there's this one part that's wrong with it and they fix one part and their whole code works and they did it in a day and i haven't even thought about it because i have so much other work and i have no idea where to start and i know it's going to be so you knw it's scary that the bridg like i said 20 \% they get it that small little gap and a bunch of kids who don't get it, it's hard to correct that problem because it adds time on to a degree and it adds, you then have to teach different classes that may not make sense to teach
int do you think if we had a sort of anonymous forum where students could make comments, like a department forum say, and say, you know just talk to us, give us feedback, we won't know who you are, can't possibly grade
part i can tell you right now from the kids that i work with and the kids that i code with, because you know, we're all cough in the same boat, there's a least 10-15 kids who, not 10-15, probably 5 who just have no idea what they are doing, man, and there's probably at least 10-15 maybe even 20 in a class, i think my architecture class is 45 kids, maybe, who have a lot of trouble with this, i know because we sit there, we talk about it, we I don't know where to start, where do you want to start, i don't know, you know and it's this whole idea well don't copy code and you know don't work with somebody, you can work with someone else but everyone should have different code, and they should which is good because when you work with a group you know you write this one code, and you know like ok I kind of understand that, so let me take it a little bit further, and you change some variables, and you try a different way, you see what that does, which is good because you kind of backtracking to understand what you want, but as the semester goes on, you get more work, you know the class has kind of become important, and which ones you know, and ok i can code for 20 minutes with these guys, and you know get this piece and like try to work this out you know, i get a 60 on the assignment or maybe a 70 and that will be enough, because most of the classes get curved it is a very hard topic it's it's you know curves deserve, i'm not saying, don't kill the curve because that helps a lot of kids i find that there's a big gap of kids that can program but don't understand the the written material and can't explain things and then there's someone like me who i understand all the since i do well on the exams because if there's no coding on them, because i understand what should be going on, what that is, how it works, and how it should work, but i don't understand the code as much as i should and i feel like that's also another it's it's weird i think if you put up a forum or you even just had you know like just sent out something to everything in EE department, no the CSE department, and you know asked honest questions, about did you learn anything in this class, did you understand it, you'd get a lot more responses than you think you would,
in ok, i'm going to do that, i wat to collect, you know, anonymous, people don't have to worry about being know
part you have to get the whole demographic, if you just get that 20\% oh yeah, i leaaaarned everything the teachers were great and everything was fun, it won't be a very good survey, but if you reach out to those kids, it's kind of hard because everytime you get a survye, oh yeah we love redacted, we get the didn't really teach well, didn't learn much, but like still got a c+ because it was curved, so i could guess the professor was pretty good, so you don't get true evaluations because kids think it's not worth it, they feel like nothing will change and even if it does, by the time they see the change they'll be long gone, it's terrible that that's the way that it is, but it's true.
int well actually there's a growth going on right now, prof. Mcc was telling me the department was going to grow by 70\%, maybe the school of engineering
part i just heard they hired a bunch of professors, my 3666 professor, she's new, this is her first year here
int this might really be an opportune time to collect information
part i feel like, like i said, i feel like every professor needs to go in and look and i feel like, they use of course they use a lot of the same assignments because no one wants to write new and that's fine but i think they need to not say dumb down a little bit, but more for understanding less for testing, that's what the tests are for.
int formative evaluation
part i feel like, yeah,
int so, what do you think about like an apprenticeship approach, where you sit down with the legitimately difficult problem and you say ok now how would you do this, and you know, so the student has a go at it, and then the teacher says well consider this other thing, you know, and there is a lot of back and forth
part i feel like that would work, but once again it's hard to find, especially with coding, especially with that stuff, if you're a professor who teaches a different subject like english or you can't you won't write the essay for the kids, of course you won't so you physically have to sit down and they bring you what they write and you sit there you' ve got to change this, you can't say this, how does this affect this, when you get an apprenticeship with someone who is going to help you write code, the first time you meet with them you go oh yeah i'm going to help you and i understand everything, but then the first time they get a problem that doesn't make sense, or the first time they run short on time, it's going to be them just sending you code and you being like use this and i'll explain it to you later, and never gets , I can see by the way things are lined up in the department that that's how it's going to happen, especially if feel like they take seniors who you know are like you get a little you get another student you get an apprenticeship, or you get two, you're going to help them with your code and you get to meet with them an hour a week, something like that, but still
int seniors are so busy, it won't work
part exactly, everybody's so busy, even the professors, yeah you have set office hours and yeah you have but a lot of them do research on their own, and a lot of them, i hate to say it like my signals professor, he teaches because he has to, not because he wants to, and it's terrible because everyone's grade, the first average on the test was 55, and he said he's not going to curve, you kind of have to, you don't really have a choice, or you're going to fail half the class, but he didn't really teach us, but he doesn't care, because he's doing research and that't more important to him, because that's what it's all about you get this great degree and either you go work in the field, you work for a company and make a lot of money, or you truly love what you're doing in the field and you do a lot like you you do tons of research some of it's paid, some of it's not, whatever the case is, you do the research because you love to do it, and that's the those professors they do the research because that's what they love to do, and they teach, because they're already here doing research, so why not, or they teach because we need someone to teach us this is your field of expertise so teach the class, and you get professors who don't care, you know, yeah they offer office hours but you bring them a problem and yeah they'll solve it for you and it's here you go, that's how you do it, and that's it. I have research to do. It's hard, you got to find people who care enough, who will take the time, who don't have, their full time job is to teach, it's not to do research do other things who can truly who can understand they give an assignment and they see how the class is struggling, to not so much give them extra time, but to tell them you know this is how we're going to do it, this is how you do it, lay it out, explain it more, tons of processors they give their prompt so you way you do this, start with your main method, make this array, do all this stuff to the array, yeah that helps a little bit but not much, if you don't know how to make the array and you don't know how, it's not helpful and then you get there and it's due on Tuesd and you come on monday, and none of us are done, we don't get how to do it, but the professor goes ok you'll have till next monday, and to them that's like ok that's good i helped the whole class that's it, it's terrible in some cases it does help and of course oh i've got extra time, all it does is push off the worry. that's it. remember 2100 the day before it was due we'd all be panicking and i'd see the kids strung across the whole building and tues night we'd all be there staring at lab same exact spot, waiting, for someone to go like ok look what i just figured out, i got the main method, now i've got 30 more pages to write, 10 more pages, we got it, it was rough, some kids you know what i'm saying like me i'm not ok with that so i'm doing extra work to learn things and i even switched from cSE to computer engineering, because i like the electrical side of it once i took circuits and stuff of course i still learn coding and i'll still learn, but i make a point to try to understand i don't and to be good at what i'm good at
int so what kind of circuits are you doing?
part right now we're doing, what is it i'm in device theory and analysis, so we're doing cmos, jfets, mosfets, uh, bjt's which i love, i'm actually doing amazing in that, but it's
int congratulations
part but with all that stuff circuits form was a hard class, i took this i can do this, it's simple, learned everything, but the first time you see an op amp, you're like what's that dorito
int you don't want to analyze from physics first principles
part when you first get the bridge it's terrible, but, once it clicks then you can see like, oh, i get it, through the lab, and everything's reinforced, you get it, and it's nice, because you can see it physically you can do it on paper, you can do it coding you don't really have that you know you don't see how you write this whole program pass the variable here, you make your recursive call here, you get to the base case, exit the loop and that's what you have, and it's great, but you don't see those individual steps, you can't fry a resistor, you can only throw a null pointer, you know throw a whatever it is, and you can't
int null pointer is a popular error
part you know what i'm saying, but you can there's no like, you don't get to see it like i have physical press but that's because can't see the variable being passed, you can only you know it starts here and it goes there, circuits you can watch the current, not saying you can watch the current run across
int but you've got the scope, and you can put it in different spots
part you can put it where you want, it's kind of the same thing where you put a stop or a print element, but they don't really teach us that, you know what i'm saying that was one thing i was shocked at, i didn't learn that until i got to mips because my buddy was helping me out, he says you know if every line you put like a print statement you can see where you are in the code or you can see what it happens and like they tell you use the debugger, but no one shows you how to use the debugger, when you debug you're code, they teach you they just look at it, and they go ok the error's here and you go ok i got and you look at it and say i couldn't find an error, you don't learn the tools you need to first off write code, second off debug code
int yeah teaching the debugger some time should be reserved for that, caause you can do print statements, it's always faster to do one of those to stand back and learn the debugger now, every, but i did once make myself lear
part my buddy greg, is still say he's on e of the best coders i know he's a brilliant guy made data structures look easy, and he knew how to use the debugger, and every time he would write his code he would write and write until the code was done and he'd run it and of course it wouldn't work, debugger and after an hour his code worked, it was polished, no extra variables but was efficient, correct, right code, it was great thing
int wow
part and i told him you make a lot of money because you can do that, when there are cheap engineers write these great long programs that are oh you know this is how it's going to work, and this is how it has to work they go but it doens't work and they're sitting there going unh test the variables, you do all this and he can sit there with the debugger built into what hey are writing on ok you're here now, to work, there are very few people who i know can do that i mean i'm sure this is only one university, there are like 1000 kids in the department total including professors, i don't know the number
int someone says 125 graduate student, i didn't know anywhere near that many
part probably like 4 or 500 when you look at a university of 20000 kids like here you realize how small it is and you realize why there's not that much emphasis, back in the day when you went to school, like if you were a smart kid you were an engineer, and if you weren't , you weren't an engineer, the second you tried, you failed, here, of course i had part of the issue you started with, party, aced all my classes, i watched him have to drop out, some from school, some from department, some from engineering itself, became business majors or whatever, but now they make it easier that they don't lose so many kids but then you get what we have now a bunch of juniors and senior who are having a lot of trouble writing code, have a lot of trouble with this but i'll squeak through because i want my degree, it's a big problem
int wow
part that's the way i feel about it, if you ever wanted to know
int ah, so, shall we stop?
part if you unless you have anyu more questions
int no, i don't have anymore
part then that's it
int thank you.
line81t2255
int ok, it's friday, this is patrick, and we're going to talk about proofs.
So, please begin by saying i read and signed the consent form.
part hello there, my name is patrick huang, and i've read and signed the consent form.
int ok, so I'm hoping you'll tell me anything that comes to mind about proofs. like, first time you ever had to do one, or you ever saw one, ah, any thoughts you have while learning them, any aha moments, and confusion, all of that stuff is really valuable to me and i appreciate it.
part alright, as for proofs in general, the first time i got introduced to the material was in my cse2500 class. i forget the name at the time, more of a math oriented course, and there was a lot of like relational er relational truth /false evaluating and
int so, did you see a relationship between what was in 2500 which i think is now called discrete systems or something like that
part yeah, something like that
int between that and other work in the department?
part i didn't
int other classes
part i didn't really notice a correlation between it and other courses. it introduced proofs. a bunch seemed to be mathematical oriented, others seemed to be like more like close to the relational how to ra, but as for like the more advanced courses, nothing really struck to me as like oh i learned this in this class
int did you like it?
part yeah i did enjoy the course, and working with proofs, it was kind of like puzzle solving, some of them took me a while, especially trying to prove that negative 1 is a rational, no the square proving that the square root of 2 is irrational
int it is rather cute
part some of them took me a while, but once i finished i get a nice sense of accomplishment
int yes, so, uh, you've had 3500 have you?
part i have.
int um, did you see any proofs in there?
part that was more of an algorithms course, like cse 2100, mainly from the book, learning different, problem solving methods, like but we brought up uh what's the \ldots it's like the oh divide and conquer that's it
int and master theorem
part and master theorem
int so, did you ever have to prove anything about how complex an algorithm, like its asymptotic complexity
part i had to measure and analyze the complexity and the run time of the program, but we never had to prove it, that it was like that, it was more like open ended and like we have one for loop, it can run at most n times, so it's whole thing. or, we know that this problem is NP hard
int what about 3502? the theory course?
part the theory course
int proofs in there?
part i believe there were proofs in there, but i don't really recall too many of them off the top of my head
int ok, um, there are some domains
part umhm
int where you have to prove that your algorithm is correct
part yes
int um, and you can't always do that by test
part yes
int and it can be the case that tests are too expensive
part umh
int even if you could do them, you couldn't afford them, or they would take too long, so there are analytical ways of proving algorithms if and programs, if they're written in a certain way (it's melting)
part right
int so one of the reasons that 2500 is in the curriculum is so that people who need to prove programs are correct, or prove that their programs consume no more than you know x amount of resources
part yeah
int can use those proofs. so, i'm glad that you liked 2500 or part of 2500
part umhm
int Do you remember any of the particular styles of proofs you used in there?
part yes, there was there was proof by induction
int uhhuh
part proof by contradiction, those are the main ones i can think of off the top of my head
int uhhuh, so, can you explain why a proof by induction works? what is it? talk to me about what is a proof by induciton
part let me see a proof by induction is essentially trying to determine that a proof works for the k iterations of something, you then want to prove that it woks for the next iteration, the k+1 iteration, so therefore you show that the base case works, you show that the k case works, and then you therefore prove that sample works for the following case works after k
int do they connect that with any um programming style by any chance?
part oh yes there are some algorithms mentioned in lecture that are, like knapsack problem
int what about recursive algorithms?
part oh yes, those would be very helpful for proving that recursive algorithms would work. The base case would be the initial proof, and then variable to show that it could work for any number of iterations would show that it's a very valuable algorithm.
int so in that induction step, you're allowed to take as a hypothesis, the starting point for your proof that the kth case works
part yes
int and if you have the assertion that the k+1st case will work, if the kth case works, and then you write your recursive algorithm as i solve a problem of size k+1, and i invoke myself on a problem of size k, and you can reach the base case
part yes
int you're there
part then you're there
int so i have occasionally had students come to me for help
part umhm
int in discrete math, and what they want to know is, do they really have to know this to be a programmer, because they've done some programming, had an internship on the side, internship between discrete math and programming and they were finding 2500 a little daunting
part yes
int and they wanted to be reassured that just because 2500 was daunting for them, that that didn't mean they had to quit
part yes
int and now, so i'm curious
part umhm
int did you go through a phase like this where you wondered why you were doing this, or was it so much fun that you worried about it
part i never really worried about it, i went and i enjoyed all the different inaudible, i enjoyed doing the proofs, and once i finished from it i never really looked at it or tried to connect to other classes
int now that i'm telling you that there's actually a subset of the developer's world where you get paid extra for being able to do proofs about code working
part hearing that is had real world applications, it does seem a lot more valuable.
int do you think it might be something you would pursue? Did you like it that much?
part umhm, yeah, i wouldn't mind going and doing that.
int so, ah, this point the things UTC was asking about, trying to get people to learn how to do that, so that they can hire them, so um, i don't know if um if there were a course on it, would you be tempted to take it?
part um, on how proofs are related to computer programs?
int umhm
part or prove the efficiency of programs
int no, how to use formal methods to prove that your code works, so maybe you are writing code for a flight management system in an aircraft, and you want to prove that this thing can land at airports in such and such wind and visibility and stuff like that
part yes, i would like to take a course like that, because, because throughout my career here at uconn, a lot of the projects just write this assignment for. or code this assignment, give me, maybe give me the runtime, but in the real world, you want you need to do that, you also need, you're also going to need to be able to definitively prove that it works or parameters i don't really feel confident to be able to do that on my own at this moment, and any further, any more preparation it would be greatly appreciated.
int neat. so, do you um, do you enjoy thinking about stuff like do you enjoy thinking about math, abstract math?
part like, differential equations?
int reason i'm asking is that in mathematics, so i'm told, some people look at proving as discovery
part yes
int and they say that these mathematical proofs that we cannot arrive at, proving them don't have their own or do have their own existence, and we are learning about them, there are other people who say they don't have their own existence, we're creating them as we prove. I know that i don't know enough to have an opinion, that being said, of course i have an opinion anyway, and my opinion is that when you write the hypotheses, that's a highly creative act, so Lobachevsky said what if the sum of the internal angles of triangles didn't have to be 180 degrees, what if it could be bigger or smaller, what happens then, i think that's the creating act, and then the proof steps, with these new hypotheses, they are um explorations of the consequences and i just wondered whether you you like thinking about stuff like that
part i haven't really given it much thought, but those do sound very interesting
int so, yeah, the reason i asked, i was going to ask if you were a discovery sort of person or the um creating you know this is a creative you know so are proofs creation or are proofs exploration, and so, I don't know some people i guess ponder it a lot.
part yeah
int so i had this epiphany 2010 i was proving something for Professor Shvartsman, which we didn't know whether we could prove it or not, and i just decided alright, i'm going to force out, i'm going to write down the explanation for every single thing, until i realized i was tremendously confident about results, carefully step by step, i was unshakable, people, professors could yell at me and i would not feel that i was wrong that was very nice. Do you remember going through something like that?
part hm, no, i never really had anything very similar to your experience I guess the closest that i would be would be the feeling of satisfaction after solving a challenging proof, which took like maybe an hour or two
int imagine the satisfaction of Andrew Wiles, of, who proved Fermat's Last Theorem, which people have been working on for 300 years. I really liked that feeling, of now I can know that I am right.
part that is a good feeling.
int did you have geometry in high school?
part hm?
int did you have geometry in high school?
part yes i did have geometry in high school?
int did you have to do proofs in there?
part let's see. no, we didn't. the only calculation problems for shapes
int my geometry
part we did it during freshman year
int long ago and far away, but we had proofs, and my teacher said, oh you definitely you have to into math, so i went home to my dad and said have to go into math, and he said no, you have 5 younger brothers and sisters, you're not going to do it, she said if i didn't do math i should do law, and he said no absolutely not you are not going to law school, but i was the president of the debate club, and found it helpful there, so did you i'm curious whether you were ever involved in debating
part not really, i'm not really involved in debating, i'm more of a listener instead of a talker try and convince people of my opinions
int but when you hear other people making arguments
part umhm
int do you ever find that their arguments are not especially strong?
part yes i find that sometimes.
int if you were going to do something differently, in 2500,
part umhm
int have you ever thought about what you might do?
part hmm. Haven't really given it much thought. I took the course, got a decent grade, have no regrets from it, i learned some good skill from it
int it's my favorite course, well actually i like 3502 better, but uh this past semester at Maryland, I got to teach their discrete math, and it was great
part nice
int the students, i gave them the way the online classroom works is that you can either unfold the week's work every week, or you can just let them see the whole thing the whole time
part yes
int so i let, i don't see any point in hiding anything from anybody
part umhm
int, and i told the students you know you can go look at see at the end of the course what it is you'll be able to do, and some of them looked and some of them didn't
part umh
int then i gave them very basic step by step every week exercises
part uhm
int and some of them took the you know like fish to water, others it was like, oh, we never really had to think like this before, it's ok, take it slow, take it slow, by the end of the course they're all saying wow this was really great, so it was a fun teaching experience for me
part nice
int but they knew, they knew it was because it was tied to programming because what i had them do, because everything is shared in these conference areas, everybody sees everybody's weekly work that they do, and only the homework is secret, is private
part uhm
int so i had them each of them you know, here's the proof technique we're doing, here's an example, now you find an example, give the example, and give a corresponding program
part so they had to tell up what the inaudible were, yeah that's a lot more inaudible (adaptive?) that what we had to do in 2500.
int one of the things we had to do is the business of the contrapositive, have an implication, you know the contrapositive, has same truth value as implication and you know what the converse is, and sometimes have to learn that in fact the truth value of the converse necessarily the same as the truth value of the implication necessarily, so we did that in the first week, then in the 7th week, they had something about you know what a planar graph is? a graph of with the edges and vertices you can draw on the plane without any edge crossing at any other edge, edges only touch at vertices, so i said, consider a soccer ball, it is not written on a flat piece of paper, it has seams, it has places where seams come together, abstract that into a graph, and prove to me if it's a planar graph, if it is, prove that it is, if not, prove that it's not.
part umhm
int and they had in the previous chapter, in the same chapter where they introduced planar graphs they learned the implication that if a graph is planar, then its Euler number is 2.
part yes
int so they're supposed to prove to me
part that the Euler number is 2
int or not, because the implication is, if the graph is planar, then
part oh, wait contrapositive
int contrapositive you say, if the Euler is not 2, then it's not planar
part yeah, not planar
int but what i wanted them to do was prove to me that it was planar if it was, not planar if not, and an adequate proof for that is to say, puncture the soccer ball, smoosh it out into a flat sheet, you know, it's more like a balloon, or a piece of bubblegum or something, i can smoosh it out, and at no time do the edges cross each other, and by the time you've got is smoothed out onto a plan, it's a planar graph
part yes
int some people actually drew for me on a piece of paper, of course electronic, there are all the seams all stretched out, that was a lovely proof, it was the people who used the converse that i sort of harped on, you know the converse is not necessarily true, but it is a really fun course. There was a teacher in the 1930s named Fawcett
part uhmh
int he was teaching middle school age kids, and he decided to teach them to reason deductively, and carefully, what do you suppose happened?
part let's see. they probably took to it and were able to understand it.
int umhm, and then what?
part they were able to prove the rest of things around them
int they became critical of the reasoning of the adults around them.
part haha
int so, it turns out at least at that time and place, middle school kids could be taught to reason perfectly well, however there was a culture shock going on, the other teachers didn't say so much about the parents complaining but it did say that the other teachers were now too hard to handle
part hehe
int so about middle school kids, do you think they can be taught to program?
part oh, yeah
int umhm
part if he can teach them a foreign language you can easily teach them how to code.
int and i think that teaching them reasoning at the same time would be all my professor who taught me about doing interviews told me i should always ask, what were you hoping i might ask you?
part as for what i was hoping that you'd ask me, i was hope well my expectations were that you'd bring up cse2500 and how it would relate to the other courses. besides that i kinda wanted towards a blanks try not to expect too much, and try not to like essentially the word i'm looking for is try not to worry about it too much, because it's essentially a casual interview
int umhm
part and if you worry about it too much you won't be able to get it done
int (chuckle)
Well, thanks
part umhm
line86t3913
int ok it's friday, yeah this is Seda and um so please start by saying i have signed and read the consent form
part ok i have read and signed it
int thank you. I hope you will reminisce any thoughts you have about proofs. I know proofs are important in the work that you do and so i'm very interested to see what your perspective on them is.
part my perspective, from which point of view?
int ok, let's say you were setting out to do a proof
part umhm
int you would have built a context in which it became interesting to you to have a proof, of a certain thing, and so you may be have ways of going about getting started, you may have ways of estimating how well a certain approach is going, you might decide oh i'm going to try a different approach, and
part what we did in our research is mostly design the algorithm first, we had some expectation of what that complexity results would be and then we try to find an approach to prove. Mostly we studied time complexity, work complexity, message complexity for the algorithm, but while working from the algorithm we first somehow anticipated that's going to be the result, sometimes we anticipate we cannot prove, which might still be the case but we cannot prove it, in that case it's maybe the simulation studies also can be done until you actually can somehow prove that theory particular result but that's the approach and then we studied the techniques how it can be proved and try to prove it
int so, don't ah, looking from an outside perspective i imagine and i'm sure you may correct me if i'm wrong, um, isn't it that there are proofs sometimes of lower bounds? something cannot be done any faster than uh, ok so lower bound would be there are lower bounds and upper bounds, so it you have an algorithm that provably uh is as fast as it can be, then you know perhaps is no point in improving that algorithm on the other hand you may have a proof that an algorithm must take at least a certain amount of time, and if the best known algorithm is taking longer than this time that as far as we know, that we know an algorithm cannot be faster than a certain bound, ... cannot take less time than a certain amount, but that amount of is serves as a lower bound, and might not be the highest lower bound, but it's the highest lower bound that we know of, that we can prove, and yet the best algorithm we have been able to find takes much more resources if it's time, or memory or messages, then those proofs show us a window
part that's true, but what we did so i extended two problems which are tree uh for the problems i studied, one of them we haven't yet proven the lower bound, depending upon the model we know we anticipate what lower bound is going to be, we haven't yet completed the proofs for that, and the problem wasn't studied before, so the best we could have found is compare it with a related problem that can actually serve as a lower bound for us, so the lower bound for our problem must be a lower bound for the problem i'm talking about that the lower bound holds, the problem which is the ... problem would have been a lower bound for us, so we come quite close to that of close the models under which they are studied are different, so we conjecture that what we have reached is from one of the models is a lower bound yet to be proved uh but that's true and for another problem we actually asymptotic reached a lower bound of cause but it can be ba, i mean it has some constants, they are small constants but we reached asymptotical lower bound but it could have been a little bit better, so we specifically haven't yet found any lower bound proofs.
int do you see uh implications or hypotheses of proofs as you can create a hypothesis, you create your setting, and then you can use deductive techniques to explore the consequences of these choices, right?
part in what sense?
int well, again in the sense of resource consumption possibilities, you can you know before you have any proof or any conception of your setting, everything is wide open, you can say i'm concerned about this setting, cut down the context
part that's where the failure model comes in but sometimes you know that you cannot tolerate that many failures, for example, we assume that some process returns incorrect results, let's say, with some probability you would not bound the probability, there is no chance that would calculate the result correctly call for it so we have to somehow bound then if that was allowed to crush also the processors then it may invalidate our model so we have to put some restrictions on the adversary, otherwise the only thing we can do is to put the impossibility results because it's just even intuitively it doesn't work because it so yes, you have to some restrictions also you can't when you are doing analysis or even if you are writing an algorithm you know that if you do something in a specific way you might get better bounds, but then the analysis are so hard that you decide to sacrifice on it, and say ok i'm not i don't care i'll get a little bit worse result but it's not going to be as challenging and time consuming to me to do it, but you obviously see the benefits of doing it it's just how you will prove it it's a big portion so you sometimes sacrifice on the algorithm
int so the mathematics can help you see, and the mathematics can also be quite daunting, you can decide not to explore
part yes, practically you can make the algorithm faster or spending less beat complexity so depending how much information you share your message bigger, you don't want to send big messages, but then you have to send incremental knowledge and then you have to figure out ok how this knowledge increments what is really being sent, well if you send everything you know exactly what you are sending and that makes the analysis easier, but there are algorithms inaudible
int i think this rigor in thinking um this power that you get of knowing things, knowing things for sure, uhm is wonderful and that people should enjoy uhm, having it, and using it, not all students believe this, but it's part of your life, so i wonder do you find that you enjoy making proofs?
part yes and no. uh, it's very enjoyable when it's done, but it's cornerstone on what you are trying to do pressures so much some times it annoys you , you get infuriated with style sometimes you think that it has to work and you cannot prove it so it becomes annoying sometimes but you have a sense of accomplishment when you are done, some has it some put some balanced for me i can't say just doing just the process without the any results gives me brings uh big joy
int ok
part i cannot say that, truthfully. because sometimes it gets to the point that, yeah it just infuriates
int have you compared that with some of the uhm you know the french aristocrats who were doing math, just because they like to? um, Fermat was a judge and a lawyer, he didn't have to spend his time doing proofs, umn, LaGrange didn't have to spend his time doing, D'Alembert, they were, you know, well to do, and could have lived lives of leisure, um Mersenne was a priest, he had his income, certainly don't know of him getting any income from his mathematical expeditions, um, there were some members of English aristocracy who decided to be mathematicians, do you have any thoughts about what was going on with them and proofs?
int no
part i think Lobachevsky was a school teacher, maybe a high school teacher, but, he did not have to do proofs, and yet he revolutionized our though, so
int yeah, that's true, some people i think are more enthusiastic about what they're doing and some i don't know it's a little bit inconceivable for me to genius is what they have done you think how i could have thought of it and they really invented stuff that is being used now, so in essence, when we do the proof we use all of the stuff that was advantage spire for me inconceivable how one would think of it if it wasn't there so i haven't yet reached a point that i kind of just say i invented something extraordinary after season invented you think hm that was a good thought, how could have i not think about it, but i don't know how they boring worked
int but you do proofs, and i think you get stronger, do you feel that you get more able, um, as you get more practice?
part i think you get more knowledge you know how to do it things you know how to expect things you know as since you have knowledge you know what to apply, to solve what you need to so, you're horizon enlarges but i still don't think i can do something revolutionary
int do you find it fun to think about things in this more powerful way?
part it is fun. It's fun, it's fun when you when you think about the algorithm that no one ever thought before, or you model it in a way that it would give them to generalize ah whatever was done before, but they uh but still for myself i found that just reading about what was done before was a major part, because if you don't have the background knowledge, you cannot really appreciate what you are doing you cannot appreciate how to do it, or what is the missing piece so i think i learned mostly by just reading what people have done and then you also when you read the proofs you learn the techniques, that's all
int so reading proofs where did you read proofs? i mean, there could be original literature in which you read proofs, or you could have looked at a textbook
part when when i was studying i read from textbooks, so when the way we studied in Armenia was that every class had an oral exam, every oral exam involved basically having learned all the theory and some proofs that were explained to us during the class, besides the fact that they could also give us a problem to solve, we actually had to know all of the theorems and proofs. so it could just he or she the teacher could just ask us to prove, Taylor's Theorem, prove how they got it, so that's how we get introduced to the proofs of course we never thought how actually to prove it, we just learned how somebody else proved it.
int uhmh
part but, yeah and then we did go such research paper that was interesting to me i always try to find the longer version of the paper that actually includes proofs
int umm
part so i always think, if i'm just reading you know what's going on, then i could notes sometime within the notes, if it's something very specific to what i am doing then i do actually read the proofs. and then understand things, why did they exchuun, certain power of average sooky, understanding and appreciating probl what changes based on your assumptions
int so, i want to be sure i understand, um, do you find that reading what i'm thinking about as you are saying this, i'm thinking about chess games, you can learn the rules for moving a chess piece, and there's a huge gap between knowing that, and being able to be a good chess player. so in 2500 for example, we teach students some of the steps that they can use in deductive arguments, and they ask them to do these proofs, to get time some practice putting these together. and uh so i think there may be a certain correspondence there where you say ok so now learn the chess moves, look these games, people who are avid chessplayers actually look at formerly played games and say, oh, you know this was good for this aspect and they kibbitz over players as they are playing a game, and think about what was a good move, uh, so i imagine that with respect to proofs, you can learn some of the basic ingredients for, that are required, uh, to make an airtight argument, which does not necessarily give you any ability to actually construct such a thing but you can sort of practice constructing easy proofs, but then there's the step of becoming masterful at creating proofs, and i imagine that reading other people's proofs may help with that, so, and sounds to me as if you said but since i thought prepared in my mind already, i wanted to be sure
part yes, ... you gain a lot by reading the proofs, done by other people. as you read you understand that more likely than not techniques are repeated and there are certain number of torches of this for not very involved that you can easily get away with just knowing that but i do think if what happens helpful if someone actually taught me how to having this pieces prove this because we were taught learn how someone else proved it, but eventually we're taught, they did n't really teach us ok, you have these pieces now figure out what to do after that,
int have you heard of the mooore method? in mathematics teaching especially i have read there is a method called moore method, and where this professor moore did very much what you just invented, there, his students were given a mimeograph (this is a long time again, ) sheets saying you know these are the lego bricks you may use, this is what you have to prove, go do it, so the class was and it is said that a class could take two weeks and no one would dare stand up and try to prove, eventually a student, so this professor moore did not lecture, he merely set the situation listed what eventually come up to the board try to do a proof, and upon which they entire class including the professor would critique, immediately so it must have been a rather you know emotional experience to go through these classes, it's said that it was divisive topic, some people who've gone through the moore method swear bu it and use it all the time because they say it makes people who know how to construct proofs, other people say that it was unpleasant and they would never do it, see you have just invented that idea, right here as we talked., um
part i think it i think every person is different, and it works different for everyone and you just have to find what works for you, um, i think it would happen just for someone actually talked
int it sounds very appealing to me, i would like to try a class like that ha-ha
part yeah
int do you ever find yourself trying to share with others the um ways in which you prove things? certainly when you write articles that include descriptions of proofs, you're conveying the proof, um do you enjoy that kind of writing?
part yeah, it's fun when you are not only you are not only trying to sketch what the proof would be, but you actually are trying to detail it so that someone reading it understands it. and i think that a it's a big challenge to write it for someone who doesn't know what you are doing, because sometimes since you have done it, it seems trivial to you, and then when you get a perspective from a person who is just reading your paper, then you understand that ok it's not actually that trivial for an outside than maybe i have to write it in a better way, explaining in a better way so you improve your writing and explanation techniques sometimes you think that it they might think it's too obvious and not like it
int not be ace
part for some people it would be obvious because you submit it there we submit our papers to specific community of people who always do the same things, so in a sense you expect them to know so it's always hard to find a balance, of not trivializing and at the same time being explanatory enough, so that they don't have any gray areas remaining our writing take some it's a still ongoing challenge
int umhm, In talking with some undergraduates about how they receive explanations of proofs, uh, i've been surprised to find certain so there's an educational researcher named Marton who talks about different levels of appreciation and how an appreciation of something can be very profound and multidimensional all the way to an appreciation of something can be superficial, and so i've been sometimes startled about the particular level of superficiality. Some students are so close to a solid understanding of induction that you couldn't imagine they would not have it, and yet they do not, so for example, one student knew that inductive proofs contained a proof of a base case, and a proof of an induction hypothesis, but have never had the thought that in fact the base case glues onto the induction hypothesis, therefore you are able to go off into the countable space, they just knew the procedure, i do this, i do that, but they didn't see the connection, so they found their own inductive proofs, following the recipe, to be unconvincing, and they weren't really sure why they were getting perfect scores, so, it's hard to guesstimate what people know and what they don't and what kind of explanation is adequate. Yours, of course is a different situation where you have a specialized audience,
part that's true
int the undergraduate courses have a variety of preparations.
So, do you notice yourself thinking more rigorously about you know, whatever comes up? I imagine, you know, as somebody becomes strong at something, their strength is applied all the time, and uh, so maybe you would not notice it so much, um but then again maybe you do. uh,
part i don't think so in particular i think as just being in signs let's say signs of art people i think people i think they found in general but i don't think just doing more proofs of more research my understanding overall is changing, personally, but i think that people in different disciplines think differently and approach life different way
int can you tell me which courses you took and which proofs were used? or taught?
part do you mean?
int ever?
part here?
int ever
part i don't think here actually i learned anything that involved proofs
int ok
part i found the techniques the teaching techniques here were much more different than what i used to do in Armenia and in Armenia all my classes in proof included me knowing the proofs of everything i've learned. Here no one ever requested i mean the proof was done, was taught, during the class, but no one expected me to know the proof, they expected us to apply the theorem to solve some other problems, but not the proofs, so, which i actually found more useful and entertaining seems sometimes during the undergrad studies, we truly didn't understand why we needed all these theorems
int umh
part i think it would have been better if they taught us, ok having these you can do this, more practical perspective because just learning math and not knowing where to apply it really appreciated
int i think it feel more fun when you get to apply
part yeah we did solve some trivial problems, but not the problems that maybe they weren't trivial, but they weren't all that theoretical and ok you know how to solve an equation, you know how to do differential equations, you know how to solve integrals, blah, blah, blah, but that's in our opinion, in our undergraduate opinion, we didn't see ok why do i really have to know the proof of the theorem to do that. right? we didn't see the point, because no one taught us the point, so, that's a very important part that was missing
int curious about what age um proof teaching begins
part i think my personal opinion when you get in college because if you are in high school unless you are taking AP course or anything very superficial unless you know that that's your future i don't think you can be interested in it much, you really don't care if you know that you are not going to be physician, mentation, or any science-related discipline if i'm in the arts and someone is teaching me how to prove things, it might be helpful but i can't imagine a person being very enthusiastic about it, so i think the audience has to appreciate what we are doing what they are teaching you. so it would be proper to do it in an AP class, special for science AP
int there's a story in the US in the 1930's a teacher named Fawcett decided to try to teach middle schoolers deductive logic, and he was successful, in a sense. The students became very capable argumentarians. They did however, take this skill into their discussions with their parents, and their other teachers in the school, so it was not well received, and it was discouraged.
part deductive um deductive proofs are found i mean but he didn't i assume he didn't teach very scientific proofs, he just taught them again i assume the way of thinking and they were actually successful in applying the deductive process very important even if you are a lawyer you need to know how to deduce one thing from another but just thinking you need the details of chernoff bounds and blah blah blah
int right, that doesn't sound like middle school
part not interesting for them, and if you lose the audience from the very beginning, then they're never going i think that it's important for some reason i believe in united states more than in the country i come from people are scared of math.
int there is the notion math anxiety
part and i do not understand why it's just people talk about so i think it keep growing up already think that math is some kind of black box that no one understands, and it's just going to be hard and it's going to require a lot of things, i think that the notional kids being brought up is a little bit different
int definitely, i have a nephew who posted on his facebook page, that he found a place to a calculus resource that was so helpful that one didn't have to actually learn the calculus and i sent him a note saying tut tut zachary you wouldn't go to a gym and have the instructor do the exercises for you, how would that be? he said, well you know i know i'm going into magic and being an actor and i know i'll never use this and i just don't want to do it, and if instead it were presented as something that it is fun, and makes you more powerful in terms of your thinking and your appreciation of the world and gives you dimensions to think about and explore that you wouldn't have otherwise, uh, we wouldn't have people saying oh, here's a way to cheat
part yes i think it's important how teachers approach the problem how they make it commenting entertaining at least at the beginning and i understand that math is not all that fun, but when the kid is growing up they shouldn't be scared of it, they should at least give it a chance, when you going to something just thinking you are not going to succeed, chances are you are not going to succeed because you don't believe in yourself and then if something is a little bit hard for you something you are not thinking of overcoming it, you are just thinking ok, it's really hard, because you have to spend 5 more minutes than you would otherwise do
int go back to, when you're working on a proof has it ever happened to you that it's you seem far away from your goal but then something happened and you were suddenly you achieved the goal?
part yes, sometimes it happens, huuuh, most of the time you have reasonable expectations, and if you do not reach your goal chances are you are not really going to reach it anytime soon, so we have to scrap up a lot of our papers because we just couldn't get what we wanted to, but it happened once or twice that it truly took us a long time to get what we wanted to, but
int i'm thinking of the 1102 students who were learning how to program. and they don't have the sense of how close they might be to um a working program, um, because they're beginners they're making silly mistakes that can be pretty easy to fix, and find and they can get kind of discouraged because they can't fix and find them, and then when they are fixed and found, they say, oh, you know, it was only a semicolon away from a working thing. um, so i just wondered whether proofs had that some sort of you know nonlinear progress uh about them because they're either there or they're not there. i don't know whether there's a way of sensing that you are close to. Here's another question. Um, do you approach proofs say top down? You know, planning lemmas that you'll get to later, and thinking about how you would assemble them, first, or do you build these tools certainly you have a great many tools built in terms of theorems that you know, but that other people inaudible Just curious how you go about planning and constructing
part first have to, establish what has actual pieces that are required for me to prove things but then to holding us saw that every piece is not as hard because if the proof is very long, may lose the audience half way so you always try to split them into tiny pieces that are easier to prove by themselves and then so you have to prove quite a lot of lemmas and theorems until you actually get to the your main point whatever you were trying to prove, and then you combine all these pieces in order to say ok i have done it.
int so this is an explanation phase, after you have a proof: you can explain it in pieces, you can present it in pieces, you can break it up into pieces
part not only explanation, you think in pieces, you
int the planning
part what do i have to do to get to that point, it have to do this, and then you split that, ok, what do i have to doing to get into that point, so you have to actually find what are the required pieces for you to solve the puzzle, and every single piece then you have to prove by itself, so that you see can i get to the second step, can i get to the third step, because if i am losing the first proof, i will never get to the second because i already established that my second piece depends on my first piece, so i cannot move forward so i have to divide into smaller pieces and try to prove them as i go
int does that ever get redone? might imagine one architecture of components, and try to prove those pieces, and then if one is particularly difficult you can sort of replan, resketch, rearchitect how the pieces are to get around?
part yes, sure, whatever your first notion understanding for what's going to happen, most likely can fail so you have to rethink your strategy. have to go.
int, ok, thank you very very much
part you're very welcome. hope it will help you.
int it will.
line89t5247
int This is russell, it's wednesday, and we're going to talk about proofs, so, oh yes i want you to start by saying i read and signed the consent form.
part I read and singed the consent form.
int great. so, i'd like you to tell me anything that comes to your mind on the subject of proofs. such as, the first time you ran into proofs, in whatever year of school that might have been, whether you like doing them, how you go about doing them, what you think they're for, that sort of stuff.
part, well, as it happens, i'm a dual degree, um i started out as a math major and since taken up computer science, um so i first really encountered proofs my freshman year, they were always kind of a nebulous before then because i liked reading about math but um my actual math doing i never really did proofs before freshman year. um, i took an alternate calculus track um kind of a misnomer in my opinion called the advanced calc series
int umhm
part um so it's sort of like a proof based curriculum runs you through calc 1,2,3, linear algebra and differential equations
umhm
part um so that was my introduction to proof writing, um, it was really different at first i didn't do too well for the first you know few homeworks like got you know ah and an understanding um but i think i mean proofs are about um you know building a next layer of truth kind of showing uh what you could do or or compute um so in in computer science it for example, uh, by proving something we're just showing that it's possible. um, we're kind of setting bounds on what we can do and can't do, i think.
int this all sounds great. so i want to ask you about at one time, proofs were maybe awkward or unsatisfying and then they became good.
part well at times, um, i mean i em of course like most people i think really confused about what i want to do, so you know the exact applicability of proofs to my future is uncertain, um so there are times when i find them the results really interesting and there are times when i don't, so i think it kind of depends on what i'm proving, you know. um so uh in the context of the algorithms class, i'm currently taking, um i haven't found the proofs to be all that great because um ha from the math background proofs have always had to be very rigorous, um that if there's any like leaks or holes, it's not a proof, that's not what it's about, um, but the way proofs have shown up in computer science classes because it's not the math department um are not very rigorous and really in any sense of the word, um, so when we're we're showing things in the algorithms class it tends to be a bit loose, maybe i'm just not doing a good job on the homework which is also a distinct possibility
int you should have some feedback on homework of some sort
part yeah, the the language is more verbose you know i mean it's it's a problem solving course it's not there's a it's it it the writing it all out in very technical specific language becomes very difficult i mean i don't know that i fully know all the syntax to write explicitly what i mean, when i'm talking about an algorithm, i don't know if that makes sense.
int yeah
part um like maybe i'm missing some notation or something. um so for um for example, um on the homework i'm working on right now um there's a minimum spanning trees and i have to prove that uh if there is an edge on connecting two points and there is a path connecting those two points with edges that have a weight all weights less than you know this edge you have to show that that edge wouldn't be in any minimum spanning tree, so there's a lot of things going on there it's not like a a theorem with like a couple of simple assumptions and you have to show a result you know you have to show that there are multiple minimum spanning trees possibly, um and things like that, so it it's not as uh i mean the the way proofs come out isn't as straightforward, i find, um, so makes it a little confusing sometimes
int yeah
part sorry i rambled so much
int no, I have a great time with these interviews, what's called transcribing them and analyze them, there are techniques for qualitative analysis of text and i use those and so it's fun, um, let's see so in the computer science applications of proofs um it doesn't seem to give you the same sense of crispness, you know what you have to do, you know you're right, you can tell that your answer is right, um, as in math?
part i'm also taking theory of computation right now, and that's really i mean it's been a very interesting course and i think definitely some of the proofs from that class have that crispness you mentioned i like that word
int is that professor Sipser's book?
part uh on the cover, that's the one
int this book is by professor Sipser, who is a math professor.
part yeah, uh, i um see i think that book's good because also i mean it's it i mean an instructor text like that you can't expect it to be totally rigorous so you know some of the upper level proofs about decidability and so forth and so i think um you know the level of approach it takes is well-explained and appropriate but i inaudible at least like the work that's expected of us it's not so clear cut what's expected which makes it a little bit confusing for me. um
int once you used to well-formed problem a well-articulated problem, you like that
part year
int and you don't like to give it up
part yeah, yeah, absolutely, um but i don't know i mean there is also just the odd you know uh thing with computer, when you're studying computer science you're expecting to do a lot of coding, but computer science is actually really theoretical and not necessarily about software engineering so i went from taking 2100 um with Professor Mandoiu, um he he had a really um very well implemented uh implementation part of uh the course i say that because he had this website where we could submit code to and it would run it for us and tell us how the code did and so forth and i thought that was a really fantastic part of the learning experience because it wasn't so much like you it wasn't really proof based at all you know it was about looking at what you constructed and how it solved the problem, um and by doing it that way you kind of see what it could and couldn't do, which seemed a little bit more appropriate to the subject matter to me. um so right now in 3500 there isn't any implementation that i understand why that is there's a lot of material we have to cover, it's not really unique to any one language so by having implementation perhaps saying the wrong things but i feel like that kind of also detracts from the point of all this that we're building solutions um i mean not to sound like an engineer or anything like that, it at the end of the day at least my understanding is that i mean you know these algorithms were meant to be implemented somehow and while while knowing what they can and can't do through proofs of course is important, um i just keep saying i find it gets a bit confusing in this class, like W sometimes
int there's a technique of sorting that can be linear but nobody ever does it, i have been told but it's really nice to go through the understanding of um of how it works, and see the proofs, so, a lot of classes have that even though some professors will say well yeah it's there but nobody ever uses it because everybody always uses quick sort or something like that. um, let's see, uh, so you were saying you like Professor Mandoiu's class there was a website you could bring your stuff to and it would tell you whether or not you had gotten a solution that was desired
part umhm
int if you had a technique like that for proofs, you were about to say somthing
part i mean it's might have to load, but the website also tells you how much time and memory your code took, so you could tell like whether your algorithm was up there crack asymptotic
int right, good to know
part, sorry, you were saying
int yeah, so there's a professor Velleman, i have a book from him, he has a website where he talks about making proofs and a structured approach, it's a little bit like thinking in a structured way about how you're going to write a program, you can actually think in a structured way about how you're going to prove stuff
part yes
int and it's not guaranteed to work, um, but if you you know how in differential equations you can teach differential equations you know with a deep insight into the equations or you can teach it with a more superficial approach, ok if it fits this form i know the solution
part toolbox, yeah
int so this is a sort of toolboxy way of getting to recognize oh i'm in a situation like this therefore i know that blah- proof technique, this is a time for induction, and so he has this tool and he also breaks apart larger problems to be proved into smaller parts
part umhm
int so you break them into smaller parts, there's a way to connect the parts, and when you break them into smaller and smaller parts you eventually not for all proofs but for some eventually get to the case where oh, this is one of the ones that i know how to do
part yeah
int and so, ah, it gives you practice, it gives you feedback, um, it gives you an organized way of approaching problems, ah, some problems, and i think it's rather cool, i would like to see it make you know, have see students made aware that it's there, in case they want to try it out. um so if you if there were a way to approach proofs sort of the way you approach a program, do you think you would use it? see, i'm glad i'm asking you this question because you are coming from the math side, you already have your habits about how you approach proofs
part um, i you know i sometimes when you're doing something it's handy to have a little reference chart i can't remember like a certain, like i mean it sounds like a really useful tool in that sense, but i i think building up um an in an intuitive understanding of how the how the statement breaks down is is is is more important for proof writing, so last year i think the biggest thing that changed in my proof writing in the math math side of things um was this is really didn't have a good understanding of logical statements, you know so like if you have an if and only if you know that i mean like i kind of got it before but not explicitly which is important if you have an if and only if statement, you need to show both implications or use a theorem that you know builds off
or or build off theorems that has that double implication in it so you're using a biconditional like the whole way through, um so while i mean you know you could if that tool's available you could you know break down that problem and look at the tool but really i think i mean if you're if that i don't really know why you'd be writing, if you were just like if you just had to write a singular proof that might be important but if you're writing a lot proofs it would be good if that was a reference to learn from but ultimately that should be more committed to memory if that makes sense, yes, i'm not inaudible advanced looking for
int first of all i'm not looking for a specific answer, i'm looking for what you think, so there's no way to get it wrong,
part i think the thing about proof writing um is i mean it i guess i'm a little biased on this but it definitely seems to be very, it's within the domain of math and the language of math and i mean many, many, many field use mathematical tools um and and as an extension of that we need proofs to show why those tools work, but they're all derived from the same body of knowledge, so it's it's kind of a language in and of itself and the best way to learn about things you can do with proofs and how to write proofs is to do them, so i think problem a lot of people have is they just haven't written very many proofs then are expected to do things and they just don't have you know the tools they haven't built up the toolsets to handle that you know i mean it'd be like if you were expected in an english class to write a well-constructed you know 7 page paper that you know forms an argument and shows why that's true, and you just really haven't done any essay writing before you wouldn't know how to approach the problem, it wasn't until freshman year that i really kind of understood what a well-formed argument would entail, um, but i've been writing essays for a while, you know, um so i think kind of the same thing applies with proofs, that you just have to go through you know a variety of proofs and a variety of contexts you know i mean differential equation proofs you know you encounter different things than you would in calculus or analysis or algebra or theory of computation but they do kind of like you're saying break down into sort of same patterns you know like if there's a if statement, you need to prove implications, if an argument is true for a countable set, you can probably use induction, um so i mean kind of looking to the familiar patterns, but you're not going to be able to see those patterns unless you know you've encountered them before. um, which is why i think a tool like you were describing would be would be useful um as a reference, not necessarily a something that you'd go to every single time, because you won't be able to recognize the shapes that describing someone had taught them to you, or you were taught them to yourself
int early on you said something that caught me attention and i want to go back to it, the idea that you can explore, paraphrase you, i can't remember the specific words, something on the nature of you can explore the consequences of a hypothesis, using proof steps, do you remember saying something like that?
part yeah, i think um so they i i've um i though i could recall what i was saying i think i mean proofs kind of let you put bounds on what you can and can't do, um, so or or ways of doing it um so if there's a i mean i i guess it's kind of goes into the realm of algorithms or something in mean there's sort of a computation you have to perform and you could brute force it but you can also show how a nice linear algebra kind of matrix like solution makes it a lot quicker but you know you have to show that that's true in all cases or have to show what cases that it's true for, before you can just go out and use it in the wild, so proofs like you kind of establish and know that your tools work and why they work, and probably most importantly where, what problems am i allowed to use this tool on, i think
int yeah
part yeah
int yeah, um i ahm um really curious because i i interviewed some other students and not all of whom have had the benefit of the math track that you described earlier, um and can you you know without naming any names describe how you have other students who have seen and how they are like sort of not getting it as far as what proofs are for, or what they mean, you know so we talked about if you have a hypothesis, consequences, uh, come about from that, you can explore them with proof steps, and you can know certainly some things and there are other things that maybe you cannot derive from a hypothesis, from an implication, um
part hm
int not all students have as profound a grasp of the material as you do, and i don't know if you like talk with any others of them, or have any insight into what's going on
part um
int something comparative
part i think uh i think my basic experience with that came when i took discrete systems because that for a lot of people it seemed was i mean, which makes sense, because proof writing isn't you know if you're doing even a math minor, or are just taking the usual set of math courses you would take for any other major you they don't do proof reading, proof writing, um, so, they normal like calculus track doesn't have proofs in it, you never see epsilon delta proof of continuity, yeah, or anything like that, um, so i think the i don't have a specific memory to so like point out for this so i but i think the thing a lot of people hadn't really had to deal with before was just the level of abstraction that comes with proof writing. which i mean is inherent with computer science, but a lot of times when you talk about problems it's always through analogies, traveling salesman is always about cities and moving between them but that's not really what it's about it's about graphs and paths and stuff if you want to call it that uh so when they were talking about continuity and you know epsilon and delta and how it could be arbitrarily small i mean those ideas don't really have any grounding in like a real problem which is what i think a lot of people have been used to i mean i never have had to use a calculator in my math classes and i haven't encountered a word problem in my the last 2.5 years of my math education, um i mean i haven't i can't remember the last time i solved a math problem that was actually related to any reality chemistry friend actually mattered so uh i think the biggest problem i i i was watching people face was just the fact that a lot of the proof writing doesn't have anything to do with like a specific problem, a specific circumstance
int it's abstract
part abstract form of of of the problem um which at this point um you know in my 3500 and 3502 i mean people are more comfortable with that but even still um like the tests we take in 3500 are you know really proof based you know they're the we get a new problem, we have to develop an algorithm or you know run an algorithm that's already been shown, so the last two tests the last problem on the test is always been um a new problem that we haven't seen but uh employs a similar technique to some kind of algorithm that we should know how to use so dynamic programming was a big unit, the last test was i mean it was pretty well guided through but it was a new dynamic programming problem that we had not seen before, and um i mean i looking at other people's tests isn't exactly a common social practice, but talking to people about problems is and everyone said that problem was really, really, really hard, and i think it was really, really, really hard because the other dynamic programming problems we'd done had a specific you know uh i mean even if it was kind of you know not necessarily related anything it was like a specific problem, finding like a maximum subsequence, we were finding the best way to align two strings or something, so the form of our solution, what it is we're doing abstractly was kind of lost or people didn't really recognize it as much because they were so concerned about solving the specific problem as noticing the general technique you were applying. um, so in the algorithms class some of the homework asks us things that you know demonstrate our knowledge about certain things, but at the end fo the day it's an application class, you know, we're developing solutions to problems but the abstraction from proof writing is still very much present because you're looking at the problem for what it is, not how it applies to any one thing, i'm kind of i'm inaudible this kind of be brought back to a point, um, so, i think the thing that i was better equipped to deal with than some other people i've seen, i mean i'm i haven't i'm definitely not the best student in any of the classes i've taken but i've gotten a's, i'm definitely above an average of some kind, so that's where why i feel ok saying this, um it just i think thing i've been better prepared um to handle was just that, the taking taking the abstract form of the problem out, looking at the technique you're employing, as opposed to, how do i solve this specific problem when i encounter it, or how do i turn this problem into another specific problem, you know i mean that's one way of looking at it but that's not really going to help you out inaudible or you know write things when you encounter a brand new problem,
int it doesn't have the strength that abstraction gives you
part umhm
int how to practice, how to practice students so that they are able to abstract more is a challenge in computer science, and it in it's entirely possible in my mind that the way is give them better math underpinning.
part um, i i mean you know i this i i feel like you know i mean going outwards the totally turns into like trying to education reform, that kind of thing, because i mean this starts at a very young age um i mean math education isn't about abstraction until very very late in the game, um, if you get to that point in the game at all, i mean, up unto a certain point it's about computation, um, and and i don't disagree with the logic that you know having a good memory for you know multiplication and addition tables is really useful in you know accelerating you later on, but, um that's not quite where where the focus is anymore and same thing with computer science i mean when people are just encountering this ideas these ideas that this stage you have to they come to college and you have to build the foundation first, i mean that makes it really difficult i feel as though ideally um you know if you teach an idea, people will be familiar with that abstraction and so forth, or know if that was something that they'd like to do, um i had uh an i mean another problem before i give an example, uh, is i think another problem is that computers are really important for any kind of information any other kind of information which is useful for anything we could do you know um so the fact that computers is a tool aren't part of more curriculums is kind of sad because i've seen a lot of kids who want to use computers for what they'd like to do, so, i'll study computer science, but that's not what they want to study, they want to study like music, or graphic design or art or um some kind of science or something, you know, but they end up studying computer science because they think that's where you study how to use computers, but that's not what computer science is about, and um so i had a friend who for his whole life he was always known as a history nerd, always reading history books, and he went into computer science because he was worried about getting a job and he didn't think other things were appropriate and he did like computers you know what i mean like video games and so forth, but abstraction is just not his forte, i mean he's a really smart guy and he's got a lot of things that he is good at, but that kind of abstraction that you do in computer science and math just isn't something that came to him, maybe that's from education nature or nurture i don't know but the point is that it just wasn't the right curriculum for him and he was put onto it at a very late stage and it just wasn't appropriate, he wasn't prepared whatsoever so i mean how do you get kids in computer science to become better at abstraction ideally you should start earlier perhaps if they have to start at this point maybe learning more math would be the way to go but a lot of people are conditioned to not like math, and so i don't know how many people would take to that either
int i bought my kids mathematica when they were in grade school
part i love that program so much
int, yes, so they liked it you know, i started them with the drumhead bessel function that comes in that, and they were ooh, then we had like um jars of water, and would drip drips into them and see, and they would say oh, simulation, real, cool, um i bought the school that they were going to a copy of mathematica and their math teacher took it up, and oh, you know, guys, we're going to do this, and there was such an uprising of the other parents, they wanted their kids to learn number facts
part oh, no
int and they eventually fired that math teacher, because he was horrified that, because here was his opportunity to teach all this great stuff and the kids minds were just open and eager, and the parents came in and said you know i'm a doctor and i know my kid has to know their multiplication tables, and i was like, alright, they're a doctor, they're talking they have more clout with the administration, and i'm out
part oh, um, sorry
int there was this, a teacher in the 1930s in the US who decided that middle school kids could be taught to make good arguments, his name was Fawcett, and he taught kids to make good arguments, and what happened was, that they argued with their other teachers and their parents, effectively
part he-he-he
int so they stopped doing it.
part That's a funny story.
int They're both sort of data points that this could be done, if we could figure out a way, managing a transition while the parents can't outargue the children
part i don't know a lot about this, outside of my even range or regular article reading anything like that but you know briefly i'll hear about or read about other countries that have implemented um programming curriculums at a much younger age which is essentially the same if not similar to implementing like foreign language learning or any other kind of thing i mean we're we're we're we're better equipped i mean we're just as well equipped to learn things when we're younger, i don't know about that kind of stuff but i mean everything i do know seems to suggest that you know kids are really good at learning and probably better prepared to, yeah, um which really is what most of this boils down to at the end of the day, because language i mean, you know, controls the ideas that you think about, and
int yes
part how you break down the world, um, and and and how do you think i mean that was the biggest shock going makes i've been waiting to learn about Turing machines since i got to college but i didn't really read about them that much it was kind of like one of those things where i'd go look at it and just too incomprehensible for me to really put a lot of time into, um, so i guess the theory of computation and like on the first or second day, it was like, alright, kids, it's all about language, and i said what? but it makes a lot of sense, it really does, and i mean what a lot of this boils down to, even i've been coming increasing i mean it's not ever explicitly stated in any math class but i mean most of math is about developing the appropriately language to describe what you want because it's math it has to have an absolute meaning there's not ambiguity involved but it's still a language and it's still just about developing you know they call it machinery they call it all these other things they don't usually call language, but you know i'm pretty sure that's what it is, and so, by saying kids are good at learning languages i mean that's a that's the universe you know i mean they could learn anything so so teaching them programming and and how to describe things in terms of programming at a young age, um i think would be would be would have amazing results but i don't know that much about it, i'm not around any culture that does that or so i mean the languages i've been learning since i was little were not nearly that helpful.
int Berlitz who had a famous language school, he learned a language for every new relative, he thought when he was a little kid that all adults had their own language, and that if you wanted to talk to them you would have to learn it, so he had an aunt who spoke Russian and an uncle who spoke polish and he was always having to learn a new language, so he had at least 17, when he was 12, and he thought well it was obviously something that could be done, and he found it was not that easy for other people so language acquisition, people who know about neural plasticity and study linguistics and things say that language acquisition slows down at about age 8, so it's very common to see immigrant family (I'm from Canada, we have lots of immigrants speaking different languages) so you go to a Walmart or a HomeDepot of something and here's like the 5 year old whose able to do everything fine, parents are doing translation through the kid, because the kid is able to learn so much more quickly and if we taught those kids the language of math, where you have the precision, as you said, where people have gone to the trouble of making things unambiguous, the minds using those languages would be so much sharper and more capable, i think it would revolutionize the world. So i don't know if you've ever looked at Greek. You know in English we say, You, and it can be singular and it can be plural, and you can see we in a group of 3 people, and it's ambiguous.
part umhm
int whether it's just the person talking and one other member of the group or all of the group meant by we, but in Greek you can't do that, in Greek it's you know it's I, we-two, or all of us. so it's explicitly different words for that, and, wow, if a person has to be thinking in that kind of precision from their youth talk to their parents and their siblings, what does that do, what extra benefit do they get out of using their mind more articulately
part um
int i think it's possible
part well, ok, so using um myself as an inbetween model, i grew up here but i mean rose favorite of mine, i mean, i didn't ever really do a whole lots of extracurricular stuff but math and science i poured a lot of attention to, i loved legos as a kid, my mom cause i mean my brothers always brought animals and my mom was like and then when you rolled in a desk and ask questions and turned your bike over and asked about gear ratios, i always liked that kind of stuff a lot, i was always like thinking
about things in those terms, um so i mean i definitely have found that in pretty much any english class i've taken it wasn't till like freshman year of high school that i discovered writing could work for me, i really disliked it for a very long time, very strongly, um, but then i had one teacher and you know the prompts really good and actually able to write about things that i had some interest in or felt strongly about and all of a sudden i was like wow, i can express myself through language, this is great, uh, and so from there for the most part anytime i had a writing class i've enjoyed it so i had a really good freshman class writing experience in college so i totally intend tend here oh right so basically what i've been finding is the fact that i've been trained and liked to somehow think more articulately, you know, more specifically that you can't have fuzzy verbose language for an argument, you have to concise, precise statements, um, that has always made my papers a lot better than that of many of my peers that aren't used to having to whittle down an idea into a precise notion or um you know otherwise kind of edit their paper to actually mean something as apposed as kind of throwing up ideas and they kind of make sense a little bit but the notions aren't precise, you know what i mean, and i mean people who like to study english aren't really taught about i mean i can't say it because i'm not getting my degree in that but these you know from what i've seen you know the notions of precision um isn't isn't really the same but the concept
int the goal
part yeah, but the concept is really important when you're writing, i mean, i mean, obviously enough for fiction or like entertainment or you know philosophical ideas where you're supposed to kind of process, to think about it, but if you're writing a paper that's refuting an argument i guess, i mean i don't really like writing argument papers that much but that's really important genre you know you have to really understand how to take an argument and make it precise and so forth so i think that would interesting benefits i didn't really thought about that too much to be honest what like what better word?
int freshman english here?
part yeah, so, fresh, they i don't know if it's still around, but they had this program where freshman writing was if you're in a learning community, you took freshman writing with your learning community, which is a really good idea because that way you have a shared interest pool for wanting to write about um uh but the thing was ah i came here and um you know through some suggestions from my mother and i just got uh decided that a learning community would be a good idea, i didn't want to end up in the general roommate pool and i was like oh gosh wouldn't it be great if there were a math-science-learning community
int is there one?
part for women
int oh well
part there are reasons why things are they way they are and i didn't really want to try the engineering learning community, i wasn't an engineer at the time, i kind of didn't feel like that was me and i'm still not really sure i like the engineering culture a whole lot but that's like another thing, um, so i ended up joining humanities house, i mean everyone's got interests in like humanities i guess, and it turned out that the only thing that we all had in common was that we all decided i'll join the humanities house, so although you were supposed to have you know this freshman writing class about all the same interest, the only similarity we had was that we had joined humanities house, but we had a really great grad student teach the course, so it some really good papers, i put a lot of attention to it, because like i wasn't doing well at the beginning because i was writing a lot of summarizing papers i didn't really get the notion of how to make an argument and support it with points and that what's your essay is about, not summarizing the book you are writing about, but once i got that, the class was really, really fun, in particular, um we read this one play called arcadia by tom stoppard that was all about the development of a lot of different like all there were a lot of ideas in the air, during the mid 1800s, thermodynamics, there was like Lady Ada and her programming, there were like, there was a ton of really interesting things that was just the stuff that interested my in that play, that doesn't even get into romanticism, the other things the english majors would find really interesting and so the play had this kind of duality except this one man there with a family that lived there in the 1800s that was kind of loosely based on Lord Byron's family and relatives, and um and uh then you know like the modern family, that lived there, um and so it was kind of talking about how although the ideas back then um the people were kind of getting these modern nations based on ideas of the times, so, um i got to write this play, it was about uh chaos and determinism and unpredictability and the universe and i was like all these things that i'm learning about now and have kind of had a loose understanding of then and i got to explore them really thoroughly in this 8 page paper and i had a blast and then i got to read it at the symposium
int congratulations!
part um
int Byron was off in Greece
part in this novel he was actually related to Ada Lovelace, um
int He's her father.
part yeah, right, i couldn't remember quite what it was, In the book there was like this young girl in the household who was kind of loosely based on that but it was exploring a lot of other ideas um she she was uh really interested in in in in fractals but it wasn't ever explicitly stated it was just something i you kind of could gather from i mean she was uh cause she was talking about imaginary numbers like the guy's really clever um uh they guy who wrote the play and i knew enough about math to understand what he was implying and so she was looking at you know how you could have an imaginary number i, you just set them aside and square them later they'd come back out and she was examining sequences that produced like random noise, kind of like Mandelbrot set kind of thing, and all these ideas about sort of about fractal geometry that was more descriptive than a normal geometry and a lot of ideas like that were explored by this young girl in the play, and um ideas about like the heat death of the universe and things like that, um it was really, really cool, um i don't remember talking about i apologize
int that's alright, we're talking about the expressivity of language and how people get practice with thinking precisely, if they have that kind of language training, but otherwise they may not
part oh, ok. well, so i guess an example is i because i was used looking precise ideas and notions i mean there were things in this book that really gathered my attention i could write about them but that essay in particular because we had um kind of group proofreading, um, so we had to like read each other's papers and give feedback and stuff and a lot of people struggled. find a distinct argument to make for like a distinct set of ideas because it was it was model about a lot of things you know if was very difficult to think about precise notions, so sometimes having these toolsets really lets you analyze a complex world, figure out what it is you're interested in, um, a lot better, yeah
int so it's nice, it shows up not only in math, not only in application of math to computer science
but even in careful analytical writing
part yeah, uh, i don't really want to be in mathematician, i don't my math professor isn't like gee i want to be you when i grow up, to be honest, but i will be forever grateful that i studied it for just what you're saying, the language that it's given my, thereby the toolsets and stuff, i mean, because it english english is really really imprecise language which makes it nice for things like poetry, which were meant to be ambiguous and interpreted by the reader, but
int or have levels of meaning, double-entendre
part which definitely has its place, to be sure, i mean we're humans, but, i feel like just studying that alone would make you so confused about the world you know,
int he-eh, yes, i'm definitely on the engineering-math side, what i want to accomplish, but i have more professors that i wish i were like rather than inaudible can't be like all of them, inaudible
part who is that?
int inaudible
part sorry
int no problem. so, my professor who taught me to do interviews said always to ask the participant what they wished i might have asked them. what were, did you have any hope of something that i might ask you to discuss?
part i knew you were going to ask about proofs, i was really happy to get to talk about that, because i never had got to talk to someone about all this before, and, i mean, the math department has got a lot of good people in it, but it's kind of a boring department, not even kidroo lab anymore?
not really a communal lounge anywhere, they have a library but they took that out and put a conference room in, there's no lab being used, and
int oh, do you know Ian Dardik?
part he's a good friend of mine.
int he'll be good to talk to
part i met him last year and we have a class together this semester which has been really great because it's also the first math class i've had where we have group homework, so it's been good to have someone who's on relatively similar page to talk to and do problems with, um
int the idea that proofs can be used to explore, to see more
part umhm
int is a wonderful idea, and what makes me sad is that so many people miss it. They say, proofs, have to do them, and when i'm done
part iw as actually going to ask you , what level, i mean obviously nands, like i i'm i because i haven't talked to other people about this too much, um i mean at least outside of you know math department um i'm kind of curious what other people think about proofs
int if you can get professor russell to talk to you, um, he will have a lot to say, um he would be my favorite person to ask, you know, what do you think about proofs, and then you know as much time as he has, he'll tell you lots of good things
part i mean what about some of the other students you've interviewed.
int uh, besides Ian, I would say that you are most sophisticated of the students that I have interviewed, more rather, so there cases of people who are trying to learn the absolute minimum, to get by
part umhm
int like they never want to do a proof. I tell them you know in the late 1700's aristocrats did proofs for the pure joy of it, and they're like "Who would ever want to do that?" Um, so for example one person is looking at the superficiality of the inductive he said, inductive proofs i know how to do those there are steps, first step is i find a base case. second step is i solve the one going from k to k+1. He said, but I don't have the feeling of why that makes a proof. I said ok, let's look at dominos, you can do one domino, you can set the dominos so that one domino always knocks over the next, that's the k to k+1, and k is allowed to be 1. Then you get all the numbers, and he was like OOOOOhhh. Compare that with the depth and value that you're about to see in proofs, there's a huge chasm there.
part umhm
int so, what i'm hoping to do is help that, the people who haven't gotten to the stage that you have already, catch up, because, you know, they're doing proofs because they have to, and when they don't have to, they're not going to do them again,m they;re not going to like it, they're not going to feel secure, think of all they're missing
part there was an interesting kid that i work at the commune center, by the way,
int ok
part but um there's a kid who works there that i talked to a couple times, and um, he's an electrical engineer, and he grew up not liking math at all, and not doing very well in it, and then i forgot at some point in like high school he took a class and everything changed, he started doing really well and he was still really confused about it, he didn't get proofs or anything like that but now he's actually staying an extra year and i didn't i mean i could have guessed at this but i mean i don't know a whole lot about the electrical engineering he was saying i mean the linear algebra he's been getting into is really high level and intense, because the kind of computations you have to run, and so he was saying that all of a sudden the proofs are becoming so much more interesting because they were so relevant to what he was interested in or wanted to do and i think this kind of goes with what i was saying earlier about people taking computer science not really what they're interested in, i felt like a lot of proofs kids learn check in discrete systems it's important to get that base layer a few examples that you've seen but until you can start getting to proofs that are about a relevant to what it is you want to do to explore things you want to do, um it isn't as interesting i mean i feel like i don't know about music theory, i fell like there's got to be some proofs in there too, and i feel like those proofs have got to be really interesting to musicians who learn them, might not be interesting to me, probably wouldn't even know the language to work with them, because i don't i played music for a while
int harmonious, some aren't, there are ratios, it's not an accident that we have harmonic numbers, it's the same word, with the same meaning, and so there are bound to be proofs, maybe there's something about how long a dissonance is pleasant before it becomes unpleasant
part so i feel like the part of it is that i mean without drawing in you know too too deep like some philosophical discussion i mean i feel like part of what would help people become more passionate about proofs is i mean if they if they have proofs the really just zero passionate about it, things they wanted to know, which is why i mean so so part of that is that there kids in computer science who don't really want to be computer scientists, do the bare minimum or whatever, um, so i think you know that's part of the problem, you're not going to get kids who really want to do proofs in computer science, they don't really want to do computer science, but i also think that people probably should encounter proofs in a far wider range of subjects than they currently do, um cause i mean this certainly isn't the only place where kids get city you know there are third year of college realize they have to do some proofs and get really alarmed, i think that probably even comes up in like linguistics of something, i think, like state machines, i've no idea but i mean there are just so many fields that use mathematical tools
int linguistics is a good choice, because after all we have context free grammars in 3502 like you are taking now, and context free grammars came from Noam Chomsky, that's why there is Chomsky normal form, and he's linguistics
part and i friend of mine another coworker actually who's been taking a lot of linguistics classes and he was talking about making state machines, i was like really!
int we know what they are
part that's really cool, and i mean i can only expect that yes that maybe there's some proofs involved in there somewhere, too, um but if you didn't want to do linguistics i'm sure they weren't very interesting
int suppose, unless they turned out to be state machine proofs they liked for other reasons
part proofs are part of what let math have that precise meaning you know i mean you have your axioms and your definitions, but to make more precise notions you need to have precise ideas what they do like you have your Taylor series and you can define what that is, but it doesn't really matter unless you know what you can do
int Why did I have to memorize this? Generate all those curves? I think that's really key, i'm glad you mentioned that, that if the proofs are about something that the student wanted to know
part umhm
int like, Can I keep an airplane up in the sky? Bernoulli, ooh, look if I did this the thing would fly. um, then i think people would be turned on, they would feel the value, wouldn't have people coming in saying do i really have to do this to be a programmer because i'm not sure i can get it.
part yeah.
int but how to collect those examples of good pool ok well we're going to prove whether or now this helicopter will fly. I think that would be really valuable, so thank you.
part no problem. um i guess i meant ha-ha the other half of that though is you know getting people to be interested in something, um and that i think is a much bigger problem that's probably outside the scope of your research
int it's outside of the scope of my research, that's correct, so i'm mainly i'm doing proofs and how people experience proofs, and then i'm i tend to push towards "and how could we teach them better" but i'm supposed to concentrate how people experience
part how that ended up in the realm of computer science?
int it's because proofs are needed in computer science, and proofs are a hangup for some students in computer science. They would rather think that when they walk out the door they'll never inaudible a proof again.
part umhm
int or some people have internships, and they say well you know i've been a programmer , i've had a summer job or i have a side job and i don't see any use of proofs in the part of work that i'm doing now. but if they stay that way, they confine themselves to the lower paid parts of being a programmer.
part umhm
int you might say golly steve jobs probably couldn't do a proof and he's not confined to the lower paid
part Bill Gates sure could though.
int I suspect yes.
part There was actually an algorithm we studied called the Gates, it wasn't that we directly studied i was looking like
int there is something with pancakes actually
part the pancake flipping problem, i forgot what the statement of the problem, i was looking at some other implementation, the Gates algorithm seems to be the best, Bill Gates made this
int Yes, yeah. so I was president of my debate club in high school, i just think that being able to think clearly is like i mean you would not give it up
part umhm
int once you've acquired it, so therefore i want people to have fun, getting that, and having that, and so it just it's struck me so odd that people when they're we;re trying to teach students this thing this capability that will make them stronger better, make them happy, that we we're aren't necessarily succeeding in every case, there are some cases of people who are feeling harassed and are glad it's over
part inaudible
int so, i find myself in computer science as you mentioned several times people show up in computer science even though they want to use the computer to do something else, i want to do computational systems biology, so uh so i'm learning how you know techniques so i think of it there's a bunch of tasks that i want to do, i want to find out why people who have ALS why they're nerves let go, of the neural muscular junction, it's going to require a lot of simulation in the computer, so i want to be able to do that, uh, in fact there's the computational complexity is such that, we want to do this on a massively parallel computer, so, i'm finding out how to do that, it's the biology that i don't know yet, but i have in my mind, so here's this list of tasks, things i wish i could simulate, and i have this list of techniques, so i've have techniques nothing do do with, some tasks i have no way to do, trying to bring those into alignment, and make work done
part i forgot where i heard this analogy, uh, but back in the day before we had computers when you were building things, there were a lot of people, a lot of people had to build things, um, carpentry was a skill that you know if you knew how to build things out of wood, like you could build a lot of things, but it's different than being a ship builder, if you build ships, you could be really good at that, but probably not very very good at building furniture or something, but you know you might need to study carpentry a little bit more extensively to build a better ship, i mean there's definitely some feedback there, i see what you are saying, if you were really interested in biology and wanted to build this intense computational system, you would have to sit down and study some computer science to build an efficient implementation, i mean it doesn't detract from the biology i don't know, it's a tool set to solve other problems, yes, ha-ha,
int ok well thank you very much for all of this, i think we'll call it a wrap.
line90t3450
int ok its' wednesday this is peter, please start by saying i've read and signed the consent form
part this is peter and i read and signed the consent form
ok, so, i'd like you to recall anything at all associated with proofs, maybe chronologically when you first saw them, what you think when you have to start writing them, anything like that
part the first thing i encountered proofs was just in earlier math classes like either calculus 1, things like that, i never proved them because its always theorem already proved by the professor, to the class, that was it, the first time i'd ever had to use proofs for any assignments or anything was in this class and i'm not particularly fond of them so yeah that's what my feeling when i've encountered them in class
ok, they're rigorous
yeah
they require you to pay a lot of attention
yes, rigorous and so much attention to detail, they're so intricate, and several ways of going about it as Prof. Peters demonstrated, there are different ways, strong and weak induction, this and that, a whole procedure, and things to try, and so, yeah, it's a lot of detail to go and do it.
int so, um, do you have any notion of what they're for? why for example that course is in the curriculum
part actually yes, yesterday in class, yes, Prof. Peters' TAs was explaining this to us, he says, the point of the proofs and the things we learn in this class is for other classes that are in nearby in the curriculum, CSE 2300 and 2100 or more like software engineering which is 2102, but any way, if you can prove that you know in a hardware example, or in a hardware applications that certain things are true, then you can the hardware systems you can show are true and the same thing for software, you can prove that small blocks of your program are true, the same can be said for the whole program, so that's, that made it a lot more sense, before that i honestly was not exactly sure why we were learning these proofs, obviously they are important for mathematics and things like that, but, computer science and engineering, that really cleared it up for me
int so since we have a recent launch of a spacecraft, we can refer to that, um, if you wrote a bug in your program and found it after you launched, which has happened, there was an aircraft on Mars before, that was experiencing an error, and they figured out where it was coming from, and they were able to fix it remotely, it was a real time system error, um, but when you're you have to release your software on a spacecraft, you don't have a chance to go back, or maybe you're writing a flight management systems for an airplane, you really want to be sure that there aren't any errors, also you have to sure you don't use up more power, want more memory than you have, and it turns out that proofs get used for that as well. how complex is this algorithm anyway, basically resource consumption question. um so you will have application for them but i think frequently uh in classes the professor will also have a proof that they show you but you have to be sure that it's right, be convinced by it
part yes
int, umh, so and it may be that you have to create proofs yourself, so, but in xxx'x class you had to create proofs, so can you tell me something about what goes through your mind when you set out to create a proof?
part when i set out to create a proof, most commonly i what goes through my mind is mathematical induction because as a method of proofs is most straightforward to me, and i think on most of the time most often we would do mathematical induction so that's what goes through my mind first and uh
int so when you produce such a proof, are you confident that it is a good proof?
part not always. because the thing with mathematical induction is there are steps to it, you prove for this case, you prove for that case +1, things like that, i can go through those steps and i can by going through the steps i'm sure it's correct because it's the right steps right, but, in my mind, it's a little shaky and i'm not
int right, so there's this other thing when you get to 3502 you'll see there's a problem in the textbook, where there's a proof by induction, has a base case, it has a way of advancing through the integers and it proves this completely ridiculous proposition that all horses are the same color.
part yeah, right
int which you know is not so.
part, no, of course not
int and you look at this proof and say, what's wrong with this proof, that's a problem
part right, right
int so if you think of it as steps, but you don't know how the steps why the steps are what they are, that's one level of thinking about the proof, and it's uh better level than some,
part umhm
int right, uh, but if you don't know you know in your heart and mind why those steps are adequate, they you're left with this feeling of well, i did it, but i'm not necessarily convinced
part yeah, that's precisely the feeling i've had
int so, which inductive proofs, i like to visualize them like dominos
part ok
int you can prove that one domino can fall down
part umhm
int stand up it, knock it down, dominos can fall down, Then if you can prove that neighbor dominos knock their neighbor over
part yes
int all the time
part yes
int then and of course there's a space, you have to have them close enough for that to be true
part yeah, right
int then if you stack all the dominos close enough and you can knock the first one over, cause you know that, and you know that the kth domino, which is allowed to be 1
part right
int is always going to knock over the next domino,
part yeah
int then for sure you can knock over all the dominos
part right, that makes sense
int so, you have to have a base case, you have to know that you can get from the kth case to the k+1'st case
part yeah
int and it has to be that the base case is good enough to get you to that first k, after that you're completely covered
part right, ok, yeah
int so i think it can be gaps in talked to one person who said well, he was not confident of his proofs
part umhm
int he knew what modus ponens was, he knew what modus tollens was, but he would write proofs, and he would not be confident of them
part yes
int but the connection between the two was not there
part umhm
int i think the educational process allows for gaps to happen, and if everything were tied together, students would say, oh, now i get it
part right, yes, yeah
int and i think it's maybe you know people are trying to cover a lot of material and they have a limited amount of time
part right
int students are trying to take some number of courses, usually greater than 1
part right
int and so these gaps occur and people get stressed out or just don't feel confident
part yeah, yeah
int so the purpose of what i'm doing, is to find out, because everyone knows the gaps are there, finding out whether they're all close to one place or whether they're sprinkled all over the place
part right, right, right
int so i'll tell you another story to get you talking about something
part ok
int i teach discrete online at university of maryland, and i had students so in the first week we talked about what an implication was
part ok
int what a contrapositive was
part right, right
int and what a converse was, and I convinced them with counterexamples, that the converse was not always true, so uh, then seven weeks later, they had a problem which was take a soccer ball, imagine the seams to be edges of a graph, imagine the vertices to be where the seams meet
part umhm
int puncture the sphere, lay it out flat
part yes
int is it a planar graph. If it is a planar graph, prove to me that it is, if it's not a planar graphprove to me that it's not.
part ok
int so you need to know that planar graph means that no edges uh hits any other edge
part right
int except at vertices
part yes, yes
int and i had students who would computer the Euler number, and say, ah, the Euler number is two. Now we know the following implication, If the graph is planar, then the Euler number will be 2.
part ok, yeah, right
int so if they come to me and they say it's planar because the Euler number is 2, that's the converse
part umhm
int so it's not necessarily true. It's an inadequate proof
part right, right, right
int so i need them to say something like as you lay it out flat there is no need for any edge to impinge on any other
part right, ok
int does that use of converse, you know, misuse of converse, use of contrapositive, does that get you thinking about anything
part in that situation?
or
int any situation
part well, it never really has until i heard that story, because that was kind of previous in the semester i didn't really after we went over it i wouldn't really use it much on the assignments but in that homework it makes me realize that yeah there's a gap what am i trying to say...we're just proofs in general makes me...think more about...because multiple ways, so many ways to go about a ...for me there's not many ways to prove things
int there are, usually are, many ways
part but you can't leave any gaps, like in that,
int or it's not a proof at all
part right, you can think you proved it, it's when your students did way i have in the past, to cover all the bases, make sure there's no gaps in the proof
int there's this professor velleman, i don't know what school he is at, but he wrote a book about proving, and i found it very appealing because it was aimed at people who were used to programming
part uumhm
int and he has a website where you can go and use his tool that he built, and it poses a problem, so he starts in the beginning with simple problems and says look we can solve this in this routine form, you know, formulaic way
part right, right
int and then he says now look, here's a bigger problem, but it breaks down into parts
part yes
int and the parts we can solve in this formulaic way
part yeah, yeah
int so let's talk about combining parts. so then he builds more and more elaborate theorems that students have to prove, and shows about breaking them into parts. It's so much like making a subroutine out of it that appealed to me
part yeah, yeah
int do you think that would be a nice thing to do?
part absolutely, because it goes back to what the TA was saying yesterday, if you prove small blocks of the program true, you prove the whole thing is true, that's like that, and there you can build up, you build up to larger program, or it you have a large one you can break it up to prove each one of those are true
int yeah, so, we have the TAs assertion that these can be combined
part right
int it's nice to know there's a method for combining, too
int so did you have uh proving in geometry in high school?
part no, not in high school
int and when you started in calculus were there these epsilon, delta, continuity?
part those I really did not like at all
int umhm. did they say anything to you about um, a proof by Euclid, that had pictures in it? Actually a lot of Euclid's work is accompanied by diagrams.
part think he may have brought it up.
int so there's one proof, in which he draws two circles
part yes
int and points out that they intersect.
part umhm
int without really proving that they intersect
part yes
int and then draws a line between the points of intersection, and it goes on from there.
part ymhm
int the problem with that proof was that if the numbers are not complete, which they were not at the stage he was discussing, proved to be complete, then you could imagine that the timing adapts, continuous line to us, because we're looking at a large scale, but there could be some number in there that wasn't there, if we didn't have the irrational numbers, uh, at least as a concept, of course they existed, circles still had diameters, proof didn't concern itself with whether the lines necessarily overlapped, and so people because disinterested in pictures accompanying proofs, but when you try to teach people about proofs, it can be very tempting to draw a picture and when you do the epsilon delta proofs, there probably were picture
part there was, yes.
int so i'm interested in where, what your perception is, the utility of pictures in explaining. People explain proofs in words, they explain them with mathematical notations and they explain them with pictures. Tell me about if any of those are helpful to you.
part i think pictures for me at least are useful form of proving things because the epsilon delta i mean when he speaks about it you know his delta it very small delta and things approach each other, it was a little foggy in my mind, then when you draw a picture on the board, i still didn't really i still don't really see the
int ok let's see, there's an x axis and a y axis and you've got this curve, so as you shrink down the amount of y axis
part yes
int you tend to shrink down the amount of the x axis. Somebody gives you one, and it's fixed, then you can shrink down the other one at your liberty, until it's small enough to satisfy the constraint they gave you.
part yeah
int, so once you know that one is fixed, and the other one can't chase after you, that's helpful to appreciate it
int so i think it goes something like, um, for any epsilon there is a delta,
part
int somebody has to set the epsilon and then you can make delta as small as you please,
part yeah, so once i saw the picture, then the mathematical expression made a little more sense, and uh trying to remember, pictures have been helpful
int so i saw another proof one time, actually i saw an expression for something called a stickbreaking process. The stickbreaking process is used when you in a position you want to have some number of fractions
part unhn
int you don't know how many fractions you are going to be asked for, but you do know that however many there are, they all have to add up to 1 when you are done. So that, you know, as a free for all unconstrained problem that sounds how do you know? You might next time you get a fraction you might overspend your budget.
part right, right
int so, you think of stick breaking, somebody gives you a stick, and then they say well i'm going to ask you for some bits of the stick, i'm not going to tell you how many, when their done they all have to add up to the length of the stick, now it doesn't sound so bad, because you are just breaking the stick, which you are allowed to do as many times as you want, you always keep 1, they always add up to the stick, if you have to give another fraction you just break a piece off, and retain a piece which then you can subsequently break. So there's a mathematical formulation for this, it has a sum in it, has a couple of factors
part right
int uh, and you can see that in the mathematical formulation, you can also see it, you can also write out the code for the process. So I did this and I found, because I had to explain this process to a class, and I thought, I'm going to explain this by giving them the algorithm, and I said, to me, the algorithm looks so much easier to understand than the formulation, but they mean the same thing, so how can that be? And i decided that it's because when we see an equality, it can mean assertion. The thing on the left hand side may have an independent life of its own, the thing on the right may have an independent life of its own, we say that those are equal, we have to check. But if it's code, the left hand side has a sort of subsidiary role. The right hand side exists,or else you get an error, the left hand side gets made, so in one sense the code is less demanding than the equation, but in fact they represent the same thing
part yeah
int so, once you know the variables are free or bound that resolves the inaudible so i wonder whether if proofs like mathematical formulations, could be rewritten as algorithms
part yes, yes
int would the computer science students find them more readily understood
part absolutely
int and maybe even easier to create
part yeah, yeah, in my opinion yeah absolutely, because for me notes should be code fragments definitely look through first, because that makes more sense the assertions that they put the inequalities you know an algorithm you can trace through it, you can write it out, things like that, it's a very beneficial
int i know professor redacted is very um concerned never to make a step that
is not understandable. He refers to a textbook that he and I both know called Halliday and Resnick, in which the phrase "is obvious" was frequently used.
part umn
int people complained about the first edition about these statements, and in the second edition there were some that were revised to say "it's really obvious" which we did not regard an improvement
part eh
int um so professor redacted wants to avoid that error, um, i think that having a line of code or lines of code you're guaranteed that it's obvious, because the computer knows what it is, and we're trained you know to know what the computer "gets". so have you heard of the method of invariants?
part no
int in programs. ahhah, well, I'm not going to teach it to you
part ok
int but it's something in your future. If you know that something is supposed to be true as your code is going on, you can actually write it you can think of it as a guide to error messages. Every once in a while the code can check over its own shoulder and say, this should be true, if it's not, put something out, and um, invariants are used also if you want to prove that code is accurate, and you know somethings about it, can say well it will always be true after i do this, after i do this it will always be true that these things will add up, or some number will be even, then you can just toss in these checks
part is this similar to an assertion?
int uhhuh
part ok
int so you have heard of it by another name
part yeah i've seen like assert this or that
int umhm
part testing in that way, yes.
int so there is really this close connection between what proofs are, what proofs are for, how we express proofs, how we use proofs in code and um another thing that really strikes me about taking a real historical perspective, prior to the French Revolution, there was an aristocracy in France
part right
int and some of these people are famous mathematicians. So, uh, they were not paid to be mathematicians, these are people who wrote proofs for the fun of it. It was a lark, you know.
part yeah, yeah
int and if you were to look forward to computer science education you might say, you know, some part of your education you're going to be able to sit around and do stuff that French aristocracy used to do, wow, wouldn't that be neat, and oh, it's proofs, like oh
part right, right
int why, it seems to me strange that would be the reaction that we would predict, on the one hand, say, you know, get to live like the aristocracy, wouldn't that be wonderful, we get to do proofs, maybe that doesn't sound so wonderful, and yet, people really enjoyed the mental exercise of it
part yeah, i
int and so i wonder what are we doing to the pedagogy around proofs that people find them stressful rather than super (food for?) thought .
part i think it's possibly the culture shift. Back then, yeah, i would rather be doing proofs than working on a farm or something like that, but um, today
int as an aristocrat, you have the choice of doing nothing at all, calling up the chamber chorus and telling them to play for you, working on the farm was not a mandatory thing for these people
part right, right, right
int i think there's something oppressive has been introduced, that they did not have. um, you know maybe it's just students are concerned about their grades, and they're thinking oh you know if i don't get this i'm not going to get so many points, and i've had students come to me and say do i really have to know how to do this in order to be a programmer because i want to be a programmer
part umhm
int and i don't want to know about prime numbers
part yeah, right, right
int it just seems to me that the fact that the aristocrats had so much fun doing it is an existence proof that this can be done in a very pleasant way, engaging way, and trying to find, find that way
part fun the way wish it can be people can enjoy doing proofs?
int you know how some people enjoy writing code
part yeah, right, of course
int i happen to be one of them, so i will, you know, write code instead of sleeping if i have the chance,
part right
int um i would like to see proof doing be like that.
part oh, i can see that, you know, because i think the thing that draws people to coding is problem solving the feeling of achievement when something works
int yes
part i mean, and so, why couldn't, would the same thing be applied to proofs, i can see it that way now, that you mention it like that
int so we have ways of checking whether our code works
part yes
int if we had ways of checking whether our proofs were good, before waiting to see what the professor thinks of it
part ok yes
int wouldn't that be nice
part that would nice
int it turns out there are such tools, and they're used for really heavy duty proofs, but if we introduce them into the curriculum, and say hey guys, proof lab, use this code, it will check your proofs for you, you can keep going, you can know you are right when you are, you can find out that you're wrong, so you can keep going
part that would be useful
int what do you think about the idea of teaching proofs to kids? Grade school kids?
part i think if it can be made like acceptable then ways they could understand
int umhm
part then i mean i say it's a good idea but i'm not sure if i would have enjoyed it when i was that age. it's a good idea for sure.
int if it could made enjoyable
part if it could be made enjoyable, of course, because even at a younger age, students can be could be can figure for like algorithmic thinking and things like that, and even younger age without maybe even the computer programming like that, know, get a more basic foundation proofs and things like that, then i think it would be beneficial
int in the 1930s this teacher named Fawcett taught some grade school students proof. I don't know what they were proving. He taught them to go through deductive steps, and to form rigorous arguments.
part umhm
int what happened was, they proceeded to get into arguments with other teachers, and their parents, and they won, and they knew they were winning
part yeah
int this did not go over well.
part right
int for Mr. Fawcett, and it was discontinued. I think if we managed to transition it would be a good thing to have kids starting out thinking and then this organized way and i think that self-confidence for kids is really important, in that, i really think that part of the Harry Potter phenomenon was because kids were thinking about oh you know they have powers, they can accomplish things
part absolutely
int seven year olds may not have a lot of opportunities for that in the world. Combination of knowing you can do small proofs, knowing how to stitch together small proofs into larger proofs, and having feedback from the system that says, no, you didn't get it yet, or, you know, have a look at line 3. When we write code now we have all these source editor tools, underlining in red
part yeah, right
int if we had that for writing proofs, i think people would actually have fun with it
part i think so too.
int well, thanks, ah, my teacher who taught me how to do interviews said always ask the people what did you wish i had asked you for. So, is there any questions you had in mind you were hoping i would ask?
part let me think. I think really, nothing really comes to mind, but, i mean I wasn't sure what to expect.
int so what do you think about um we talked about computer-based feedback like an editor, or even like running a proof like writing code
part yes, yeah
int what about um sort of having a designated person that you could go to, i mean, so we already have instructors, we have TAs, um, is there anything about that system you know that could be made better with people?
part um. I'm not really sure, like, how could be made better, like, as someone go to these assignments and ask them about it in more detail
int yeah, so, you know feedback on assignments when you have a big class it's really hard when i teach at Maryland i have 40 students
part ok
int and i made what's called a rubric, this is school policy to make a rubric and say well ok they do this wrong they get so many points off, do that, while you're at it, you can say ok if they do this wrong, i give them feedback specific to that error that they have made and then they've built this new learning management system, where you can put feedback for the differetn points of the rubric, and you can go through the homework, saying, rubric, tick tick tick, and the feedback is automatically added on. Though, well, i'm used to writing each student their own personal feedback, but not all instructors have time to do that
part yeah
int sometimes you just get -3 on something and you may or may not have time to pursue
part yeah, exactly!
int even if it were coming out of like this this automated system like i described for you where the particular errors identified in advance, the particular feedback that goes with that error is written in advance
part unhun
int so it's not your own personal handwritten answer, but it's like, this this this you seem to be in this category maybe these remarks will be helpful to you
part yeah, i'd like to get that because on some of my assignments and some of my class assignments it would be just a you know red mark with something, prove this, or this is incorrect, so why? how is this not proper? like enough proof for you know things like that, but not much feedback, and points off, so we didn't know why, so, it would be helpful to receive feedback like that.
int well.
parts how to reevaluate it maybe how it would have uh some motivation to go back over the problems myself my own time to try to figure out what i'd done based on that comment, instead of just 3 points off, sure now and then oh to just the further that statement i was thinking before maybe that would help kind of bridge the gap between the things you understand, gaps in your knowledge in the class, because sometimes in my other classes like in my other computer science classes or circuits if kind of gap in my knowledge it gets filled in, sometime my own time when i'm studying for the homework or doing things like that, but this been i do the assignment and I don't have much intention to go back to it once it's doing because i'm not really sure how to prove it, yeah, so, i think you've created ways that could help fill in those gaps something i thought of
int well thanks. I have to check my watch because I have this class. I have time, i have a little time left to walk back to ITE, and i have to walk to Edmund, still have 10 minutes, class starts at 3:35, I'll need to set up the network, still 25 minutes. YOu've given me a lot of helpful stuff
part i hope so
int i really appreciate it.
part so you have given some helpful things, too, because um, not that you've given me insight the reallife application, especially satellites and spacecraft, in fact in my circuit textbook it says uh to make robust circuits it's very important to make sure everything's bug free and check it because there's not many technicians on Mars, make sure it's good, and same thing for software especially, maybe it's the case you can fix it from earth but really ideally it would be proved before you could launch the craft, so
int so there's the story about the real time bug the company that fixed it is called VxWorks. and of course they're very proud, you know
part right
int that they did that, um, there's a method of insuring there's a technique called pre-emption. And if you have a task that has and there's a can also inherit a priority. so, some task that was allowed to run but it was a low priority task, some low priority thing, but it takes a big chunk of time, and maybe it's opened up a database and you have to wait until it's done closing it, and then a high priority task comes along, well, you can either um wait for the thing in fact you have to wait for the thing to be done, it's got the resource, but, if it has a lesser less significant priority, then the higher priority task can interrupt it,
part right
int the higher priority task gets the processor, but the higher priority task cannot do its job, because the other task is holding the resource that it needs
part ah, i see
int so now you're stuck, you're not going to do either one
part right
int and that's the situation they had gotten themselves into, because they were not allowing this um priority inheritance so what happens is, a task, of insignificant priority task, hold s resource, the more significant task comes in, and interrupts it, so what should happen is the less significant task should inherit the priority of the more significant task, so that it gets to processor, and can finish what it needs and get out of the way
part yes, yes
int and they had a bit where that was turned off, and the programmers who developed the systems had neglected to set it in the right way, and luckily the telemetry allowed them they could send a command out to switch that bit, and VxWorks people were really glad that (NASA)
hadn't scraped that part of the code out to get more memory, so they were able to switch it and the spacecraft was fixed, everybody was really pleased about that
part yeah
int anything else?
part not really,
int I shall shut it off.
line95t2817
int ok, it's Friday the 15th and i'm here with Rebecca, would you please start by saying i read and signed the consent form
part i read and signed the consent form.
int ok, thanks. so, anything you remember about learning proofs, working with proofs, deciding to do proofs on your own
part like in geometry, or
int yes
part in, uh, i just remember disliking them in geometry, i don't really remember why, um, i'm more liked things like mathematical induction um uh because they they can they verify themselves.
int umhm
part you can always use them to check your answer, and you know if you've arrived at the expected answer, most likely did it right, um I generally like to do any kind of proof that has either like a given like set of steps like mathematical induction has a set of steps where you have your initial condition, you verify your um you know you verify and then you do the inductive step and then you can conclude
int right
part um, then then things
int hopefully there's a connection between the inductive step can get you can start from the base case and
part yes
int then can go on
part umhm.
int sorry, shouldn't have interrupted
part no, it's fine
int so, uhm, you had geometric proofs in high school
part umhm
int did you have induction proofs in high school
part i don't remember
int but you brought up induction proofs, so were you thinking
part we did that in 2500, yeah, um, and then we also did like the um the laws of logic proofs
int umhm
part like those
int modus ponens?
part yeah. um and those are they're a little more difficult because it's almost like a puzzle i guess, i'll sometimes work forwards and backwards at the same time
int very good!
part so i'll start at the bottom to get something like you know i'll look at the bottom you know what i'm supposed to come out with and i'll kind of modify that to see if it's something that looks a little more like one of my other rules, and kind of start linking them from both ends
int sounds like you do well in that class
part still love it (still have it?)
int ok. Doing well in that class.
Um, did do you remember thinking about either because it was brought up by the instructor or the book or thinking about how this material connects to the rest of the curriculum?
part for the class, or in general?
int well in general.
part um, in general, we're learning uh i mean even now in 2100 uh the data structures class we're learning about graphs and we just went over and we're going over graphs from um mathematical and you know theoretical i guess perspective in 2500. and then in 2100 we're going over them in a practical like usage in terms of like solving a maze is what we're going to do with them, so, it's it was really cool when we started doing them in 2100 er in 2100 because i'm like, i know these
int yes!
part i learned how to do this
int yes, it's nice to see one class supporting another, it can be really good. um, so, have you looked forward at all to your professional career thinking how this material might be useful to you?
part uh, i really i actually really enjoyed 2500. um, i really like to i asked being us some i asked my professor some of the things that you would do with this, and uh she mentioned the artificial intelligence and i think that would be really, really, i don't know a whole heck of a lot about it, but i know there's the class i'll probably take
int there will be graphs, searching around graphs
part i think it will be really , really cool, because it's all logic, and that's that's all it is, is it's just logic.
int so, you might do some work in AI, might do some research in AI, might become a professor of AI,
part huh, huh, huh, i hope so. I'd like to teach computer science.
int so, do you remember any aha moments while you were proving things? you know, some people have trouble and then they have a realization so i'm calling that like an aha moment
part umhm
int has that happened?
part it's usually after a couple of examples, like if somebody kind of gives me the steps and you know there's like the official formal definition and you kind of stare at it and you're like what on earth is that but once the professor through a couple of examples i think i'm a personally a huge fan of examples, they help me understand things, once i've seen it applied, you know, a couple of times once, twice you know i'm usually pretty ok with doing in myself.
int umhm
part um, but it would depend on the class depend on the professor, but usually just leaving it at the formal definition is kind of aaaah. i kind of work backwards with those, like i'll get an example and like ok this relates to this step, this relates to this step, that's what this means, that's what this means,
int i've heard tell that einstein thought that examples were the only way that people learned. so, he was definitely in favor of examples.
um have you ever noticed, have you ever looked at uh, so you've talked about procedural steps.
part umhn
int they did this, they did this, have you ever thought of going after a proof as if it were that you were writing a computer program?
part hmmm. I don't think so. Um, I'm a fan of like having like a set of steps
int unhn
part to do something with, rather than so i know like what to do next. um
int there's a proof by Velleman, which i was wanting to show you. Yes. This takes a very procedural approach to proofs. He even has a website, where you can uhm you know appeal you can say this part of the proof seems to be as if we should handle it like this, set this and then so it makes smaller and smaller environments, so instead of having to prove the whole thing you know have a piece of a proof like a method within a class
part same thing what we had what i had to start doing with my physics problems was breaking them down into i have this chunk, i have this chunk, i have this chunk, i'm going to label and use this chunk i'm going to label and use this chunk, (repeats) and then i'm going to see how they all fit together. Even if there's like, even if it's almost like i guess you can think of it like constraint programming, there's a few ways to choose from how to solve a certain problem that's fine too you know if there's if you can choose between like one or two or three you know different steps that's fine too. but when it's just kind of like solve this problem here's your formal definition, go for it i'm like oh whoa
int if you can move it from that form into a form that feels more comfortable then you can go
part umhm
int ok I'm curious whether you ever find yourself proving things outside of class.
part i mean i do i like uh i find uh i like to learn, i love learning, um and i like to know why for a lot of things
int umhm
part so maybe not necessarily proving but maybe asking from almost asking for a proof, like uh, i was shown an equation in physics and i asked my physics professor where does this come from and he's like here's the algebra, here's this, you know i'm like ok, you know i'll follow the proofs, like in multivariable whenever he does proofs of things i'll follow along with them same thing with 2500. um, because what you know i'm not going to be tested on it, you know, i'm not going, so i usually don't take notes on it, because i'm not going to be tested on it, but i will pay attention to it, most kids just zone out, i mean, i don't need to know this for an exam, he said i really, i don't care, and it's so i don't know it's interesting to know where it comes from, like when a member in calc 2 where we proved the formula for the area of a circle using integration and i was like cool!
int yes hehehe
part i thought that was pretty neat.
int do you think that um like middle school kids could practically be learn how be taught how to prove things?
part um. i mean it would have to be pretty simplistic, but yeah i mean if you give them you know give them steps it's the same thing as you know if you're doing like a science experiment, you're solving a math problem, if you have a math problem you have a set of steps you're going to use to solve it, if you have a set of steps for your proof, you say, alright, you're going to do this step, you're going to do this step, so if it was you know simplistic material, yeah, i definitely think so.
int i think they could, too. There's a small experiment from the 1930s where a professor, or an instructor named Fawcett uh taught some middle school kids to prove and they became such careful arguers that they got into arguments with the other instructors, which was
part oh my goodness
int not a good outcome, but um, yeah i think u
part i think it would be great for critical thinking, too, just in general
int yes
part leads to curiosity you know why cause i personally i i've just been curious, but if you can get you know even one or two kids to start asking why for you know not everything but for most everything and i was everything everything, if you can start out, if you start asking why, and you want to find out why, that's i think that's incredible, i think that's the best thing any kid could ever have because it makes them want to learn, and when you want to learn, you're going to find a way to learn, you know you're going to go to school, you're going to go to classes, you're going to find the fun things you know i've a packed schedule you know and i have you know 2 hour multivariable lecture what not but i don't you know it's fun because i'm learning new things, you know and i kind of plan out different things like oh today in this class we're going to do this, and today in this class we're going to do that
int thank you.
um, if you since you're taking 2500 now, um have you had the occasion to think if i were going to teach this material i would approach such and such a way.
part um. i haven't actually really big fan of how my professor teaches it, she goes through the formal definition you know gives us that and you know gives us a bunch of examples, she'll kind of read through the formal definition, half the class will kind of zone out, which is fine, you know, everyone has to understand that there is a formal definition, here's the formal definition, but um, going over personally i uh i would use a lot of examples, i love examples, you know i'd i make sure everybody understood every step, you know i do maybe one, because they do take a long time to do, maybe one or two like professor does uh by hand on the board, you know and say ok here's this step, here's this step, here's this step you know and every step you like do you have any questions on this step? you know, make sure everybody understands, you know and if it maybe somebody had a little more trouble you know be able to help them you know enough is how things like that um, i'm i'm i don't like like a bunch of writing and powerpoint slides, i hate it, because i feel compelled to write it all down,
int umhm
part i hate powerpoints to begin with, because i feel compelled all of the information down so that i don't lose it and it helps me memorize it too
int yes
part and i'm sure it's the same for a lot of kids, you're reading, you're writing, you're hearing, so you're remembering
int unhm
part so i guess fewer words or you know give kids more time to write it down that kind of thing, but fewer words
int when there are classes with powerpoints, and the powerpoints are not handed out, that always amazes me, because you know they're there, why not just give them to the students?
part well they post them on line so that theoretically the kids you know can print them out, and some people do. I can't afford to print out powerpoint slides for every single class every single time.
int right
part plus, what helps me too, is the actual writing of the information
int yes
part they're visual, auditory, writing learners, we did a fun level test one time in like 6th grade, oh you're all free and i'm like great, lovely
um, it was like it was just a fun little thing, and what i find is best for me is when i can hear see and write it at the same time.
int umh
part it's just, if i can write it, cause i'm reading it, i'm writing it, i'm saying it in my head as i'm writing it
int do you find when you go back and look at such notes cause i imagine you do, ocassionally
part um
int can you remember where the professor was, in the room? do you find that?
part nnnn it would depend on the class. paying attention to the professor
int i have come back 2 years later, decided i wanted to transcribe some notes from a really good class i took, didn't finish transcribing the notes, but as i was transcribing the notes i realized that there was like a movie and i knew where the professor was standing and you know oh yeah i remember at this point he did this, and i thought, wow, that's amazing, taking, writing down, really helps you remember stuff
part i'll remember comments he'll say and i'll write little notes next to my comments that the professor will say that i think might be important, that he didn't put on the power point slides, but you know might help with those extra few points
int that was really quick, you used up all the ideas that i have, um
part if you think of anything else you can write it down, let me know.
int let me try this stick breaking idea out on you, there's an algorithm called stick breaking which can be used when you need an unknown number of fractions that have to add up to one.
part ok
int and this can be written in a single line with a summation uh in mathematical notation
part umhn
int or in a few lines of code
part umhm
int and people i've showed this to have told me oh, oh yeah they can read te code no problem, it's obvious code that you can follow and when you think about it, it's ok that is going to add up, however many times you go around that loop, the sum of them is always going to be 1, and it's basically if you imagine taking a step and normalizing its length to 1 and just breaking pieces off, and retaining one piece that can infinitely subdivisible that of course it's going to add up to one, so when you visualize it it's really obvious, when you write it in code to a person who's used to writing code, it's really obvious; when you write it in an equation it's like, uh, are you sure? and i wondered what was going on um and i'm curious can you guess what it would be if anything that would make the mathematical formulation um more intimidating than the code version?
part summations
int yes, there's a summation
part summations, is the second i see a summation i'm like oh god this is some really long thing, or my professor's going to ask me to put in you know my professor's going to ask me to find the equation for this summation and it's just cause we get a i think it was calc 2, um, they had us do they gave us sequences and series and summations and they're like, write the equation for this and they were awful.
int hhh
part and summations are just weird cause either writing out this really long thing like what we've used them in um for some of the stuff that we've used in a like 2500 for one of them we had to write out the actual summation
int huh huh ha
part but you look at that little sweetly you look at the sigma and say oh god oh god oh god
int have you taken analysis yet, where you learn that for some infinite number of terms where not all of the terms are the same sign (signum) so you can have for example alternating signs, + and -, that you do not if it's an infinite sum, you do not get the same answer depending upon the order in which you add the terms?
oooh. yes, very cool, so i had that with Professor McKenna, on campus here, and it was like freaky, aha, it never occurred to me that sum would not be you know a single number, but it's not.
part i mean i guess it makes sense, cause you could start with -1 or positive 1 i guess for doing
int you can add up all the negative terms, of which there are infinitely many
part oh yeah that's right. Weird things happen when infinity gets involved weird things happen.
int so the stick breaking phenomenon, i think that when you see an equality, it's an assertion of equality, i wonder whether the left hand side and the right hand side have perhaps an independent existence, like there's a recipe for the left hand side, and there's a recipe for the right hand side, and then whether they are equal or not depends upon what those recipes are. whereas in the code sense, you say, i'm going to calculate this value, and these are the steps
part um
int it's like, big deal. uh
part i guess it's just because everybody's expecting like you know cause its their expecting two be met with like writing out a whole bunch of just math cause you have to whenever you prove things you have to prove left side = right side, there's a whole bunch like for mathematical induction, didn't bother me, but it's a whole bunch of writing because you have to do the math, you have to simplify, you have to show all of your steps to your professor, and i get the need for that, that they have to understand that you understand what you're doing, but then it becomes tedious, where you know if you can skip a few steps in your head but you're sitting there and you're writing out step after step after step after step for something you know that might be really long um it just ends up being you know somehow just tedious not necessarily hard just tedious
int i have this notion that that when you're showing the professor that you know something, it's not so much that as uh you're showing them your thought processes in case they need to help you
part umhm
int ah, it took me a while to come round to that perspective on, maybe some teaching did it to me, hehehe
part that definitely makes sense
int so, this it sounds as if you are quite good this um so i'm going to try to get you to remember back to do you ever remember a time where things weren't were not obvious, in geometry, uhm, uh
let me ask you this, remember when you learned how to try, how to bisect an angle? did you do this geometric construction? you learn how to bisect an angle, and then some students decide that they really want to trisect an angle i was one of those i spent a lot of time trying to trisect and angle, do you remember that?
part it's been a really long time
int well it turns out that there's a way you can prove that you cannot trisect an angle, which i did not know, but uh but i was having so much it didn't really bother me
part it doesn't matter as long as you're having fun.
int i have found myself just taking on things that i want to prove.
part um
int because i enjoy it so much, so i have, so i'm calling this initiative, which is really not the right word for it, but since i discovered that no student yet that i have asked says oh yes, of course i set out trying to prove. i set myself the goal of proving x. this is like a non-happening, and uh somebody was saying oh you know a proof yeah, you do it once and then it's over. you know, and you wouldn't do anything like that again until you had to.
part yeah, i mean, for things like you know like if you're doing the work for class like mathematical induction i'm probably not going to go home and do mathematical induction practice for fun.
int umhm
part but i mean, prove, like, if i were to prove something maybe more fun you know i guess like why something works you know maybe if i'm playing around with my computer, oh why does this do this? you know, oh, this is related to this, you know, but uh i guess when kids when people hear proofs they think geometry and they're like oh god geometry
int Euclid i remember that
part they're like oh god cause you just you had to remember all those different theorems, like the y
int so, there's this thing called Euclid's fifth postulate, and for hundreds of years people were trying to prove that Euclid's fifth postulate was completely unnecessary and could be derived from other postulates, and um Lobachevskii took another approach. He said, yes, Euclid's fifth postulate is necessary to the geometry we're doing, and in fact if we make another postulate, it amounts to saying that um triangles interior angles have to add up to 180 degrees, and he said what if they don't? so you have two case, they add up to less, they add up to more, and you get different geometries from those and some people even think that the space of the universe is the hyperbolic one, not the flat one that we use, not the planar one.
part umhm
int so that's an example of
part hyperbolic like a paraboloid?
int yes. So, i can imagine laying a triangle out on a hyperboloid surface, the angles are not going to add up to 180, so, um, what Lobachevskii did was a creative act, and there's a lot of argument amongst mathematical theoreticians as to whether math is there already, and we're just discovering it, or whether we're creating it. So i'm one who believe that Lobachevskii created the idea and that once you have set that as a hypothesis you can use the techniques of proof to explore the consequence. Oh, well if we know this what else do we know, and for some reason i find that really appealing to be able to go find out stuff that we also know.
part i mean it's always good to because if you're even it's really reassuring when you're expecting to find something and then you find that but you have to find out why in the process, so you have like you know what you're looking for it's almost like the working backwards on the other proofs, i know what i'm looking for and i know where i'm starting, but you know if i can kind of work both ways i can find the path pretty easily
int so, you're exponentially exploding the world of possibilities is at least you know, the depth of that tree cut in half when you start from both ends. so, i think it's amazing that there was this burst of mathematical creativity in France um at the time where when there were aristocrats. These were people that Fermat was a judge, a lawyer by trade, uh, but he amused himself doing math. Mersenne for whom Mersenne primes are named, was a minister, a priest or.
part What's a Mersenne prime?
int OK, there is some formula like $2^n - 1$ and we can look up Mersenne primes. Mersenne prime: we have Wolfram, ok, $2^n -1$ is prime, it's of the form $2^n -1$ and it is prime. ok. In order for the Mersenne number to be prime, $n$ must itself be prime. Now you know.
part trying out n=2, n=3. Cool. Learn something new every day.
int hehe. So I'm saying that you know these people um were uh financially secure. They loved to do, and this is what they did, in their copious spare time, was advance mathematics.
part if you don't have TV.
int That's true, they did not have TV.
part no TV, no internet
int chamber concerts.
part that requires going outside.
(a discussion with Eugene involving Newton.)
int ok I think we've arrived at the end. Thank you very much.
line98t2338
int ok this is Eugene Kovalev and it's the 14. Please start by saying that you've read and signed the consent form.
part i've read and signed the consent form.
int thank you. so, i would like you to tell me everything that comes to your mind on the subject of proofs including when you started having proofs in school or if you started with your informal reading instead, um, you know, just what occurs to you.
part so i feel like i've started proof earlier than my earliest memory of them, but uh uh the first time that i basically remember clearly remember doing proofs was uh 10th grade geometry in high school. uh, they had a very specific structure um you know we had we had to use a specific set of um axioms and theorems and based on that we would start, sort of, a proof of some other geometric principle.
int umhm
part um, and uh from thereon in i you know in calculus i did not do that many proofs, but proofs very clearly came to the fore when i went back in college into distribut, discrete systems, and theory of computation, so, uh, the the things that come to mind specifically from the college experience inaudible is uh, so that proof proofs became less structured but definitely a lot more formal. by structured i meant like we had to write them in a really specific way, and all the stuff but uh formatting wise, but now they were much more rigorous, from an academic point of view, and, what I remember quite clearly is that you know uh we had to so obviously along the same principles we would we would learn theorems we would learn axioms, um, and then we would construct proofs based on that however you know the big difference was that these were a lot more conceptual, geometry i've always sort of been good with because it's very visual but here you know uh there were many different proofs, one of which specifically from me you know sort of divide into two kinds, there's prove that this is wrong, with and all you need to prove that something is wrong is a single counterexample. that breaks the proof. breaks the idea. and then you have to prove that and then the other kind of proof is that i had to prove you know prove that this is right and this is considerably more difficult because you have to prove that it applies absolutely every single case so all of a sudden you have to consider all the edge cases, and all the stuff like that. so, um, yeah, mainly what sort of comes to mind.
int ok, so a couple things come to my attend to, one was rigor, uh, in when you were doing the geometric proofs in high school, did you have the notion that this was the most rigorous thing you had ever created?
part no. so, i distinctly had the notion that obviously when a proof was correct it was very clearly correct, but i did not feel like it was the most rigorous thing i had ever done, uh, notably geometry was very easy for me i never had trouble with it, so, um, i definitely felt like the ones in college were a lot more rigorous.
int so it isn't that you look back from your college perspective and say oh my high school proofs weren't rigorous now that i know, but it was also the case that as far as you can remember, when you were in high school, you did not regard so i want to make a distinction between i think rigor means that the proof itself holds up, as opposed to that it was difficult for you.
part oh. um, so no, no i believe that both of them were equally rigorous in that respect, both of them both uh sort of groups of proofs were very obviously correct it's just that the ones in high school were very simple.
int ok.
part they were not particularly sophisticated, it was like prove that you can have three lines at 90 degree angles to each other.
int ok,
part so
int so they felt easy at the time, and as you look back, the proofs are still rigorous in terms of holding up
part yeah
int um but they weren't that hard then, and now they look even easier probably
part yeah, than they did before
int another thing that caught my attention is visual. so i, because there's been well you know since Euclid, haha, visual element of a proof has been prominent, but um more recently than than his time um people were developed a prejudice let us day against visual proofs uh not not only because he made an erroneous proof, having to do with lack of completeness in the number system and the necessity of overlapping lines uh, circular arcs that didn't necessarily overlap in fact without the understanding of complete number system, so uh i'm really interested in what role visual element plays in people's understanding of proofs of others and in terms of their creation of proofs for themselves.
part so for me personally visual proofs were just always easier even to this day, i find that things that i can visualize i tend to do a lot better with. so, i you know i had very , very little trouble with graph algorithms, because graphs for me personally were very very easy to visualize, but, heaps for example don't have like heaps are not distinguished by their visual element, as a result i actually struggled with heaps a little bit when i was learning, now i understand them, for me, being able to visualize precisely what happens and sort of replay it back in my head is the final level of understanding something, so once i can do that i can probably do the proof. so the visual aspect made it a lot easier. i understand how visual proofs are not in complete in 90\% a visual explanation only shows one particular situation uh you know that we may encounter whereas in proofs you have to you know go for all of them, but you know sort of visualizing it has always made it easier at least for me
int ok, uh so what what sort of uhm resources do you bring to bear when somebody assigns to you to create a proof?
part uhm, so if it were today when i don't remember all the sort of tools that i had when i would do first is i would understand very precisely what what it is they're trying to prove, understand the principle, they're trying to prove, and then i would go about sort of considering all the edge cases, so in my own head i was sort of try any examples that might make it wrong, and I'm sure i'm going to waste a lot of time trying to figure out whether certain assigned proof was wrong, um, and one that's done i would take my understanding of this particular you know this particular thing that i'm trying to prove, and then sort of uhm and then try to so probably go over all the all the logical elements that we had to learn for proofs, i would go over any related axioms and theorems related to this proof and then i would try to, to construct an argument from the original uh thing to all of the to show that all of the cases, all of the edge cases, are satisfied.
int here's a slightly different question: not about having proofs assigned. Do you ever decide on your own, that you want to do a proof?
part no. I just tend, i tend to just write code, or ex- it's always been proof enough for me.
int um. so did you take um did you take 3500?
part uh, 3500 is algorithms?
int umhm
part yes.
int did you, did you have any proofs in that course?
part yes.
int ok. and they were mainly about resource utilization?
part uh, so most of those proofs were like were about you know design algorithm that does blank. Prove, in, such and such time, and then prove that it does indeed do blank in such and in such and such time, so it was resource utilization and fulfillment of the requirements.
int yeah, ok, um, have you had any interest in formal methods?
part no.
int ok. um, let's see, did you like, you liked proofs in when you were doing them in geometry?
part yes
int did you like them in college?
part i liked them so, i didn't like them as much in discrete systems, but i really like them in algorithms.
int umhm
part so i liked the algorithms course in general, um, so i at the very least i did not mind them in algorithms, i think i, i think i liked them
int did anybody ever explain to you why uh proofs were used in the course in which proofs were used?
part um, no, i mostly came to the conclusions myself.
int yeah. so, for example, we had proofs in 3502
part yes.
int but i don't remember ever actually saying, ok guys this is why we're using proofs.
part no, nobody ever said that. i believed that proof, you know i believe that in a in the ac-, in academia proofs are important because you know validates your particular theory, and in that respect it's important to be able to prove that what you're doing is right. I've concluded that proofs are often important when designing a new algorithm because you can prove that the algorithm's correct and then you can nail down whatever issues you're having to actual bugs and i believe that proofs are an important teaching tool specifically for practicing and making sure that you understand the principles, but nobody every explicitly told me
int umhm. what would you think about the idea that uh a proof is a way of seeing consequences of an assertion? If what you assert is your hypothesis.
part uh, for me that would overwhelmingly mean that if the hypothesis somehow incorrect a proof would be a great way to find that out. but if if if i know it's correct it becomes a little difficult to motivate myself.
int what if you thought the hypothesis actually a creative act and the proving part was an exploration, does that seem to make any sense?
part it makes some sense, yeah. i can see that.
int ok. so, Lobachevskiy is a famous example of that, saying well you know what if, instead of uh, so what is it, Euclid has uh a theorem about um, what triangles have to have 180 degrees (of internal angles) in a plane , and you can say what happens if you could say triangles did not have to have 180 degrees.
part yes, assume the opposite
int so that was an amazingly fruitful line of mathematical research that was begun by Lobachevskiy. um so, one view of proofs is that in fact they are our mechanism of seeing consequences of hypotheses, that we can dream up. which is kind of different from the notion of something is true. We are allowed to make it be true
part yes. so i i guess from a scientific method point of view, um, proofs wouldn't so uh a proof would be a tool to prove that your hypothesis is correct, it wouldn't entirely replace experimentation, but it would certainly back up your experiments
int um, so so geometry proofs were easy for you, so you probably don't remember any aha moments from that timeframe. Any aha moments in doing proofs in college?
part so i actually proof by induction
int uhhuh
part i didn't get it for a long time, and to this day i still forget it, and i go over it again and i go like aha, that's how it's done. so, the the aha moment has always been proofs by induction for me, despite the fact that i've done them multiple times i always they always somehow pop out of my head and i have to relearn how to do proofs by induction
int so what about recursive programming? Is recursive programming a technique that um that you use, that you consider early, in solving a problem?
part yeah, to the chagrin of several managers who i worked with in industry.
int hahaha ok. do you see a relationship between recursive programs and inductive proofs?
part yes, so i see the relationship, but i i often have time have trouble making the formal connection.
int yeah, now so i have another pet problem that is similar in a way so there's a stick breaking algorithm that algorithm's purpose is to give any number of fractions that always add up to 1.
part ok
int so you don't know in advance how many fractions you're going to need, but you're going to want to ask for fractions, and when you are done asking for fractions they have to all add up to one.
part ok
int and there's a there's an algorithm for that called stick-breaking, so you imagine a stick, and you declare it to be of unit length
part why couldn't we just divide 1 by the number
int 'cause you don't know the number in advance
part oh, we don't know the number in advance, ok
int hehe otherwise it would be easy. so, we have a stick, and it's normalized to 1, we break off a piece, and that's our first fraction.
part yeah
int and we have the rest. we break off a piece of it, and whenever somebody calls for you to provide a fraction, you have your stick, and you break off a piece of it, and when you're done they will add up to one, however many times people have asked you for pieces.
part ok
int and this can be written as an algorithm
part ok
int and it can be written as a mathematical formula, and you know, in one line, right, so, uh, you get a description of the ith fraction and you have a sum and you have uh, the proportionality constant which is the diminishing thing that's always left over and you have your piece. so i when i first saw that formula i first saw it as math, and i said, oh, does that work? and I turned it into code, and then it obviously worked, and then i looked at the math and then it was obviously the code. so, i wondered what is this stepping stone process doing, that, i go look at it in the code world where it's obvious to me, and then i go back and look at it in the math world and it's now obvious to me although it wasn't in the beginning, and i decided that in math you have the left hand side and the right hand side of your equals sign, and the assertion is those two things, whatever they may be, are the same, they may have independent, they may arise from independent places, but when you're done, they're the same, but the algorithm didn't have that nature to it. The right hand side what was I did, and the left hand side was what I got.
part ok
int the left hand side didn't have any like independent prior existence
part yeah
int so the equality notion of it wasn't nearly as demanding in the code world, as it is in the math world. so it just struck me funny that so what's going on there? that by sidestepping over into the code world and coming back, that the mathematical formulation was so much more clear, so i wonder what so we talked about induction, we talked about recursive programming
part um
int which is the very incarnation of an inductive approach to arriving at something, and then when you go back you say, oh, well of course, induction, it's recursion, for crying out loud, it's the same thing, and now it's clear, and memorable, so, is this process of stepping, ok, we're going to see it with our math neurons, right? and now we're going to see it with our coding neurons, and they we go back and say, oh yeah, now that it's kind of related to this active coding neurons, we see it in another light, it makes it easier to comprehend.
part i get that a lot in constraint programming, there's a lot of the papers you know they'll have these mathematical explanations and then just encode it all and it suddenly makes sense, and i think part of it has to do with the uh it has to do with the procedural nature of code.
int umhm
part we're in state a, state b, state c, state d, and in the end we get an answer, but a mathematical equation is like an absolute constant total truth.
int umhm
part and you have to take it all in at once in order to understand it, whereas code you know you sort of easily understand like piece by piece and the other part of it is i think it has to do with fluency, right, because we don't speak math, but we don't use i always learn things best when forced to use them, and this applies to code, too. Languages that i haven't used in a while i forget.
int umhm
part but language that i use all the time, i you know i remember and it's easy to remember them
int umhm
part and i think that's what's happening here, because we don't actually use the math language to accomplish anything.
int umhm
part the equation's one total absolute truth
int umhm
part whereas the code actually accomplishes something and it's easy to go from state 1 to state n.
int umhm
part zzz, that's my sort of two cents on it.
int i almost wish there was a way to teach the use of math that bore some more relation to the way we teach the use of programming languages. And whether in fact if we did that, they um, math we would become equally fluent in math as we are in coding.
part i mean i think to a certain extent yeah if we think of programs like excel,
int umhm
part you know we have we're using math, we're using all these mathematical principles but the difference is that a proof is something you only use once.
int umhm
part eeee, you've proved it, and that's it. and izzzz total absolute truth there's no other way around it
int umhm
part ooooooo, once you have an equation, zzzz mathematical equation that's it., there's no, there's no way around it, and but with recursion for example learning recursion you can use, you can apply the principle to many many different algorithms and can still see how it's recursion you can do this with trees, you can do this with literally any principle of computer science, you can just apply it here, apply it here, apply it here, but proofs, ssss, that's it. it's absolute, and true, and you accept it and then you move on.
int umhm
part well you don't have to accept it, it still can be true.
int hehehe
part hehehe
int another sense of the word context switching,
part yeah
int ok. Well, thank you very much, i really appreciate it.
part ok thank you.
int we're done, we're off
line101t3435
int ok this is Wednesday Nov 13th, and Andrew Schaffer, would you start by saying that you've read and signed the consent form?
part inaudible i read and signed the consent form
int so what i would like is if you would tell me everything you can remember about learning about proofs, even if it started in geometry class in high school, you know, any aha moments you had anything that was you know odd suddenly became clear, what you think they're for, in computer science, stuff like that
part ok um, i guess the first the first thing would be in geometry class like you said, i was in 8th grade, um, and the first thing that was salient was that it was really hard, he, it's a lot harder than just computing whatever algebra uh but it seems i don't know it seems really significant of course to actually be able to derive facts and uh and whatever shapes in geometry in general, uh, the next most significant experience for me would be uhm my first year of college work it took the advanced calc sequence and so that that class was those four classes were entirely proof-based, um that was very, very haha very difficult, but very rewarding also. um so we've really just went through uh a lot of calculus i guess from the fundamentals to whatever and uh as a proof-based discussion um what else ... say?
int well, um, so, i i think it's normal for people when they first start learning proofs to say, wow, i can really be sure of something after i go through this process, but on the other hand, creating proofs calls for a certain amount of you know, imagination
part yeah
int sometimes when you set a certain thing to prove, i don't see how i could prove that, then maybe a couple of years of practice, seeing other people's proofs, or having to do proofs, goes by, and you look back at those examples that you say, yeah, i mean that's really obvious, that's truly easy
part yeah, that's definitely true i think, first use ok well how am i going to prove this and it always seems to be some kind of trick, and how could i just come up with this thought and people are working on it for years or whatever, uh, but i think it is more it's more a systematic thing, say oh this is contradiction, or this is induction i can definitely do that, uh, and that sets you up a framework you could actually prove something through that and it becomes more obvious then and uh
int so there's a time when you don't know that these frameworks are available and then there's a time where you start seeing examples of them and then there's a time where you say, oh, i've seen several examples of this, there's this framework here, and then you can put it to work
part yeah thing it's more in perspective
int so, i'm really interested in how it happens that people take these logical steps so for example i talked to one person not too long ago, who told me that he was not confident of his proofs, he had to, he was required to use proofs, he produced something, he wasn't confident that the answers were you know were really right but on the other hand, he knew what modus ponens was, he knew what modus tollens was, and he knew that arguments that were composed with those would be good proofs. but there's a step there that kind of says and i'm going to use those, hehe, that wasn't made yet, so everybody goes through some succession of yeah stages of appreciating whether there is a framework that there is a framework, how do you use that framework for themselves
part uhnh
int so i'm really interested in you know what what helps people step over one threshold or another so if you remember anything about you know at one point you could not do something and a later point you could and what happened in between that would be really nice
part ok well for the first one inaudible at first uh they were i mean it's at first it seemed like it was kind of arbitrary uhm that you could just set something up into like if a then b if not b then not a, you could just say that, but then, i don't know it took a lot of looking stuff up on wikipedia um and just getting the examples i think was the most helpful for me, or people just , they were simple logic, uh, like analogies i guess.
int umhm
part so so doing that really helped, um, eh
int one idea is the relative utility of diagrams um variable names um and text, historically you know the perceived utility of these has been different, so at the time of Euclid diagrams featured a lot, then there was not that long ago certainly in living memory um a time when diagrams were really, really frowned upon,
part yeah
int so, what when you were thinking about you know setting about how am i going to create a proof for this, which if any of those do you use?
part um, well i think getting like concept is the most important at first, so for me it's it's being able to picture uh whatever you're whatever the problem is really, so, um, i guess it was the more training myself to not draw diagrams but instead to do more i guess more technically rigorous uh rigorous proof that way um but i think diagrams are very helpful for actually understanding the concept
int so when you say rigorous proof, i would like you to give me more detail about what makes a proof look rigorous to you.
part uh hm i guess systematically uh observing every possible case for every thing so uh going through that um
int having a sense of completeness, having a sense that if any cases it has to be a partition ((now i know that partition is not necessary, only completeness))
part sure
int so here's one, um, that i think is intriguing. i can i was working on a paper that uh working on reading a paper that talked about the um stick breaking procedure for coming up with an unknown number of fractions that always add up to 1. and it turns out there's a cute little mathematical expression you can use to describe all those different fractions, and how you derive them, but you can also code, write it in pseudocode or Java or something, and just for fun, i wrote it in Java and i said, ok, it to me it looks easier in Java than it does in mathematical formulation and why is that? and i've tried this out on different people who like you know computer science and know the mathematical formulation, see if there's any difference in your mind between the two, and if so, which one is easier?
part um
int so, do you know the stick breaking thing?
part no, not really
int ok, you start with one, and you break off a piece, and then uh so you pick the next fraction by breaking, recursively breaking a piece off of that.
part ah
int so obviously they have to add up to one
art yes
int really that's all the formulation is, the sum of all those, you keep putting in the multiplicative factor that is the fraction, it's the proportion of what's left, so you can't possibly, however many you do, you always add up with 1
part correct
int and so it's a summation, a summation of terms, with initial factor, and that's what it looks like in math, but in Java you can imagine just describing how you take a piece, and then you new piece as the new whole, remaining piece as the new whole, and keep doing that
part well i think, ok sorry, well i think um in pseudocode or in a formula, i would like it's more of an algorithm, you can actually go through and run it in your head at least, uh, so you have a method for obtaining results, and it's i think i feel like in first it's more like you know the general um it's like an atmosphere of how the proof can go, i guess that's true, not really a good explanation, it's it seems it seems more general and out there and not a step by step uhm not a step by step process. More of a step by step um way to usually eliminate uh things that are wrong i guess
int kind of, a set of possible techniques, and it's not really closed set, but you could start exploring that, say well, ok i'm not going to use induction
part right
int or something like that
but going back to the algorithmic expression vs. the plain mathematical statement, the algorithmic thing was a shows you what steps you would take in constructing. The mathematical expression had an equal sign, and after you know that it's a recipe, you know what the equal sign means, but before you know it's a recipe, it's an assertion that two things are equal, and they might have independent realities, so whether they're equal, so that doesn't happen in a recipe: recipe there's the ingredients and process steps and the result
part yeah
int it's not like resulta is necessarily equal to resultb how do you know?, haha,
so the mathematical notation has more power, and in this particular case that additional power is not being used, but if you're familiar with the power you can have more sense of trepidation of oh i wonder whether that assertion is true, as opposed to if you do these things it will be equal to this.
part inaudible
int so having had that little bitty insight into the approachability of coding representation compared with a mathematical formulation, i kind of wonder whether there's a way to make proofs easier by having that step and then, i don't know that there is
part mmm
int so do you think that application of this framework that you were mentioning earlier involves recognition of certain circumstances as being familiar and associated with techniques
part inaudible so
int um, you might say alright, i see that this problem has several different regimes i'm going to divide it up into cases, prove each case in its own way, you might have to prove something for a function that is piecewise linear, for example, so you might be tempted to say well ok, i'm going to take this piece that is linear and i'm going to prove within that region, that region, then attempt to, regions where they touch each other and then you'll have covered the space. Other things don't necessarily say cases to you, but they might say ohho it's recursive algorithm i'm going to prove it using inductive proof. There's a book by Velleman, who um ... structured proving approach and he teaches students a ok now recognize this, now for these we do this, recognize, for what we find this to be inaudible, of course it doesn't solve everything, but the initial level proofs is kind of nice, have you taken differential equations?
part yeah
int so
part that was part of the advanced calc. sequence
int depending upon how you approach differential equations, there's a way of teaching it which my professor taught me but lamented to the class, that he was doing so, they say ok recognize these equation, this equation has this solution.
part yeah
yeah it seems almost too regimented in a way, it's harder to break out of it. I suppose
int he wanted us to see the beauty of these equations, not just recognize that this is a type A, he wanted us to
part yes
int feel the, feel what the equations said, so um you've had 2500,
part yes
int you must have had some proof techniques in there
part it wasn't that great?new? for me, because it was pretty much all we did in calc so,
int you had that really good calculus sequence
part there was nothing really new, i guess it was more discrete focused than calculus course, but
int did you see, does the class say anything about what was the connection between discrete math and computer science?
part yeah, sure.
int so, did you ever find yourself wondering why am i practicing this kind of proof?
part i feel like i would have had i not taken this calculus sequence, but it just seemed more it seemed like ok well preparing this because it applies directly to computer science in whatever way
int so i think it's more the students who are struggling, who find themselves asking you know, why do we have to do this? if they can, you know they are just going to do it.
part certainly a lot of work, it's never easy, situation, right, i kind of wish it started earlier like in elementary school because they don't really teach logic it all, any boolean logic or algebra would be really, really useful for say, a 6th grader
int there have been some experiments in the 1930s, there was a professor named Fawcett who not professor, teacher, who taught grade schoolers how to reason logically. He was very successful. What do you suppose happened?
These students proceeded to make very cogent arguments with their other teachers
part hm
int who were not up to it. hahaha, it turned out to be a political problem in the school.
Which is sad, really.
part That's a horrible reason.
int yes.
part um. It's so frustrating. Yeah,, but i, i, i honestly think that would be an ideal, because it's not, i mean it's not fundamentally harder than any kind of math that uh that level would be approaching
int and the world would be a better place if people reasoned logically, it's probably easier to teach them then than to teach them later
part absolutely
int so you are probably using proofs now in 3500.
part yep.
int have they gotten any more difficult?
part not really. um just because considering its algorithms its usually of a certain type of proof uh that you can when you talking about before recognize the proof oh it's just this, so it's it's fine.
int hm
part it's not this much, um until you get into the more complex things, I don't think it's as um it's difficult, just findle-air inaudible, but i guess that's why you take these other proof classes figure out cause it's some
int we have to count things, and counting combinatorics there are big thick books written on that, so
part hm
int can be tricky to count things
part true. beyond that probability too.
int have you had 3502 yet?
part ah, no, next semester.
int There's a, there's a cute proof in that, uh, i don't remember which chapter it is, maybe chapter 2, but um there's a bad proof that you have to poke a hole in, find out what the flaw is.
part um
int and, uh,and you know it's wrong because it's a proof that all horses are the same color
part it's like the blond hair people proof, have you heard of that?
int probably i've heard it as blue eyed girls
part yeah, that kind of thing
int so if you were going to teach a younger sibling like i don't know, 8 year old or 10 year old how to prove something, how would you start?
part um i would start with really really getting to know the problem. um analyzing every possible manipulation um and it's not going to be a math problem of course it could be any kind of logic problem, so, um, said i feel like being able to specialize anything is a necessary first step, uh, when you're learning it, so, if necessary? can expand
int the moral issues class, or ethics class, i was trying to get students to do moral reasoning. it's not always easy.
part it's hard to find where the truths are in anything.
int mmm, i'm teaching discrete at University of Maryland this year, this semester, just finished, and the beginning they had what was an implication, what was contrapositive, what was converse
part umhm
int and you know made sure that everybody knew that converse was not necessarily true, 8 weeks later, they have a problem that they have to do, and it was i asked them to prove that the graph of the seams on a soccer ball, punctured soccer ball, was a planar graph. and sure enough, some fraction of them decided to compute the Euler number, and claim on the basis of the Euler number was 2, that it was a planar graph, but in fact all we had was the implication that if a graph was planar then uh it will have an Euler number of 2. so i was sad to have to tell so many people that you know, they're using the converse hehe look back in week 1. Do you think it would be easier for people if they had practiced using proofs all the time?
part yeah, i do think so, at least at first, because i mean having doing it over and over again is definitely helpful for getting an approach to it and from there you can make something, um but later on i think it's a a hindrance. so
int i'm thinking about one student i had in 3502. In 3502 as you will see, you'll have you'll be given strings and asked, given a representation of the set of strings, and you'll have to prove that some such sets of strings are not in the class of what's called a regular language. and there's a lemma called the pumping lemma, which describes a property that regular languages have to have. and if a language does not have that property, it's not regular. so, you can capture that property mathematically and capture that you have tried all the so here's the implication:
if a language is regular, then
there will be a way to divide up any string over a certain threshold length,
in that language, into a first part, a middle part and an end part,
the first part and the end part are allowed to be of zero length,
but they don't have to be.
um, and the middle part can be present in the string as many times as you choose, either from 0 up, and um students have to prove, if the language is not regular, there must be no such segmentation that you can fit the string, so they have to invert an implication that contains quantifiers in order to show something's not the case. and they cannot. There are some, there are some who don't understand that you have to try all the segmentations out. and um it's popular to believe that an example constitutes a proof, it's a popular error that examples constitute proof
part yeah,
int and what frustrated me is we showed a case with a parameter, for the length of the first string (segment) so, you know, some x to some exponent a, a is allowed to take on the value of 0 to the length of the string if you want, actually a little bit too large, but that range (domain) of values. and i had a student tell me that no, that exponent a represented exactly one number, not the range. I said well, can it be 2? yes it can be 2. Can it be 3, yes it can be 3 Can it be 4? yes it can be 4? Well, does it represent the range 2 through 4? He wanted it to be one, so that it would be an example, so that examples would be adequate and the level of engagement with material was ok, i know i put a letter there, a, and then i assert that everything is fine. but if you don't know that a represents a range, you don't really get it, you're just ah what some people call plug-and-chug, i put these things here and then i say that it's... so, i wish i knew what is the step what is the step that people step over that say ah so he says, yes it can represent 2, yes it can represent 3 yes it can represent 4 but it only represents 1 (number). He's so close. so anyway what i'm doing is i'm studying all the different places that people are found in terms of their appreciation of doing proofs, and mathematical representations, try to figure out what the student body looks like and how to help those that are at the earlier stages to advance further along. it sounds like you had really good preparation.
part yeah, i was pretty lucky, although it was very difficult but it was definitely worth it.
int do you remember anything about what made it difficult?
part um probably not sufficiently understanding uh how the logic worked i guess. for certain techniques of proofs.
int i feel some people talk about epsilon delta proofs as being difficult, do you remember getting started with epsilon delta proofs?
part i remember being very confused and now it seems like almost trivial
int umhm
part and we use it everywhere, we use it you all this floating point number small enough we have epsilon for it. so, i don't know. i do remember it being difficult but i'm not sure but i feel like there is always a moment where it just clicks but i don't know what the moment is.
int did they have diagrams when they taught you proofs?
part oh yes, eventually. definitely in 2500 i remember we could do the same thing continuity i um and he would he drew it out on the board saying oh well this is how it is and people would draw examples, trying to disprove it, um, i don't you should make it smaller or whatever um so yeah, i think i think being able to visualize it is definitely a key at least for me. and for, i don't know, the other people as well. so i don't know how you could truly understand that sort of thing without. so i guess the whole point of it is, it's an abstraction of man this is really hard to say
int no, abstraction is very efficient thing to be able to do. lots of progress in math has occurred when people are able to make abstractions
Analytic geometry, Decartes said, I'm going to take this distance and put it in this direction , take this distance and put it in that direction now I can measure these changes. It was you know, one day he said i'm going to do that and analytic geometry was born. so getting students to do abstraction is supposed to be rather hard. Professor redacted sometimes lamenting that can't get people to be more willing to use UML diagrams, which are a form of abstraction.
part yes
int and somebody today well you know this thing you can code out onto this and it will give you the diagram, i was saying yeah but you're supposed to do the diagram before you have any code.
part people like jumping straight into things, which is almost impossible for, well i guess i don't know, it's easy to tell what not to do
int some combination of bottom up and top down
part yeah, it's hard to decide
int what's your favorite kind of thing to prove?
part uh, i know i used to like doing contrapositive proofs.
int umhm
part just because they're usually sort of pretty easy. hehe
so i'll you just flip it around and then it's all better, so i like
contradictions, i'm not too fond of induction, for whatever reason,
i don't know why, i just i think that one made the least sense when i was learning, uh that you could just say oh i have a base case, i increment it once and then i guess abstract it from that and then it's true for everything up of this, that seemed i don't know that seems kind of weird somehow i'm not make it happen
int if you can get from k to k+1, and you can do one
part right
int then you can get from 1 to 2
part and say
int dominos take over
part yeah, i mean it definitely makes sense at that level, i think when it's more of a weird problem i guess it's harder to be like oh i guess i can just induct here somehow
int you'll see in 3502 there's a in the section of context free grammars, there's a very lovely inductive proof and it just it gets over with so fast, it's like wow, can i really, i mean it seems like cheating
part yeah, exactly
int i'm not cheating but, that's all there is to it.
part yeah
int so um so i like those, cause you get a lot for a little. i also like the ones uh like there's a pythagorean theorem proof where you basically draw squares on the sides and you can see how the squares assemble, and uh that's you know being wordless you know, just it's very sleek, ha, uhm
Do you see a connection between, as i recall you were really good in 1010 about the um recursive programs. Do you see a connection between recursive programs and inductive proofs?
part um, sure i mean especially tail recursion i guess
int yeah
part yeah
int yeah
part i mean it's pretty much the same thing i guess
int it is, it's the same thing
part he he, yeah Induction does seem more algorithm-y anyway, so
int yes, that's true too. It's not all done at once
part yeah
int there are steps
part yeah, exactly
int well, my teacher who taught me how to do interviews told me i should always end interviews by saying what do you wish i had asked.
part uh, i have no idea. hehe
int ok, hehehe. well, thank you for doing this out of the goodness of your heart.
part hunh
int i'll shut it off. alright
line153t639
when you're posed a problem about proofs, how do you start to think about it?
um, see, in the inaudible, i inaudible other inaudible start by thinking of everything that i know about the problem, like, what I know to be true and why it's true. I think of proofs that I've done and how I've gone about it. um, starting at ground 0 and moving up from there i yeah i'm not
so work backward from the desired end point
umhum,
now if this has to be true, then this thing has to be true
yes
work back towards the top, inaudible, times, inaudible, we try and prove something is true and you find you can't, try to prove that it's false
yeah
find out why you cannot do that. That's why it's true.
um
so some ways to get things can make small cases well if i knew this and this additional stuff
umhum
kind of like making cases, and sometimes you can partition it out
yeah
and have the reasons for its being true in each of the different cases
umhum
there're various sorts of techniques, but inaudible books, Polya's proof solving books
umhum
can you think of anybody ever giving you any good advice about
about proofs?
either a particular one, or general
about anything? good advice, like, in general?
good advice about proofs in general, or a specific proof
ok. like, ah
that would be too broad.
uuuhmm, not, not that I can think of, like, i feel like i've had a small enough a small enough amount of experiences that were like specifically related to proofs that i feel like all advice i've gotten is good, but I guess never assuming anything is kind of a good piece of advice. I don't know if I've gotten that piece of advice from anyone specifically I know that Professor blank said, a certain proofs he said in this place they say that this is obvious, but, it might not be obvious to everyone so
what about, strategies, if you have inaudible, this kind of program as well as proofs, some people get up and walk around,
cry, ha-ha
yes, they do.
i saw a lot of that at one, took a written exam at a different school for a doctorate, if anybody ever tells you grown men don't cry they're wrong because i was in a roomfull of them. Yes, some people talk to others, some inaudible, i go and grab different books, hoping for inspiration someplace. uh
i guess, taking a break and coming back to it always seems to be a good idea. like i feel like kind of need to clear your mind and then come back to it with like fresh set of eyes, I guess. like trying to look at it in a different way and it's hard to do that if you've been staring at it for 5 hours or what not.
inaudible 360 years to get Fermat's last theorem
no idea
there was this lawyer in France, and he was a mathematician on the side, he was quite famous for his math, wrote letters to other mathematicians, and in the margin of one of his books he wrote you know um you take you have Pythagorean theorem a squared + b squared = c squared, you know you cannot do this for any n greater than 2, for integers a, b, and c. Does not happen for n greater than 2, so he wrote in the margin that he had a nice proof for that, but didn't have space to write it in the margin, so he didn't write it. and for 360 years mathematicians trying to prove that.
Didn't Professor blank tell us this, I remember that.
so people have tried and so recently somebody, andrew wiles, proved it, and he had a proof he thought was right, turned out somebody had helped him find an error, then he was able
found the mistake
so if you feel disheartened remember you are not alone
anything else?
no, alright
thank you very much
no problem, thank you for the ice cream
you're welcome
line154t2009
int ok so in this page sound so we'll see how the sound quality works, ok this is Friday this is Patrick, we're going to talk about proofs. so tell me anything you remember about experiencing proofs of any kind
part um, like in 2300 i mean in 2500 specifically, or just in a i mean its
int any case, start in high school and say seem like this to me and then and now it seems like this to me...
part umhm in high school geometry i think that was probably the first time i was introduced to proofs um like just ah man that was so long ago i don't really remember much about it, but i remember everyone else in the class hated it, certainly and i don't know if i really hated it, i didn't i didn't enjoy it that much but it was math class and i was fast with math class, so that was fine for me. I didn't find it like definitely different from everything else in math like i kind of i kind of had there was a separation between proofs and normal math like proofs seemed certainly more about logic i guess math is very much logic too but proofs seemed more so to me.
int unhuh
part um i guess that's all i really remember about it in high school, like that it was difficult and it was challenging but not overly challenging um in 2500 hmm, i found 2500 to be very difficult because of all the proofs.
int you did
part yeah, like i really like it when things are incredibly logical and like i like i like proofs i do i do think that they have like you said in here a certain kind of beauty, um, but there are also challenging and sometimes frustrating. but i like i like seeing why things are the way they are and showing showing indisputably that something is the case i guess
int so after after proof is done, such as when it's done by somebody else, if you can understand it, you get this sort of rock solid you know it's so, you know why it's so
part yes
int but the creative aspect of that is very different from the aspect of seeing it after it's... the one thing the process of creating it is not all visible only the result is visible
part umhm
int so it can be sort of like watching olympic figure skating, looks beautiful and smooth and nothing extra, nothing out of place, sort of tempting to think, well, you know maybe i could do that, but then when you set about doing it, you see more about how hard it is.
part umhm
int so was that the exposure to proof you had in geometry, people typically do, and then 2500 was the next occasion?
part there feel like there must have been exposure to proofs in between there, too, but i'm not sure on what occasions that was like maybe maybe several times in other math classes but never never where it was as explicitly stated that it was a proof that we were doing, so,
int there are times when people are proving things and they don't say they don't put the syntax on there. What about debate club, were you in debate club in high school?
part although i do like debating.
int uhhm
part and that's part of it, too, um yeah like i i consider myself to be a feminist, and in being a feminist, when i like i need to be like i talk about a lot of interesting issues and i need to be able to support those issues and so like my points need to be clear and concise and they need to be like connect one to the next like it is, it is very much related to proofs i would say, i can see how those relate
int have you seen any relation between the being in 2500 and say something to do with programming?
part like i view them in very much the same logical sense, i guess, um, like with programming there's no ambiguity everything is very structured and i feel like proofs are structured in much the same way. i enjoy programming more, more than just regular proofs. i don't know particularly why, maybe because it's more fun to see results happen when you program something, but
int what about in the context of programming can you imagine when you might have to use a proof?
part hm. when i might need a proof, um
int sometimes it's not entirely clear that the answer is accurate, or in all cases, so for example if an aircraft is flying through space doing a curve, and your software has the job of predicting where that aircraft is going to be, maybe predicting when that aircraft has deviated from its intended course, how would you know that your algorithm was correct?
part like barring the case of unintended glitch, or? like
int so, suppose the people who are running the airport want to know um how low can the clouds be, before we have to reduce the arrival rate of the runway. The arrival rate is controlled by how safely the aircraft can land, say well, can you prove to me that i can run my airport at you know 60 aircraft per hour landing on the runway when the ceiling is at 300 feet. You know, your algorithm predicts, your algorithm has the job of predicting when there are conflicts developing between aircraft, and how do you know um that the aircraft would be safe, using the algorithm that you're selling, or proposing to sell?
part umhm
int that's just one example of sometimes people have to prove that their algorithms are accurate
part yeah
int other times they have to prove that their algorithms won't use the battery up, in you know, in less than a certain period of time, so it turns out there are occasions when you need proofs to show that your algorithms is
part umhm
part so as in, using a proof as a way to explain the algorithm and prove its validity
int yes
part ok. yeah.
int so this hasn't come up in 2500? sometimes you are so busy learning what you have to learn that why you have to learn it almost doesn't seem like a relevant question
part umhm, yeah. it's hard for me to say, exactly what i learned from 2500. or did you say 2300 or 2500?
int i meant to say 2500.
part ok. like i feel like my ability to think logically as a whole has increased but i wouldn't be able to say specifically what i've learned. Certainly a lot of like logical symbols that i didn't know before.
int using logical symbols
part umhm
int is, um, a powerful skill to have
part makes things much more concise
int oh, yes. and you've probably written about sets when you got to 2500, but you had probably had to do proofs regarding sets and so you know you have to prove that one set is contained within another set
part umhm
int so you have a way of denoting element and you have a way of denoting the rule, what does it mean to be contained within, and then you can break these things down, succinctly. I don't know whether people get that before 2500 or whether that's the first time that it happens
part for me 2500 was the first time that i'd done proofs with sets that i can think of, so we'd used sets before definitely, but never, in this way
and Venn diagrams
int Venn diagrams, not as concise have that solid feeling
part yeah
int so have you taken 3500 yet
part not yet nope, that is next semester
int so you will probably be seeing proofs in there.
part ok
int um how much maybe memory gets used by an algorithm is um one thing
part umhm
int so, there are algorithms where you can find yourself trying to reserve an exponentially increasing amount of memory, or it would require an exponentially increasing amount of time, to get finished, um, and of course those are problematic
part yes
int since we don't have resources like that.
part n log n and n to the nth
int so proving that your algorithm takes less than a certain amount of time is something that you can expect to see.
part we're doing a lot of that in 2 what's the other class i'm taking 2300, yes. in data structures and algorithms we're doing a lot of analyzing of run times
int what are the proofs like in that course?
part i wouldn't, i don't know if i would say that like definitely not proofs in the sense that we have them in 2500.
int ok, so you have analysis, though.
part yeah, it's in that class it's more similar to just looking at each line of the code and determining how much it is and writing it down. as far as run time goes.
int ok
part so it's much less inaudible (driving?) i would say, easier to understand, too, but it does kind of have a lackluster feeling, cause it's like i kind of understand like i can see why this would take how long it is but i don't feel it very solid
int do you have to analyze recursive algorithms in that class?
part um, yes. i think we've a lot of for loops, i don't know how much, i don't know if we've analyzed that many recursive algorithms, but i wouldn't be surprised if we've done it.
int there's a way to convert back and forth, some
so, do you remember ever proofs were sort of unsatisfying and difficult and then suddenly something got better? or is it just sort of a gentle increase in capability?
part um at first instinct is to say it was just kind of a general general increase in like getting better at them
int i remember having a sort of epiphany i had done a lot of proofs for a course by Professor (redacted) at (redacted). I never really felt satisfied by them, and then one time in 2010 i said oh wait a minute, I'm going to prove this, going to prove every little assertion that i make i'm going to explain why it absolutely has to be true. said ok, i'm think i'm on to this
part suddenly just saw this stuff? That's pretty cool.
inv in fact professor saw with i made an assertion and he said you're wrong, haha, and I said well let me explain this to you. and I was able to prove it to him, and he apologized. yeah
part hehehe, yeah, no, i still feel very shaky with proofs with proofs, sometimes, like it still still getting the hang of it like it hasn't becomes second nature to me yet, so
int i don't think it ever becomes easy
part umhm
int but it can become so that you know you're right
part umhm
int did you know that some things cannot be calculated at all?
part such as?
int suppose you write a specification, for whatever program is supposed to do. and then you have a program that is supposed to meet that specification. It turns out that in general you cannot build an algorithm that will prove that the spec and the implementation match. or the implementation the purported implementation actually matches the spec.
part umhm
int can't be done, and it can be proved that it cannot be done, so when you take 3502, you'll learn that
part ok
int so knowing that some things are not possible at all, is something in some cases we can learn things
part so it's it's impossible to prove that certain programs what they're supposed to do
int no, no, in general, it takes a program and a spec, to write a piece of software that says, ok, whatever program you give me, whatever spec you give me, i'll be able to tell whether it meets it or not, it's a general case. Here's another one: if you want to write a program whose job it is, to take in another program, (Now you know compilers do that. Compilers take in other programs, and generate output.) You have a job to take in a program and decide whether when that program is started running, will it stop.
part ok
int that sounds pretty basic, right
part but you can't prove it?
int you can prove that it cannot be done (in general)
line159t3211
Please record for the taps that you've read and signed the consent form.
I have read and signed the consent form.
Thank you. So this is the list of questions you can see here, so we'll start at the top. Um What is a proof? What do you think?
Um: it, I suppose it's like a logical method of um determining whether something is true or not.
int Great, And, a mathematical proof?
p A mathematical proof, um, would be the logical way of determining if some some uh the same thing
int it's the same what you just said, so, proof you can hear proof like in in law, or in um debate contest, maybe use the word can be useful more loosely, and then when it's a mathematical proof
p we have a logical text
int ok, um, if you're presented with a proof, and you want to understand it, how do you start?
p um, well you first have to see you have to understand all the things that are being accepted as truth for you read the proof because the proof sometimes relies on some accepted um theorems that are not really we don't know if they're true for sure but we accept them as true. Um, and then logically follow the proof um till you have to be um you have accept um all the rules that the writer of the proof has accepted before you go on understanding the proof.
int ok, so, tell me about those rules
p they can be assumptions, um, that have been accepted, um i forget the name
int axiom? is that
p axiom
int ok, so you have axioms, we have agreed facts, we have axioms which may or may not overlap with those, and then you said steps, the proof has steps?
p yes
int so, and you said something about going from one step to the next?
p yeah, usually first you start out with um the facts, and then um there are certain um like in inaudible either um you have to especially when writing a proof you have to be careful that um you do not jump to conclusions that are not logical, so while reading a proof um off topic
int no, not off topic, I just um, I should have mentioned the word premise, probably, so you have your axioms
part yeah
int but then, you may have a premise, so you may be trying to prove something is true if something else is true, and you take for granted that that something else is true, that would be a premise. Remember an implication? what it is?
p um, it's like a premise is um what's accepted, right, we start off with the premise. and then um yeah then there's different uhm like implication is a type of logic rule i think so like
int it counts as a rule, or it can be the thing you're trying to proof. It gets to wear a few hats. um. Do you know what a rule of inference is?
p um, no
int ok, ok, so you talked about steps, so, sort of zero step in our proof we have all the axioms and any premises, and then we want to be able to say something next, we want to be able to take a step and say something new, and it's we're supposed to be allowed in some way to make, we have to be justified in saying that new thing, and the justification what serves as justification is a rule of inference. We take all of the things we're allowed to start with, and then there are these rules of inference, and we can try them all on for size, and say ok this rule of inference, i choose it, and when i apply it to what i already know, i discover that lo and behold, i also know this other thing to be true. and you do that a certain number of times, and when you get to the end it is the end because
p you follow the rules of inference
int one after another you apply rules of inference, uh, and you get to pick these things, it's like you're driving in a car and you want to get to a place, and you get to pick where you put your turns. and if you do a good job of picking your turns, you will end up at the destination you designed um hopefully no roads under construction, detours, you know, wrong way streets, those kind of things, when we try to construct a proof there's no guarantee that we can get to where we want to go, but we try, so when we see somebody else's proof, we look and see so all the steps are there, so if you see a list of steps, and you know that a person is allowed to make a step on the basis of there being a rule of inference that they are using, you check whether a step is warranted that's the word they used, warranted, by some rule of inference or another, so the way you understand a proof one of the ways of one of the parts of the way of understanding a proof is to see whether each step is warranted.
p ok
int can you think of any other ways or companion ways or parts of that um for understanding a proof when somebody gives it to you?
p well, there are patterns that you can use, like transitive patterns like if a=b b=c then a= c, and um there a list of these patterns that can be used to identify if proofs are logical. um, and i said if you could still between each step there's no um I forget the term but it's like false um it's like false positive i think when you like think something something seems like a conclusion but it's really does not follow
int well i think of false positive as uhm i undergo a medical test, and it says that i do have whatever it is they're looking for when i actually don't. That would be a false positive. I'm it's not occurring to me what you might mean. There are missteps that people may make in proofs they make. They make false assumptions. Um, some people apply incorrectly apply what's called the converse, in fact the converse is not a rule of inference. Contrapositive is a rule of inference, but converse isn't. People sometimes make a mistake of claiming a converse to also be true, um. So you can look for, you can certainly look for errors, or you can look see if you can figure out which rule, which of the valid rules of inference is being applied, like a line, so what is a proof for?
p a proof is um um as i said it's like a method of logical method of finding out if something is true or not, and once that's established you can build other proofs based on the conclusions you made.
int excellent. ok, um, do you ever use proofs, outside of class, i mean there are times in class when you are asked to, but do you ever find yourself just on your own?
p um. well i mean i took a philosophy class where we um were taught how to um context of philosophy how to um make arguments based on proofs, and sometimes it's not easy to apply those kind of rules of logic to everyday life
int uhhuh, so you do.
p yeah, i do.
int um, do you ever do this about computer science topics that you know?
p um, not yet. um, in 2500 we did, 2500 but uh since then i have not had any practice of proofs.
int ok, uh, what do you think about the idea of proofs having some structure to them?
p i think it's crucial to have structure to proofs, it makes them easier to read, just like code.
int yes, yes, great. ok, um uh how familiar or comfortable are you with um these, i'm going to offer three ideas, mathematic induction,
p i we i'm not comfortable with what that was, comfortable a year ago
int what about proof by construction? I don't think we did that in um in 2500. Have you heard of it?
p no
int but i think you will like it when you get to it in 3502, if you don't get it any sooner than that, and it's nice, um, proof by contradiction?
p i, yes, i am familiar with that.
int ok, so uhm, in proof by contradiction, do you feel that use is made of assuming that the answer we're trying to reach, in the process of reaching it? in other words are we cheating in proof by contradiction?
p i don't think so, we're trying to prove the opposite is incorrect.
int great, right, yes, it is not cheating. Some people feel that it is, but it is not cheating, we want to prove something we'll call A, is true, and if we can prove that not A is false, we're there, by the law of the excluded middle.
p does it work all the time? um, like if it's not this then it can't be anything but
int ok, the this and the that have to be negatives of each other.
p right.
int, so, with that, with taking that as one of our axioms, that we're talking about boolean logic, so either A or not-A is true, then those two exactly one of them is true, it's never the case that neither one of them is true
p ok
int this comes up pretty interestingly in when people are talking about computational neuroscience. because you see a lot of these cognitive neuroscience constructs say, oh you know we'll make electronic neurons and this neuron will either be firing or it won't be firing, the thing is for real neurons, it's firing or not firing but if you want to have the opposite of it, you need another neuron for that, so they can both be quiet, or paradoxically they can both be firing at the same time, which is a paradox which we don't expect to happen very much of the time, or one can be firing, or the other can be firing, truly three state. A is on, opposite of A is on, or nobody's on, three states, but we're talking about boolean logic where any variable for example a or sometimes x is used, um it's either equal to 0 or it's equal to 1. likewise it's either equal to true or it's equal to false, so, if you want to prove it's true, you can just prove it's true, that would be direct. but if that's not the most fun, you can say, well i can definitely prove that notA is false. and if notA is false, A has to be true, we get it.
p yeah
int um, but you have to prove that notA is false. uh, you can't just claim it, right, and so how do you prove it? you say that if not a is true, that's the opposite, and then you find out what the consequences of that are and when the consequence is something absurd, this used to be called reductio ad absurdum, now it's just called proof by contradiction but it was called reduction to absurdity before, so you arrive at some absurdity, you say, well that can't be right, and since i didn't make there are no guesses in between the only thing that has become invalidated is my initial say well, maybe not A is true, ok i tried not A being true, I got to this absurd thing, so obviously that was a bad idea. not A is not true, not A is false, so now i've arrived at not A is false, can go back and say there fore A must be true, and we're all the way done.
part is there any way to define absurd? Like:
int so it's a mathematical contradiction like some odd number has to be even
part ok
int so, it's not a philosophically deep thing, we get nice stuff like prime numbers are actually composite or even numbers are odd, or something that we just know is not so. ok. so mathematic induction let's, let me see if i can prompt your memory a little bit and you tell me when you are on to it.
p ok
int if we want to prove something by mathematic induction, we can think put it in analogy with a bunch of dominos. We want to one of we're going to do two proofs. The first one is, that we can knock down one domino. So that you know we show that we can do it, and that's proved. Then we the other thing we want to prove is that if one domino falls down, another one falls down. so it's perfectly ok if they all stand still, the only, so here's an implication: if one domino falls down, we must have put them close enough together that the next one is going to fall down, so that's sometimes called the linking step. so we're proving an implication. an implication is like if A then B.
p umhm
int so, A is a boolean variable, and B is a boolean variable. so we can make a truth table.
p how far did we go, before we can reach a proof, sorry i mention being ahead.
int no, you are asking a question, but you have nt't finished asking the quesiton
p how far, i'm sort of remembering the proof by induction it's like um we have to go to a certain um n, uh
int inaudible, right, so the thing that we are proving by induction has some relationship to the natural numbers in it and n is the variable we frequently use for an arbitrary natural number. so we want to prove that something is true for any natural value, any natural number value, n, and we're not going to prove them wholesale, we're going to prove them one at a time, but, because we can prove them one at a time, however long we want to go, we will prove it for all of N (the natural numbers). So, back at the implication we have A rightarrow B which means if A then B. and so there are only two values for A and there are only two values for B, so we can make a truth table, it's going to have 4 rows in it, and now we can think about that. So, uh, when A is false, which is half the time it really takes a little thinking about is the implication true. The answer is yes, if A is false, it's a freebie. It's called vacuously true. so, those two cases where A is false, the implication A gets you B has a truth value itself, that implication is going to be true. So now we have to think about the other half of the time, when A is true. So, if I promised you if A is true then B is true, and we look at the truth table and A is true cause that's the half we're looking at now, and B was also true, you would say, well, ok the implication you know it's not a lie, it's true. and now the last of those four rows, A is true, but B is false. so if you know that A is true, and you know that B is false, what do you think about the truth value of that implication? a promises you B?
p not true
int It's not true, exactly right. so we have this four row entity, three of the rows are true. but that particular row is false. so if we want to prove an implication to be true, we have to prove that that fourth row never happens.
p right
int so that means we start with A being true, and we have to end up with B being true. so um say, if the domino, the first domino gets knocked over, the first of two dominos gets knocked over, the second of the two always has to knock over. so now we've got, we can do one all by itself, and we've got the implication if the first one then the second one
p A is true and if A then B
int if one falls down, the next falls down, of any pair
and then we say, the pair that i want to concern myself about first is our
friend the domino 1 that we already know we can knock over.
we say, ok you're going to be in the left hand side of the implication, so
that means, the domino next after you, domino number 2 is definitely going to be knocked down, but now domino 2 takes its turn being on the left hand side, and because we know domino 2 fell down, that means it must have knocked over domino 3, and we can do that infinitely far. so that's one example of um of inductive process.
so the steps of that were to have a base case, we picked domino number 1, but we could pick 17, and prove forwards from that. and what we used for next was +1 domino, but next could be the next even number, or the next multiple of 5, or next anything as long as fix the idea what next is, if the previous one gets you the next one, and you have one valid previous one, then all the next's that come after that previous necessarily also be true. so proof by induction is a little more general, right, it doesn't start with 0, doesn't have to start with 1, doesn't have to go by 1, but it does have to have this idea of next. because one at a time, we're saying ok you fell down, now we'll put you in the premise location, and you're going to make the next guy fall down, then we'll take that next one and put him in the premise location and he's going to make the next one fall down, as many of those uses of the implication as we like. so, uh, proof by induction has been very nice for ok, there's a kind of computer program style called recursion. do you remember recursion?
part yeah, it's um, make something over and over again.
int umhm, well there's iteration makes something happen over and over again, but recursion and iteration are not exactly the same, although there are some recursions you can turn into iterations, it's when they call themselves, that's a key idea, yes, so, if something calls itself, like mirror reflecting a picture and a mirror reflecting a picture, if we just did that with a computer program wouldn't the program just always run forever, you know? Suppose you had the following thing which was posted up in the computer lab, uh, when i was an undergraduate, it said subroutine charlie, call charlie, and then it said it's the subroutine that never returns. so this is a take on a political song, about a person taking the subway and never got to get off the subway because he couldn't afford to pay his way off. um recursion has more to it than just calling itself. what else does it have?
p um. i'm thinking like what else
int ok, so i'm going to make a routine that um calls itself. it says, the answer when you call me with a number n, the answer i'm going to give you is call myself with the number n+1. how long are you going to wait for that program to finish?
p it has to be stopped.
int yes. a recursive program has two parts, it calls itself, and it knows how to quit.
p right. if that's important part, i remember, i had greg johnson for 1102 and he taught us recursion for the first time, and he was telling us how um he was saying like computers like something would happen to them because they crash i guess
int use up all of their memory
p yeah
int and they will complain, if they have enough memory left over to say help i've used all my memory. haha
p we need like a car, we just a carpet a program in java where we had like boxes inside boxes and we would pretty like carpet, yeah
int ok, so um so we've got a recursive routine, it knows how to end, and it knows how to go to the next call. Does that sound like proof by induction?
p it does.
int induction knows how to start and it knows how to go to the next, so it turns out if you want to prove a program that is a recursive program, you can prove it with a proof by mathematic induction.
p oh. yeah.
int ok, i hope you said that loud enough to get on the tape.
p i never knew that.
int but now that i've called your attention to it, it seems to make sense, right?
p inaudible
int so, yes, one of the reasons that proof by mathematic induction is the most popular proof method in computer science is that ties in so nicely to the programs
um. ok, and so this works for philosophy as well as for mathematics although my main interest is teaching mathematics, mathematical proof to students of computer science. what makes an argument valid?
p um premises must be true, um,there should not be any inaudible so we draw conclusion from premise there shouldn't be any guess and um i mean it's not clear
int it's right. you just need to fill it in with some vocabulary words.
p yeah, um i remember when ... it's like sometimes you draw a conclusion that sounds like it's correct but there's a gap in the logic
int umhm
p because there are other ... um not sure of the correct answer is.
int ok, so there has to be a connection all the way from your axioms and premise, premises all the way through to your conclusion, each step that you make has to be justified and the like the vocabulary word that we use for that warranted. each step has to be warranted and the things that form your warrants are these rules of inference, allowed rules of inference, so if an implication a gets you b if you know the truth value of that implication to be true, then you can say well i have a, and i know that a gets you b, so i know b, that's an example of rules of inference so the earliest one we have is modus ponens. and the example that's typically used of that is we have the statement all men are mortal. and then we have another statement that Socrates is a man, and so we say, well you know um Socrates must be mortal. that's an example of modus ponens rule of inference being applied. so for an argument to be valid, its form has to be statements warranted by rules of inference. as long as the statements are warranted, as long as moving from one statement to the next is warranted, and you started out in a true place, then you'll still be in a true place when you end up. well thank you very much. um, my teacher who taught me how to do interviews said at the end of every interview should be asking the participant what they were hoping they were going to be asked, or what they might like to say, so this is your opportunity to say, what you wished i would have, what you imagined, hoped i would have asked you, or what you might like to say
part um well i would like to say that this is very informative interview
int oh good
part because um if it makes it helped me remember a lot of things that i learned in 2500 class um discrete mathematics class, and um helped me draw the connection between the proofs and the programs we write, um, and i guess i was hoping you would ask me this here question inaudible it will ask, answer the bulk of them
int this is fine because my research is to find out what the students are thinking, so that they just to find out what you are thinking because we hope to use it to improve how we teach. One thing i've been finding from other people is that they don't really know why we teach proofs in fact i intended to ask you why do think we teach proofs, maybe i forgot to. why do you think we teach proofs?
part now that we ... i have a better idea i think it's because when we're deciding how to make programs efficient um make them do what we want them to do, proofs could help us figure out if we're going to reach the truth using those programs
int right, the conjecture is: my program works, and you want to prove that. or conjecture is, my program is not going to take exponential time in the size of the input, ah, and you might want to prove that too. ah, and so you're about to take 3500, and professor raj, or whoever you have is going to show you lots of ways to prove these things that you want to know about your programs and he has used it to prove that programs that he has written are way faster than other programs he's really good, i don't know if you're aware of this but he's kind of like world famous for how fast some of his...so uh
part interview, have a class tomorrow, first time, so, um, i was like asking some friends like what should i review for this class, ... much do you have any suggestions of what i should
int ok, well you're going to find out what book or books he recommends
part yeah, i have the book, and i was going over sort, like all those um just from 2100 for really those
int so, what's he going to do, he's going to show you some premises, right, ok this is what we know, and therefore we're allowed to say this, and this and this, and therefore, you know, something is going to maybe be suppose you have input of size n, and you want to put it into a binary search tree, you remember those, and you remember that if it's uh a nice tree, where you've got two branches on every level uh until you've used up all of your input, then nobody says that the size of your input is a power of 2, so you don't necessarily have a full tree, or you may stipulate that yes, the amount of input we have is a power of 2, and then he'll prove to you that to get from the top to the bottom of this tree one time is the take amount of time log in the number of vertices in the tree. so, you'll want to remember the definition of log. so, um, for a power of 2, it's like how many times can i multiply 2 by itself until i get to this other number. so, somebody says what's the log base 2 of 128, we say well 128, i multiply 2 by itself ... 7 times, ok yes, yes, so the log of 128 to the base 2 is going to be 7, so if you have 128 nodes in your, and you put in a search tree, it's going to have 7 levels, and if you only have to look at one level once before you get to the bottom then it's going to take you 7 steps, so you find to make sure that you can do those proofs. and the reason is because someday you may be like professor raj, publishing an algorithm that you made up, and you want to say, you know i know that my algorithm will always get done in such and such a time, and here's how i prove it.
p um
int kind of articles that people put in publications, and become professors. so that's what you're going to see, and i know he uses things with logs so you'll be looking at the inverse of log is 2 to the some power, so you need to know about that, you'll need to know what factorial is, and you know, remember binomial coefficients?
combinations of so many things taken so many at a time?
p probably did some permutation
int permutation you care about the order
p combinations
int combinations you're saying i've got this set of things
p so it's just a formula, like n!
int if it's n and then r, it's going to be n! divided by r! also (n-r)!.
part yeah i didn't memorize, but i am familiar
int ok, well i think we're done here so let me shut this off
line663532
Hi this is Mollie it's april 2nd and please start by saying you read and signed the consent form
i've read and signed the consent form
ok, so what i would like you to talk about is anything that, in your mind related to proofs, seeing them, understanding them, wishing you could do them
i find going through them extremely helpful in understanding, like not just um saying oh by the way this is it and going through it, but actually having us try to figure it out
what do you mean by figure it out, explain that to me in more words
like, um, day camp probability class and this is the best example come across, we actually have to um what he does is wind up writing the formula or whatever the thing is on the board and then we prove the thing ourselves.
in the class?
yeah.
um
there's extremely helpful.
Int. does, do any of the students talk about their proof attempts? in the class?
yeah, we actually go through like um people someone suggests what if we do this and another person is like oh what about this
that sounds great
and um and if we do it differently he writes on the board
umhm
so, we kind of can walk through it
i wanted to know who teaches like this, it sounds wonderful
prof robinson, john robinson
int and so how many students are there in the class
it's a small class, i would estimate like 25-30 or so.
umhm
uhm but i found that a lot more helpful than um just having the proof on the board and like this is what you do blah blah blah
umhm
um
but the other students don't seem to like it that much
oh
Part: i don't mind
Int: it sounds to me like a method usually divides the students into two divided camps, the ones who really like it, and the ones who really don't, there's usually nobody in the middle
um
Int" I'm curious how this works. Do students propose what goes next?
Part yes
Int or then discussion
Part you kind of like it's just like well what you do is um you have it on the board, and um someone's and then someone if ever having trouble figuring it out, sometimes you just walk through the logic in english first if you're having trouble or sometimes it um just writing it on the board people just putting ideas how to go about it
Int can you give me an example
part axiom of probability to um things like binomial theorem and all that stuff
umhm
DeMorgan's things
right, so when you're trying to prove something is true, and the thing that you're supposed to prove is on the board, student wants to make a suggestion about a step in the proof
Part: you just raise your hand and say, what about doing this?
Int: umhm, so do you talk about what is a suitable next step, do you talk about why a proposed step is suitable or isn't?
Part: um, just if you're struggling, someone's struggling, go get this sort of thing
Int: people can do that, they can say wait I don't get this? That sounds really nice, especially if you don't get it.
Part: umhm. Or if you have trouble hearing it
Int: right, in a class as big as 25 or 30 you can have trouble hearing. Um. Is this a math department class?
Part: yes it is.
Int: so, they probably never talk about the applications of it to computer science?
Part: no they talk about that, too
Int: really
Part: I was surprised, but everyone in the class is either a math major an actuarial science major or an engineering major of some kind, so he tried to tailor the things to each of those people would be interested in
Int: makes me want to go sit in on this class. Does it have a textbook?
Part: Um hm
Int which one?
Part: inaudible for a time A First Course in Probability 9th edition
Int: by whom?
Part: Sheldon Rock
Int: um hm, so can you think of an application of um binomial theorem to computer science?
Part: um. well i was sure there is something, but um
Int: do you remember anything he said was applicable to computer science?
Part: um, well he doesn't say, he's more like this is a kind of thing engineers in the class might be into, sort of thing
Int: general sense, and what sort of proofs can you remember something besides binomial theorem that you proved?
Part: well i remember induction proofs being useful for um for like recursive algorithms
Int Yes! yes, wonderful. so how was that discussed, do you remember?
Part: that was actually in a different class, in discrete systems
Int: umhm. In the discrete systems class they talked about proof by induction, and they talked aobut how it was useful for recursion, do you remember how that works?
Part: you have the first step where you prove one of them's true, and then you say this one implies the other one, and demonstrate that
Int: do you know why that works?
Part: Because um because basically if um the first thing implies the second thing is true, but in um and you know the first thing is true that means the second thing is true, then that second thing will imply the third thing and so on
Int: great, like a zipper, or (inaudible), Did you have the class where you talk about data structures like trees?
Part: umhm
Int: do you see any connection between that and the tree data structure
Part: yeah, there's a lot of recursion, we need to find what a tree was, recursively
Int: oh, how nice, so you see right away
Part: yeah
Int: and, um, so if you were saying you know sometime in your career considering uh a safety critical application, where you had to prove that you know, nothing bad happens, which is called safety, and you had to prove that the algorithm always made progress, which is called um, liveness would you have a preference for tree algorithms or against tree algorithms
Part: i'm not sure. and it would have to be compared to other things
Int ok
Part: like i don't have enough information to determine what you mean by safety and stuff
Int: ok, if you have to prove something about your algorithm, like, it would make progress, uh, or it would come to an end, generally you want both of those to be true, start somewhere, make progress, get to the end. If you had to prove something like that about your program, and you had a choice whether you could use a tree data structure to support that algorithm, or not, does that give you any thoughts, what we were just talking about>
Part: I would have to consider the run time and all that stuff. sort of thing.
INt: well, if you have run computer than ran three times faster than the other, but you were talking about want to know whether the algorithm makes progress, or whether it comes to an end, does the speed really matter?
Part: not exactly, but sometimes it would make inaudible sort of thing
Int: alright, the size of the input, which you can characterize as n, in all of those big-O algorithms. Suppose you were allowed to have an algorithm that was polynomial in the number of states you had to examine. You know, suppose you had to examine a whole bunch of states, and you knew for sure that the algorithm was polynomial in the number of states, so you didn't have to worry any more about n. Would you, if you had a choice of using a tree structure or not, and you're thinking about whether you'd employ a tree data structure or not, and you knew you had to prove something
Part: it would figure it
Int: ok, so, I'm trying to do sort of like that probability class style, where the thing that you want to prove is, the algorithm makes progress, and I'm saying don't forget that you have the option of using a tree data structure, so how would you think about writing a proof that an algorithm
Part: well, it depends upon what i'm trying to prove, is it one of those step by step thingies, where the first thing implies the next thing, then i would use induction, and trees and stuff, but i notice the other kind of proofs, too, um, but I haven't gone over the names of them.
Int: oh, suppose i were to ask you, um, trying to figure out how to phrase this without forcing you to say thing, if somebody said you could use this algorithm, and it uses a tree structure and you're going to have to prove that it makes progress and that it gets to the end. um, and you were considering having the proofs that it makes progress and/or gets to the end
Part i would guess using induction proof would help.
Int ok, I think that's a good guess. Will you explain why?
Part. Um, because it seems like that making progress um it seems like you're trying to describe something recursive, though, um where one thing would imply the next thing and so on, and that tells the dressing, but i think it would be helpful.
Int. the tree data structure was described to you in a recursive manner, so you know that the tree data structure fits with recursive algorithms, and you know that recursive algorithms uh have more or less the same shape as a proof by induction
Part unhm
Int So, if you needed to prove something and you had the opportunity to use an algorithm that operated on a tree data structure, then you're all set up to use proof by induction as your technique.
Part Yeah. *Without enthusiasm, big pause"
Int in light of that it makes sense that the curriculum would have the street map between classes Now, do you remember in either of these classes or any of the classes where you dealt with proofs, whether there was a role for definitions?
Part um, yes. For example um with the probability class when we were proving bayes' formula, um we had to use the definition of conditional probability
Int: are you done already? Want some more?
Part: I could have more. So that was an example.
Int: Have you done any proofs with sets?
Part: yes, probability was um we originally thought of um probability in terms of set theory.
Int: outcome space?
Part: yea
Int: set of events?
Part: yes
Int: were any of the sets infinite?
Part: well, I think um we're going to get to that with random variables and stuff.
Int: yeah
Part: and it'll be continuous rather than discrete. We haven't gotten to that yet, but there are such, there are some um internet things, we just barely touched on it.
Int I saw a cute proof the other day
Part cute what?
Int Proof. um, a cute thing to be proved. Do you know what a twin prime is?
Part No I know what a prime number is.
Int Twin primes are primes, first of all, but it's also the case that you're thinking about two of them at a time, and of course they're integers, and the difference between them is 2.
Part: so, 3 and 5
Int: yes. A excellent example. so, what the students were asked was, prove something about the I don't remember exactly, maybe it was something about the number between them. It turned out that the proof depended upon them being apart by 2, but it did not depend upon them being primes
Part. Hmm.
Int. So you could just express, instead of calling them numbers a and b or p and q, you could just call them a and a+2.
Part: hm. What this proof?
Int; what i thought was interesting was, you did not have to use all of the information furnished to you, in order to prove the desired result. In other words, you did not have to use the fact that these numbers were primes, the theorem to be proved was true for any two integers that are separate by 2.
Part. Oh.
Int: and some of the students were habituated to trying to use all of the information that was furnished to them, so they discarded any approaches that did not involve the primality of the numbers
Part Hm
Int: and this was actually stopped some of them from finding the answer
Part Hm I remember um this was years back but like word problems in 2nd grade for example, were they bad information on purpose that was not necessary
Int distractors?
Part umhm. It just, it reminds me of that.
Int me, too, now that you mention it. So one thing i'm interested in lately is the role of examples, in student understanding of material. Especially in proofs.
Part what do you mean by examples, like
Int you just said, two primes, twin primes, you said 3 and 5
Part oh. yeah that does help. it cause it gives you something more concrete to think about, and work with
Int, so, how does working with something concrete help? or seem to help
Part I find it easier to work with things that are concrete rather than abstract. but that could just be me
Int. No, it's not just you. From the literature that i've read, people who don't like definitions, sometimes work with examples instead, and then if they're not working with the definition they're actually not able to be careful enough
Part hm
Int I have some students in well i just finished teaching a discrete math class, and some of the students didn't want to pay attention to definitions, you know, if you're not paying attention, you can try to write the definition in your own words, but after that go look it up on a peer reviewed source like mathworld and look at the difference between the mathematical community's definition and your own, this will be instructive because you'll see how the mathematical community constructs definitions very carefull
Part Why?
Int otherwise you can't prove. The properties described in the definition are the basis of the proof, not the example. It turns out if you learn how, there's an idea of an example called a generic particular, so not any example will do for that, it has to be an example about which there is nothing special compared to the definition
Part Ah.
Int so suppose i'm talking about an interval on the real line. so there's the idea of a closed interval and an open interval and actually the idea applies to each end of the interval, so you can say i'll take every number greater than 0 all the way up to and including 1. So on the one end it's a closed interval, up to and including, and on the low end, it's an open interval, because has to be greater than 0.
Part uhmh
Int so if i say pick a number out of that interval to be a generic particular. ends are special members, take generic particular, cannot be special in order to get the generic quality. Somebody might say i'll take an example, i'll take 9 or 36, but 36 is divisible by so many
Part if it doesn't, then it would be special because it's prime, I mean another example.
Int right, sometimes being prime is special. In the beginning students may use examples in a lazy way instead of definition, then people get used to using definitions, and as they make further progress and are creating proofs, they again turn to examples to give them inspiration, and so examples are interesting, since they can be used in several ways. Sometimes it's easier to stick with the definition and not even concern yourself with examples.
Part Makes sense.
Int suppose somebody said, i want you to prove that no even number greater than 2 is prime.
Part hm.
Int how would you do that?
Part um. well, i would first define i would first start with what an even number is. So, it's um so um 2 um, 2 times the number plus um wait, 2 times some number
Int umhm
Part where um some number is an integer
Int right,
Part, so, um so anything greater than 2 times shouldn't it, already by definition a multiple of 2 and from other number um but we already know that 2 times 1 that puts a definition of prime because but anything greater than that is multiple of 2 and some other that's greater than 1 which automatically means it's composite
Int the definition, which tells you there is a factor of 2 in there, is all you need. You're got a factor, and you're done. So going to examples seems sort of round about. You can get directly to the answer from the definition, so i'm just searching for an example that shows that, i was looking for an example that shows that examples aren't always what you need. (ha ha) so do you like using recursive algorithms?
Part yeah but kind of difficult to figure out the problem, the run times for them at times
Int umhm
Part like um how many times you make a certain method call. Make the recursive call, it's going to be difficult to figure out at times.
Int doing recursion on a tree data structure, if you don't know the branching factor, that can make it hard, but if you do know the branching factor and you do know the depth, then you pretty much know.
Part yeah
Int if you're searching, and you don't know when you're going to find it out, of course you don't know the execution time of any given instance, but luckily we're not usually asked that, we're usually asked for the worst case
Part yeah
Int so if you had to search a gigantic tree, you know the depth and you knew the branching factor um does that give you and idea how long it would take?
Part sometimes. i haven't found an example where it hasn't.
Int I was remembering to make up the worst, have to think about what is worse.
Part umhm, the longest run time as travically
Int If you're searching a tree, and you know you want to find out whether an element is present in the tree, suppose you have to delete it, for example.
Part hm
Int The worst case is you have to search the whole tree, you look, and it was the very last
Part yeah
Int you searched every other node and they all did not match, but there was one node left, and you searched that node, and sure enough, that was the one. That would be the worst case, you had to look at all of them.
Part you could rearrange the tree, like make it a binary search tree
Int umhm. right. when you're trying to figure out what's the worst case, you are at liberty which instance of the problem as well as the arrangement.
part hm
int you can say well, i know it's already arranged as a binary search tree, because i already did that part, right, and now, what number or what entry in the tree would be the worst case
part it would definitely be a leaf
int unhm
part and it would be the leaf with the largest depth
int so you know you know what the depth is, and you know the cost for going down one level, because that's one recursion for those?
Part yeah.
int so it's nice to have at least some algorithms that you can prove stuff about, because you have to build a safety critical system before you know something that has to last a really long time like some mars rover or something, not so easy necessarily to fix it. Nice to be able to prove in advance that something is going to work.
Part yeah.
Int I would like you to think about testing your software, vs. proving your software, and compare that with the idea of checking an example, when you are trying to do a proof, or doing a valid proof.
Part hm, so what about those
Int well, do they sound similar?
Part they are different, um, they aren't quite the same. I inaudible through the program and seeing what it does, proving something about it is um checking to make sure, but you generally check to make sure that part of the program works and you have to the whole entire program as well, to make sure that the proof works, if it works together. so there's a place for inaudible. "prole"
Int i'm not sure we talked that much in great form about how to prove programs
Part hm
Int but there are people who concern themselves with that. Have you ever heard of functional programming?
Part hm
Int remember in matlab we had functions?
Part oh yeah
Int and those functions you could write them with an input and they generated an output
Part yeah
Int, uh, if you leave off things like global variables, which I do recommend you leave off, you can say that when i run this function there are no side effects, so, like a mathematical function you operate it, on its input, and it generates some answer the Matlab program works like that. The matlab function, the ideal matlab function is like that, so cause you can prove mathematical things that are built out of mathematical functions, you can prove programs that are made out of functional modules
Part yeah, basically math i mean, so
Int i think there may be programs that you cannot prove that they work.
Part it wouldn't make sense.
Int some people who want to be sure that their programs work, and flight management systems for aircraft
Part yeah, i bet
Int um
Part considering what's at stake
Int probably be more support for them these days with the missing airplane
so the first there are some techniques we can use to make our software amenable to proof
Part hm
Int did you have anything in mind that you were hoping i might ask you about
Part i wasn't sure what to expect other than that this was going to be about proofs
Int, so do you like them,do you like doing them
Part yeah, i don't mind
Int that class you talk, the probability class
Part, yeah, it is
Int and when you go about programming, i mean maybe later, maybe not
Part course it wouldn't exactly work in a big lecture hall
Int might be hard
Part yeah
Int that's why i asked the size of your class., Paper how happy they were that similar worked with 9 students, sure easier with 9 than with 30. Do you think you would like a job where you had to prove that your programs work?
Part probably wouldn't mind it
Int it probably pays better than the regular kind
Part yeah. it would depend on the good things do, it would depend upon how good i become at that sort of thing.
Int i suspect you're going to make inaudible
Part and people tend to specialize in what they're more better at, I know that's improper grammar but whatever, talking about one specific interest
Int people tend to work toward their strengths, that's true, but on the one hand somebody may be, somebody an employee on campus, really good at TV broadcasting, but it turns out that he works in something slightly different here, he works in how to teach with classroom support, like clickers effectively in your class so, so people don't always end up doing what they're really, really good at
Part it is definitely a tendency though
Int yeah
Part like there's no way i'm going to become a personal trainer,
Part professional singer,
Int don't like singing
Part, no, sake of everyone in this room, i'm not singing
Int kiri Tekanawa, ok. You know, in England, in the 1600's at least, it was against the law to sing if you were not good at it.
Part how do you define what is good?
Int it's very subjective i guess. the local constable suddenly becomes an art critic.
i remember being horrified to hear that that was a law.
Part definitely worse laws,
Int, but i like to sing you see. Thank you very much for this, I really appreciate it.
Part You're welcome
Int I shall close it off.
morillo
This is reynaldo morillo.
and i have signed and read the consent form.
ok, so, i really appreciate your helping me out with this, there are several classes that uh are involved with dealing with proofs, one of which is 2500, and uh so I'd like to ask you you know when you took 2500 as far as you can remember was there any discussion about proofs in the class?
all the time.
ok, uh, do you remember whether you had to provide furnish any proofs?
uh, pretty much for every homework assignment
ok, what kind of proofs were they?
uhm, proving how one how something is equivalent to another, and if something fits a certain uh say qualification uhm to believe that's what we do, and uh a lot of its pretty much equivalence, i would say
ok, uh, do you remember any example proofs?
um, the most basic one uh proving that a summation of uh i forget i just reduces to a simple formula, but i forgot what it was for
sometimes there are things called series, which are sums, can be infinite, and some such sums do what's called converging, in other words they add up to something that's finite, other you know roots of numbers when you add them up don't necessarily add up to things that are finite, you can even in analysis class find out that certain uh series add up to different answers depending upon the order in which you take the terms, which is pretty cool, um, let's see, uh, why do you think 2500 treats proofs?
uhm, I"m not quite sure why we're doing so many proofs. uhm, i can see why we're counting, and doing some statistical analysis, but uhm for the proving i'm not quite sure why we're doing proofs
uh-huh, uhm, let's see, why do you think 2500 uses the examples that it does? This is a much harder question to answer if you don't know if you haven't constructed for yourself an answer for the previous question, so, I'm going to ask anyway, what would you think to say to the question, um, why do you think that 2500 uses the particular examples that it does?
uhm, are they classic?
well, yes, they are.
then, uh I would assume that uhm if they're classic they're probably good start off points, to more complicated analysis
Great. Uhm, have you noticed any use that you make of the material related to proofs, in any of the other courses that you're taking or to things that you're doing?
No.
Well, ok. Uhm, I find it very fun. I like doing them. I don't care if they are related to anything, you know, it's incredible exercise. Um, let's see. If you had to choose between uhm a mathematical symbolic formulation or writing code, like pseudocode or Java or something like that, to carefully articulate a concept that you were trying to express, uh, would you find mathematical formulation or code easier? One or the other? and which one would be easier?
Uhm. I think that would depend on the problem trying to formulate an answer to. Uhm, some are better expressed using code, I think others probably better expressed mathematically. Uh, I'm more comfortable with perhaps a code uhm formulation but I'm ok with mathematical; I cause I'm good at math
uh-huh
but, sometimes like the textbook that we're using right now uses a mathematical formulation and it's not always quite clear how they get from one point to another, and, when you get stuck, you get really stuck, and maybe if you do have a code implementation, you can probably if it's a short code, you can probably copy it and debug it in your code you know, your coding environment maybe
yeah
so, I'd prefer perhaps a Java or coding implementation. It would perhaps be better. More uh what do you call it detailed
ok, um, um, ok, um, Is it Does it ever arise that you wish to convince yourself or someone else of a technical point?
uhm, you mean, prove essentially?
Yeah, a proof is what you would use. Cut right to the quick on that. so, the next question is, what techniques would you employ in a proof, you know,
ok,
to do that?
um, depends on what you're proving. uhm, my professor in 2500 says induction is like the most important form of proving we do in the class, so, I guess first use induction
ahh, ok, um, got through my list rather quickly so I'm going to invent something on the fly. There is a problem in the course you haven't taken, I think you have not taken 3502 yet, is that right? That comes after , so there is this very very cute problem related to inductive proofs in there, so, uh, um, I guess I can't remember exactly now, um let me see if I can think of another one, do you know what the mean value theorem is?
Mean value theorem. I think we talked about it in class. Uhm
You might not have in computer science, it's in math curriculum
Yes, exactly. I took a course, mean value theorem, I know I've heard of it, I'm pretty sure I used it before. Maybe if I see an example
Ok, let me draw you something on the board. So, uhm, so here's where I have some value a, and I have some value b, and I have some values f(a), f(b),
and actually one version of this, down here, inaudible, so, suppose that in this circumstance you have like this, inaudible, and this guy, inaudible
Yup
and so you want to prove for f continuous, that there exists some c such that f(c) is equal to 0.
I would presume that c is in between a and b?
Yes, c has to be, sorry, you're right, I need to do this.
OK. To prove that f is continuous
No, given that f is continuous, prove inaudible ok this belongs up here, and
inaudible there exists some c satisfying this property that also satisfies that property
f(c) inaudible
so you're allowed to invoke continuous
inaudible, between a and b
inaudible, there's a c in there somewhere
there's a c in there somewhere and it's equal to zero, and you want to prove that, alright um I can say that since the function is continuous, uhm, there is a connection I can't a constant connection i guess, no, there is no there is no jumps, there is no uh by definition of continuous the it must cross the x-axis in y or inaudible f must be zero eventually
right,
at some point.
right, so, essentially you say that for close enough there is something close enough, sort of like inaudible sort of means that you know to get from there to there, you have to
you have to cross there
yeah, so I think that cause I'm places that proofs are convincing arguments and when you can prove something you can feel completely sure about it and sometimes you want to be sure that, you know, that your code is never going to do some bad thing, so that's called safety analysis, and sometime you can, you need to prove that your code is going to advance uh and that's called progress. so it turns out that inaudible glad to hear you like proofs, they have a lot of applicability in computer science
um
um, my teacher who taught me how to conduct interviews said you should always end with asking the participant whether, you know, what they had hoped to be asked, or what they wish they had been asked, or what they would like to say.
Hmm. Good question. Uhm.Uhm, perhaps how comfortable you feel doing a proof, after so far you've gone in the course.
Yes, inaudible
I don't feel quite comfortable right now he-he doing a proof.not
can you imagine what sorts of you know educational activities could be done that would
improve?
yeah
Uh, not quite sure because like it does mean i this is all math i'm call it that, uhm, in my 2500 class it's kind of like math, but, it's more of like you see a pattern, prove it that this pattern will continue, or if this pattern is just appearing now for the first couple values or it's not but you can't prove you have to prove that it's always true in generally
uh-huh
now, when it comes to doing that uhm, now i have now i'm going to have a hard time
ok, so, those are usually inductive proofs
yes
right, you've got some base case
yeah
and you've got some "proof by dominoes", you know that you can knock over one domino, and then so the case brings you to the case plus first case, is the induction step that you have to prove, basically says if the dominos are close enough so that one falling down is guaranteed to knock the next one down, so you have both that you can start, and you have that you can continue. You have to glue them together also right, you have to say that even though I can do it for one, that, you know one is a perfectly good value for k, so you get 2 from k+1.
Yeah
so long as the base case is glued on to the
connect
continuation
and then you can continue, next and so on and so forth
and if you're in a domain where you have the integers at your disposal, where you can make a correspondence between, you know maybe it's the can put in correspondence with the integers, then you can, you know, if it happens for variables called the i, and if I can do it for i=0, for 1, whichever I"m starting my loop that's the base case, and if I can prove that you know every increment around the loop depends only on the previous one, then I can go around the loop as many times as I want, so in that environment I have the integers at my disposal. A more reasoning argument, the integers might not be there to help, necessarily, uhm so, Do you want to see if there's a sort of well uh so when these things are you know potential for getting stuck, is it nice to have a say a regular weekly help session that you can show up at or not if you want
definitely
what about uh you know some courses use moodle, and on moodle there are discussion fora, uh, I put a discussion forum on one course that I ran, and people opted out of it, and I asked them why about half way through, and was told if it were anonymous, we're asking questions we don't know the answer to, we don't want people to know who we are, perfectly happy to participate as long as could do without being known
is moodle like piazza?
The discussion forum part is like piazza, yes. Do you like piazza?
i actually do.
Using it in 2500?
NO, we don't have it
Prof. McCartney used it in
1102
yes
it was fun there
yes
Morillo uhm, let's see, uhm
inaudible
ok, well thank you very much, I really appreciate it
you're welcome.
inaudible, shut this off.