From school... huh?
Being a good coder from school itself will pay-off in tons!!..Just look at this prodigy
and this legend (R.I.P.) who revolutionized the Internet and is still remembered widely for his tremendous personality, accomplishments, and idealism.
Programming should be started as early as possible. If I were to go back in time when I was your age and ask myself to start programming, this is perhaps the roadmap I would provide myself. This program is divided into Phases which need to be completed one after the other. I'm assuming no programming knowledge from your side at the beginning.
------------------------- -----YOUR TRAINING GUIDE-------------------- ----------
PHASE 1 :: LIGHT, INTERESTING AND EASY
PART A- MyCodeSchool DS video lectures
-->For Practical Knowledge and Intuitive Understanding of basic topics
-->The videos are highly worked upon in terms of technological input and user-experience.
-->The narrator Animesh Nayan has done a great job explaining things by taking real-life examples and pointing out common mistakes that beginners do
-->One of the co-founders of this startup was once the top rated coder of India (humblefool ). So you can stay assured of top quality.
PART B - HackerRank DS Domain Problems
=>Complement PART A by solving some DS-related coding exercises here Data Structure Sub-Domain of HackerRank
=>Many of them are also designed by the same folks at MyCodeSchooland are meant to be followed simultaneously with the video lectures
PHASE 1.5::OPTIONAL
=>Data Structures and Algorithms Made Easy by Narasimha Karumanchi Great Thing about this book is that it is fun to do.
=>Allows you to leave the rigorous blood-sucking soul-crushing mathematics for later.
=>This will be a great test of your understanding of PHASE 1
PHASE 2:: GO IN DEPTH
NPTEL IIT-D Video Lectures
--> I think these lectures are more exhaustive and comprehensible than MIT OCW
=>Skip the 1st 3 videos in the series (you have already covered everything taught in them during phase 1)
=>By completing Phase 2, you have already covered all the basics topics of DS with theory and have got good amount of practical coding experience
PHASE 2.5:: OPTIONAL Ravindrababu Ravula
-->Checkout his lectures for GATE oriented learning. They are a good supplement
PHASE 3:: RIGOROUS THEORY AND CONSISTENT CODING
PART A::InterviewBit
=>A ★★★★★ star rated interview preparation program
=>Addictive, fun and yet promising.Might as well be the future of learning programming.
=>InterviewBit uses the concept of Gamification to foster learning.
=>The platform is interlinked with Facebook, so you can actually see your friends' performance and it instils a sense of competitiveness. You can even follow a person who is not connected through Facebook as well.
=> Best part about IB is the whole streak and level concept. You need to attain certain number of points everyday to maintain a streak, otherwise it gets halved. And you can proceed to the next level only if you have completed the bare essentials of that level.
PART B::
=>Best Website for all kinds of practice problems in DS with good explanation and clean + complete code.
=>Supplement with GeeksQuiz for further practise =>Can be used for reference
(II)Topcoder
Online computer programming competitions in the Java, C++, and C# languages. Competitions take place twice a week, and members can win from $25-$300.
Types of competitions
- Algorithms (competition length about two hours): Competitors are given a set (usually three) of algorithmic problems and have 75 minutes to correctly solve as many as they can.
- Software Design (competition length one week): Competitors are given a set of user requirements and attempt to convert them into a usable software design specification. Their efforts are judged on a variety of "real-world" criteria on how correct and practical their design is.
- Development (competition length one week): Competitors are given a set of design specification and attempt to write software components that match this specification. These components are judged on their functionality and coding style.
- Marathon Matches (competition length one or two weeks): Contestants are given a particularly difficult algorithmic problem. The scoring is done by computer based on criteria specifically suited to the problem.
- Studio (graphic design): Contestants are asked to show off their creative skills in a competitive environment.
- Architecture Assembly TopCoder has created Assembly Competitions as an extension of Component Design and Development Competitions. Through these competitions, competitors create high quality applications using completed components and TopCoder's established competitive method.
- Testing
- Bug Races Project teams, clients and members are able to log bugs they find in software developed and supported by TopCoder. TopCoder will communicate these bugs to the member community. Bugs that are open to the community will be posted on the Active Bug Races page.
(III)Codeforces
Codeforces provides the following main services to all users:
- participation in the short (2-hours) contests, so-called "Codeforces Rounds", held about once a week;
- participation in educational contests (1.5-2.5 hours), held 2-4 times per month
- challenge/hack other contestants solutions;
- ability to solve problems from previous contests for training purposes;
- "polygon" for creating and testing problems;
- kind of social-networking by using of internal public blogs.
(III)OTHERS
2. SPOJ - Sphere Online Judge (SPOJ)
3. UVa - UVa Online Judge - Home
4. ProjectEuler - Project Euler
5. Programming Challenges - Programming Challenges
6. ahmed-aly - Virtual Online Contests
7. TJU - TJU ACM-ICPC Online Judge
8. PJU - UNION PANAMERICANA DE JUDO
9. USACO - USACO Training Program Gateway
10. TIMUS - Timus Online Judge
11. AIZU - Programming Challenge
12. URI - URI Online Judge - Login
13. ZOJ - ZOJ :: Home
14. NTHU - NTHU Online Judge
15. Leetcode - LeetCode
16. AI Challenge - Home | AI Challenge
17. Saratov - Saratov State University :: Online Contester
18. Google code jam - Google Code Jam
19. InterviewStreet - Programming Contests - Codesprints - Interviewstreet
20. Kaggle - making data science a sport
21. Herbert - Welcome to Herbert Online Judge
22. CoderCharts - CoderCharts - Social Meets Programming
23. PKU - Welcome To PKU JudgeOnline
24. CodingBat - CodingBat
25. Programr - Programr | Learn.Code.Share
26. HackerRank - Artificial Intelligence Challenges :: AI Programming Problems and Competitions :: HackerRank
27. Al Zimmermann - Al Zimmermann's Programming Contests
28. Light OJ- Page on lightoj.com
If things seem hard, then start from here first
PART C:: I think this much preparation is sufficient to tame theThe Devil's most enervating Beast in reasonable amount i.e. .
Chapter 1: You can choose to ignore chapter 1 or skim through it.
Chapter 2: Read only 2.1 and 2.2 .
Chapter 3: If you are beginner you might not love this chapter. So, just read 3.1. Skim through 3.2
Chapter 4: For the first timer it is OK to just read 4.1, 4.3, 4.4 and 4.5 and leave the rest.
Chapter 5: You can skip this as a first timer.
Chapter 6: Everything is very important, read all the sections.
Chapter 7: You can skip section 7.3, but make sure you read the other sections thoroughly
Chapter 8 & 9: You can leave these chapter at first.
Chapter 10: All sections of this chapter is required and must be read.
Chapter 11: You can skip the Perfect Hashing section (11.5)
Chapter 12 & 13: Please do not skip anything in these chapters.
Chapter 14: Skip this if you are first timer.
Chapter 15: You will love this chapter, The LCS section might seem complicated, but if possible try to read this twice.
Chapter 16: Read only 16.2, 16.2 and 16.3
Chapter 17: Skip this for the first time.
Chapter 18, 19, 20 & 21: Please skip all these chapters. Chapter 22: You can choose to skip the section 22.5 (Strongly connected components)
Chapter 23: Everything in this chapter is important and must be read the first time.
Chapter 24 & 25 : These are must read
Chapter 26: You can skip this, it is not very important for a start.
Chapter 27 on wards: Not for starters, once you have a good hand on chapters till here, you can always choose what to read from the remaining chapters based on your interest.
==> But if you are going for a COVER TO COVER challenge (i. e. implementing each algorithm, understanding each proof etc) , may these four gentlemen have mercy on you soul.
PART D:: Interview Preparation Books:
Cracking the Coding Interview :: THE BIBLE OF INTERVIEW PREPARATION
=>This book gives you the interview preparation you need to get the top software developer jobs.
=>Focuses on the software engineering skills using 150 programming interview questions and answers, as well as other valuable advice.
=>The Author is a former software engineer and has worked in Google, Microsoft, and Apple. She has also been on the other side of the table, hiring candidates for these top companies and hence has valuable insights on what goes on and how to prepare for it.
=>A Related website is CareerCup which is a discussion forum where you can find varieties of questions from various companies. It has a good collection of questions since it is old (founded in the year 2005)
OPTIONAL:: MAKING BETTER USE OF THE INTERNET
You can follow some well-known programmers, authors & professional software engineers for regular advice, tips ,tricks or learn from their code.
1)Competitive Programmers::(In no particular order)
- Tourist(competitive programmer) Gennady Korotkevich
- Michal Forišek (misof on Topcoder)
- Bohdan Pryshchenko (I_love_Tanya_Romanova - Codeforces)
- Michal Danilák (Mimino on Topcoder)
- Przemysław Dębiak (psyho on Topcoder)
- Neal Wu (neal_wu on Topcoder)
- Johnny Ho (codeforces.comrandom.joh
nnyh - Codeforces) - Nick Wu
- Mark Gordon (msg555 on Topcoder)
- Egor Suvorov (yeputons on Topcoder)
- Brian Bi
- Anudeep Nekkanti
- Petr Mitrichev (competitive programmer)
- ACRush(Tiancheng Lou)CodeChef User | CodeChef
- Djdolls(Ajay K. Verma)CodeChef User | CodeChef
- Lalit Kundu
- Anshuman Singh
- Triveni Mahatha
2)Professional Software Developers::
- He is the time libaries master.
- He holds the all-time high score on StackOverflow.
- He is the same for programming as Chuck Norris for fighting crime. More on this here: Jon Skeet Facts
- Authority on C#.
- >32000 StackOverflow answers
- He has immense endorsement from the community.
Mariya Mykhailova Software developer, mainly interested in algorithms and programming languages.
Jonathan is a CPU Designer at Nvidia (says his profile, at least). Brilliant with anything at the architecture level, I really learn a lot of stuff from his answers.
Anders, I think, is what you might colloquially refer to as a genius. Two things he's very knowledgeable about is Python and mathematics. That's not too surprising given his accomplishments--he's got an S.B. in math from MIT, and cofounded a startup (K-Splice) that was bought by Oracle. I wish he'd post more about systems level stuff (i.e. Linux mainly). In fact, I wish he posted more period. Update: Seeing him post more on C and C++, which are my own languages of choice. Also forgot to mention last time that he answers lots of algorithms questions and they are all brilliant. Very simple, clear explanations.
Linux hacker that works for Google, first on the Android kernel and now on web search infrastructure, wrote a damn good book on the Linux kernel as well. My only gripe about Robert is that he doesn't post more on Quora. Update: These days I see Robert posting a lot more, and I'm learning more than ever. Between Robert and Anders, I'm really getting a lot stuff on C programming and the Linux kernel and it is fantastic.
Doing a Ph.D in electronic design automation, something that I don't know too much about nor do I know too many people doing it, but it's a recognizably important topic. Knows a lot about architecture, good advice about the field and about grad school in general. His activity is great, he finds stuff I can't so it's a good deal.
I've only recently followed Cameron, but looking through his past activity, it seems very informative with respect to Java, distributed systems, and databases. Works for Oracle, so his topic areas seem fitting. EDIT: Just to add, he was a startup founder (Tangosol) and sold to Oracle. Thanks Miguel for the distinction in the comments.
As much as I can remember reading about him, he's a programmer by day, and just about everything else by night, and you can see that by his activity on Quora. I'd actually posted a comment about how he doesn't post enough on software, but it was pointed out to me that he does and I just hadn't been seeing it in the same relative volume as other people I follow since Josh is active in so many different topics. If you look up his answers in software though, they are indeed very insightful and clear. Also like to add that Joshua is a fun person to follow in general, not just for CS/software.
Ph.D student at Berkeley in the EECS (his tagline says optoelectronics, so I'm guessing EE). Knowledgeable in general areas of computers, and some more specific areas as well. Also posts on graduate school topics. Another person who I wish posted more. Also, I think, a 2012 Quora Top Writer (congrats!).
Retired computer architect, used to work at IBM. Wrote a book called In Search Of Clusters, and is very knowledgeable on everything computer architecture. I wish he posted more as well, given his experience in the field.
Ph.D student in computer engineering at UT Austin (a top CS school, if you were wondering). A good person to follow in general, and writes posts on graduate school as well as things related to his own field. A bit terse at times (my own preference is longer answers), but I'll admit that sometimes it's needed. Certainly a person you should consider following, regardless of your preference as he gives some genuinely good answers.
A first year CS/Mechatronics student at Melbourne University with interests in finance, statistics and CGI. He doesn't answer a whole lot of questions, but the main reason I follow him is because of his board calledHardcore Engineering, where he posts some fantastic stuff about software, languages, and CS in general. Just some really, really high quality stuff, make sure you check it out.
3)If you are also interested in contributing or learning from good quality open-source projects::
GITHUB LINKS::
- https://github.com/kennet
hreitz – creator of "Requests – HTTP for Humans" and many other useful Python libraries - https://github.com/jashke
nas – creator of Backbone.js, Underscore.js, CoffeeScript, and a neat doc generator called Docco - https://github.com/defnul
l – creator of Bottle.py, an awesomely light-weight Python web frameworks, plays nice with WSGI and nginx - Douglas Crockford. https://github.com/dougla
scrockford - Tony Morris. https://github.com/tonymo
rris (Functional Programming expert & teacher) - Slava Pestov. https://github.com/slavap
estov (Factor) - Graydon Hoare. https://github.com/graydo
n (Rust) - Nikodemus Siivola. https://github.com/nikode
mus (SBCL) - Max Bolingbroke. https://github.com/batter
seapower - Daniel Spiewak. https://github.com/djspie
wak - Robert Smith. https://bitbucket.org/tar
balls_a... - Scott Vokes. github.comhttps://github.
com/silentbicycle - Paul Irish (Google)https://github.co
m/paulirish - Kit Cambridge (Js/Ruby whizz kid)https://github.com/ki
tcambridge - Peter Michaux (JavaScript guru)
- https://github.com/peterm
ichaux - Harry Roberts (CSS whizz kid)https://github.com/cs
swizardry - Steven Levithan (Regex legend)https://github.com
/slevithan - Addy Osmani (Google)https://github.co
m/addyosmani - Jeremy Ashkenas (Backbone.js/CoffeeScript
/Underscore.js)https://gi thub.com/jashkenas - John-David Dalton (FuseJs/Microsoft/Js guru)https://github.com/j
dalton - Christian Johansen (BusterJS)https://github.
com/cjohansen - Brian Cavalier (When.js/CujoJs)https://g
ithub.com/briancavalier - John Hann (CurlJs/CujoJs)https://gi
thub.com/unscrigithub.com ptable - James Burke (RequireJS)https://github
.com/jrburke
Source : quora.com
No comments:
Post a Comment