Fundamentals of computer science