The main objective fo the course is to learn simulation and modeling methodology for communication networks. While the methodology applies to any simulation tools (e.g., C++, MATLAB, OPNET, etc.), this course emphasizes on the Network Simulator 2 NS2). NS2 is an open-source discrete event simulator, which is widely used in a communication research community. Since NS2 contains a wide variety of network components such as routing, transport control protocol, application, etc., the simulation skill using NS2 would be a great asset for the students. Nowsaday, many universities and research institutes prefer applicants which can fluently use NS2. Unfortunately, incorporating new modules into NS2 requires profound understanding of NS2 architecture. It takes months (if not years) to fully understand and be able to modify a part of NS2. In this course, the students will learn to use NS2 for communication research. The students are required to know basic data communication as well as C++ programming language as the pre-requisites. This course shall start off with an overview of data communication networks, and the motivation of simulation and modeling (i.e., why do we need simulation?) We shall learn the simulation and modeling methodology and how to use NS2 for simulation study of various networks. To this end, the students are requires to do small course projects to show their ability to apply NS2 to their future research.