Fundamentals of programming II: Algorithms