Problem solving and programming concepts