INFSCI 2066: Data Structures and Algorithms

Instructor: Marek J. Druzdzel


"An apprentice carpenter may want only a hammer and a saw, but a master craftsman employs many precision tools. Computer programming likewise requires sophisticated tools to cope with the complexity of real applications, and only practice with these tools will build skill in their use." --- Robert L. Kruse, Bruce P. Leung & Clovis L. Tondo

Even though superficial knowledge of a programming language may get you far in your professional endeavors, being an information science professional requires much more. Like in the analogy between an apprentice and a craftsman, it is possible to write programs with minimal knowledge of programming, but you can accomplish more and in a more efficient way by mastering the available variety of programming tools.

The purpose of the Data Structures and Algorithms course is to provide you with solid foundations in the basic concepts of programming: data structures and algorithms. The course is about choosing data structures that are appropriate for your problem, creating, explaining, and comparing algorithms. It is also about studying their correctness and computational complexity. These are essential when your programs are confronted with large versions of the problem for which they are designed. Upon a successful completion of this course you will have acquired sufficient knowledge of programming tools for future endeavors and, in particular, for any course in the systems and technology area offered by the department. The Data Structures and Algorithms course will offer you a mixture of theoretical knowledge and practical experience. You will learn the tools and you will learn to apply them to practical problems.

All examples as well as the programming assignments in this course will be in the programming language C. This should prove useful for you in your further coursework in the Department of Information Science as well as in your future professional career. You are expected to have a reasonable working knowledge of C. If you lack the knowledge of C, you are advised to acquire it during the first few weeks of the semester.

As you might have already experienced by now, being a professional requires independence and creativity, but most of all commitment to hard working. In this class, most of your effort will be concentrated on programming assignments. If you have little programming experience, these assignments will make your work load heavy, but I still believe that you will find the class satisfying. In fact, most successful students in the past were not those who came into the class with rich programming experience, but those who worked hard. The work load in this class will be heavy, but I believe that you will find the work interesting and important. I require your commitment, keeping up with the readings and the assignments, coming to classes, and being their active participant. In return, I will do my best to ensure that you have fun and learn useful skills.

Marek Druzdzel's teaching page
Marek Druzdzel's home page / Last update: 12 September 2003