<p>If you want to learn how to set up commercial routers such as Cisco, Juniper, etc., go to their respective websites and look up their certification programs.</p>
<p>However, you can learn about programming and setting up open-source routers by looking at the source code for OpenBGPd, Bird, and Quagga. Most of the code is written in C.</p>
<p>Yea I agree with you on that. I saw the reviews on amazon and they said you need a VERY high background in math which I clearly don’t have since I am taking calc BC in my senior year in high school. Though I heard this is a nice and pretty simple book to understand.</p>
<p>I do recommend the Introduction to Algorithms book; you’re just not ready for it yet. Wait until you cover it in class. Until then, stick with learning how to program. What’s the point in learning how to use algorithms that you won’t even understand why you’ll need? That is exactly why you cover CS theory in school. There is a lot of theory to cover before you’ll understand algorithms.</p>
<p>I have to disagree. If you’ve written some data structures and algorithms, then you understand what they’re about, then you just move onto understanding the more advanced ones than the previous ones. E.g. <a href=“http://en.wikipedia.org/wiki/Queue_(data_structure)[/url]”>http://en.wikipedia.org/wiki/Queue_(data_structure)</a> should be intuitive for even a person who doesn’t understand anything about programming. A class can explore the same things, but I think how one really understands it (and other data structures and algorithms) is by going through the data structure and the related algorithms on paper first and then on the computer. The CLRS algo book has very clear pictures and clear instructions, one ought just start from the simple ones and implement them (because that way you really get how they work or how to build them in the language that you’re using, because the implementation varies slightly depending on language/paradigm). All “standard” data structures are fairly intuitive if you use a pen and a paper to “sketch” how they operate, some sorting/search/insertion/deletion algorithms are tricky.</p>
<p>And don’t forget that there’s a set of algorithms and data structures that one may need in practical work, a book such as CLRS serves mainly as a reference (“I need a data structure that handles this type of data and does it like this, I’ll see if there exists anything I could use or modify.”). It doesn’t mean that one ought to read the entire 1200 pages.</p>
<p>I’d advise against reading CLRS until you have developed sufficient mathematical maturity. Programming and college coursework will both help you prepare to get the most out of that book.</p>
<p>I’m of the opinion that before learning to make your own algorithms, you should try to learn to make do with the standard library of a well-developed language.</p>
<p>Algorithms that you need to make yourself are complicated enough to need a book such as CLRS.</p>
<p>So from all of the replies I guess I will stick to learning how to program more efficiently. So I just have a really quick question: what is a data structure amd algorithm. Like I obviously know what an algorithm is, but what types of algorithms should you know. So far I have learned about sorting: metgesort, recursive mergesort, bubble sort, selection, and insertion. I have also learned about arrays, arraylists, and event listeners. So are all of these data structures in general. Also what type of programs would you guys recommend coding like random ones that I want to code or some specific ones. I don’t really know what to do because I am not taking any CS class as of now, but just helping my friends to keep java fresh in my mind. </p>
<p>I will probably just order that one book from the library to see if I understand and buy it if I find it useful because I dont want to waste 40 dollars for no reason :).</p>
<p>As for programs: learn some C or C++, and do the basics in that language. Then, find a real project that someone is working on (a lab, or a job, or anything else you can think of), and help them build whatever it is they are building. Most code for real applications these days is written in C++ and Java (that’s why I recommend starting with C++ over C, even though C is still pretty popular/useful and you do want to learn it eventually). Then you’ll get to see what a real project looks like, and how you actually use code to solve it. 95% of the job involves debugging and Google.</p>
<p>@Bobby123456789, all of the algorithms you listed are commonly used. “What types of algorithms one should know”, as usual, depends upon the situation. For general purposes, knowing that an algorithm solves a more general problem is useful, IMO.</p>
<p>Just learn programming. Learning data structure or algorithms without a class is a bad idea because you won’t learn it as well by yourself. I recommend learning C then after that learn web programming with a super high level such as Ruby with the rails framework. You will learn important stuff in the process such as MVC, testing and version control</p>
<p>C is very simple and pure without any side effect in the language. For this reason, it can be a good learning tool as the first language. For example, you will be able to see the additional side effect of C++ elements more clearly when you already know C.</p>
<p>Ok Thank you so much guys I spent time reading the articles and I think I realized that I should just stick to get better at programming and then maybe when I take a class I will learn about data structures and algorithms. Thank you for everyone who replied and gave their. It really means a lot to me and guided me to stop thinking so ahead of myself.</p>