I want to know exactly what the main majors are in computer science and subspecialties. Can anyone give me a complete overview of this topic and how it relates to other majors, like computer engineering and software engineering?
Traditional Computer Science doesn't include the applied computing areas. Since traditional computer science is as its root related to mathematics, it is hard to sever them. Software Engineering is a branch of applied computer science as it doesn't necessarily relate to the science of computing but using it to formulate new methods of developing software which is an application of computational science. That being said a lot of the areas people often consider "areas" usually fall into what makes institutions money to offer to students these days when it comes to "applied" areas though some areas like AI and Software Engineering and Databases have traditionally been solid applied CS fields.
1. Software development: This includes the entire cycle , right from identifying the problem, designing algorithms to tackle the problem and finally debugging and testing. A majority of computer science students do this thing.
2. Computer security: way to tackle attacks on the network, fraud classification in short everything that compromises the data.
3. Computer networking: Although this is not entirely software, but it is important for effective data communication, building networks.
Actually you could do a major in the field you want to work in computers, web developer, security and assurance, operating systems and so on.
We are in an age of interdisciplinary engineering, no field is purely computer science or electrical or for that matter any other field having worked in electrical, I used software more than my computer science counterparts . Depending on your application you need the knowledge of multiple fields to some extend.
Traditional Computer Science doesn't include the applied computing areas. Since traditional computer science is as its root related to mathematics, it is hard to sever them. Software Engineering is a branch of applied computer science as it doesn't necessarily relate to the science of computing but using it to formulate new methods of developing software which is an application of computational science. That being said a lot of the areas people often consider "areas" usually fall into what makes institutions money to offer to students these days when it comes to "applied" areas though some areas like AI and Software Engineering and Databases have traditionally been solid applied CS fields.
I can specifically mention our university's CS department (University of Rochester). The "top level" breakdown is 1) SYSTEMS RESEARCH, 2) THEORY RESEARCH, 3) ARTIFICIAL INTELLIGENCE RESEARCH, 4) HUMAN-COMPUTER INTERACTION RESEARCH.
The "second level" breakdown is 1) SYSTEMS include computer org, distrib. systems, hardware & software, processor and memory arch ... 2) THEORY includes cryptography, computational complexity etc ... 3) AI includes computer vision, nat lang. processing, reasoning, machine learning, etc ... 4) HCI includes the design of human-centric computer systems ...