We present an algorithm to count the number of occurrences of a pattern graph H on h vertices as an induced subgraph in a host graph G. If G belongs to a bounded expansion class, the algorithm runs in linear time, if G belongs to a nowhere dense class it runs in almost-linear time. Our design choices are motivated by the need for an approach that can be engineered into a practical implementation for sparse host graphs. Specifically, we introduce a decomposition of the pattern H called a counting dag C--> (H) which encodes an order-aware, inclusion-exclusion counting method for H. Given such a counting dag and a suitable linear ordering G of G as input, our algorithm can count the number of times H appears as an induced subgraph in G in time O(|| C--> || center dot h wcol(h)(G)(h-1)|G|), where wcol(h)(G) denotes the maximum size of the weakly h-reachable sets in G. This implies, combined with previous results, an algorithm with running time O((3h(2)wcol(h)(G))(h2)|G|) which only takes H and G as input. We note that with a small modification, our algorithm can instead use strongly h-reachable sets with running time O(||C-->|| center dot h col(h)(G)(h-1)|G|), resulting in an overall complexity of O(h(3col(h)(G))(h2)|G|) when only given H and G. Because orderings with small weakly/strongly reachable sets can be computed relatively efficiently in practice (Nadara et al.: in J Exp Algorithmics 103:14:1-14:16, 2018), our algorithm provides a promising alternative to algorithms using the traditional p-treedepth coloring framework (O'Brien and Sullivan in: Experimental evaluation of counting subgraph isomorphisms in classes of bounded expansion, CoRR, arXiv:1712.06690, 2017). We describe preliminary experimental results from an initial open source implementation which highlight its potential.