Is Computer Science more of a science or more engineering?
Computer science is a mishmash of numerous different disciplines, along several different axes. Parts are tantamount to purely abstract mathematics. Parts are psychology. Parts are reminiscent of engineering, though "engineering" itself is also numerous different disciplines wrapped up in one name. Computer science impinges itself on every discipline which might use computers, which means every department in the school and many outside of it.The only thing that two "computer science" majors have in common is that they both use computers, a trait they share in common with every other person in the university. The most distinctively "computer science" disciplines are the ones that don't involve computers at all, but are purely theoretical: these would fit comfortably into a mathematics department if we didn't want to house them in the same building with those who do actually use computers.I don't think it's worth any effort to worry about classifying it. The name is a matter of convenience, without defined boundaries. And that, to me, is the most important thing: if you're only interested in computers as computers, it had better be one of those highly theoretical or purely mechanical disciplines. Everybody else had better pay attention to what it is computers are actually used for, which means looking everywhere BUT the "computer science" department.
Is it true that in computer science, you really just have to have the brain power to be able to solve problems and that you don’t really have to memorize much of anything?
I don’t think so, and I don’t really think separating these two things is particularly productive as you could argue memorization is a part of your “brain power”. It depends on what you mean by memorizing. In my area, it is expected to be aware of numerous results and how and why they work. Lots of memorization is necessary, but I don’t like painting it as memorizing as it makes it sound like you’re only remembering what things are and are not absorbing the knowledge in pieces. In addition, some things in this field are most definitely conceptual and not something you can just “solve problems” to be aware of. With any scientific/mathematical field, you don’t get that far without understanding and “memorizing” things. As you learn more, you gain the experience and intuition to tackle more problems, but this forgets the other parts of CS: the parts where we prove things, we model things, and communicate our mathematical ideas together as a discipline. There will be many things you need to remember and memorize in CS.I can’t comment on how much with respect to other scientific fields though. However, I most definitely am required to be aware of many results and most competent CS students need to be aware of jargon, mathematical concepts on the fly, and have the ability to adapt things taught to solve new problems (even if it is the “main ideas”). I don’t know how far somebody could even get in doing that without some form of memorization, whether it be memorization and adapting it into long-term learning or simply memorizing for short-term learning purposes. It would be foolish to think you can just do CS and not memorize anything and expect to get far. Furthermore, I don’t know what and how you could make “brain power” disjoint from memorization in some way, shape, or form. Memorization is one part of learning.
What should one know before studying computer science?
Sometimes it’s not about what you should know, but what should you get a head start in to have the ability to pick up the concepts quickly when they arise. Some examples of useful things to know when going into Computer Science are:Data StructuresAlgorithmsNetworking concepts like what makes up the OSI model, (TCP/UDP, IP, Subnet masks, MAC, etc) learn everything in the OSI modelWireshark/packet analysis is very useful, (Acquiring information from obfuscated garble)Database integration/secure communication/queriesProgrammatically parsing text of different formats, (i.e., txt, json, xml, etc)RegexCAssemblyOOP, get some JAVA in there as an examplePractice some simple automation scripting with Python/Powershell/Bash/Batch filesTry some R/SAS/Python for data analysis. Download a random data set and run it through some scripts.MVP/MVC, Client-Server, and other software architecture (Monolithic, Microkernel)Stacks/QueuesOne useful thing to learn is also the software development life cycle (SDLC) and different software development methodologies like waterfall and agileStart reading summaries about these topics, what they are, and what they’re used for. These are a good start in my opinion.After you get a good feel and you practice solving problems programmatically, you can start developing something of your own. Of course if you’re just developing a website or an app, you most likely will get by without most of these.Good luck!
How hard is computer science ?
You should determine your natural aptitude in math and science. In addition, you have to have the special aptitude of electronics. There are many people who are good engineers, scientists, etc. who have good abilities in math and science, but can't understand electronics. Of the 3, a high math abilitiy and a high electronic ability are the essential ingredients that would determine your success. So, let's make a guess at what traits a high school student should have to predict a future for a successful student in a computer science. (1) are you in the advanced math classes in school and one of the better students (2) have you ever built anything electronic. There are kits, etc. (3) do you take things apart and see how they work, especially the electronic controls, (4) Do you read books on the history of electronics, like are you curious about AM radio, or the history of the transistor. (5) Do you try to figure out how they build things. (6) Have you ever invited yourself to go and ask plant management if you could take a tour of what they do. As you can see, your natural aptitudes and interests should begin to make you different from typical students. The reason why this is important is because everyone wants an engineering degree in computer science. Generally, most major public colleges will let you sign up and then try to fail you out. Colleges will even go so far as making you take an aptitude test and then telling you that you failed it. Again, trying to make those who are not serious to drop out. They only want serious, dedicated students with aptitude and with the attitude that they have no other major to study or anyplace else to go.
Is Intro to Computer Science hard?
If you are good at logical thinking and math, then it should not be a bronblem for programming. Computer science is mostly simple memory work, common sense and logic, so I would say its not difficult
Should I take Software Testing as a Computer Science major, or is that something you just pick up in industry?
The importance of software testing can never be overemphasized because we all make mistakes. Some of those mistakes are unimportant, but some of them are expensive or dangerous. We need to check everything and anything we produce because things can always go wrong – humans make mistakes all the time. Since we assume that our work may have mistakes, hence we all need to check our own work. However some mistakes come from bad assumptions and blind spots, so we might make the same mistakes when we check our own work as we made when we did it. So we may not notice the flaws in what we have done. Ideally, we should get someone else to check our work because another person is more likely to spot the flaws.There are several reasons which clearly tells us as why Software Testing is important and what are the major things that we should consider while testing of any product or application.Software testing is very important because of the following reasons:1. Software testing is really required to point out the defects and errors that were made during the development phases.2. It’s essential since it makes sure of the Customer’s reliability and their satisfaction in the application.3. It is very important to ensure the Quality of the product. Quality product delivered to the customers helps in gaining their confidence.4. Testing is necessary in order to provide the facilities to the customers like the delivery of high quality product or software application which requires lower maintenance cost and hence results into more accurate, consistent and reliable results.5. Testing is required for an effective performance of software application or product.6. It’s important to ensure that the application should not result into any failures because it can be very expensive in the future or in the later stages of the development.7. It’s required to stay in the business.Culled from ISTQB Exam CertificationI believe I have given you enough reasons why you should take the CS Major in software testing. In summary, it will expose you to the major building blocks required in software testing. All you just have to do when you get into the industry is to adapt to the industry’s’ style of testing since style of testing for software industries differ.
How can I remember what I study in computer science?
It’s been a year since I finished my Masters. Do I remember everything I studied? Of course not! But neither do I have to.Do I have to remember everything about Compilers and Theory of Computation? Since I’m not designing a compiler in any near future, guess I can skip it. Never ever try to second guess the compiler. Premature optimization is the root of all evil.Do I have to remember everything about Cloud Computing and Grid Computing? I know the basics, and I’m quite experienced in AWS. I don’t need to know all the formulas and theories.Do I have to remember everything about Operating Systems? This is pretty important. But I had been using OpenSUSE, Ubuntu, Fedora, and server editions, working on filesystems and hadoop for a while. You’ll learn all these with time.Do I have to remember everything about Computer Networks? I know most of the basic protocols. Do I have to remember all the routing algorithms? Routers know how to do their job, right?! Do I have to remember all the headers of all the packets? I can simply look it up. The names are pretty explanatory.Do I have to remember everything about Cryptography? I remember most of the basic stuff. Public key, private key, rsa, openssl. Every developer will be using some sort of version control like Git or Mercurial. As such, would be familiar with atleast ssh and rsa keys.Do I have to remember everything about Graph Theory? I don’t need to remember all the proofs! Why the heck? I know someone better than me had already proved it. I’ll just take the word for it. And I know the basics.The list goes on!I’m not saying that we should not learn them at all. Sometimes, you learn something in Compilers, and while learning about Operating Systems, you see that the concepts are similar. That eureka moment!
Should I give up on Computer Science as my major?
Dont give up on Computer Science. Its good ahead with a lot of programming languages and projects for software and websites. They teach both software programming and website programming languages. You can get into IT companies after that no doubt. B is not bad, you can do it better. You can get rid of other subjects as you clear your first and second years. In your final year you wont have any other subjects but just subjects related stricty related to computer programming. For computer science related resources. Visit the website. It has everything i suppose.... ;)
I'm a 16 yo who's interested in computer science. Where do I start?
I know most kids who are on the road to doing something with IT are already coding by 10 or younger. I barely know anything yet. I have no idea where or how to start. Are there any free apps I can download that will help me learn to code? Or any books that the libraries might have? Thanks.
Introduction to Computer science!?
Okay, I barely have any knowledge on computer science but I really want to minor in it. And since I'm going to berkeley which has a rigorous computer science program, I want to study it before I really start taking classes. So What exactly do I need to study? What exactly do you learn in AP Computer science???? Also, there are many computer languages. What exactly is this language thing and is it better if you know more? How many do usual people know??? Lastly, any recommendations for a good "Introductory Book for computer science?"