One of the most powerful networking practices is to provide immediate value to a new connection. This means the moment you identify a way to help someone, take action:-Lewis Howes

Computer networking is the engineering discipline concerned with communication between computer systems or devices. It is the practice of linking computing devices together with hardware and software that supports data communications across these devices.

In this Network Programming, Lab students are introduced to socket programming. Specifically, we will focus on TCP socket connections which are a fundamental part of socket programming since they provide a connection-oriented service with both flow and congestion control. What this means to the programmer is that a TCP connection provides a reliable connection over which data can be transferred with little effort required on the programmer’s part; TCP takes care of the reliability, flow control, congestion control for you. First, the basic concepts will be discussed, then we will learn how to implement a simple TCP client and server.

A socket is one of the most fundamental technologies of computer network programming. Sockets allow network software applications to communicate using standard mechanisms built into network hardware and operating systems. Although it might sound like just another feature of Internet software development, socket technology existed long before the Web. And, many of today’s most popular network software applications rely on sockets.

Socket-based software usually runs on two separate computers on the network, but sockets can also be used to communicate locally on a single computer. Sockets are bidirectional, meaning that either side of the connection is capable of both sending and receiving data. Sometimes the one application that initiates communication is termed the “client” and the other application the “server,” but this terminology leads to confusion in peer to peer networking and should generally be avoided.

After Completion of this course students are able to work for providing solutions to real-world problems using Structured, Object Oriented Programming languages and open source software.  And can function as Systems Engineer, Software Analyst and Tester for IT and ITeS.