  Software and hardware components are basic parts of modern networks. However
the software compo- nent is typical sealed and function-oriented. Therefore it
is very difficult to modify these components. This badly affected networking
innovations. Moreover, this resulted in network policies having complex
interfaces that are not user-friendly and hence resulted in huge and
complicated flow tables on physical switches of networks. This greatly degrades
the network performance in many cases. Software-Defined Networks (SDNs) is a
modern architecture of networks to overcome issues mentioned above. The idea of
SDN is to add to the network a controller device that manages all the other
devices on the network including physical switches of the network. One of the
main tasks of the managing process is switch learning; achieved via programming
physical switches of the network by adding or removing rules for
packet-processing to/from switches, more specifically to/from their flow
tables. A high-level imperative network programming language, called ImpNet, is
presented in this paper. ImpNet enables writing efficient, yet simple, and
powerful programs to run on the controller to control all other network devices
including switches. ImpNet is compositional, simply-structured, expressive, and
more importantly imperative. The syntax of ImpNet together two types of
operational semantics to contracts of ImpNet are presented in the paper. The
proposed semantics are of the static and dynamic types. Two modern application
programmed using ImpNet are shown in the paper as well. The semantics of the
applications are shown in the paper also.
