Reddit reviews Programming Challenges: The Programming Contest Training Manual (Texts in Computer Science)
We found 9 Reddit comments about Programming Challenges: The Programming Contest Training Manual (Texts in Computer Science). Here are the top ones, ranked by their Reddit score.
The best way I know how is by solving problems yourself and looking at good solutions of others.
You could consider going back to "fundamentals".
Most programming courses, IMO, don't have nearly as many exercises I think they should have. Some books are particularly good on their exercises list, for example K&R2, SICP, and TC++PL. Deitel's has long exercises lists, but I don't think they're particularly challenging.
There are some algorithms/DS books which focus on the sort of problem solving which is about finding solutions to problems in context (not always a "realistic" one). Like the "Programming Challenges" book. In a book like that, a problem won't be presented in a simple abstract form, like "write an algorithm to sort numbers". It'll be inside some context, like a word problem. And to solve that "word problem", you'll have to find out which traditional CS problems you could solve/combine to get the solution. Sometimes, you'll just have to roll something on your own. Like a new algorithm for the problem at hand. In general, this helps you work out your reduction skills, for once. It also helps you spotting applications to those classical CS problems, like graph traversal, finding shortest plath, and so forth.
Most algorithms/DS books though will present problems in a pretty abstract context. Like Cormen's.
I think, however, people don't give enough credit to the potential of doing the exercises on the books I've mentioned in the beginning.
Some books I think are worth reading which also have good exercises:
I imagine the other Stroustrupp programming book also has good exercises, but I've never read it. Brian Kernighan is not only the author of K&R2, but of many other books. You could look at his stuff.
Depending on what you mean by good code, though, you could look at other books.
There are also the math books. I'd not discard those. And also, there are other programming books as well. Some I've never read, but want to, like Programming Pearls:
Not only those, but, anyway... The point is that you can look at those books to find examples of good code, good exercises, challenges and so forth.
Here are some books I've mentioned previously:
By the way, there are websites with programming challenges for you to look at too. Like https://projecteuler.net/ and others. Just start looking this up and you'll find plenty. They all tend to start dumb easy and move up the difficulty to pretty damn difficult stuff from what I've heard.
Edit: SICP is available for free (http://mitpress.mit.edu/sicp/) together with videos from the course taught at MIT in 85 (http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/).
In competitive programming you don't care about the long term implications of your current choices (ie, software engineering, maitenance, refactoring, documentation, etc).
Anyway, Competitive Programming is great and fun! You should definitively do that sometimes. SPOJ is a nice place to start. Some books worth reading are Intro to Algorithms, Competitive Programming, and Programming Challenges.
Practice really. Do you have a programming team club at your school, if you are going to a college? They'll have long practice sessions with problems to do in groups. If you're a math major, you'll probably be a pretty big asset to the team even if you only know basic programming. When I was in the programming team club years ago, we had like two math majors who would just like read problem and think of a solution/algorithm fast because they're good at it and see these types of problems a lot.
Otherwise you could just hop over the /r/dailyprogrammer, Excercism, Project Euler, Hacker Rank, some books like this if you are really dying for more problems, etc. That book I believe is made by some of the people involved in ACM or has an emphasis on their competition...I think but not 100%. Those are probably the type of problems you'll see in the compeititon. Nothing like "implement mergesort" or "implement Dijkstra's algorithm" it'll be some like "Johnny has 40 crates of apples he needs to get into a van..." blah blah blah.
If you haven't taken a class on Data Structures and/or Algorithms, can check out this course sequence on Coursera, Google around for different resources if you get confused, use a textbook (Sedgewick or Cormen are the two people swear by, I was taught with a different book personally) if you wish to. Though you can do these without those classes if you are going to take the classes but haven't already, but if you really want to.
There are some good books to help you in your quest, they discusses all programming techniques needed in competitions: greedy algorithms, dynamic programming, data structures... A lot of overlap
between them :
Competitive Programming 2 : Great book, a lot of
information packed
Art of Programming Contest : FREE book available from ACM site
Programming Challenges : From a famous
competition Professor (Skiena)
The Hitchker Guide to Programming Contests : Another FREE book,
Great Ideas
The Algorithm Design Manual : Another book from
skiena, talks about the practical applications of famous techniques and
algorithms used in competitions
Introduction to algorithms : THE book about
algorithms... In-depth explanations
Google code Jam contest analysis : Google Code Jam is a great
competition, with a lot of hard problems. And all of them have a
solution and analysis !
This is the only one I know of. But it is for competitive programming so it would mainly be helpful for problem solving skills.
http://www.amazon.com/Programming-Challenges-Contest-Training-Computer/dp/0387001638
I loved "Algorithms in C++" by Sedgewick.
Standard recommendations will also be: "Introduction to Algorithms" by Cormen et al, and "Algorithms" by Dasgupta et al.
If you want to get introduced to the world of programming contests, I hear great things about Programming Challenges: The Programming Contest Training Manual.
I always found Skiena's "Programming Challenges" rather lackluster. Never understood why it was so incredibly popular.
You might also be able to make use of some problems from Skiena's Programming Challenges. While it was used in a competitive programming course for me, there should be example problems in that book that showcase how different algorithms can be better in given situations.
Actually, you don't even need the book. The web site has problems available once you register, along with a judge.
As far as I know, there is only one such book: http://www.amazon.com/Programming-Challenges-Steven-S-Skiena/dp/0387001638
It's fairly good.