<!--
Study materials and lab tasks will be posted here.
-->
The only due item this week is your Peer Assessment 4 feedback on the design documents you have received, due on Wednesday, April 7.
You should of course be working towards completing your project so you can present all its features at the last progress report meeting that will take place this week.
There is no lab task, but the TAs will be available for any make up lab tasks necessary.
Our topic this week is refactoring. As everybody is certainly busy, it is an optional topic.
If you do not know how to rename variables in Eclipse using the refactoring facilities, I highly recommend watching the first part of this short video.
For more on refactoring, you can watch this instructor video on it. Feel free to do this after the term is finished.
There is no lab task, but the TAs will be available for any make up lab tasks necessary.
There are two things due this week:
Our topic this week is debugging. Start by watching these two videos on debugging in Eclipse: 1. Breakpoints 2. Debugging
When using Gradle, the process is a bit more involved, so next watch this instructor video on how to set up Gradle for debugging. The code in the video is in the JavaFXSample project in this github repository.
Your team should divide the bug reports you received last week among the team members. You should respond to all the bug reports assigned to you on github.
Choose one of the bug reports assigned to you. Use the debugging facilities of Eclipse (set breakpoints, step through etc) to trace the source of the bug and fix it. Demonstrate the above process to the TA (revert to a commit that still has the bug to demonstrate if necessary).
There are two things due this week that are both related to bug reporting:
Our topic this week is bug reporting. Start by watching Section 4 (Bug Reporting) of this online course.
For the bug reports that you will create this week, use the list of sections in this video. You should also add the input you tested with as an attachment, and list which MusicXML viewer(s) you tested with.
If you'd like to learn more about bug reports, this is a great but longer online course. If you have time for only one video from it, watch this one.
Choose one of the bug reports you created this week, demonstrate to the TA the incorrect behaviour, and present the bug report.
There are two things due this week:
This week we take a look at testing again. These slides discuss the two topics we will focus on:
Demonstrate to the TA the code coverage for the part of the code that you are responsible. Briefly discuss how you plan to improve the coverage of your tests.
The only thing due this week is the lab task below.
Optional but recommended: For Peer Assessment 2, rate the feedback you received (as a team), and/or rate your group members on their contributions until the midterm submission.
The final submission will be similar to the midterm submission, except it will also contain a Design Document (worth 20% of the final submission). Our target this week is to start working on this document by creating diagrams describing the system you are developing.
Start by watching this online course on UML and its diagrams. Focus on the following types of diagrams: activity, class, sequence, and object. Study other types of diagrams for your own interest.
Select a tool that you will use for such kind of diagrams (as a software engineer you'll have to do these quite often). You can use any number of tools (see complete list below) including dedicated UML tools, such as PlantUML, or drawing tools with UML support such as diagrams.net.
These slides present the purpose of the design document and emphasize some of the points made in the course as well.
You may also find useful these tutorials on different kinds of UML diagrams, as well as this list of UML tools.
Each student must draw two diagrams describing an aspect of the system.
The two diagrams cannot be of the same type. Choose two of the following types of diagrams: activity, class, sequence, and object.
Groupmates can choose the same type of diagram but they must describe a different part of the system, e.g. one prepares a sequence diagram related to input parsing, another prepares a sequence diagram related to MusicXML creation.
Describe both diagrams to the TA in the lab session.
The only due item this week is the midterm project submission for the project, which is due on Sunday, February 28 at 11:59pm. Submission instructions can be found in these slides.
There is no study material or lab task due this week. Any student that has missed a lab task will have a chance to re-take it during the Wednesday meeting (first come - first serve).
The progress report meetings for this week will be your chance to present your midterm submission to your instructor and, perhaps more importantly, to the TA that will mark it. It is recommended that you practice your presentation before the meeting so you can highlight all the cool features of your app, while showing all important use cases.
No lab task this week. The TAs will be available at the usual time for any make-up lab tasks required.
This week lasts for two weeks due to Reading Week. There is a lab task due on the Wednesday after Reading Week as usual. The second peer assessment will take place over the space of these two weeks:
By Wednesday, February 17, submit a prototype + User Manual of your system as a team. Make sure that your instructions are clear so that your peers can run your prototype successfully. Note that you are not being graded on the quality of your prototype at this point. This is for you to receive feedback on what you have done so far.
By Wednesday, February 24, each student has to submit feedback on the prototypes and User Manuals that are assigned to them in PeerScholar. A rubric for how your feedback will be graded has been added to the Assess Phase description.
Our target this week is to start using Gradle to build our system, run our tests, and manage any library dependencies.
Start by watching this instructor video, on how to set up your Gradle build script in Eclipse. This should be all you need in order to use Gradle in your system so that your peers can run your system without worrying about library dependencies. The build script developed in the video is here. Replace the one in your system with it, and customize the main class name.
These slides present the main points about Gradle made in the video as well.
For more information on Gradle, this online course on Gradle basics, and this course on Gradle and Java will help you understand how to write Gradle build scripts, and what is happening behind the scenes. These courses do not use Eclipse, so focus on concepts rather than syntax.
For this week's lab task, you must complete the transition to using Gradle for your system. Demonstrate building and running your system using Gradle under Eclipse to the TA.
Apart from the usual lab task due during Wednesday's meeting, this week each student has to submit feedback on the Requirements Documents that are assigned to them in PeerScholar. A rubric for how your feedback will be graded has been added to the Assess Phase description.
Our target this week is to start on our system's testing. The system you are developing in this course must be fully tested. We will use the JUnit framework to do this.
Start by going through this online course. Focus on these videos: 1-5, 7-12, 14-17. You can ignore videos 6 and 13 on Maven. We will discuss Gradle and JUnit next week. Maven and Gradle projects have the same folder structure, so the rest of the course applies to our course. Videos 18 and after are more advanced features of JUnit that are good to know but not necessary for this course.
These slides present the main points about JUnit as well. To get the Counter example, check out the EECS 2311 project from https://github.com/biltzerpos/TeachingCode
You can find detailed information about JUnit 5 in its official documentation (use only as reference).
For this week's lab task, write 3 separate JUnit test cases for some of the code you have developed so far for the project. Describe them to the TA and demonstrate running them.
If your code is not easy to test (e.g. you have been working on the GUI), you can develop test cases for a part of the system written by one of your teammates.
Apart from the usual lab task due during Wednesday's meeting, this week your team has to submit a first draft of the Requirements Document. See the Peer Assessment link in eClass for more details.
Our target this week is to finish the material on git by learning about git workflows, as well as to learn what goes in a requirements document, including use cases and user stories.
First off, for those of you still unsure about merges, when do they fail, what is a fast-forward merge etc, you might find this explanation helpful.
Next, we will learn about a method to organize the branches in our repository called Gitflow. Read the original description, as well as this explanation.
These slides present the main points from the above links, and describe how branches must be organized in EECS 2311.
Next, complete Sections 2 and 3 of this course (login with Passport York credentials). It is a very nice introduction to requirements and use cases. I particularly like the fact that clarity is emphasized over formality. For your Requirements document, also focus on a clear set of requirements and use cases without worrying about including all possible sections or following a particular format.
Prior to the lab task demonstration, your team must organize the branches in your repository as outlined in the slides above.
For the lab task, demonstrate committing to your personal branch, then merging the changes to the develop branch, and finally pushing both the develop branch and your personal branch to github. To avoid conflicts, remember to pull the develop branch just before starting your demonstration.
Only the lab task is due at the end of the week. The week after you will be submitting a first draft of the Requirements Document for the system, so you get started on it.
Our target this week is to learn how to work with branches in git, including resolving conflicts when they arise.
Start by completing this course (login with Passport York credentials). It is a very nice, detailed introduction to local and remote branches, including resolving conflicts. Even though this course is using git in the command-line fashion, it is important to understand it thoroughly. A lot of the command-line terminology shows up in Eclipse. If you are pressed for time, you can skip Section 5 on stashing changes, although it is a powerful tool you should learn how to use at some point.
Once you have completed the course above, watch this instructor video on how to do some of the command-line operations in Eclipse, using Egit. You can find the Egit documentation through Eclipse (Help → Help Contents). This tutorial is also quite helpful (you might want to become familiar with the way Egit decorates icons - scroll towards the end of the tutorial).
Finally, this is not required studying, but this is a handy page that lists everything you might need to remember about command-line git. It includes instructions on how to make your README file on github look nice.
For this lab task, you will join the TA in groups of 2 or 3. Demonstrate creating a conflict by editing the same file at the same time. After one student pushes the update to the team repository, another must pull and resolve the conflict in any way they see fit. Each student must demonstrate the process of resolving the conflict.
Only the lab task is due at the end of the week.
Our target this week is to learn the basics of git and github.
Start by making sure that all team members have completed the setup demonstrated in lecture. These slides list all the steps for that setup. A video of the instructor going through these steps can be found here. Added January 19: A short video on resolving .classpath conflicts.
Next, read the first three chapters of the Pro Git Book. Focus on the concepts of version control, not the command-line syntax, as we will use git through Eclipse. This set of slides describes the important concepts from these chapters as well.
For those of you that prefer videos to reading, this course is a great introduction to git (login with Passport York credentials). It also focuses on the command-line syntax of git which will not be a focus in this course, so focus more on the version control concepts.
Prior to meeting the TA, ensure that your group repository contains a change to one of the files that does not exist on your machine (ask a teammate to push a change).
Demonstrate pulling the change, making a new change, and pushing it to the online repository.
Topic: Course Introduction
Slides: Module 0 - Course Introduction
<!--
===== Week 1 =====
Topic: Introduction to the project
{{:module01-projectintroduction.pdf|Module 1 - Project Introduction}}
[[http://www.paulowe.com/venn_diagram_061119/activity.html|Example Venn diagram tool]]
===== Week 2 =====
Topic: Version Control
Slides: {{:module02-git.pdf|Module 2 - Version Control}}
Useful links:
[[https://book.git-scm.com/book/en/v2|Pro Git ebook]]
[[http://www.vogella.com/tutorials/EclipseGit/article.html|EGit tutorial]]
===== Week 3 =====
Topics: Gitflow
Slides: {{:module03-gitflow.pdf|PDF}}
Useful links:
[[https://www.campingcoder.com/2018/03/git-merges-demystified/|Git Merges Demystified]]
[[https://nvie.com/posts/a-successful-git-branching-model/|Original Gitflow description]]
[[https://www.campingcoder.com/2018/04/how-to-use-git-flow/|Another Gitflow description]]
===== Week 4 =====
Topics: Test-Driven Development, JUnit
Slides: {{:module04-junit.pdf|PDF}}
Code: Check out the EECS 2311 project from [[https://github.com/biltzerpos/TeachingCode|https://github.com/biltzerpos/TeachingCode]]
Useful links:
[[https://junit.org/junit5/docs/current/user-guide/| JUnit 5 documentation]]
===== Week 5 =====
Topics: Test code coverage, GUI Testing
Slides: {{:module05-testcodecoverage.pdf|PDF}}
GUI Testing example in the [[https://github.com/biltzerpos/TeachingCode|EECS 2311 github repository]]
===== Week 6 =====
Topics: Midterm Submission
Slides: {{:module06-midtermsubmission.pdf|PDF}}
===== Week 7 =====
Topics: New project requirements, Continuous Deployment
Slides: {{:module07-continuousdeployment.pdf|PDF}}
[[https://github.com/biltzerpos/counterci|Github repo with continuous deployment]]
===== Week 8 =====
Topics: Design Documentation
Slides: {{:module08-designdocumentation.pdf|PDF}}
[[http://www.tracemodeler.com/articles/a_quick_introduction_to_uml_sequence_diagrams/|Sequence diagram tutorial 1]]
[[https://online.visual-paradigm.com/tutorials/sequence-diagram-tutorial/|Sequence diagram tutorial 2]]
[[http://en.wikipedia.org/wiki/List_of_Unified_Modeling_Language_tools|List of UML tools]]
===== Week 9 =====
Topics: Issue tracking
Slides: {{:module09-issuetracking.pdf|PDF}}
[[https://developer.mozilla.org/en-US/docs/Screening_duplicate_bugs | How to find reported bugs]]
[[https://bugs.eclipse.org/bugs/query.cgi|Search for Eclipse bugs]]
===== Week 10 =====
Topics: Debugging
Slides: {{:module10-debugging.pdf|PDF}}
===== Week 11 =====
Topics: Refactoring
Slides: {{:module11-refactoring.pdf|PDF}}
===== Week 12 =====
Final Submission
Slides: {{:module12-finalsubmission.pdf|PDF}}
-->