Live data from Hacker News

Teach Yourself Computer Science

teachyourselfcs.com

51–60 of 85 posts

Re: Teach Yourself Computer Science

#51
post #37

Earlier quoted context omitted.

"I know sorting algorithms so intimately that I know to always reach for the built in .sort()" - hypothetical person in my head.

"I know sorting algorithms so intimately that I know to not reach for the built in .sort() when the array is already 99% sorted" Built-ins are made to work well on the most common case. Often, you can use domain knowledge to come up with better solutions. But you need to know how common sorting algorithms work to understand if and when that domain knowledge can be used to speed up your program.

You're right. I'm being more tongue in cheek about how like 95% of the time just do the default. Your education is really to know when it's important to donut differently.

Re: Teach Yourself Computer Science

#52

Earlier quoted context omitted.

> Figuring them is easy from experience but the math behind that is way harder; anything beyond simple equations is like alien language to me ... It took me a long (and often frustrating) time to figure out that the perception of difficulty is largely because of how implicit most everything is in mathematics. It's not like programming where eventually there is a compiler with a definite structure that's going to make…

> We aren't taught about what it is our (sic) how it works My biggest frustration learning math when I was younger was not knowing -why- I was doing something a certain way or how it worked. It was incredibly discouraging because it didn’t just “click” like it seemed to with my peers.

I was the same way. I think the way we typically teach math (in the U.S. at least) to young people is particularly hard for those who insist on understanding rather than memorizing things.

I was the same as how you describe yourself, and I always just assumed the kids who were best in the class were doing what I was trying to do also, but were much better at it. And then you see later how fragile/limited one's understanding is when taking the memorization approach—but as a kid you don't have many options.

Re: Teach Yourself Computer Science

#53

My theoretical knowledge of computer science can be approximated to zero, as is my knowledge of math, but for some time I worked as a programmer with good results; in my best days I could write about two hundred lines of C or Pascal in a few hours, then go home without testing them because the machine wasn't available and be complimented the following day because they compiled and worked without any errors. I still f…

I overcame my math illiteracy by reading How To Prove It. The book is so simple and narrow in scope and yet it gave me a feeling that ultimately no math is beyond my grasp, even the papers on arxiv. Now I would say my math skills are still rather low because I know how much is out there, but at least I am competent. At this point I wouldn't want to read books that avoid math for mathematical topics. Algorithms are ma…

I wonder if there is just a big split between what folks are looking for in mathematics. I cannot understand how "How to Prove It" is so frequently praised. I tried reading after finishing my CS degree, while I was searching for books that would do math 'right,' being especially inspired by Paul Lockhart (and others), and it was one of the first books I picked up. I found it to be so much more of the same, focused on all these small things I didn't care about, pedantic, written in a cold detached tone, still no suggestion of why I should care about the things being talked about.

I had a much better time with "What is Mathematics?" (aka "Courant and Robbins"), though it still suffers from some similar problems (I remember being baffled by all the attention paid to these properties like commutativity, associativity, etc.—"why should I care about this!?").

Really, I still can't think of a single book that was great for overcoming my own "math illiteracy," it was mostly just a haphazard process of trying enough different things that eventually various parts started falling into place etc.

But I guess part of what's going on is that what works for one person is gonna be awful for another. So I just want to say, maybe "How to Prove It" will be great for you (other readers)—but don't feel bad if it isn't.

Re: Teach Yourself Computer Science

#54

Earlier quoted context omitted.

> Figuring them is easy from experience but the math behind that is way harder; anything beyond simple equations is like alien language to me ... It took me a long (and often frustrating) time to figure out that the perception of difficulty is largely because of how implicit most everything is in mathematics. It's not like programming where eventually there is a compiler with a definite structure that's going to make…

> We aren't taught about what it is our (sic) how it works My biggest frustration learning math when I was younger was not knowing -why- I was doing something a certain way or how it worked. It was incredibly discouraging because it didn’t just “click” like it seemed to with my peers.

There is a certain danger in trying to learn maths with this mindset though. A lot of topics seem intuitively easy, but the proofs only come somewhere near the end of a degree level course.

It's a very healthy mindset to have, but it's a blessing and a curse. Some people are just very good at just abstracting away the details and getting on with things; what seems like "clicking" is not always the same as intuition. Probably it's good to operate in both modes. It's a really really useful skill to know when you need to care about the internals and when you can safely ignore them.

Re: Teach Yourself Computer Science

#56
post #54

Earlier quoted context omitted.

> We aren't taught about what it is our (sic) how it works My biggest frustration learning math when I was younger was not knowing -why- I was doing something a certain way or how it worked. It was incredibly discouraging because it didn’t just “click” like it seemed to with my peers.

