Data Structures Project, 2019 end of summer intensive period
📅 Time table
Detailed course timing is available here.
- The final submission deadline is on . There are no time extensions available.
- If you find something to fix/improve on the course pages, please submit a Pull Request with the fix (instructions). A bug bounty of 1 course point will be awarded for significant fixes (capped at 1 per student).
Links to course material
Slides for the lecture (in Finnish)
- Sign in with your University of Helsinki account.
The course Telegram channel
- You may also contact the course assistant through Telegram.
- E-mail also works.
- Mandatory! Contact the course assistant if you can not make the Demo session. The Demo session is mandatory to get a passing grade!
- Preferrably present with your own laptop. In this case you may want to arrive early to test that the laptop works properly with the projector. If you are not able to present using your own laptop, please make arrangements with a friend or contact a course assistant.
- All projects will also be loaded onto a presentation machine, which you may use for the demonstration. However the presentation machine don't always work at all and when they work, the projects may not work in the presentation environment.
- At most 5 minutes per project.
- Slides are not required for the presentation and generally not recommended unless you have a specific reason to use them.
- Saskeli’s project Note: The course has changed somewhat after this project was made.
- Jussi was also kind enough to allow his project to be provided as an example. But stated that the project was made with pretty minimal effort.
- Both of these still have a good project structure.
🏆 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
- Program: 30 p
- Functionality and features 10 p
- Testing 10 p
- Code documentation (JavaDoc and self documenting) 5 p
- Clarity of the code 5 p
- Documentation 10 p
- Topic definition 2p
- Implementation 3p
- Testing 3p (unit- and performance-!)
- User guide 2p
- During the course 20p
- Code reviews 2 * 2p = 4p
- Weekly submissions 1p + 5 x 3p = 16 p
(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.
- 5: 50 p
- 4: 45 p
- 3: 40 p
- 2: 35 p
- 1: 30 p