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:
- হাবিপ্রবিতে রমজান, গ্রীষ্মকালীন ও ঈদুল ফিতরের ছুটি শুরু
- ২০১৬ সালের ডিগ্রী পাস ও সার্টিফিকেট কোর্স পরীক্ষার ফল প্রকাশ
- অনার্স ২য় বর্ষ পরীক্ষার ফল প্রকাশ আজ
- ICMAB offers July -December'19 session
- জাতীয় ফল প্রদর্শনী উদযাপন উপলক্ষ্যে শিক্ষার্থীদের রচনা ও চিত্রাঙ্কণ প্রতিযোগিতা
- ২য় বর্ষ ডিগ্রি পাস ও সার্টিফিকেট কোর্স পরীক্ষার সময়সূচি প্রকাশ
- জাতীয় গণমাধ্যম ইনস্টিটিউটের অধীন পিজিডি ইন ব্রডকাস্ট জার্নালিজমে ভর্তি
- ঢাবিতে গ্রীষ্মকালীন অবকাশ ও ঈদুল ফিতরের ছুটি শুরু
- বিআইজিএমে সংক্ষিপ্ত কোর্সে ভর্তি কার্যক্রম শুরু
- শাবিপ্রবির আবাসিক হল বন্ধ ২৪ মে
- জবিতে ঈদ ও গ্রীষ্মের ছুটি শুরু রবিবার
- C.S July-December, 2019 admission notice at ICSB
- বিআইএমের ঢাকা ক্যাম্পাসে ৬ মাস মেয়াদী ডিপ্লোমা কোর্সে ভর্তি শুরু
- শাবিপ্রবিতে গ্রীষ্মকালীন অবকাশ, পবিত্র রমজান ও ঈদুল ফিতরের ছুটি শুরু
- এমফিল-পিএইচডি প্রোগ্রামে ভর্তি পরীক্ষা ১৫ মে