- Use of various software development tools: version control systems, UNIX command line, compilers, integrated development environments, and debugging tools.
- Programming using various data structures: lists, arrays, stacks, queues, and lookup structures.
- Programming language concepts: pattern matching, recursion, loops, arithmetic, operators, variables, algorithms, immutable data, objects, classes, functions, pointers, data types, and polymorphism.
- Software engineering: design, testing, debugging, and prompting (both for self-written programs and existing programs).
- Programming language paradigms: historical perspective, overview of different languages and paradigms, and study, discussion, and analysis of programming concepts in imperative programming (variables and pointers), functional programming (recursion and immutable data), and object-oriented programming (objects and classes).
- Forms of input and output, including sound, image, text, and files.
- AI tools: overview and short exercises with modern AI tools.
- Individual project: own development of a non-trivial program, including problem formulation, design, testing, and presentation.
ID1022 The Art of Programming 7.5 credits

Information per course offering
Choose semester and course offering to see current information and more about the course, such as course syllabus, study period, and application information.
Course syllabus as PDF
Please note: all information from the Course syllabus is available on this page in an accessible format.
Course syllabus ID1022 (Autumn 2026–)Content and learning outcomes
Course contents
Intended learning outcomes
After passing the course, the student should be able to
- use basic software development tools, data structures, algorithms, and data types
- construct programs that contain functions and various control flow constructs using both static and dynamic type checking
- compare, and analyse programming concepts within imperative programming, functional programming and object-oriented programming
- debug and improve programs written by other people
- program both with and without AI-based code generation
- design, develop, and test a non-trivial program
in order to
- being able as an individual student to design, develop and test their own programs without the help of other people
- be well prepared to learn new programming languages, including other languages that are imperative, functional or object-oriented.
For higher grades, the student should be able to
- design, develop and test programs with more complex problem formulations, and with more advanced language concepts.
Literature and preparations
Specific prerequisites
Literature
Examination and completion
Grading scale
Examination
- DAT1 - Computer-Based Assessment, 6.0 credits, grading scale: A, B, C, D, E, FX, F
- PRO1 - Individual Project, 1.5 credits, grading scale: P, 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. If the course is discontinued, students may request to be examined during the following two academic years.
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
Offered by
Main field of study
Education cycle
Supplementary information
Overlaps partially (3-6 credits) with DD1310-DD1319, DD1321, DD1331, DD1333, DD100N, DD1337, ID1018.