How To Study Computer Science | Learn Algorithms & Programming Languages
Computer science or computing science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. A computer scientist specializes in the theory of computation and the design of computational systems.
Its subfields can be divided into a variety of theoretical and practical disciplines. Some fields, such as computational complexity theory (which explores the fundamental properties of computational problems), are highly abstract, whilst fields such as computer graphics emphasise real-world applications. Still other fields focus on the challenges in implementing computation. For example, programming language theory considers various approaches to the description of computation, whilst the study of computer programming itself investigates various aspects of the use of programming language and complex systems. Human-computer interaction considers the challenges in making computers and computations useful, usable, and universally accessible to humans.
If you're an aspiring computer science student or someone who wants to switch fields into CS, you're in luck; there's a lot of information available on the Internet. CS is a large and rapidly-expanding field; once you've become confident in your abilities to program moderate-sized projects, a lot of topics open up to you. But what do you really need to learn about, and what don't you?
A lot of it depends on what you want to get out of your study. If you want to become a researcher, you'll most likely need to know more of the theory of computer science than if you want to become a programmer. There are, however, some basic skills that will help nearly everyone in the field.
Learn Multiple Programming Languages
No matter what you want to do in computer science, you'll likely do some of it by writing computer programs. Not all languages are created equal, but most of them have some strengths. You'll want to learn a systems language like C or C++. This will give you several advantages: first, you'll understand memory allocation; second, you'll understand more about how the system is designed; and finally, you'll be able to communicate with other programmers more easily. you can see this article for more details on the advantage of learning C .
But you want to learn a more flexible language for daily chores-for instance, a scripting language like Perl or Ruby will help you quickly create interesting programs and test ideas.
Finally, once you've mastered a language or two, expand your horizons with a functional language like Scheme, ML, or Haskell. This will improve your understanding of programming languages and broaden your horizons about the possibilities.
A key thing to remember when learning new languages is that all languages offer the same power - you can do anything in one language that you can in another -but some languages make it easier to do certain things. For instance, if you want to read data from a text file, Perl is a great language. If you want to write an AI engine, then you might be better off with Scheme.
Learn to Design
Whether you want to work as a software engineer or as an academic, you're going to have to design programs in some form or another. Learning good design principles early will make your life easier. The key thing to remember about design is that the goal is to catch the problems before you've committed to a solution that won't let you fix them. You don't have to do all of your design up front, but if you don't, then you'll want to leave more flexibility later.
Of course, some amount of design is absolutely crucial or you'll simply have no idea what should be flexible and what can be hard coded. Overly modular designs can be as deadly and difficult to maintain as extremely inflexible designs. One way of looking at the issue is that modularity is powerful because it makes it easier to replace a bad idea with a good one. But if you know what the good idea is going to be anyway, then modularity doesn't help you, and because it takes more effort, it can hurt you.
শিক্ষা সংক্রান্ত খবরাখবর নিয়মিত পেতে রেজিস্ট্রেশন করুন অথবা Log In করুন।
A good way to learn design is to practice on well-known systems projects, like writing an interpreter or web server. These kind of projects have the advantage of having well-known implementions that you can look at once you realize that there are problems with your original design. Whatever you do design, you definitely want to implement at least parts of your designs or you'll never really come to understand the drawbacks in your ideas. It's running into these drawbacks that will teach you the most.
Learn Basic Algorithms and Data Structures
There are a variety of important algorithms and data structures that are the lingua franca of computer science. Everyone needs to know what a <="" a=""> or binary tree is because they get used all the time. Perhaps just as important are fundamental algorithms like binary search, graph searching algorithms, sorting algorithms, and tree-based searches such as minimax. These algorithms and their variants show up a lot, and people will generally expect that any computer scientist will understand how they work.
Here is a list what you should do or learn:
1. Programming paradigms - imperative, object-oriented and functional programming. Try to learn a language for every category. Example: C (procedural), Java (object-oriented) and Haskell (functional). If you know every style, you will program much better, especially when you use multi-paradigm languages, like Python, C++ or Scala. Addons are Assembler, Prolog and Forth.
2. Algorithms and data structures - Complexity theory, optimizations, searching, sorting, cryptography, AI, graphics. Dig deep to the hardware level and learn about instruction sets, caches and architectures. Compilers and operating systems are the high end topics here.
3. Abstract background knowledge - quite theoretical. Lots of math, formal verification aka model checking, Turing machines, lambda calculus and type theory.
4. The human side - project management, design patterns, UI design, psychology. You will have to deal with people, who think very different than you. Managers, customers and co-wokers may not be "into computers" like you are.
5. Practice - with the Open Source movement, you have a wealth of projects, who would like to get a hand or two. You'll learn to deal with people and foreign source code. You'll also gain familiarity with some tools like version control, IDEs and wikis.
Learn Basic Theory
There are a couple of things you should definitely be aware of: you should understand how to represent numbers in different bases and how to manipulate boolean expressions using boolean logic. Both of these tools will come in handy in a variety of circumstances, especially when reading other people's code or trying to clarify your own. (Boolean logic is especially useful for formulating clear conditional statements.)
Even more important, you should have a good sense of the limits of current computers. In particular, it really helps to understand the ideas in algorithmic efficiency and Big-O notation. Knowing these topics makes it clearer why certain programs and algorithms will take a very long time to run, and how to spot them. It also makes it significantly easier to optimize your program when you know which algorithms to choose.
Finally, it's useful to have a sense of the absolute limits of what computers can do; it turns out that there are just some things that are not possible for a computer to do. Sometimes it can be tempting to try to write a program that does just that!
Submit Your Comments:
- 'টেলিভিশন অনুষ্ঠান ও সংবাদ প্রযোজনা'য় প্রশিক্ষণ দেবে বাংলাদেশ চলচ্চিত্র ও টেলিভিশন ইনস্টিটিউট
- বিআইএমের এপ্রিল-২০১৯ সেশনে প্রশিক্ষণ কর্মসূচীতে ভর্তি
- ৩৭তম বিসিএসে সাময়িকভাবে নির্বাচিতদের স্বাস্থ্য পরীক্ষা ৩১ মার্চ
- বাংলাদেশ রেলওয়েতে চাকরির সুযোগ
- ঢাবিতে তথ্য বিজ্ঞান ও গ্রন্থাগার ব্যবস্থাপনা বিভাগে ৩৩তম ব্যাচে ভর্তির আবেদন গ্রহণ শুরু
- বিআইএফটি'র তৃতীয় সমাবর্তন ২০ এপ্রিল
- আইইউবিএটি'র ৫ম সমাবর্তন ২১ মার্চ
- ৯ম জাতীয় পদার্থ বিজ্ঞান অলিম্পিয়াড-২০১৯ শুরু ১৫ মার্চ
- অনার্স ২য় বর্ষ (বিশেষ) পরীক্ষার সময়সূচী প্রকাশ; মাস্টার্স ২য় পর্যায়ে ভর্তির আবেদনের সময় বৃদ্ধি
- হাঙ্গেরি সরকার প্রদত্ত বৃত্তির জন্য মনোনীতদের তালিকা প্রকাশ
- বিইউএফটি'র প্রথম সমাবর্তন ১৮ জুন
- উন্নত প্রশিক্ষণের মাধ্যমে দক্ষতা বৃদ্ধির লক্ষ্যে বিএসিআইয়ের বিনামূল্যে প্রশিক্ষণ
- ১৬০ জন নারীকে বিনা খরচে প্রশিক্ষণ দেবে ফজিলাতুন্নেসা মুজিব প্রশিক্ষণ একাডেমী
- নির্মাণ শিল্পে দক্ষতা তৈরিতে বিএসিআই'র প্রশিক্ষণ
- BIM offering six month diploma course at Dhaka campus