A computing device for backtracking user's movement trajectory, the computing device comprising: a processor; a plurality of sensors providing sensor data, the sensor data including acceleration data and orientation data; a particle filtering module configured to determine an initial location A of the computing device based on WiFi zoning; identify an indoor map of an indoor space associated with the initial location A, wherein the indoor map includes a plurality of constraints; preprocess the identified indoor map by uniformly dividing the indoor map into equal size cells; uniformly distribute particles over the initial location A on the indoor map; propagate the distributed particles based on the sensor data and the plurality of constraints; determine valid cells, wherein the valid cells are cells lying in a reachable area and respecting the plurality of constraints; remove particles that would violate one of the plurality of constraints; characterized in that the particle filtering module is further configured to determine valid particles, wherein the valid particles are particles lying in the valid cells and respecting the plurality of constraints; and in that the computing device further comprises a backtracking module configured to, in parallel to the particle filtering module, determine moving steps of the user carrying the computing device, based on the acceleration data; at each moving step of the user, calculate a transition probability matrix and an observation density matrix of the valid particles; determine a most probable sequence of the valid cells based on the valid cells, the transition probability matrix, and the observation density matrix, using a Viterbi algorithm. a processor; a plurality of sensors providing sensor data, the sensor data including acceleration data and orientation data; a particle filtering module configured to determine an initial location A of the computing device based on WiFi zoning; identify an indoor map of an indoor space associated with the initial location A, wherein the indoor map includes a plurality of constraints; preprocess the identified indoor map by uniformly dividing the indoor map into equal size cells; uniformly distribute particles over the initial location A on the indoor map; propagate the distributed particles based on the sensor data and the plurality of constraints; determine valid cells, wherein the valid cells are cells lying in a reachable area and respecting the plurality of constraints; remove particles that would violate one of the plurality of constraints; characterized in that the particle filtering module is further configured to determine valid particles, wherein the valid particles are particles lying in the valid cells and respecting the plurality of constraints; the particle filtering module is further configured to determine valid particles, wherein the valid particles are particles lying in the valid cells and respecting the plurality of constraints; and in that the computing device further comprises a backtracking module configured to, in parallel to the particle filtering module, determine moving steps of the user carrying the computing device, based on the acceleration data; at each moving step of the user, calculate a transition probability matrix and an observation density matrix of the valid particles; determine a most probable sequence of the valid cells based on the valid cells, the transition probability matrix, and the observation density matrix, using a Viterbi algorithm. a backtracking module configured to, in parallel to the particle filtering module, determine moving steps of the user carrying the computing device, based on the acceleration data; at each moving step of the user, calculate a transition probability matrix and an observation density matrix of the valid particles; determine a most probable sequence of the valid cells based on the valid cells, the transition probability matrix, and the observation density matrix, using a Viterbi algorithm.