Design a CFG that generates the language { x in {a,b}* | the length of x is odd and its middle symbol is a b }
PDA:

Here is a guideline to solve this problem: 

Try to think how to "count the letters until the middle", then "guess" where the middle is, and then "verify that your guess was really the middle, by counting once again"

CFG:

$S\rightarrow b\space | \space xSy$ for every $x,y\in \{a,b\}$

Yea, thats everything in the CFG!