As the world is flooded with data, the demand for mining data for useful purposes is increasing. An effective techniques is to model the data as networks (graphs) and then apply graph mining techniques for analysis. As on date, the algorithms available to count graphlets and orbits for various types of graphs and their generalizations are limited. The thesis aims to fill the gap by presenting a simple and efficient algorithm for 3-node graphlet and orbit counting that is generic enough to work for both undirected and directed graphs. Our algorithm is compared with the state-of-art algorithms and we show that in most cases our algorithm performs better. We demonstrate our algorithm in three case studies related to (i) enzyme and metabolite correlation network in corn, (ii) watershed governance networks, and (iii) patterns exhibited by co-expression networks of healthy and cancerous stomach cells.