fundamentals of algorithms syllabus 2156408