Introduction To Algorithms is kind of the gold standard. It's heavily detailed, well written, and I'm pretty sure they put the word "Introduction" in there as a joke(it's 1292 pages).
Creo que mucha gente se confunde ser autodidacta con hacer algun cursito de como hacer una web y darle con eso. Para llegar a cierto nivel, tenes que aprender computer science, teoria y trabajar en cosas que te permitan aplicar esa teoria. Tenes que saber ver un algoritmo y poder calcular la complejidad, tenes que entender que son las patrones de diseño y cuando conviene aplicar tal o cual.
Tenes que entender como funciona OOP, pero tambien tenes que aprender algun lenguaje funcional, te va a hacer un programador más rico.
Tenes que entender de Unit Testing, automated testing, Integration testing.
Los dos libros que más me ayudaron cuando empecé en computer science son : https://www.amazon.es/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693 y https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612
Y ir codeando mientras vas leyendo y aplicando las cosas es fundamental.
Me parece que la diferencia entre ser autodidacta es que no tenés esa vara minima que te da la facultad, asi que depende de vos que tan crack queres ser y si estas dispuesto a poner el laburo y a aprender cosas constantemente. La información esta en internet o Amazon, no hay ningún secreto.
I mean, there's books out there like this.
In my own experience, it's a matter of coding enough. You have to try to create something and do it naively. Having done something yourself gives you a reference for when you study programming in books or videoes or when talking to others that you can compare new information to, so you can realize how you could have done things better in your own project. If you don't have any reference experience, you wont learn from the information in the same way. It's part of becoming a programmer that you'll write some crap code.
Try to code some simple desktop application, like a text editor, or some other simple program. Make a list of features it should have - for a text editor, you should be able to input text, modify the input text, save the text and load a text file.
My initial thought is that the author is a bit overzealous in conflating a goal with a terminal state.
Most commonly-accepted definitions of games differentiate them from toys by the addition of a goal and a structured set of rules by which the goal is attained.
If I'm just bouncing a ball against a wall, for example, I'm just playing with a toy.
If I try to hit a particular spot on the wall from a specific distance, I've turned this into a (rudimentary) game, because I can now determine whether I succeeded or failed, and I've applied a constraint (the minimum distance so I can't just walk up and touch the wall with the ball).
The author here tries to add a terminal state as an additional requirement - by his definition, I would have to decide that I've "won" my game only if I hit the spot 7 or more out of 10 tries, or on the first try, or whatever. This feels arbitrary to me. By his criteria, World of Warcraft wouldn't be a game either. Neither would Dungeons and Dragons. I'm not convinced.
If you're looking for worthwhile reads on game design, my top recommendations would be:
​
How about this book Think like a programmer. Have a looksie.
Edit: For your problem you could use reverse planning: Start at the end with the result you want and work backwards.
Stupid question on my end perhaps but have you ever read How to Think Like A Programmer?
Think Like a Programmer: An Introduction to Creative Problem Solving https://www.amazon.com/dp/1593274246/ref=cm_sw_r_cp_apa_sjOCAbTSAJPKT
That book changed my life as a developer. It was so easy and fun to read. It was the software book that grabbed me and given that I was on the path of being a self taught developer, it was essential that I catch up to my potential peers.
Fast forward 15 years and I can see how that book jump started me. I had a 7 year stint at Amazon (ending as a Sr. Engineer), and am currently doing my own start up. Along with a data structures & algorithms book (Algorithms by Sedgewick is great), and a style guide/clean coding kind of book, anyone has a good chance of getting their foot in the door.
Skiena's Algorithm Design Manual - It gives you an overview of what classes of problems exist and how real world problems can be expressed as instances of them. It doesn't always give you the step-by-step directions of how certain algorithms work, but it gives you enough of an overview to understand the problem and points you towards existing implementations.
It's certainly one of the most useful books I used when preparing for interviews (and comes in handy in the real world as well). As an anecdote, in one interview at a big-N company, I was presented with a problem, said "based on these factors I'd treat this as a network flow problem by doing X", and that was the only buzzword needed - rather than watch me try to write a solution to a known problem, we were able to move on to other questions. Without knowing that term, I probably would have spent the remainder of the interview trying to optimize a solution to the problem instead.
leet code is a great place for practice problems
For algorithms this book is great https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/ref=sr_1_9?keywords=algorithms+book&qid=1554149281&s=gateway&sr=8-9
Also, if you are looking for a software engineering role you will also need to brush up on high level design like this video: https://www.youtube.com/watch?v=KmAyPUv9gOY
Personally, I can recommend "The Art of Game Design" to you. It covers a lot of topics and is also a good entry point.
I have been doing these challenges
And also using this book to get better at coding, in general: Here you go
Both links are C++ related and work on challenges which build on each other.
PEOPLE TREAT THIS AS A JOKE BUT I SWEAR BY THIS. listen. as someone who went through college typing and have a job that's mostly typing with documents nearby, I've found documents or books to be unparalleled in wrist support. particularly Introduction to Algorithms, 3rd Edition puts my wrists at the perfect level for my keyboard. It provides rigidity that some wood wrist supports provide but also some give so that your wrists don't feel stiff as quickly.
While it isn’t necessary a book you flat out read but more of a very useful reference.
Introduction to Algorithms, 3rd Edition (The MIT Press) by Thomas H. Cormen
Introduction to Algorithms, 3rd Edition (The MIT Press) https://www.amazon.com/dp/0262033844/ref=cm_sw_r_cp_api_glc_fabc_TkBbGbPB72YSB
It goes over just about every data structure, the pros and cons of each one, algorithm design, and analysis. Pretty much everything you need to be a software developer and to help prepare for any kind of dev interviews.
I will always and forever tell CS students here to take Algorithm Design with Alper Ungor. If you feel somewhat confident with data structures and discrete math, the class will level you up in terms of interview prep and give you an appreciation for the mathematical side of the major in general.
The class goes over a lot of the topics in the Introduction To Algorithms textbook, starting with sorting algorithms and getting into topics related to dynamic programming, graph traversal, computational geometry, P=NP, etc. Ungor seems to have relaxed with how strict he is with undergraduates, he expressed many times that he prefers teaching undergrads and wanted to make the class more appealing to a larger crowd. He also respected the class a ton and took feedback very seriously
Sounds like the book Think like a programmer might be up your alley. Haven't read it myself, but I've heard good things.
I agree with the Amazon review. Unless you need for a class, or learn an advanced topic not available in other places, I wouldn't touch this book ever. There are much easier algorithms books to read such as https://www.amazon.com/gp/product/032157351X/ This book isn't introductory at all as mentioned on Quora by multiple people https://www.quora.com/What-are-the-best-books-on-algorithms-and-data-structures
And if you've bought this for algorithms interviews preparation, it's better to buy cracking the code interview or similar which has explicit instructions for interview questions.
One more thing to add to the review was the algorithms are written in pseudocode, array indices start with 1 instead of 0, some lines refer to other pages in the book so you can never read a code inside this book sanely.
Those are solutions to problems, I believe you can find a copy online for free but I’m not sure where. It’s definitely a nice book to have in your library though so I recommend buying it. Amazon
First, have you tried applying to other than the Big N companies? No CS degree, tons of competition, almost a lottery for acceptance. You're setting yourself up to fail.
As for the other bits. Problem solving is the what seperates coders from programmers. It's not a black art or magic or anything -- it is a skill that can be learned. For the most part it comes from experience. A strong math background can help as it is the essence of problem solving.
The algorithm interview pony show -- In practice it's not really about coding them, it's about choosing which one to apply to a given problem. All they are doing is (purposely or unknowingly) applying an arbitrary filter to applicants. Anyone testing if you can knock out a selection sort from memory is really asking the wrong questions. The proper question is when should you use this algorithm or given this sort of problem what sort of algorithm should you select.
A book that might help is Sprual's Think Like a Programmer.
Another favorite is The Practice of Programming. Not so much about problem solving, but a good quick read on some of the basics of professional programming. Read the Amazon synopsis to see if it will float your boat.
Jesse Schell - The Art of Game Design.
Widely popular book about game design, and guess what, the newest (3rd) edition got released only a year ago! It touches on many different aspects of game development, starting from mentality behind games, all the way to game mechanics and even monetisation strategies. I strongly recommend!
E o chestie de noroc, peste cine dai si cat de ok sunt. Asa ca nu te lasa descurajat(a) daca una doua trei sau noua persoane ti-au zis nu.
Apoi urmeaza interviul in sine. Uita de proiecte si portofoliu ca nu esti graphical designer sau mai stiu eu ce.
Am amici care lucreaza la Google si altii care lucreaza pt Microsoft. Ce zic ei este: pune mana pe Cracking the Code Interview (https://www.crackingthecodinginterview.com/), rupe cartea aia in doua si n-ai sa ai probleme la nici un interviu de programare ever. Nu pentru ca ai sa primesti intrebari din cartea aia. Ci pentru ca daca intr-adevar studiezi materialul respectiv, orice intrebare ai primi nu ai cum sa gresesti.
Next, pentru interviul de algoritmica ai nevoie de Introduction-Algorithms de Thomas H. Cormen: https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844. Pe asta nu trebiue sa o stii din scoarta in scoarta, dar trebuie sa ai habar despre ce-i acolo.
Partea cu experienta: S-ar putea ca firma x sa ceara experienta cu tehnologia y. Spune din prima ca nu ai experienta dar ca esti mai mult decat dispus sa inveti.
Ce contaeza foarte mult la un interviu pe langa cunistintele tehnice este atitudinea si entuziasmul. Fa foarte clar ca vrei sa inveti, studiaza un pic domeniul in care activeaza firma si arata interes si entuziasm pentru domeniul respectiv. Nu zic sa te transformi intr-un actor dar conteaza mult impresia pe care o faci.
Acestea fiind zise, bafta si spune-ne cand te-ai angajat!
If your biggest goal is to achieve those prestigious jobs, I'd suggest having a solid CS foundation knowledge like algorithm, data structure, etc. Pick up a book like Algorithm and follow the course, CLRS or the algorithm design manual by Skiena. Any of these are good and you only need one to have a general idea.
After that, just pick a language that you like/excel at and start solving algorithmic problems online. At the same time, try mastering all the features of the language too.
That's a short summary of how you get those jobs before graduating and as a new grad since every single internships and job interviews at these companies, you'll always be tested on these. This process is the same for everyone.
Learning is the easy part, the next part I want to tell you is: Don't be disillusioned about what is success in your life. I'm pretty sure if your parents love you, they'd have been already proud of you regardless if you get these jobs or not. There are never an absolute way to get these jobs and none of them guarantees your entrance. It's a combination of some intelligence, hard-work and luck. Just do the best of your ability.
I read a half dozen algo books years ago when learning. Mastery came slowly for be, but it was a fun process. My favorite for beginners is this one by Lafore. My favorite overall is The Algorithm Design Manual by Skiena.
I found a lot of joy in Schell's Art of Game Design: Book of Lenses, especially the Lenses it equips you with, a fair few other books I've read use Schell as a basis for some of their thinking.
Juul's Art of Failure is also a pretty decent read, it was recommended to me by my lecturer.
I've also ordered 3 further books - "How Games Move Us," "Blood, Sweat and Pixels" and "Reality is Broken" - they're arriving soon, if you've glanced them at all could you rate them? ;p
I think it’s their own concept or how they understand and implement some existing methodology. I haven’t come across anything like that.
The book that is usually recommended for game design is the Book of Lenses. It has some similarities to the process you were describing, for example by starting with the broad idea of theme and iterating until you distill the main elements of the game.
Ah, the Bible of Algorithms. It's a good reference but never understood why many professors use it as an introductory textbook when it assumes some previous knowledge despite saying otherwise. The Algorithm Design Manual by Skiena offers better explanations along with a short intro on math notation but might still be problematic without any background. Schaum's Outline of Discrete Mathematics has a good overview of discrete math with lots of practice problems. Other than that it might be difficult finding a good book since they tend to be all over the place on what they consider 'discrete math'.
This question is not really meant for this subreddit but CLRS should be a book worth looking at. For courses, you can try Coursera's Algorithms course but note this course is taught in Java.
Comovente não é, mas um que me fez chorar sem dúvida foi Introduction to Algorithms do Thomas Cormen. Hoje em dia o choro começa quando vemos o preço.
Well, the best sellers on amazon are a place to start. These will give you a good intro.
But I would recommend also checking out Code Academy and Treehouse. My local public library has a deal with Treehouse where if you have a library card you can get a free account.