Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How to keep on top of CS and maths?
23 points by ceeK on Dec 22, 2017 | hide | past | favorite | 7 comments
I work as an iOS developer at my day job, but have become concerned that my general CS skills / maths are getting worse due to the lack of day to day applications. I mostly work on UI and networking.

Are there any good books, problem sets, or fundamental habits that I could use?




Pretty much read anything Knuth if you want to practice math and CS skills. Concrete Mathematics (started as an extended version of the math in Chapter 1 of The Art of Computer Programming) is a fantastic introduction to the more interesting elements of discrete mathematics, and (for me) helped to solidify calculus concepts by seeing the same things applied to discrete functions/sequences.

And, while challenging, it can be a pleasure to work through The Art of Computer Programming slowly over a period of time. I did this for both volumes 1 and 2 back in college and just after.

For pleasure reading on math, Martin Gardner is a great source of material. Particularly the collections of his Scientific American articles (there was work to reprint some of these book collections with Knuth and others editing, but I think it stalled out after 4 or 5 of them). Spend time on the articles to really understand the proofs involved and it can, IMHO, improve your ability to think mathematically.

Otherwise, perhaps as itamarst suggests, find some problem domain which exercises both CS and math and interests you. Write code to implement the mathematical algorithms (which will aid your understanding of them), and then spend time improving the code (practicing your CS skills).

I also doodle math and CS theory problems when I'm bored. Make a state machine that recognizes, in base 2, all multiples of 3, 4, 5, etc. What pattern exists in their structure? Why does the symmetry exist in some of them? What happens when you change the base to 3, 4, ...? Try to apply the concept of generating functions to get to the closed form solution of the Fibonacci sequence. Practicing like this, even if it's problems I know by heart at this point, helps keep the fundamentals that let me solve them the first time fresher in my mind.

I also recommend reviewing the writings of E. W. Dijkstra. A lot of math, CS, and software engineering is covered in there. It's also interesting to read as you'll see a slice of history as the collected papers span about 40 years.


A lot of Dijkstra makes it into TAoCP books too, and Knuth will cite any Dijkstra papers relevant to a chapter.


That is a good point. I just enjoyed Dijkstra's writing style (clear, opinionated, and concise). He has great skill as an author. I think there's great value in reading his writing just to get exposure to his level of technical communication. Also, it'll make you want to work on your penmanship.

That's another point for Knuth, as well. There are many great thinkers, and there are many great communicators. It is wonderful to find the intersection between the two and within CS and math (more CS) the two of them are fantastic examples of that combination.


If it doesn't have day-to-day application, does it really matter?

I spent 20 years without using linear algebra. Now I'm doing a bunch of image processing algorithms and it's suddenly relevant... and it's mostly coming back. And for the new stuff I'm learning I got a book which I occasionally read at work.


I guess that applies for those who got a degree. But would be more interested on how a self taught developer would go about it.


If you want to work on problems that require mathematical and programming skills, I would suggest https://projecteuler.net.


A random suggestion from the internet:

Read Knuth's The Art of Computer Programming. Some math. All the fundamentals of computer science.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: