Live data from Hacker News

Programming as a Way of Thinking

blogs.scientificamerican.com

121–130 of 133 posts

Re: Programming as a Way of Thinking

#121
post #119

> With a computational approach, we can go “top down”, starting with libraries that implement the most important algorithms, like Fast Fourier Transform. Students can use the algorithms first and learn how they work later. This is exactly how I understood it. Three years back, WebAudio API was a new addition in browsers and I decided I should make something with it. I settled on building a Whistle Detector using a ci…

That's a very interesting comment to me because I may be perhaps the opposite. I got a slow and frustrating start learning application development--I wasnt getting it. I felt I was following instructions on how to write esoteric insutructions and not understanding how it worked. I found the book Code by Petzold and read it. Then I discussed some of this with other developers and realized they were even more clueless…

I learn best when I build something that illustrates the theory. Reading gives me a dim idea, but building something (and freely experimenting on the way) teaches me how it works.

Re: Programming as a Way of Thinking

#122
post #119

Earlier quoted context omitted.

That's a very interesting comment to me because I may be perhaps the opposite. I got a slow and frustrating start learning application development--I wasnt getting it. I felt I was following instructions on how to write esoteric insutructions and not understanding how it worked. I found the book Code by Petzold and read it. Then I discussed some of this with other developers and realized they were even more clueless…

I learn best when I build something that illustrates the theory. Reading gives me a dim idea, but building something (and freely experimenting on the way) teaches me how it works.

I'm the opposite, and had to be persistent with searching for the right learning tools for programming, with the least terms and behaviours left undefined. If there are such things as 'learning styles', theoretical learners vs applied learners is the most intuitively clear distinction. However choosing a teaching and measurement paradigm that fits both without a lot of wiggling is not so intuitive...

Re: Programming as a Way of Thinking

#123
This post reminds me of Amir Rachum's post about Knowledge Debt[1].

"This is how programming should be taught. You should do stuff way before you can figure out how it works. For a while, you should intentionally be ignorant about distracting details."

"You should, intentionally and tactically, decide which piece of information you can do without, for now. But you should also, intentionally and strategically, decide when to pay back that debt."

[1]: http://amir.rachum.com/blog/2016/09/15/knowledge-debt/

Re: Programming as a Way of Thinking

#124
post #38

> The languages I am calling modern are not particularly new; in fact, Python is more than 25 years old. But they are not yet widely taught in high schools and colleges. Seems like a strange claim, because > eight of the top 10 CS departments, and 27 of the top 39, teach Python in introductory CS0 or CS1 courses. [1] [1] https://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-th...

If you posit that python is a better way to teach programming, and that top universities are more likely than average to use better ways of teaching, then that data point may be skewed.

Re: Programming as a Way of Thinking

#125

Earlier quoted context omitted.

You should try to find him and say hello.

I'll have to email him - I was planning on doing so once I finish my senior honors thesis in CS education (which I'm dedicating to him).

I had a teacher that changed me for the better, unfortunately I never got the chance to thank him as he passed away unexpectedly :/

If I were you I would send an email right away. You never know what happens.

Re: Programming as a Way of Thinking

#127
post #79
post #78

Earlier quoted context omitted.

Conversely, you just draw a picture and leave all of this tedium behind, making the import of what you are talking about obvious at a glance.

Proofs by picture arent proofs though. And how would you even convey by picture that two line segments are of the same length. Or that if you drew C and D as separate points they turn out to be the same point?

Oliver Byrne's edition of Euclid is a nice proof-by-picture example: https://www.math.ubc.ca/~cass/euclid/byrne.html

Re: Programming as a Way of Thinking

#128
post #77
post #22

This article starts to get at an idea that I've had for a while now -- that mathematicians are doing it wrong. In the software business we learned a long time ago to name our variables properly, name our functions logically, and to control complexity by breaking ideas into modules and then hiding the details inside. If you can't name something, then you don't know what it is, and that tells you that you should rethin…

Mathematicians work with pen and paper regularly. So long var names can be frustrating. If everyone goes to digital format it may be easier. However, there are forces working against that. Mathematical proofs are more like sentences, or even poetry, than a structured language that can be compiled. They are meant for humans to read. So you jot down your proof over and over again in different formats, playing with both…

Conciseness matters. For example, Einstein's convention for tensor notation - a lot of explicit sums are lost!

Re: Programming as a Way of Thinking

#129
post #54

Earlier quoted context omitted.

To "explain". I find a good paragraph explaining what the equation means and implies is far more useful than the equation alone. This is all the typical "what" vs "why". If you just want to describe the what then the formula alone might be enough (and just presuming everyone know what the variables mean), but if you actually want to convey a some meaning that formula needs to be explained.

You are arguing against a strawman. I have never seen any piece of mathematics that was just formulas. The heavy majority of any mathematical writing is plain text -- formulas and notation are only used when it would be much less practical to express something in text.

I appreciate your response it is well thought out and leaves me struggling hard to find a counter-example. I feel that I know that I have had to deal with this, but I cannot find examples.

Before your response I had several hours with just downvotes and did not know why. I wish people would comment with their downvotes.

Re: Programming as a Way of Thinking

#130
post #60

Earlier quoted context omitted.

> However, consider that for people who are already used to the notation those "unnecessary" equations are actually more compact and precise than reading the accompanying text. What seems difficult to you may be easy for someone else, and vice versa. A struggle for me over the years has been that there does not really seem to be any way of learning the notation, separate from the standard university education process…

Can you give an example of a place you've seen notation you can't understand? Typically, papers include a brief notation section where they define notation you can then google. In other cases, I've normally been able to google things like "what does the bar over mean?" successfully.

The last paper I remember trying to crack was Damas & Milner, on type systems, since I was working on a problem which appeared to be analogous to type inference. I asked a friend for help, and he very kindly translated it for me - he's actually written a long series of blog posts now, based on those emails:

https://ericlippert.com/2016/11/30/4498/

As with virtually every other CS paper using math notation, I found the Damas & Milner paper utterly incomprehensible at first, but once I'd seen the formulas translated into a notation I can actually read, I was able to go back and learn something useful from it.

Unfortunately, it appears to be the case that there really is no one such thing as "math notation", not in the sense that there is one programming notation called "Python" and another called "Haskell" and yet another called "C++", such that one can go read a tutorial for some specific language and thereby come to understand how its notation works. Instead, it appears that "math notation" is a huge collection of little micro-notations, all mixed up together in a more or less ad-hoc fashion by the author of each paper.

Post reply on HN