There is a certain danger in trying to learn maths with this mindset though. A lot of topics seem intuitively easy, but the proofs only come somewhere near the end of a degree level course. It's a very healthy mindset to have, but it's a blessing and a curse. Some people are just very good at just abstracting away the details and getting on with things; what seems like "clicking" is not always the same as intuition.…

I’ve definitely learned that now after 10 years of development experience. But as a curious kid who didn’t just want to memorize and regurgitate it was quite a challenge. I’ve debated restarting mathematics all the way from basic algebra and geometry to see if I’d do any better these days.

Re: Teach Yourself Computer Science

#57
post #6

I have many degrees in computer science, and have used almost none of the knowledge in programming jobs. So, the content is fairly useless, practically speaking. I've also found the more I focus on theoretical elements while at work, the more useless I become. The actually useful elements are big picture, and can probably be taught in one or two classes. Much more useful than technical knowledge are the abilities to…

As a self-taught developer, I used to think that some of the theoretical elements were overhyped. I can build iOS apps that work, and I did just that for the last 2-3 years. However, many of the programs that I wrote have not been as easy to maintain as I would like and some difficult to fix bugs have popped up overtime, both of which are due to a lack of deeper understanding of CS fundamentals. Last year I started interviewing and was ridiculed at one company in particular for a lack of CS knowledge. Afterwords I started exploring a lot of the CS concepts listed in this link and I have since found numerous ways to improve my code quality and have a better understanding of how CS best practices came to be. I also used to think that algorithms and data structures were relatively useless for an iOS developer, and I was able to do the job without them, thus proving my point. However, after gaining a better understanding, it quickly becomes clear that things like view hierarchies are simply trees and understanding ways to traverse these hierarchies can lead to much cleaner code. With the open sourcing of Swift, I also became more interested in understanding the language, but a lot of the language design decisions didn't make sense to me until I gained a better understanding of CS fundamentals. I have found the programming languages course on Coursera [1] to be particularly useful, and have also greatly enjoyed the book Designing Data Intensive Applications [2]. There's also a great video from this year's WWDC that really inspires algorithm study and use in everyday applications [3].

[1] https://www.coursera.org/learn/programming-languages

[2] https://www.amazon.com/Designing-Data-Intensive-Applications...

[3] https://developer.apple.com/videos/play/wwdc2018/223/

Re: Teach Yourself Computer Science

#58

I don’t really like the recommendation for SICP. The book expects a certain level of mathematical maturity from the reader and I think this level is significantly greater than the level that might be expected from the targets of this website. Mathematical maturity in this case can be broken into two parts: 1. Understanding what a proof is, what is required to prove some proposition, how to figure out and write a proo…

Do you think How to Design Programs (TtDP) is a good alternative to SICP? It seems gentler, but if one were to go the HtDP route, what would come after? SICP or something else?

http://www.htdp.org/

Re: Teach Yourself Computer Science

#59
post #6

I have many degrees in computer science, and have used almost none of the knowledge in programming jobs. So, the content is fairly useless, practically speaking. I've also found the more I focus on theoretical elements while at work, the more useless I become. The actually useful elements are big picture, and can probably be taught in one or two classes. Much more useful than technical knowledge are the abilities to…

> I have many degrees in computer science If you have many I'm going to assume that's at least three. Surely that's a PhD then? Otherwise you've been standing still doing multiple bachelors or masters degrees, which wouldn't make any sense. If you've done a PhD and then go into a field which didn't need that research, then that's unusual. Why did you bother with the PhD?

I have a BS, MS and PhD in CS and Comp. Eng. I needed a job. Turns out my PhD wasn't such a hot commodity, at least in the DC area. For a GS type job, it can translate to automatic pay grade, and a contracting company may want a PhD on paper for their bids. Coding interviews might be a bit easier.

But, the actual dev ops work I do, while I use a bit of distributed systems theory to understand things, is mostly orthogonal to my education. The theory I do use I can easily explain to non CS background employees in about 10-20 minutes. The practical knowledge I use (Linux, coding, s/w eng.) I picked up in my own time and one or two classes.

Why did I get the PhD? Primarily for pie in the sky reasons. The knowledge and research. Not in order to get a job or teach in academia.

Re: Teach Yourself Computer Science

#60
post #16

Earlier quoted context omitted.

Anyone else concur with yters experience ?

I don’t concur. Received a comp-sci degree in 2008 from a small liberal arts college. I was one of five grads in my year, and most of the last two years were not spent learning “practical” tech, but rather theories, algorithms, etc. My liberal arts educating taught me how to write, how to discuss solutions, explore tough concepts, break problems down into smaller subtasks, and more. Skills are important. But theory m…

I agree there is value to the theory. But, the valuable parts are fairly easy to explain, when not convoluted through academese, and many classes can probably be consolidated into one or two. Plus, most of the useful theory is encapsulated by someone else's well designed library. So, it is helpful to know, but the hard implementation part is unnecessary.

I am not so much arguing against CS theory, but CS education.

Post reply on HN