There are so many presumptions in your comment (and your comment below) that I don't know where to start, but I find it very amusing :)
My original comment was based on the reading of the title of this thread and the first few sentences in the referenced article both of which mention the word learn. I would call all five mentioned books a poor choice to learn CS/programming from. The book by Sedgewick is an especially bad one (he has a few in this line of mixing algorithms with a programming language, and I despise all of them, and would never recommend to anyone for learning anything).
Now your comment is typically something I wouldn't respond to, but in a public forum it's different, so I am taking time to write this.
Calm down, control your emotions, and don't divine too much into the motives behind what people write when you don't take time to even read what is written.
Her recommendations are poor. You dont read books on software development methodologies when "learning to program". Nor would you learn type theory. That's like suggesting to someone who wants to learn to sail, the intricacies of weaving cloth fibers into a sail.
There's a huge tower of abstractions to deal with in learning any new discipline, and it's important to enter at an appropriate level, ie, one that engages the learner to continue because the relationship to the end goal is clear (to the learner).
I would suggest CLRS to someone mathematically mature for the best introduction to algorithms. I don't have a book suggestion for learning to program in some language, but I do consider this a far less difficult and important obstacle compared to learning to think algorithmically.
When the interest is piqued people will naturally dig deeper and eventually find out for themselves, other aspects in the tower, be it silicon doping or reinforcement learning.
> You dont read books on software development methodologies when "learning to program".
In the article she already states that anyone can learn to program -- by programming. The title of the article is "The best books on Computer Science and Programming", not "The best books to learn to Program".
Interviewer: And then, after this introductory book
on programming, if a reader finds they really are
interested and want to learn programming, this would
be a good point to choose a language. Is that right?
Ana Bell: Yes, the first book tells you
about the hardware. Then if you want to learn how to
program, you’ll need to learn a programming language.
To do this, you don’t have to use a book, there are
many tutorials online.
Honestly I think you missed the fact that the books are about going further.
Petzold's Code teaches you to look at what your instructions are doing on the machine. It teaches you a little about architecture -- and probably all most people will need to know about computer architecture, and let's face it -- the rest can be gleaned from the thousands of blog posts people have done about X unix feature, or measuring performance of Y, or otherwise from reading the code.
Code Complete and Clean Code teach you how to deal with other people's code, and how to structure your own code in clean ways. This is not something that most people will pick up on their own at the time when they actually need it, it seems to be something mostly learned from trial and error. Important skills for contributing to an open source projects, etc.
Types and Programming Languages teaches you more about how languages and Correctness work on a lower, general level. And Algorithms is about looking at the specific structures of the code you write, and learning to optimize them and design new ones efficiently.
As she says:
It’s not a book for beginners, but it’s a good book
if you’re interested in the theory behind programming
languages. In the first book you’ve learned about the
hardware, and in the next books you’ve learned about
good code, and then algorithms. Now you can learn about
programming languages themselves: how to write one,
and how they do what they’re supposed to do.
Honestly the only one I'd really swap out is Algorithms. I'd replace it with The Algorithm Design Manual by Skiena.
"Ana Bell, lecturer in the Electrical Engineering and Computer Science Department at the Massachusetts Institute of Technology, chooses the best books to learn computer science and programming."
Headlines, including subheads, often suck. Yes, when you read the content, her actual discussion isn't exactly what the subhead suggests. That is a good reason for criticizing the subhead you quote. It's not a good reason for criticizing her recommendations, though.
Does Code Complete and it's sibling not teach the aspects of programming involved in maintenance and cleanliness? Is that not a major aspect of programming? Just because none of the books teach you at-a-basic-level "This is a function" doesn't mean that they have nothing whatsoever to do with programming. Most of the difficulty with programming is structuring code correctly such that it is within the human grasp of complexity, while ensuring that it also does the job, and is maintainable.
Maybe? I think the intent was similar to applied mathematics compared to mathematics.
In that computer science is ultimately behind computer programming, but most people don't care about the theory and only use applied theories in day to day work.
But I'm stretching a bit as I can't read minds over the internet yet.
I used CLRS at my university, but I've since found Algorithms by Dasgupta, Papadimitriou, and Vazirani far better. It's a much smaller book for one, so more people will actually read it, and while it is mathematically rigorous, the proofs and explanations are well motivated so you actually understand how the algorithm works and how someone could have come up with it in the first place.
I agree though that her recommendations are poor. I feel that way about most of these five books recommendations. It's seems that people usually pick their books to be controversial or to show off how clever they are, rather than to actually help someone understand their field. I've read half of that type theory book for example, and it is utterly impractical for any practicing programmer. You would only find it interesting if you're interested in implementing functional programming languages, and even then it's quite theory heavy and not very practical.
I read the first two chapters of Algorithm Design by Jon Kleinberg and Éva Tardos. The prose is very clear and lucid, but it has one problem: it's incredibly long-winded. A good editor could probably lop off a good 1/4 of the book without loss of info. That would make the book spectacular.
Also, if anyone is interested, these lecture notes [0] (Algorithmic Math by Soicher & Vivaldi) below introduces algos from elementary number theory/abstract algebra.
It does say Computer Science and programming. So you might not read those books while learning to program, you (arguably) would while learning computer science.
> You dont read books on software development methodologies when "learning to program".
Most people usually don't, perhaps (though my first college class in programming had The Mythical Man-Month as a required text, which is 100% methodological and 0% coding, and this was at a major engineering school) but especially given her discussion of the role of books vs. web resources in the current context, I don't think it's inappropriate. I personally would go to HtDP, which covered computational thinking, coding, and what I view as the right amount of methodology, and not Clean Code and Code Complete, but I don't see her recommendation of these as wrong or poor. Of course, HtDP is also a freely available web resource.
> Nor would you learn type theory.
Once you relegated the basic mechanical issued to web resources, the way she discussed, I think algorithms and data structures and type theory are probably the accessible-early deep-dive topics most useful, and the places where autodidacts focusing on obvious tutorial contents are most likely to miss out.
I also think it's clear that her presentation is of five, basically progressive, key milestone works as you progress, not five things to do all as a rsbk beginner.
"On-Topic: Anything that good hackers would find interesting. That includes more than hacking and startups. If you had to reduce it to a sentence, the answer might be: anything that gratifies one's intellectual curiosity."
Sorry but neither the article nor the subject can be said to pique "intellectual curiosity".
Working hard and winning an unheard of competition? Yeah very fascinating.
Understand that anyone can rewrite their past to draw out a cock and bull story of succeeding against all odds. Want to hear mine? This is fairly banal. A narrative like this is best reserved for people who succeed in affecting something bigger than themselves or are at the very top of their profession.
I agree with GP - yet another 'culture clash' article with a marginalized group focus.
You could probably create a Markov generator to create these stories. "I don't fit in, look at my talent! Let's talk women. She'd stand out in any decade!"
Because the narrative is getting easier and easier to control on websites that aren't even mainstream. I'm looking forward to see some workable innovations in this area... Common Silicon Valley! :)
Have a goal in life. What do you want to achieve in the long term?
This is a very hard question. Most people don't think about this because they are too depleted in the short term addressing problems in the lower levels of Maslow's hierarchy. Often these are very real, hard, if somewhat mundane and unfair problems that they must solve (unfair in the sense of inheriting those problems by virtue of where they are born or what standing their parents have in society, etc.)
Once you are past the point where your basic needs and material comforts (including reasonable employment, vacations, healthcare, disposable income, etc.) are satisfied you have fought for and struggled to come to a station in life where you can redefine yourself because you are past the point of fighting the system now.
But it is an illusion to think that this station in life is "comfortable" and that the choice to redefine yourself is a literal option. And this is where I think many people end up becoming depressed (no science, just based on my empirical observations). Rather it's important to realize that you have to redefine yourself now and set yourself a higher goal.
Again, what do you want to do with your life? Think about this really hard, look at what you enjoy doing, where your natural talents lie, and which pursuit will bring you the greatest satisfaction.
Once you decide what that is for yourself, you need to relentlessly prioritize progress on that goal for the rest of your life, in the present (aka, Time is the most valuable thing on your hands). This is hard, and there are ups and downs along the way, and many opportunities to "soft quit" (like being distracted by other goals which have greater allure in the moment), but if you stay the course it is guaranteed to bring you great satisfaction, and self esteem, the great barrier between you and depression. You will realize your true potential in running up against the wall between you and your goal everyday, and the recognition that you are capable of such perseverance, and the continual progress you make in the long run will become a great source of satisfaction.
The thing about owning a business is you never hire someone unless you absolutely, positively need to. This apparently wasn't the case at BigCo. Maybe they're the ones that never owned a business.
Well, it's Snap, so that means they were pumping that sweet VC cash roll into headcount (like any similarly funded startup). Then one day they realize that doesn't deliver the desired growth, and they cut headcount. I've said it before, and I know it sucks, but startup layoffs are often the result of letting go of people that in a normal business probably shouldn't have been there.
The problem is that most people conflate social media with the predominant mode of social media use, i.e., smartphones. Many of the jedi mind tricks that the mobile apps play to keep us addicted don't really work that well on a computer.
For example, here is a TED Talk by a very smart person on "Why you should quit social media": https://www.ted.com/talks/cal_newport_why_you_should_quit_so... but listen to his arguments and you see that most of his objections are to the mode of social media use in the present day, i.e., smartphones.
In my opinion people should not quit social media, rather they should quit using smartphones and find out what their friends are up to on a weekly/monthly basis by logging in to their facebook account on a computer. This is a healthy way to use social media.
Let me not get into the obvious rebuttal "but, how do I quit smartphones! they're so useful!". Personally, I use a Nokia 105 and I am very happy.
The pressure to succeed is immense everywhere, this is hardly a notable feature of Indian society. Others have mentioned this already on this thread but let me paraphrase, basically no one is satisfied with some objective notion of success (like a high standard of living), rather success means to do better than those around you. So if you have three cars parked in your garage in the USA and are living an impossibly comfortable life, materially, by all measures, it is nevertheless almost surely the case that you feel the "pressure to succeed".
Are you suggesting the pressure to succeed in the UK, where there exists a fairly comprehensive safety net in the form of welfare handouts, is the same as the pressure to succeed in India, where your government leaves you pretty much to fend for yourself? If that's what you're suggesting, I disagree.
Although I disagree as well (Indian youth has a much larger absolute, existential pressure to succeed than the UK youth has), however, mentally people tend to move to their frame of reference. People in most of the EU, if they fail in college they won’t die but many do feel immense and comparable pressure. You can tell them people in India are far worse off so count your blessings, like telling ‘Eat your sprouts, children in Africa are dying’, but that cannot really sway a young, stressed mindset. Anecdotal but a family member committed suicide because of this very pressure in an EU country with all the safety nets; he could not do as well as his friends in uni and the pressure got to him.
The answer is a bit nuanced and I am suggesting that it is the case, perhaps about the same instead of being exactly the same. You can argue that the apparent cost of not studying hard in is wildly different in these two countries (basic welfare support vs complete lack thereof). Yes, I agree that when you look at providing for basic material comforts in dire circumstances it obvious which country a person ought to choose, when presented with this hypothetical choice.
But that simply fails to capture the stresses of everyday life. The average person on welfare checks can hardly be assumed to happy and is probably facing intense, if subtle, negative societal feedback for the choices he is forced to make. Do you think this person is happy to eat at McDonalds and wear cheap clothes when everyone around him is upgrading their smartphones. That's why I say that providing for basic material comforts hardly does much to improve the mental well-being. The pressure to succeed is present everywhere, and failing to do so is stressful in all such circumstances, and I would imagine that it would be roughly the same.
Again this is an article on suicides and it is the most extreme form of pressure that anyone can face. The extent to which we can compare the stress on people that aren't doing well (by societal norms) is hard to pin down exactly, and I don't want to make any bold claims there that the stresses must be exactly the same. But I do see that there is a basic similarity here.
> Are you suggesting the pressure to succeed in the UK, where there exists a fairly comprehensive safety net in the form of welfare handouts, is the same as the pressure to succeed in India
I think pressure and poverty are not as highly coupled as you suggest.
Many of the students in this article who are committing suicide come from well off families.
On the other hand the majority of Indians are not facing such high levels of pressure despite facing far higher levels of poverty.
Yes. People aren’t motivated by economic statistics.
Everyone wants to do well relative to their peers. Talk to suburban high school seniors and they’ll rank themselves from the Ivy League to the people who settled for Duke, down to the future townies getting a job or girls who got knocked up.
From my observation, kids with certain strong cultural affiliations have the added pressure of family. It’s tough to be an American born Chinese kid whose extended family assumes you are a lazy loaf who has it easy — they are under intense pressure to succeed.
Without a doubt all the years of exam preparation in the teenage years come at a steep cost. For a young person in their teens to not have the time to reflect, be self-aware, and explore what life has to offer, is necessarily a failure of the system as a whole. But that is the reality in India, and if students must trade all that for studying hard then it simply reflects their (I would argue correct) perspective on the potential rewards of a solid career and securing your future from the certain chaos that awaits the uneducated or even poorly performing students in India.
In that sense I would say it is unfair to claim that Indian students graduating from an IIT can't do this or that; it is actually an achievement in and of itself that they managed to get there and out without turning out to be entirely dysfunctional. While I would not argue that competition in India (in the context of these national examinations) is much higher than the competition in the West in various spheres (sports, sciences, tech, etc.), the reality is that the breadth of options to a good place in life is extremely limited, and the competition is rather concentrated to a few possibilities. You cannot opt to become a YouTuber, pro basketball player or a digital nomad if you're born Indian. There is essentially a bunch of careers in science, engineering and medicine, and a few top institutions for each of these ends, whose pedigree can get you very far, and failing that, there is much uncertainty to be faced. And most Indian students, while unable to articulate this, clearly feel these pressures and act accordingly.
I think you make a good point. The only issue, an important one at that, which I have is the last statement: "And most Indian students, while unable to articulate this, clearly feel these pressures and act accordingly."
Students are younger and much more curious about the world and about what to make of their lives. I would argue its the parents that feel these pressures and transfer that onto their kids. And I don't believe it is simply to give them a good livelihood: both rich and poor parents want their kids to get into these elite institutions. And that is a huge problem.
I grew up in India. While I lucked out that I was naturally inclined to find science and math interesting, a lot of the people I went to college with found it absolutely boring and even torturous to go through their coursework, which was deeply saddening for me personally. I would ask them why they did it if they wanted to do other things? Usually the answer would be because their parents wanted them to be an engineer.
No one in any country can really opt to be a YouTuber or pro basketball player. I mean a few people manage to do it through a combination of talent, luck, and hard work but they're so few as to be statistically insignificant from a career planning standpoint. On average US and Indian high school students have approximately the same chance of becoming an NBA player: ≈0%.
For a young person in their teens to not have the time to reflect, be self-aware, and explore what life has to offer, is necessarily a failure of the system as a whole. But that is the reality in India, and if students must trade all that for studying hard then it simply reflects their (I would argue correct) perspective on the potential rewards of a solid career and securing your future from the certain chaos that awaits the uneducated or even poorly performing students in India.
The degree to which your sentences contradict each other seems remarkable to me. Surely, the student who relentlessly prepare for these exams also don't have time to reflect on whether or not their activity is worth it and so X being "simply their perspective" seems meaningless. Similarly, it would seem to be a failing of the system that there is no other path to success here.
You claimed a contradiction but didn't present it. And you go on to assert exactly the things that I said. I am saying that the system failed the students by forcing them to prepare relentlessly for these exams, which the students come to realize is really the only path to success, robbing them of some of the aspects of a normal childhood.
If the system / economy were capable of providing a more varied set of jobs like acting opportunities, regular gigs for bands, apprenticeships in various blue collar jobs, etc. then people will be able to choose professions that better match their interests and skill sets. Why force someone who likes to work with wood into a degree in engineering or science. This is largely what is happening in India.
I am not saying that there are no actors or bands or bike mechanics in India. Rather, it is assumed that everyone needs a degree from college and even if this is an entirely ridiculous proposition for many people (based on their interests) and they endure four years in college doing something they don't enjoy in some of the formative years of their life.
So the people who might have benefited from an apprenticeship or taking a year or two off from this career sprint suffer the most, and the final allocation of people to jobs is dismal (the fact that hundreds of thousands of Indians work at call centers is a symptom). The system fails by not providing such kinds of alternate opportunities at the scale that is necessary for a country so huge.
Finally, all middle income Indian parents will continue to pick some career in a STEM discipline for their kids very early on, preventing any investment of time in discovering their interests, keeping this carousel spinning.
This is a pretty inane article for placing too much emphasis on a stupid gimmick like anti-suicide ceiling fans, when the underlying issue is a serious mental health issue of extraordinarily stressed students.
I'm Indian and I remember the summer of my 12th grade exams back in 2007 just like yesterday because of some latent awareness that something very important is happening here. I sat in so many exams that summer. First was the CBSE boards aka AISSCE (which was the all-important failsafe), then AIEEE (for admission to the NITs), then BITSAT (for admission to BITS), and finally the IITJEE (for admission to the IITs). All these exams are fairly long, and you compete at the national level.
Already back then the competition was fierce with kids enrolling in tuition centers half a decade even before their first attempt at any of these exams (it was quite common for people to try a few times). I could write a very long essay about the depth of preparation that goes into attempting these exams. It is quite natural that the competitive pressures has worsened over the years with students attempting to out-prepare one another by even bigger margins.
In a country so huge, of course not all students attempt this route, but landing a seat in the small list of prestigious institutions is the only ticket to a good career in India for the most part. This is not unlike American students who take AP level courses, demonstrate exceptional talent in sports or music, or volunteer their time in different ways to stand out in the application process at one of the big name schools. So in that sense, this is describing a very relatable struggle among students across nations, though the means are substantially different.
the underlying issue is a serious mental health issue of extraordinarily stressed students
The underlying issue is that billions of people around the world are being squeezed through an ever shrinking funnel in a desperate attempt to escape poverty. The pressure continues to build, year over year. Looking at it as a "mental health" problem is only one less level removed from the source than looking at it as a "ceiling fan" problem.
The people referenced in the article, who attend several years specialized coaching preparing for these exams, paying large sums of money in the process, are hardly doing so in "a desperate attempt to escape poverty."
They are simply trying to prepare better than the competition.
Also you seem to get wrong some basic facts about how well the global economy is providing for and improving the state of people around the world. There are no billions that are attempting to escape poverty in the light of some shrinking funnel.
Yep. It matters less apparently if millions of people wander around feeling suicidal as long as they don't actually commit suicide. For what? So we can pick candidates for the professions more efficiently.
I did my grade 10 in 2009 and grade 12 in 2011, giving CBSE board exams as well. Holy hell, i remember those two years as pure torture. My day looked something like this,
Go to school at 6:30 ( didn't give much attention in classes), come home at 2:30, go to tuition from 4 to 9, come home, have dinner and then be forced to "study". Looking back, i still don't know how i survived that.
Contrast that to my undergrad in Canada where it was fun to study and do assignments.
- Ridiculously redundant number of tests : AIEEE, BITSAT, IITJEE, AIIMS MBBS, JIPMER MBBS, EAMCET/KCET/KEAM/TNEA (state level entrance tests in south india).
- Lack of common syllabus, common books : When every student's ultimate goal is to become a good engineer or a doctor , why so much disparity in the syllabus being taught in various high schools.
Hahaha, 2007 here too! I also felt really uneasy in December 2006 about where I was, so I wrote entrance examinations to a bunch of third rate colleges as well (VIT, Amrita, Manipal, etc)
> This is a pretty inane article for placing too much emphasis on a stupid gimmick like anti-suicide ceiling fans, when the underlying issue is a serious mental health issue of extraordinarily stressed students.
That's what happens when a nation of over a billion people has only a few hundred thousand spots on a top. It is insane competition. Wired is writing about it because this level of competition is absolutely foreign to the last few generations of westerners.
It is a norm for India, China or Russia. And these are the people who will be competing with us in 10-20 years.
India is seeing very rapid per capita GDP growth. So, while the number of top economic spots is limited the range of 'acceptable' is expanding fairly quickly.
However, exams like this are still stressful in Japan where high standards of living are far more accessible. Which suggests it's more about importance and being zero sum that's the core issue.
Eloquently formulated case against the blind acceptance of digital devices into our lives, and outsourcing ever more of what makes us human to algorithms. While we have always been talking of splintering of our attention, and the constant background anxiety resulting from frequent social media use, this article furthers the concerns in the direction of complex hard-to-understand algorithms mediating human communications using the signals harvested from sensors on smartphones.
I don't know when the time will come when we just say enough. No more wondrous technological conveniences that purport to make our lives simpler and easier with little thought or understanding of the great opportunity costs borne by the users. One terrific example is the plainly obvious alienating effect of this 21st century world of instant messaging from every corner of the globe, only to find the crushing effect it has on actual phone conversations even between close friends. The author nails this collective, global loss of empathy here with this example. Did any of the brilliant "technologists" envision this would happen? No. "Connect the world! Saturate it in social media. Good things ought to happen. Right?"
My fear is that that the widespread use of these attention hoarding devices and platforms is so oppressive that the thoughtfulness and awarness it takes to even formulate such questions will never come for the greater public. And so in this quasi-zombie state of tech consumption, harmful and poorly understood inventions will continue to reign supreme.
Dystopia? No, just look around you. The grip of tech companies (I work for one) is huge and I don't like the endless (and I hope involuntary) dehumanizing aspects of some of these technologies.
I cant be the only one who wants a world where people reach for their phones to talk to friends, or educate themselves about the world by reading books, instead of whatever poorly conceived alternatives we have today.
My original comment was based on the reading of the title of this thread and the first few sentences in the referenced article both of which mention the word learn. I would call all five mentioned books a poor choice to learn CS/programming from. The book by Sedgewick is an especially bad one (he has a few in this line of mixing algorithms with a programming language, and I despise all of them, and would never recommend to anyone for learning anything).
Now your comment is typically something I wouldn't respond to, but in a public forum it's different, so I am taking time to write this.
Calm down, control your emotions, and don't divine too much into the motives behind what people write when you don't take time to even read what is written.