Seminar sylabus PV260 (Groups 01, 02)
RNDr. Stanislav Chren, Ph.D.
Seminar sylabus PV260 (Groups 01, 02)
Info
Období
jaro 2020
Kapitola obsahuje:
3
PDF
1
Studijní text
Učitel doporučuje studovat od 17. 2. 2020 do 23. 2. 2020.
Kapitola obsahuje:
1
Studijní materiály
1
Studijní text
Učitel doporučuje studovat od 24. 2. 2020 do 8. 3. 2020.
Kapitola obsahuje:
2
PDF
2
Studijní materiály
1
Video
1
Studijní text
Učitel doporučuje studovat od 9. 3. 2020 do 20. 3. 2020.
Kapitola obsahuje:
1
Studijní materiály
1
Video
1
Studijní text
Učitel doporučuje studovat od 23. 3. 2020 do 5. 4. 2020.
Kapitola obsahuje:
4
PDF
1
Studijní materiály
1
Video
1
Studijní text
1
Web
Učitel doporučuje studovat od 6. 4. 2020 do 19. 4. 2020.
Seminar 6 - Refactoring/TDD II
Učitel doporučuje studovat od 27. 4. 2020 do 3. 5. 2020.
Kapitola obsahuje:
1
PDF
1
Studijní materiály
1
Studijní text
1
Web
Učitel doporučuje studovat od 4. 5. 2020 do 17. 5. 2020.

Seminar 1 - Introduction, Essential tools

The content of the seminar sessions

The purpose of the seminars is to provide hands-on experience with the topics discussed in the lectures. The seminar content will cover various areas of code refactoring, testing, and static code analysis. The students will analyse and optimize multiple software quality attributes, such as reliability, maintainability, testability or performance with the help of modern open-source tools. The students will work in pairs on exercises during the seminars and on larger assignments (projects) at home. The attendance on the seminars is mandatory. Although, the seminars focus on the Java programming language, the principles discussed in the seminars are generally applicable also in other languages and environments.

Requirements

The maximum number of points to be obtained in the course is 100 and the required minimum for passing is 70. The distribution of the points is as follows:

  • Active participation in lectures: 10 points
  • Achievements in seminars (completing bonus tasks, nice solutions, extra activity etc.): 10 points
  • Projects: 45 points
    • Assignment 1 (Refactoring): 15 points
    • Assignment 2 (Testing): 15 points
    • Assignment 3 (Performance testing, Static Code Analysis): 15 points
    • Special evaluation assignment
  • Final colloquium assessment: 35 points
An additional requirement for passing the course is the completion of all assignments from the seminars.

Penalties

  • Every second (and afterward) unexcused absence (note that one is allowed, and the first seminar session does not count):
    • -7 points.
  • Late submission of project or assignment:
    • -3 points for each team member per day overdue.

Time Schedule:

  • 18.2. [java1+java2] Introduction - maven, git, branching
  • 25.2. [java2] Clean code, SOLID
  • 3.3.   [java1] Clean code, SOLID
  • 10.3. [java2] Code smells, refactoring
  • 17.3. [java1] Code smells, refactoring
  • 24.3. [java2] JUnit extensions, data-driven testing, Mockito, TDD   
  • 31.3. [java1] JUnit extensions, data-driven testing, Mockito, TDD      
  • 7.4.   [java2] Test plan, risk analysis, web app testing, Selenium, Issue processing,  
  • 14.4. [java1] Test plan, risk analysis, web app testing, Selenium, Issue processing,
  • 21.4. [java2]  Profiling, performance testing, Perfcake
  • 28.4. [java1]  Profiling, performance testing, Perfcake
  • 5.5.   [java2] Static Code Analysis,  Checkstyle, Continuous integration, code review
  • 12.5. [java1]  Static Code Analysis Checkstyle, Continuous integration, code review

Projects

  • There will be three larger assignments (separate mini-projects)
  • First will focus on code refactoring, second on unit testing and third on the performance testing and static code analysis
  • The deadline for each assignment will be 2-3 weeks
  • Students will work in pairs
  • Each project will have a set of optional (and more challenging) tasks, whose completion will be awarded by bonus points
  • Additionally, there will be two special coding tasks. The first one will be introduced at the first seminar. Its purpose will be to evaluate students' current ability to write good quality code. The second one will be assigned at the last seminar. Its goal will be to evaluate the improvement of students' coding skills as a result of the course enrollment.

Basic study sources

Books

  • Clean Code: A Handbook of Agile Software Craftsmanship
    • Robert C. Martin
    • Link
  • Clean Architecture: A Craftsman's Guide to Software Structure and Design
    • Robert C. Martin
    • Link
  • Refactoring to Patterns
    • Joshua Kerievsky
    • Link
  • Refactoring: Improving the Design of Existing Code
    • Martin Fowler
    • Link
  • xUnit Test Patterns: Refactoring Test Code
    • Gerard Meszaros
    • Link

Web

Tutorials

Initial evaluation assignment

Seminar 2 - Clean Code, SOLID principles

Clean Code

SOLID

Bomberman exercise

Initial evaluation assignment survey


Hangouts links

Seminar 3 - Refactoring

Refactoring

Demo example - RegEx Fractal

Refactoring exercise

  • Download the exercise project from
  • It contains three exercises, each in separate package
  • For each exercise, refactor the source code. Start with EquationSolver, if there is enough time, continue with Floodfill
  • To find out, what the projects do, look at the tests (EquationSolver/Floodfill projects).
  • Do not modify the tests during the refactoring 

Assignment 1: Code Refactoring

Further Reading

Google Meet

Video recording of the session

Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/jaro2020/PV260/um/seminars/java_groups/seminar_3/video/refactoring-seminar-lasaris-2020.sbv

Seminar 4 - Testing, TDD, Mockito

Testing

JUnit Extensions

Mockito

Test Driven Development

Seminar 5 - Testing, Issue processing

We will work with Socrative because of remote style of teaching. Please go there, fill the provided classroom name and wait for the instructions given by the lecturer. If you will be accidentaly signed out during the seminar, no problem. Just go there again and fill the same nickname as previous time. It will allows you to continue in the work. 

Archive

Record of the seminar (14. 4. 2020)

Socrative answers from exercises (both groups)

Materials

1/3 Test Plans

PV260_Test-Plans_2020.pdf
PDF ke stažení

2/3 Issue tracking

PV260_Issue-tracking_2020.pdf
PDF ke stažení

3/3 Selenium (IDE + WebDriver)

PV260_Selenium_2020.pdf
PDF ke stažení

Assignment 2: Testing

Assignment2.pdf
PDF ke stažení
Seminar 6 - Refactoring/TDD II

Seminar 6 - Refactoring/TDD II

Obsah není zveřejněný.

Seminar 7 - Static Code Analysis, Code review, Continuous integration

Archive

Socrative answers from exercises (both groups)


Checkstyle


Code review, Continuous integration

We will work with Socrative because of remote style of teaching. Please go there, fill the provided classroom name and wait for the instructions given by the lecturer. If you will be accidentaly signed out during the seminar, no problem. Just go there again and fill the same nickname as previous time. It will allows you to continue in the work. 

PV260-Seminar-7.pdf
PDF ke stažení

Assignment 3

Final Evaluation Assignment