Skip to main content
Till KTH:s startsida

DD2458 Problem Solving and Programming under Pressure 9.0 credits

Successful problem solving in computer science requires a solid theoretical foundation as well as ability to apply the theory to practical problem solving.

The aim of this course is to develop your ability to apply knowledge of algorithms, data structures, and complexity theory to given problems. As a professional it is useful to be able to analyze a problem, judge the efficiency of proposed algorithms, and to implement them quickly and correctly. In this course, you will practice this by solving a number of homework assignments and while working under time constraints during problem solving sessions.

Note that this is an unusually heavy and work intensive course.

Information per course offering

Termin

Information for Spring 2025 popup25 programme students

Course location

KTH Campus

Duration
14 Jan 2025 - 2 Jun 2025
Periods
P3 (4.5 hp), P4 (4.5 hp)
Pace of study

33%

Application code

60139

Form of study

Normal Daytime

Language of instruction

English

Course memo
Course memo is not published
Number of places

15 - 25

Target group

Open to students from year 3 and for students admitted to a master's programme as long as it can be included in your programme.

Planned modular schedule
[object Object]

Contact

Examiner
No information inserted
Course coordinator
No information inserted
Teachers
No information inserted
Contact

Per Austrin, e-post: popup-17@csc.kth.se

Course syllabus as PDF

Please note: all information from the Course syllabus is available on this page in an accessible format.

Course syllabus DD2458 (Spring 2025–)
Headings with content from the Course syllabus DD2458 (Spring 2025–) are denoted with an asterisk ( )

Content and learning outcomes

Course contents

Algorithms: computational geometry, graph algorithms, number theoretic algorithms, string matching. Design and analysis of algorithms: dynamic programming, amortised analysis, judging reasonableness. Programming skills, mainly in C++ and Java.

The course focuses on problem-solving all the way from theory (in the form of algorithm design) to practice (in the form of a working program).

During the course, the student solves a large number of assignments, implements a number of algorithms to build a smaller algorithm library, solves problems in small groups during "problem sessions", and present solutions to assignments orally.

Intended learning outcomes

After passing the course, the student shall be able to

  • use algorithm design methods such as greedy algorithms, dynamic programming, divide and conquer, and combinatorial search to design algorithms in order to solve given problems
  • use basic algorithms in fields such as graph theory, number theory and geometry on given problems and adapt them to problem-specific circumstances
  • analyse the efficiency of different algorithms to decide which ones are sufficiently efficient in a given context
  • compare different problems with respect to difficulty
  • implement algorithms and data structures given abstract specifications
  • identify bugs in others' solution attempts on problems
  • communicate with others during problem solving in groups
  • present algorithms, data structures and problems orally in a concise and lucid way

in order to

  • be able to use programming as a tool for problem-solving
  • be able to apply theoretical knowledge from other computer science courses on practical problem-solving.

Literature and preparations

Specific prerequisites

Knowledge in algorithms and complexity, 7.5 higher education credits, equivalent to completed course DD1352/DD2350/DD2352

or

documented experience in active participation in algorithmic programming competitions with a degree of difficulty equivalent the algorithms that are studied in DD2350/DD2352.

Recommended prerequisites

DD2440 Advanced Algorithms

Equipment

No information inserted

Literature

No information inserted

Examination and completion

If the course is discontinued, students may request to be examined during the following two academic years.

Grading scale

A, B, C, D, E, FX, F

Examination

  • LAB2 - Lab assignments and problem solving sessions, 4.5 credits, grading scale: A, B, C, D, E, FX, F
  • ÖVN1 - Exercises, 4.5 credits, grading scale: A, B, C, D, E, FX, F

Based on recommendation from KTH’s coordinator for disabilities, the examiner will decide how to adapt an examination for students with documented disability.

The examiner may apply another examination format when re-examining individual students.

Examination can only take place in connection with an ongoing course offering.

Opportunity to complete the requirements via supplementary examination

No information inserted

Opportunity to raise an approved grade via renewed examination

No information inserted

Examiner

Ethical approach

  • All members of a group are responsible for the group's work.
  • In any assessment, every student shall honestly disclose any help received and sources used.
  • In an oral assessment, every student shall be able to present and answer questions about the entire assignment and solution.

Further information

Course room in Canvas

Registered students find further information about the implementation of the course in the course room in Canvas. A link to the course room can be found under the tab Studies in the Personal menu at the start of the course.

Offered by

Main field of study

Computer Science and Engineering

Education cycle

Second cycle

Add-on studies

Please discuss with the instructor.

Contact

Per Austrin, e-post: popup-17@csc.kth.se

Transitional regulations

LAB2 corresponds to the earlier component LAB1 and may replace this.

Supplementary information

The number of participants is limited to 25. 

The course is only given if we have sufficient teaching resources.

In this course, the EECS code of honor applies, see:
http://www.kth.se/en/eecs/utbildning/hederskodex