News for hackers. Stuff that matters.
Re:What are some things you wish you knew when you started p... by espeed on Sunday March 19, 2017 @10:13AM (#13907174)
The true language of computing is mathematics, and its power and beauty are masked to those who cannot speak it. Programming languages are powerful tools for communicating ideas and encoding the language of mathematics. You can use these tools to shovel bits around without understanding the language, but you won't be able to see or say much unless you become fluent. Creative expression comes with fluency, and fluency requires the perspective unlocked through deep understanding. Becoming fluent in the language of math is the rite of passage one must cross to receive its true potential.

https://en.wikipedia.org/wiki/Mathematics

Re:What are some things you wish you knew when you started p... by __ddd__ on Sunday March 19, 2017 @10:27AM (#13907243)
Logic more so than mathematics. Mathematics as a means to achieve efficiency, which is an afterthought most of the time. Most working programmers don't need more than a basic understanding of algebra.
Re:What are some things you wish you knew when you started p... by espeed on Sunday March 19, 2017 @04:41PM (#13909496)
Logic is a form a mathematics, and understanding logic is essential. Indeed, for many programmers, that's the extent of the math they know and use. And that's what limits them. There is so much more.
Re:What are some things you wish you knew when you started p... by __ddd__ on Wednesday March 22, 2017 @11:19AM (#13931613)
Unless you're​ solving mathematical problems, how does math directly translate to programming (ignoring efficiency)? I agree with the sentiment that the connection is over-stated. Whenever I hear this argument, it feels like reductive FP propaganda. I'm interested in FP, but not because "it's just math". Sometimes it's nice to piggyback off of mathematics, and it's true that a program is a sort of proof, but sometimes (most of the time) it's better to not be so formal, and not be so academic.

Also, math and logic are obviously related, but logic is not "a form of mathematics". If anything, mathematics is a form of logic.

Re:What are some things you wish you knew when you started p... by ellius on Sunday March 19, 2017 @10:24AM (#13907223)
Any recommendations of how to get at this as a self-taught programmer? I've picked up books on combinatorics and discrete math, but I still feel very far removed and don't know how to really take an interest and make the connection.
Re:What are some things you wish you knew when you started p... by espeed on Sunday March 19, 2017 @02:00PM (#13908635)
Re:What are some things you wish you knew when you started p... by ellius on Sunday March 19, 2017 @03:14PM (#13909031)
Thanks!
Re:What are some things you wish you knew when you started p... by espeed on Sunday March 19, 2017 @09:50PM (#13911114)
Oh BTW, I answered a similar question in a comment a few weeks back -- I had more time that day, and I was able to give a more detailed answer:

See https://news.ycombinator.com/item?id=13713199

Also I've been posting a lot on math lately so if you want more examples and references, scroll through my HN posts and comments (I tend to cite everything so there's a ton of links in there).

Of special note, as others have started to discover, Grant Sanderson's 3Blue1Brown YouTube channel is a masterwork, an evolutionary tour de force in the way mathematical concepts and visualized and presented.

Grant wrote a custom software library (in Python, on Github) that enables him to create video visualizations to show the geometrical intuition behind abstract mathematical concepts. And this is key. Being able to visualize the geometric structure and transformations the mathematics is describing is the key that's been missing from the way math is traditionally taught, and this lack of visual intuition is why many find math so hard to penetrate.

3Blue1Brown's YouTube channel : https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw

Go there first to develop your visual intuition -- watch all his videos, and then watch them again, and again -- and soon you'll discover your new, powerful mental models forming, and things that were once opaque will suddenly become clear.

Start with his "Essense of Linear Algebra" series (it's one people are usually blown away by, and it's being discussed on HN a bunch lately).

He's going to release an "Elements of Calculus" series in April, and while Calculus is usually a prerequisite to Linear Algebra, it's not critical for understanding the visualizations the way it's presented here. But if you need a refresher, MIT's "Big Picture Calculus" is great (it's linked to in the HN thread I referenced in the first paragraph).

Re:What are some things you wish you knew when you started p... by ellius on Sunday March 19, 2017 @10:27PM (#13911267)
I can't thank you enough, this is really great. I've attempted a lot of videos etc. I really enjoy Shai Simonson's stuff, for example. And it helps me think more about things like time &/ complexity, but I've really struggled to find a "path" so to speak. I start losing them and without an application lose interest. So thank you again, I greatly appreciate it.
Re:What are some things you wish you knew when you started p... by espeed on Sunday March 19, 2017 @11:40PM (#13911491)
I remember Shai from back in the ArsDigita days. ArsDigita and OpenACS were one of the first open-source projects I was involved with. Shai was one of the instructors at ArsDigita University -- one of the first CS courses on the Internet. ADuni began as an experiment by Phil Greenspun to see if it was possible to teach non-CS college grads the MIT Course 6 curriculum, compressed into a one-year, accelerated postbaccalaureate CS program.

https://en.wikipedia.org/wiki/ArsDigita

After the year ended, they released all of the video lectures online. This was back in the late 90s / early 2000s. Back then there was no YouTube, video compression sucked, and broadband was in its infancy so connections were painfully slow . To get the videos, you could try and download the massive video archive, but it took forever and I don't think I ever got the full thing. Finally at some point they started selling and shipping HDDs pre-loaded with the entire video archive.

http://aduni.org/courses/

Today we're fortunate to have a lot of high-quality course content available online. Greenspun was one of the pioneers who helped make that happen. We should all be thankful for his foresight and initiative to trailblaze that space.

http://philip.greenspun.com

Prior to ADuni, Phil put all the curriculum online for MIT 6.916 "Software Engineering for Web Applications". It was one of the first serious Web Engineering courses offered anywhere. Several other schools used the material to teach the course in their CS dept.

http://philip.greenspun.com/teaching/old-one-term-web-6916

Problem Set 4 was my favorite -- design a Knowledge Management (KM) system using metadata, and then let the computer generate the server-side code for the application automatically.

http://philip.greenspun.com/teaching/psets/ps4/ps4

The material was so new and innovative, it was the thing back in the day -- part of the foundational material programmers used as we were learning to build server-side apps in the dotcom era. The ArsDigita Community System (ACS) was one of the first big Web development toolkits, and it was built on top of AOLserver, a high-quality C server that had an embedded Tcl interpreter running inside. Greenspun is an MIT Lisp hacker, and Tcl is an embeddable language similar to Lisp. And running Tcl directly inside AOLserver was a key innovation because it made server-side scripts fast because it bypassed all the traditional CGI overhead, and it allowed you to make database calls from directly inside the server. All the architecture design choices were documented and explained in detail in "Philip and Alex's Guide to Web Publishing," which was required reading at the time.

http://philip.greenspun.com/panda/

The semester I did the self-study program, Phil had the MIT students take the final exam online via an app built on the ACS. The exam wasn't open to self-study students, but I wanted to take it for my own edification. I had become intimately familiar with the ACS code, and I found a way to to hack into the online system and took the exam under some guest account. I never found out how I did though -- I asked Phil about it one time when he came to Dallas, but he didn't remember. I can't believe that was almost 20 years ago.

Re:What are some things you wish you knew when you started p... by ellius on Monday March 20, 2017 @04:06PM (#13917232)
Those ADuni lectures are actually what I know him from. They're excellent, and I very much admire his teaching. The problem I think is either that I went too far in the lectures without attempting the problem sets, or that I simply didn't have the educational prereqs or a work / hobby application to ground me and keep me working at it. Nonetheless, I very much admire the work and enjoy watching the lectures. If nothing else it gets me in a better headspace when I program. Hopefully I can transition that into learning the actual methods and techniques over time.

I will definitely check out the MIT course. I bet that would help me retain it much better. I was also looking at the Math for Electrical Engineering & Computer Science that I think you mentioned in an earlier comment.

Re:What are some things you wish you knew when you started p... by espeed on Monday March 20, 2017 @10:03PM (#13919254)
The Fall 2010 version of MIT 6.042J Mathematics for Computer Science is a good one (as I recall there are several versions online from different years), and someone from Google is teaching it this year (haven't heard if the videos will be made available online):

https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD...

Re:What are some things you wish you knew when you started p... by ellius on Tuesday March 21, 2017 @12:41PM (#13923873)
Thank you again. I really appreciate every bit, it all helps.