Course syllabus
Links: Home page • Lectures • Exercises • Laboratories • Resources
Welcome to the course on Object-Oriented Programming and Design!
The course begins with the lecture on Tuesday 1 November 10.00 in HB3. You may also attend the lecture by Zoom by going here: Zoom link for lectures (passcode: OOPD)
The lectures will be recorded, and the recording uploaded here after.
The structure of the course will be explained during the first lecture.
Note: There are no exercise sessions on Monday 31 October. The course begins with the lecture on Tuesday 1 November.
Course-PM
TDA553 Object-Oriented Programming and Design lp2 HT22 (7.5hp)
This course is offered by the Institute for Computer Science and Engineering (Data- och informationsteknik) in läsperiod 2, 2022.
This course will be taught in English.
Useful Links
- Our Slack Workspace
- Resources for Java
- Zoom link for lectures Passcode: OOPD
Contact Details
Course responsible, examiner and lecturer: Robin Adams (robinad@chalmers.se)
Teaching Assistants:
- Arthur Alexandersson
- Imad Alihodzic
- Egor Diatchkov
- William Frisk
- Isac Hansson
- Dino Hromic
- Martin Jonsson
Student representatives:
Evaluation
Minutes from Mid-Course Meeting
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. It also introduces the strongly-typed object-oriented language Java.
Schedule
Course Literature
Each week I will give readings from the following books. You don't need to buy both Schildt and Skansholm - one is enough. I list both so you can decide if you'd prefer to have a book in English or Swedish.
Martin's book is excellent and I recommend you buy a copy, because it will be useful through your whole career as a computer scientist. However, it is not mandatory to own a copy for this course.
Learning Java
- H. Schildt. Java: A Beginner's Guide - electronic version available in library
- J. Skansholm. Java Direkt med Swing - many copies of paper version available in library
Object-Oriented Design Principles
- R. Martin. Clean Architecture
- D. Skrien. Object-Oriented Design Using Java - out of print but available on this course's Yata page.
Bookmark This Website Now:
- refactoring.guru - a reference for design patterns and refactoring steps.
See also my page of classics that every software developer should read.
Course Design
Each week starts with two "modules", each consisting of an exercise session* followed by a lecture, then laboratory sessions in the second half of the week. 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.
* Week 1 has only one exercise session.
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.
- Explain concepts in object-oriented design using adequate terminology
- Communicate object-oriented design in writing, as well as visually using a graphical modelling language (UML)
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.
- Form a clear and well structured reasoning text, following basic principles for argumentation and discussion
- Identify and apply effective methods supporting an inclusive cooperation in group work
Judgement and approach
- Argue for design- and implementation choices, in accordance with principles for good object-oriented design
- Analyse and evaluate code according to sound object-oriented design and implementation principles
- Reflect over different strategies promoting an inclusive cooperation in group work
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: Conducted in groups of three students.
- Written examination: Conducted individually in the January exam period. A sample paper is available here: exam.pdf
The laboratory assignments are ungraded but must be passed to complete the course. The written assignment and examination are each graded U/3/4/5. A student's final grade is the average of their grades for the written assignment and written examination, rounding up.