Algorithms and Data Structures 2020

# Practical Information

## Algorithms and Data Structures

### 1 Practical Information

#### 1.1 Learning Outcomes

A module on Algorithms and Data Structures is supposed to make you better programmers. We do that by stepping away from actual programming, and try to view computer programs from the outside. We shall learn to solve problems, describe solutions, analyse properties of the program, and prove correctness without being distracted by the details of implementation.

For most students it may be a good idea to do some programming exercises in order to link what you learn to what you already knew. That will often help you learn the new material better. This module, however, will be assessed based on abstract discussion of programmable solutions, rather than on actual programmed solutions.

The key skills and competencies to learn are

1.
being able to communicate, discuss, and evaluate potential solutions and partial designs for computer programs.
2.
being able to prove that an algorithm is correct.
3.
being able to assess the runtime complexity of an an algorithm.
4.
being able to choose suitable algorithms and data structures for a given information system. (This will also require you to be familiar with a range of standard algorithms and data structures.)
5.
being able to construct variations of algorithms.

#### 1.2 Compulsory Assignments

There are weekly compulsory assignments. They must be handed in on time even if you have not completed the task as set.

Each submission needs to contain the following items:

1.
Draft solution to the problem(s) assigned. This may be incomplete, but it has to be handed in.
2.
A comment on your solution. Why did you approach the problem in this way.
3.
A reflection note. What did you learn from the exercise? What do you have to work on? How is it relevant (or not) for your career?
4.
When you have received feedback on a previous submission, you have to include a reflection on that feedback. What did you learn from the feedback, and what are you going to do about it?

Please, submit on time even if you cannot complete the technical task. If you are not satisfied with the technical work, reflect upon this in the reflection note. What is difficult? What can you do? What do you want to understand? Finally, alert the module convener or the TA that you would like feedback on this particular submission.

Exact deadlines can be found in BlackBoard. The recommended submission format is in MicroSoft OneNote, via BlackBoard.

The technical solution (Item 1) can be done collaboratively. The comment and reflection (Items 2-4) are personal and must be done individually.

In order to sit the exam, you have to hand in 10 out of the 14 weekly assignments on time. You should hand in all of them, and when you are allowed four lapses, it is only to allow for illness and other mitigating circumstances. There is therefore no excuse for not handing in ten of the assignments on time.

In order to provide feedback on your work, we will ask you to go through your submission with us, one-to-one, on at least two occasions during the semester. This will require you to meet up, either physically or online, to discuss your most recent assignment. This is not supposed to be a polished and formal presentation, but an casual chat about what you have already written in the submission. We cannot give feedback to all students every week. If you want to discuss a particular piece at a particular time, please let us know. Otherwise, we will just tell you what to present when.

The feedback will never lead to a fail, but you have to deal with the feedback and include reflection upon it in your next submission.

The compulsory assignments are not graded, but approximately half of the exam will be drawn directly from work you have done in the compulsory assigment.