Course syllabus
June 2024 Re-exams
Course-PM
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
Useful Links
- Our Slack Workspace
- Resources for Java
- Getting Started with IntelliJ
- Zoom link for lectures Passcode: OOPD
Contact Details
Course responsible, examiner and lecturer: Robin Adams (robinad@chalmers.se)
Teaching Assistants:
- Imad Alihodzic (imad.alihodzic@yahoo.com)
- Willem Brahmstaedt (willem.brahmstaedt@gmail.com)
- Aline Eikeland (aline.eikeland@gmail.com)
- Anton Ekström (antoneks@student.chalmers.se)
- Elias Ersson (eliasersson@hotmail.com)
- Martin Jonsson (martinjonsson01@gmail.com)
Student representatives:
- Pontus Engström (pontus.cj.engstrom@gmail.com)
- William Frisk (william.hp.frisk@gmail.com)
- Isac Hansson (isachansson1218@gmail.com)
- Herman Norén (herman.noren@outlook.com)
Course Purpose
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.
Schedule
Course Literature
There is no mandatory literature for this course.
Some recommended books:
Object-Oriented Design
- E. Sciore. Java Program Design
- D. Skrien. Object-Oriented Design Using Java
Learning 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
Websites
- 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.
Course Design
- 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.
Learning Outcomes
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
Syllabus
The syllabus (kursplan) is available on the Student Portal here.
Examination Form
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.