Lectures
The handouts and materials are partly from last year's lecture (2020). Updated sides, videos, and materials will be posted as we go (and where appropriate).
- Lecture 1 (03-Sep-2021) - Introduction to Software Engineering
- Course Organization: (pdf-2021-1) (video-2021-1)
- Overview of Software Engineering: (pdf-2021-2) (video-2020-2) - video is from 2020; no significant content changes occurred since then
- Background / Motivation of Homework Assignment 1: (pdf-2021-3) (video-2020-3) - video is from 2020; no significant content changes occurred since then
- 2021 BBB Lecture Recording: can be found in Moodle
- Lecture 2 (10-Sep-2021) - Requirements Engineering I
- 2021 Slides (whole lecture): (pdf-2021)
- Videos (whole lecture - all videos cover the same subject matter content):
- 2019 Video: (video-2019) -- irrelevant materials (for 2021) have been cut out from the 2019 recording at the beginning and at the end
- 2020 Video: (zoom-video02-2020) -- note that some calendar dates mentioned in the video are incorrect because they refer to the year 2020
- 2021 BBB Lecture Recording: can be found in Moodle
- Additional Study Materials:
- Lean requirements (by Atlasssian)
- INVEST in good Stories, and SMART Tasks (by Bill Wake)
- Hints on how to write testable requirements
- A series of You Tube videos by Lars Bilde explaining the steps from first interviews with stakeholders to user stories, tasks, and sprint planning (note: these videos promote the use of the commercial tool ScrumWise - any other backlog management and sprint planning tool may be used instead):
- Initial user stories extracted from interview
- First backlog items (user stories)
- Finding more User Stories from existing User Stories (e.g., by splitting up)
- Splitting User Stories into Tasks?
- General remarks about the right level of backlog planning detail
- Planning the first (or next) sprint
- Time tracking with the Task Board
- Sprint Burndown Chart
- Lecture 3 (17-Sep-2021) - Requirements Engineering II
- 2021 Slides: (pdf-2021)
- Videos (whole lecture - all videos cover the same subject matter content):
- 2019 Video: (video-2019) -- irrelevant materials (for 2021) have been cut out from the 2019 recording at the beginning and at the end
- 2020 Video: (zoom-video03-2020) -- Note that we lost internet connection at around 50:00 min into the recording. Therefore, there is approx. 1 min in the recording where you just see my video staring into the camera and no slides. After 1 min the normal presentation continues. Also note that some calendar dates mentioned in the video are incorrect because they refer to the year 2020.
- 2021 BBB Lecture Recording: can be found in Moodle
- Additional Study Materials:
- Lecture 4 (24-Sep-2021) - Analysis
- 2021 Slides: (pdf-2021)
- Videos (whole lecture - all videos cover the same subject matter content):
- 2019 Video: (video-2019) -- irrelevant materials (for 2021) have been cut out from the 2019 recording at the beginning and at the end
- 2020 Video: (zoom-video04-2020)
- 2021 BBB Lecture Recording: can be found in Moodle
- Additional Study Materials:
- Old but still very informative summary on how to come up with a domain model: http://csis.pace.edu/~marchese/CS616/Lec5/se_l5a.htm
- UML notation: (wikipedia-link)
- Domain modelling rules - with examples: (link)
- Agile domain modelling - with example: (link)
- Seven information 'smells' of domain modelling - with example: (link)
- Lecture 5 (01-Oct-2021) - Development Infrastructure - Development/Build/Collaboration Tools - by Hina Anwar
- 2021 Slides: (pdf-2021)
- Videos (whole lecture - all videos cover the same subject matter content but with different level of detail):
- Topics:
- Basics of IDE (focus on IntelliJ IDEA) -- short recap
- Build scripts (focus on Gradle) -- short recap
- Version control (focus on Git)
- Build scripts (focus on Gradle)
- Issue tracker (focus on Bitbucket)
- Communication tools (focus on Bitbucket wiki)
- Links to descriptions/tutorials on how branching works in Git and what types of workflows are useful:
- Lecture 6 (08-Oct-2021) - Continuous Development & Integration - by Kristiina Rahkema
- 2021 Slides: (pdf-2021)
- Videos (whole lecture - all videos cover the same subject matter content):
- 2019 Video: (video-2019)
- 2021 BBB Lecture Recording: can be found in Moodle
- Lecture 7 (15-Oct-2021) - Project Estimation / Architecture and Design I
- 2021 Slides:
- (pdf-2021-EstimationWithUseCases) -- Part 1: This is a follow-up to Lecture 03 describing a method for project estimation based on Use Case models/descriptions
- (pdf-2021-Architecture&DesignIntro) -- Part 2: This is an introduction to the topic software architecture and design (will be continued in Lecture 08)
- Videos:
- 2019 Video of Part 1 & Part 2 (full lecture): (video-2019)
- 2020 Video of Part 1: (zoom-video07-2020-EstimationWithUseCases)
- 2021 BBB Lecture Recording: can be found in Moodle
- 2021 Slides:
- Lecture 8 (22-Oct-2021) - Architecture and Design II
- 2021 Slides: (pdf-2021)
- Videos (whole lecture - all videos cover the same subject matter content):
- 2019 Video: (video-2019)
- 2020 Video Part1: (zoom-video08-2020) -- The lecture does not cover the topic "Design Patterns"; I cover the topic "Design Patterns" in a separate video (see below).
- 2020 Video Part2: (zoom-video08-2020-DesignPatterns)
- 2021 BBB Lecture Recording: can be found in Moodle
- Additional Materials:
- In the Object-Oriented Programming course you probably learned already about object-oriented design principles. Here is a summary: OO design principles revisited (apologies for the spamming with advertisements)
- Two videos on software design given by Erik Jogi (Codeborne) in the course on Systems Modeling (2015):
- Part 1: http://www.uttv.ee/naita?id=22772
- Part 2: http://www.uttv.ee/naita?id=22820
- Two videos on the architectural pattern MVC:
- Here is a link to a series of mini-tutorials (~15 min each) by Derek Banas about design patterns: (link)
- Code examples:
- Code example of a simple MVC implementation in Java: MVC example
- Code example of Publisher/Subcriber pattern without Observer Pattern, with Observer Pattern, and with PropertyChangeListener (relevant since Java9): Publisher-Subscriber (Observer Pattern) example
- Examples of Java implementations of design patterns: (link)
- Example of a SW Architecture Description from a student project: Course Registration System
- Example DSSA Reference Architectures:
- Short overview of first generation Architecture Description Languages: ADLs
- Attribute-Driven Design method by SEI: ADD and ADD Example
- Software Architecture QuickGuide: Link to Guide
- Tutorial on Clean Architecture for mobile app development (Android): https://www.raywenderlich.com/3595916-clean-architecture-tutorial-for-android-getting-started#toc-anchor-002
- Lecture 9 (29-Oct-2021) - Verification and Validation (Testing) I
- 2021 Slides: (pdf-2021) - Testing Basics (rest will be covered in Lecture 10)
- Videos (2019/20 videos cover Testing Basics & Testing Levels):
- 2019 Video: (video-2019)
- 2020 Videos: (zoom-video09-2020-Part1) + (zoom-video09-2020-Part2) -- Note: Due to a broken internet connection in the middle of the lecture, two videos had to be made (the actual content of Part2 starts after 40 sec).
- 2021 BBB Lecture Recording: can be found in Moodle
- Additional Materials:
- JUnit4 tutorials with IntelliJ IDEA by Brian Fraser:
- JUnit4 Tutorial 1 -- Basics
- JUnit4 Tutorial 2 -- Testing Exceptions, Code Coverage, Test Fixtures
- JUnit5 User Guide
- JUnit4 tutorials with IntelliJ IDEA by Brian Fraser:
- Lecture 10 (05-Nov-2021) - Verification and Validation (Testing) II
- 2021 Slides: (pdf-2021) - Testing Levels & Testing Methods & Testing Types & Testing Artefacts & Metrics)
- Videos (2019/20 videos cover Testing Methods & Testing Types & Testing Artefacts & Metrics):
- 2019 Videos: (video-2019-TestingMethods+TestingTypes) (video-2019-TestingArtefacts+Metrics)
- 2020 Video: (zoom-video10-2020) -- Only the slides of section "Testing Methods" (black-box and white-box testing) were covered; for the rest see 2019 videos
- 2021 BBB Lecture Recording: can be found in Moodle
- Additional Materials:
- Link to book on TDD and ATDD (=BDD): (TDD book) -- Note: you have to create an account to be able to read all chapters (it's free of charge)
- Link to an explanation of TDD
- Link to BDD Tool Cucumber Tutorial: (Cucumber)
- The Ten Most Critical Web Application Security Risks: PDF
- Lecture 11 (12-Nov-2021) - Refactoring (and TDD)
- 2021 Slides: (pdf-2021)
- Videos (whole lecture - all videos cover the same subject matter content):
- 2019 Video: (video-2019) -- the topic "Refactoring" starts approx. at minute 33:00
- 2020 Video: (zoom-video11-2020)
- 2021 BBB Lecture Recording: can be found in Moodle
- Introduction to TDD by Scott Ambler: (TDD-Ambler)
- Introduction to TDD by Grant Winney: (TDD-Winney)
- List of Refactorings for Code Smells: (link)
- For self-study: Introductory refactoring example by Fowler: (pdf)
- (video-2017: Refactoring Demo Part 1) -- 12:15 min
- (video-2017: Refactoring Demo Part 2) -- 9:03 min
- (video-2017: Refactoring Demo Part 3) -- 6:39 min
- (video-2017: Refactoring Demo Part 4) -- 3:18 min
- (video-2017: Refactoring Demo Part 5) -- 2:48 min
- (video-2017: Refactoring Demo Part 6) -- 2:54 min
- (video-2017: Refactoring Demo Part 7) -- 5:27 min
- (video-2017: Refactoring Demo Part 8) -- 11:52 min
- Lecture 12 (19-Nov-2021) - Agile/Lean Methods
- 2021 Slides: (pdf-2021)
- Note: During the first 5 min of the lecture, Lota Vana will give a brief introduction into the Estonian Youth School (Noored Kooli) Foundation. These are her slides: NooredKooli slides - this is not part of the course materials.
- Videos (whole lecture - all videos cover the same subject matter content):
- 2019 Video: (video-2019) -- the first few minutes seem to have no sound
- 2020 Video: (zoom-video12-2020) + (zoom-video12-Kanban+Lean-2020)
- 2021 BBB Lecture Recording: can be found in Moodle
- Scrum Guide
- Agile life-cycle models
- Link to PivotalTracker for backlog management: https://www.pivotaltracker.com
- Blog entry on '7 Wastes' of Agile Software Development: (link)
- Interesting videos about the agile/lean software development approach at Spotify (13 min each):
- 2021 Slides: (pdf-2021)
- Lecture 13 (26-Nov-2021) - Agile Practice in Industry (Guest Lecture by Anton Keks, Codeborne) -- confirmed
- Lecture Topic: 'Software Craftsmanship, the Codeborne Way' - by Anton Keks (Codeborne)
- 2021 Slides: (pdf-2021)
- 2021 Video: (video-2021)
- Other materials:
- Elements of agile working at Codeborne: https://codeborne.com/2015/08/10/working-agile.html
- Codeborne promo video: https://codeborne.com/et/
- Codeborne Blog: https://codeborne.com/blog/ -- Mira is one of Dietmar's former MSc students
- Lecture 14 (03-Dec-2021) - Course wrap-up, review and exam preparation (with training quiz)
- 2021 Slides: (pdf-2021)
- 2020 Video: (video-2020)
- 2021 BBB Lecture Recording: can be found in Moodle
- There will also be a practice quiz (to prepare for the exam)!
- The quiz is voluntary and you won't get marks for it. :)
- The answers to the questions in the training quiz will be given in the lecture but will not be included in the uploaded slides.
- Lecture 15 (10-Dec-2021): Exam consultation time on request (NB: there are assessment labs during week 15)
- I will be available in BBB at the beginning of the lecture time. If nobody shows up and asks questions I will leave after 10 min.