Data Structures Project, 2019 end of summer intensive period

Course assistants

📅 Time table

Detailed course timing is available here.

📣 News

🗒️ Labtool

The course Telegram channel

Guidance

Demonstration

Example projects

🏆 Conduct of the course

Based on the number of credits (4) offered, the expected amount of work to complete the course should be approximately 107 hours. Plan to spend 15-20 hours on the course every week.

In this course the student creates a program that solves some sort of a problem. For solving the problem the student will apply suitable data structures and algorithms. The problem to solve is selected by the student with the help of the course assistant. A passing (or even good) grade does not require developing an algorithm from scratch. A student may develop their own algorithm(s) if desired. The main point of the course is that the created program works correctly and efficiently. The size of the problem instances and required efficiency will depend on the topic, and will be decided with help from the course assistant. Some example topics can be found here.

The course will be partially (mostly) done online. All weekly submissions will be done online. The only mandatory meetings for the course are the first lecture and the demo session. More information on the submissions can be found here.

The program will be written in a language approved by the course assistant, which is almost always Java.

The primary goal of the course is to learn to implement data structures and algorithms. For this reason all required data structures and algorithms will have to be implemented by the student. Generally only primitive types, arrays and strings may be used, everything else has to be implemented using these. Other tools such as IO and GUI libraries may be used. Data structures from standard libraries (such as ArrayList, HashMap and so on from Java) or algorithms (Collections.sort…) may not be used in the final submission, and it is suggested that the imports for these are completely removed. If you are unsure if a particular class/library is allowed, ask the course assistant.

Generally a good approach to incrementally complete a project has been to first implement the core functionality of the program by using ready-made data structures and algorithms (queues, heaps, sorting algorithms). That is, it may be a prudent to first quickly implement the core functionality and later replace library implementations with self-made ones, i.e. replace implementations defined by interfaces with data structures and algorithms made from scratch. This is the assumed working idea for the project timeline. If you want to approach the project in a different way, you should decide on progress milestones for the project with the course assistant during the first week of the course.

📈 Grading criteria

(All in all 60 p)

For a passing grade the project needs to contain self-made implementations for data structures and algorithms. Every project is separately graded. Below are typical gradings based on points.