The importance of computational techniques in professional lives is growing rapidly. Such techniques are also at the basis of many of the courses taught in the CSAI and Data Science programs. The course "Data Structures and Algorithms" builds on the computational knowledge from the course "Basic Programming" in two ways: (1) it teaches the students the general programming language Python, and (2) it provides with the skills to use advanced data structures and design and assess algorithms. At the end of the course, the students should be able to:
- construct imperative programs in Python
- construct object oriented programs in Python
- use basic data structures such as lists, dictionaries, and sets
- use advanced data structures such as nested dictionaries, linked lists, trees, graphs, and files in many formats
- assess and compare the quality of various algorithms to solve particular problems
- Problem solving
- Computational thinking
About three of the practical sessions will be used to let the students take a small test. These tests are mandatory (the dates will be announced at the start of the course via Blackboard). The tests will be graded. The average of the test grades will be 50% of the final grade for the course. The other 50% will be a computer exam that is given in the exam week at the end of the course.
The course will be taught with one lecture and one practical session per week. The lecture will be used to teach the students new concepts of the Python language and general programming techniques. The practical session is used to allow the students to practice with the materials taught. However, the students are also expected to work on exercises at other times. Programming can only be learned by practicing a lot. Many exercises will be made available to the students for this purpose.|
While it is recommended that the course participants have taken Basic Programming before taking on this course, that is not a requirement. This course is self-contained; students are not expected to have any programming knowledge. However, the course Basic Programming introduces many programming techniques, which gives students who did it a head start and a much easier time internalizing particular concepts. However, a student who did not do Basic Programming but has an aptitude for abstract thinking or did some programming before, should not have any problems following this course.
- Nothing is compulsory, programming is learned by doing, not by reading. However, many materials will be made available via blackboard at the start of the course.
- Most books on Python are helpful. For this course in particular I wrote a freely available book called "The Coder's Apprentice", which will be made available via Blackboard. A Dutch version is also available. Another good, freely available book is "Think Python" by Allen Downey.