Design a 4-bit synchronous counter using D filp-flops and 16 x 4 ROM that can generated any arbitrary counting sequence
A counter is just a state machine that advances from one state to the next on each clock edge. Normally, you use logic to determine the next state from the current state to create, for example, binary counters, BCD counters or Gray-code counters.

But there's no reason that the next-state logic couldn't be replaced by a ROM. The ROM would be addressed by the state flip-flops, and the output of the ROM would be the next state of the flip-flops. This allows you to create a sequence of states of any length, up to 2N, where N is the number of flip-flops. The states can occur in any order, as long as each state has a unique next state.