The timetable for the June re-exams (including Zoom link and script) is available here: Oral exams August 2023
TDA552 Object-Oriented Programming and Design lp2 HT21 (7.5hp)
This course is offered by the Institute for Computer Science and Engineering (Data- och informationsteknik) in läsperiod 2, 2020.
This course will be taught in English.
Go Here for Everything
The Modules page - for lecture slides and recordings, exercises, readings, ...
The Assignments page - for the lab assignments and written assignment
- Our Slack Workspace
- Resources for Java
- Getting Started with IntelliJ
- Zoom link for lectures Passcode: OOPD
Course responsible, examiner and lecturer: Robin Adams (firstname.lastname@example.org)
- Imad Alihodzic (email@example.com)
- Willem Brahmstaedt (firstname.lastname@example.org)
- Aline Eikeland (email@example.com)
- Anton Ekström (firstname.lastname@example.org)
- Elias Ersson (email@example.com)
- Martin Jonsson (firstname.lastname@example.org)
- Pontus Engström (email@example.com)
- William Frisk (firstname.lastname@example.org)
- Isac Hansson (email@example.com)
- Herman Norén (firstname.lastname@example.org)
Software development requires much more than just programs that "work" and "do the right thing". To be able to work with software on an industrial scale, it is required that the programs we create can also be maintained over time, reused and expanded with new functionality, and worked on by many developers, both sequentially over time and in parallel. This course introduces the object-oriented paradigm, and focuses on sound object-oriented design.
There is no mandatory literature for this course.
Some recommended books:
- E. Sciore. Java Program Design
- D. Skrien. Object-Oriented Design Using Java
Classics that Every Software Delevoper should Read Sooner or Later
- R. Martin. Clean Code
- R. Martin. Clean Architecture - two books from the man who invented the SOLID principles
- M. Fowler. Refactoring. Martin Fowler is passionate about refactoring - not just a tedious necessity but a beautiful and important part of the software development process
- refactoring.guru - Excellent website with a list of design patterns, refactoring steps, and code smells
Suggestions for additional readings will be given in the weekly modules and added here as the course progresses.
- Week 1: What is object-oriented design?
- Weeks 2-3: Types and polymorphism
- Weeks 4-5: Dependencies and architecture
- Week 6: Advanced concepts
- Week 7: Summary
Each week consists of two "modules", each consisting of an exercise session followed by a lecture, with laboratory sessions in between. During the exercise, a concept is introduced through tasks we work on and discuss together, and at the lecture this is followed up together with the general principles, patterns and techniques behind it.
Knowledge and understanding
- describe and explain object-oriented design principles.
- recognize and explain different object-oriented design patterns, including their purpose and effect.
Skills and abilities
- use and explain basic object-oriented concepts, such as classes and objects, primitives and references, methods and constructors, variables and fields, etc.
- use and explain more advanced language mechanisms and techniques, such as exceptions, generics, threads, defensive copying, etc.
- use and explain inheritance and parametric types, and associated mechanisms, to achieve polymorphism and code reuse.
- apply design principles and design patterns to achieve sound object-oriented design.
- design, implement and modify object-oriented programs for a given domain in a sound manner with respect to correctness, modifiability and reusability.
- perform and describe testing of object-oriented programs.
Judgement and approach
- analyse and evaluate code according to sound object-oriented design and implementation principles
The syllabus (kursplan) is available on the Student Portal here.
The course contains three compulsory elements, all of which must be completed with (at least) a passing grade in order to pass the course as a whole.
- Laboratory assignments: Two laborations, each divided into two parts. Carried out in groups of three students.
- Written assignment: Written analysis of a code base found "in the wild". Conducted in groups of three students.
- Oral examination: Conducted individually, at the agreed time during the exam week.
The syllabus page shows a table-oriented view of course schedule and basics of course grading. You can add any other comments, notes or thoughts you have about the course structure, course policies or anything else.
To add some comments, click the 'Edit' link at the top.