ID1021 HT23 Algorithms and Data Structures (50139)

Welcome to the course

As stated in the course description this is a course to give you the basic understanding of algorithms and data structures. During the course you will do a lot of programming, partly to learn the algorithms but also see that in practice it does make a difference which algorithms that you use.

The course will use almost the same syllabus as last year and consist of a set of hand in assignments. Each assignment should be presented in the form of a well written short report. There is no exam in the end of the course but all reports have a deadline.

Work in progress

I'm updating the assignments so don't start before the course start and not earlier than a week before we cover the topic in class.

The assignments

There are nine assignments that should be handed in (before the dead line) and approved to pass the course (grade E, otherwise an F is given). Apart from these nine assignments there are four assignments for higher grade. The first one for D, if you also do the second a C etc. An assignment is graded with either 0 (failed), 1 (fix it) or 2 (approved). If you get a 1 then the report should be fixed and handed in again no later than three days after the grading. The assignments will be available as the course progress, normally the week before it due date.

Report should be written in LaTeX and have a length of four pages. The reports should be well written and describe how you solved the problem, which problems you had and which conclusions that can be drawn from the experiments.

When you hand in you report in time you will be given two other report to read through. Take the opportunity to see how other students have solved the assignment and how they present it  - is it easy to follow, did they come to the same conclusion, how does you report stack up?

The assignment are written with Java as example code. If you have another programming language that you want to work with tell me by the start of the course. Languages that other students have used:

  • C/C++
  • Assembly
  • Rust
  • Julia

You need to use a language that has primitive arrays as a data structures i.e. this will rule out most functional programming languages. When you implement your programs you should implement everything from scratch and not use a library that does it for you. You can however build your own library as you complete the tasks of the course; if you in one assignment implement a dynamic array you can use this data structure in a later assignment.

Quizzes

In addition to the hand in assignments there will be a small quiz each week that is related to the topic of the week. Each quiz will be available by the beginning of the week and the deadline is most often Saturday.  The quizzes should all be completed and approved by the deadline to pass the course.

Lectures

The lectures will follow the assignments and describe the algorithms used. You should take a look at the assignments before the week starts so that you can take advantage of the lectures in solving the assignment.

Contact

The best way is if you use the Discussion board here in Canvas,  You can of course pose questions during or after the lectures. If you have personal questions you can email me at johanmon@kth.se - note, I will not answer any general questions over email, use the discussion board.