What is computer networking?
Simply put, computer networking is the study of how computers can be linked to share data. The concept of connecting computers dates back to the 1960s, when the Department of Defense led the first attempt to create a computer network that painstakingly linked a handful of computers around the U.S. Since then, wireless networking has taken off and networking is now considered an essential part of computing. A computer without a network, arguably, has little use in daily life.
Computer networking involves many things coming together, and there are many challenges and important problems to solve in the field of networking:
- Scaling hardware and software to very high (e.g., 100+ Gbps) speeds (routers, switches)
- Effective interaction with user (web technologies)
- Privacy protection and security (firewalls, antivirus software)
- Meeting growing wireless demand (smartphones, handhelds)
- Scaling the number of participants to many billions (sensors, Internet-of-Things)
- Maintaining healthy Internet economics among service providers
- Addressing social phenomena
- Seamless connection to highly mobile devices
Studying computer networks
A solid math background is valuable, like all the other computer science and engineering fields. In addition to Calculus, important tools in computer networking and communications include the following:
- Linear algebra
- Probability and statistics
- Differential equations
- Numerical analysis
Good programming skills are also very important. Although a good programming background may not be necessary for some of the topics under networking (e.g., low-level communications, hardware issues), networking protocols and software require a solid programming background.
Most of the time, students have to develop skills in a new paradigm of programming: distributed programming. In distributed programming, replicas of the same of code run on different machines but work collectively to do a common task. This may sound like parallel programming, but it's not quite the same. Most of the time, code replicated over the network treats each other as peers and exchanges messages to proceed on a common task, e.g., transferring data from one machine to another.
A solid capability for abstract thinking is also essential for networking, like most other computer science fields. Networking typically involves a layered architecture where each layer is an abstraction of services to layer above. Writing code for networking software involves a good deal of abstraction.
Internship and employment opportunities in computer networking
Internship opportunities in networking range from simple network testing and troubleshooting to backend research and development of network protocols and components. Both hardware- and software-based opportunities are available, but software opportunities are generally more plentiful. Most of the interns are assigned to specific tasks in the company and are expected to deliver in a few months time frame.
Since it became as essential as computing, networking solutions are actively sought by industry, government, and military. There many core networking companies that generate solutions purely in computer networking. However, any IT or software company today needs experts in networking. Typically, an IT company has a communications and networking division as one of its biggest divisions.