I'm trying to solve a problem where I have to create a DFA for the intersection of two languages.
These are: $$\{s \in \{{\tt a}, {\tt b},{\tt c}\}^\ast : \mbox{every ${\tt a}$ in $s$ is immediately followed by a ${\tt b}$}\}$$
and
$$\{s \in \{{\tt a}, {\tt b},{\tt c}\}^\ast : \mbox{every ${\tt c}$ in $s$ is immediately preceded by a ${\tt b}$}\}$$
I think I am on the right track, but not sure if it is totally correct. Could someone have a look please?

There is a systematic way for creating automatons for intersection of languages. Let $A$ and $B$ be the input automatons. The states of new automaton will be all pairs of states of $A$ and $B$, that is $S_{A\cap B} = S_A \times S_B$, the initial state will be $i_{A \cap B} = \langle i_A, i_B \rangle$, where $i_A$ and $i_B$ are the initial states of $A$ and $B$, and $F_{A\cap B} = F_A \times F_B$ where $F_X$ denotes the set of accepting states of $X$. Finally, the transition function $\delta_{A \cap B}$ is defined as follows for any letter $\alpha \in \Sigma$ and states $p_1, p_2 \in S_A$, $q_1, q_2 \in S_B$:
$$ \langle p_1, q_1 \rangle \xrightarrow[A \cap B]{\ \alpha\ } \langle p_2, q_2 \rangle \quad \text{ iff } \quad p_1 \xrightarrow[A]{\ \alpha\ } p_2 \quad \text{and} \quad q_1 \xrightarrow[B]{\ \alpha\ } q_2 $$
Please note, that such automaton usually is not minimal (e.g. the intersection might be just an empty language). Also it might be useful (but it is not necessary) to make input automatons minimal since the output is quadratic in size.
Hope that helps ;-)