Teaching concurrent and parallel programming by patterns: An interactive ICT approach