Lectures
Note: Information on how the lectures are conducted can be found here.
The handouts and materials are partly from last year's lecture (2019). Updated sides, videos, and materials will be posted as we go (and where appropriate). The overall structure and the topics are the same as in 2019.
- Lecture 1 (04-Sep-2020) - Introduction to Software Engineering
- Course Organization: (pdf-2020-1) (video-2020-1)
- Overview of Software Engineering: (pdf-2020-2) (video-2020-2)
- Background / Motivation of Homework Assignment 1: (pdf-2020-3) (video-2020-3)
- Zoom Lecture Recording: (zoom-video01-2020)
- Lecture 2 (11-Sep-2020) - Requirements Engineering I
- 2020 Slides: (pdf-2020) + 2019 Video: (video-2019) -- irrelevant materials (for 2020) have been cut out from the 2019 recording at the beginning and at the end
- Zoom Lecture Recording: (zoom-video02-2020)
- Additional Study Materials:
- 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 (18-Sep-2020) - Requirements Engineering II
- 2020 Slides: (pdf-2020) + 2019 Video: (video-2019) -- irrelevant materials (for 2020) have been cut out from the 2019 recording at the beginning and at the end
- Zoom Lecture Recording: (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.
- Lecture 4 (25-Sep-2020) - Analysis
- 2020 Slides: (pdf-2020) + 2019 Video: (video-2019) -- irrelevant materials (for 2020) have been cut out from the 2019 recording at the beginning and at the end
- Zoom Lecture Recording: (zoom-video04-2020)
- 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 (02-Oct-2020) - Development Infrastructure - Development/Build/Collaboration Tools - by Stepan Bolotnikov, Proekspert AS
NOTE: This lecture will be run in flipped classroom mode. This means you should watch the video (and/or read the slides) before the lecture. If you have questions, post them in Slack in the general channel at the latest on the day before the lecture. During lecture time, Kristiina Rahkema will be available to answer questions (including those posted in Slack beforehand. Once the are no further questions, the lecture is over.
- 2019 Slides: (pdf-2019) + 2019 Video: (video-2019)
- Zoom Lecture Recording: (zoom-video05-2020)
- 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 (09-Oct-2020) - Continuous Development & Integration - by Kristiina Rahkema
- 2019 Slides: (pdf-2019) + 2019 Video: (video-2019)
- Zoom Lecture Recording: (zoom-video06-2020)
- Lecture 7 (16-Oct-2020) - Project Estimation / Architecture and Design I
- 2019 Slides: (pdf-2019-EstimationWithUseCases) and (pdf-2019-Architecture&DesignIntro) + 2019 Video: (video-2019)
- 2020 Slides: (pdf-2020-EstimationWithUseCases) and (pdf-2020-Architecture&DesignIntro)
- Zoom Lecture Recording: (zoom-video07-2020-EstimationWithUseCases) and (zoom-video07-2020-Architecture&DesignIntro) -- Unfortunately, there were internet problems during the lecture. Only 50% of the Architecture and Design I lecture could be recorded. For a full recording I suggest watching the 2019 video recording.
- Lecture 8 (23-Oct-2020) - Architecture and Design II
- 2019 Slides: (pdf-2019) + 2019 Video: (video-2019)
- 2020 Slides: (pdf-2020)
- 2020 Zoom lecture recording: (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 Slides (Design Patterns Part): (pdf-2020-DesignPatterns) + (video-2020-DesignPatterns)
- Additional Materials:
- 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 Architecture: MURA
- 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
- Two videos on software design given by Erik Jogi (Codeborne) in the course on Systems Modeling (2015):
- Lecture 9 (30-Oct-2020) - Verification and Validation (Testing) I
- 2019 Slides: (pdf-2019) + 2019 Video: (video-2019)
- 2020 Slides: (pdf-2020)
- 2020 Zoom 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).
- 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 (06-Nov-2020) - Verification and Validation (Testing) II
- 2019 Slides: (pdf-2019) -- the last slides of the lecture will be covered next week! + 2019 Video: (video-2019)
- 2020 Slides: (pdf-2020)
- 2020 Zoom Video: (zoom-video10-2020) -- Only the slides of section "Testing Methods" (black-box and white-box testing) were covered; the remaining slides will be covered in next week's lecture. Here is the related video clip from 2019: (video-2019-LastPart)
- 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 BDD Tool Cucumber Tutorial: (Cucumber)
- The Ten Most Critical Web Application Security Risks: PDF
- Lecture 11 (13-Nov-2020) - Refactoring (and TDD)
- 2019 Slides: (pdf-2019) + 2019 Video: (video-2019) -- the topic "Refactoring" starts approx. at minute 33:00
- 2020 Slides: (pdf-2020)
- 2020 Zoom Video: (zoom-video11-2020)
- Introduction to TDD by Scott Ambler: (TDD-Ambler)
- Introduction to TDD by Bob Martin (TDD-Martin)
- 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 (20-Nov-2020) - Agile/Lean Methods
- 2019 Slides: (pdf-2019) -- Note: the part on Lean Development will be covered in the first 10 min of Lecture 14 -- 2019 Video: (video-2019) -- the first few minutes seem to have no sound
- 2020 Slides: (pdf-2020) + (pdf-2020-Kanban-Lean-only)
- 2020 Zoom Video: (zoom-video12-2020) + (zoom-video12-Kanban+Lean-2020
- Scrum Guide
- Agile life-cycle models
- Interesting blog entry comparing Scrum with Kanban in a Finnish organisation: (link)
- 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):
- Lecture 13 (27-Nov-2020) - Agile Practice in Industry (Guest Lecture by Anton Keks, Codeborne)
- 2020 lecture: 'Software Craftsmanship, the Codeborne Way' - by Anton Keks (Codeborne)
- Slides: (pdf-2020)
- Video: (video-2020)
- 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
- 2020 lecture: 'Software Craftsmanship, the Codeborne Way' - by Anton Keks (Codeborne)
- Lecture 14 (04-Dec-2020) - Course wrap-up, review and exam preparation (with training quiz)
- 2020 Slides: (pdf-2020)
- 2020 Video: (video-2020)
- 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 (11-Dec-2020): Exam consultation time on request (NB: there are assessment labs during week 15)
- I will be available on Zoom at the beginning of the lecture time. If nobody asks shows up and asks questions I will leave after 10 min.