Resources¶
Project Header At the top of the file containing your program’s main() method, place an `external’ block comment containing the following content.
/*=============================================================================
| Assignment: Program #[n]: [Assignment Title]
| Author: [Your Name (Your E-mail Address)]
|
| Course: Computer Science A
| Instructor: [title, first-initial of the given name, Surname (Ex. Dr. J. Smith) ]
| Due Date: [Due Date and Time]
|
| Description: [Describe the program's goal, IN DETAIL.]
|
| Language: Java version 8
| Ex. Packages: [List names and sources of all external packages
| required by this program.]
|
| Deficiencies: [If you know of any problems with the code, provide
| details here, otherwise clearly state that you know
| of no unsatisfied requirements and no logic errors.]
*===========================================================================*/
Replit.com¶
By default, Replit uses Main as the main class. To change the Main class name to a class name of your choosing, create a new file within replit and call it .repl. Within the file type the following:
run="sh main.sh"
javac NewClass.java # whatever that file is java NewClass
Lastly, make sure that the Main class is label correctly! In this instance it will be called NewClass.
Another method that you may find useful within replit is that you can create different programs and have them execute on the Main.java page.
public class Main {
public static void main(String[] args) {
ProgramOne.main(args);
ProgramTwo.main(args);
ProgramThree.main(args);
}
}
Example of this in use can be found here. Use this format for Assignment 2 and all future programs where you are asked to create two different programs.
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.Period;
public class DateTimeExample {
public static void main(String[] args) {
printLocalDate();
printLocalTime();
printLocalDateTime();
printFormattedDateTime();
calculatePeriod();
}
// Method to demonstrate LocalDate
public static void printLocalDate() {
LocalDate date = LocalDate.now();
System.out.println("Current Date: " + date);
}
// Method to demonstrate LocalTime
public static void printLocalTime() {
LocalTime time = LocalTime.now();
System.out.println("Current Time: " + time);
}
// Method to demonstrate LocalDateTime
public static void printLocalDateTime() {
LocalDateTime dateTime = LocalDateTime.now();
System.out.println("Current Date and Time: " + dateTime);
}
// Method to demonstrate formatting LocalDateTime
public static void printFormattedDateTime() {
LocalDateTime dateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = dateTime.format(formatter);
System.out.println("Formatted Date and Time: " + formattedDateTime);
}
// Method to demonstrate Period
public static void calculatePeriod() {
LocalDate startDate = LocalDate.of(2020, 1, 1);
LocalDate endDate = LocalDate.now();
Period period = Period.between(startDate, endDate);
System.out.println("Period between " + startDate + " and " + endDate + ": " + period.getYears() + " years, " + period.getMonths() + " months, and " + period.getDays() + " days");
}
}
Date and Time Functions¶
Name |
Description |
---|---|
ADDDATE() |
Add time values (intervals) to a date value |
ADDTIME() |
Add time |
CONVERT_TZ() |
Convert from one time zone to another |
CURDATE() |
Return the current date |
CURRENT_DATE(), |
Synonyms for CURDATE() |
CURRENT_TIME(), |
Synonyms for CURTIME() |
CURRENT_TIMESTAMP(), |
Synonyms for NOW() |
CURTIME() |
Return the current time |
DATE() |
Extract the date part of a date or datetime expression |
DATE_ADD() |
Add time values (intervals) to a date value |
DATE_FORMAT() |
Format date as specified |
DATE_SUB() |
Subtract a time value (interval) from a date |
DATEDIFF() |
Subtract two dates |
DAY() |
Synonym for DAYOFMONTH() |
DAYNAME() |
Return the name of the weekday |
DAYOFMONTH() |
Return the day of the month (0-31) |
DAYOFWEEK() |
Return the weekday index of the argument |
DAYOFYEAR() |
Return the day of the year (1-366) |
EXTRACT() |
Extract part of a date |
FROM_DAYS() |
Convert a day number to a date |
FROM_UNIXTIME() |
Format Unix timestamp as a date |
GET_FORMAT() |
Return a date format string |
HOUR() |
Extract the hour |
LAST_DAY |
Return the last day of the month for the argument |
LOCALTIME(), |
Synonym for NOW() |
LOCALTIMESTAMP, |
Synonym for NOW() |
MAKEDATE() |
Create a date from the year and day of year |
MAKETIME() |
Create time from hour, minute, second |
MICROSECOND() |
Return the microseconds from argument |
MINUTE() |
Return the minute from the argument |
MONTH() |
Return the month from the date passed |
MONTHNAME() |
Return the name of the month |
NOW() |
Return the current date and time |
PERIOD_ADD() |
Add a period to a year-month |
PERIOD_DIFF() |
Return the number of months between periods |
QUARTER() |
Return the quarter from a date argument |
SEC_TO_TIME() |
Converts seconds to ‘hh:mm:ss’ format |
SECOND() |
Return the second (0-59) |
STR_TO_DATE() |
Convert a string to a date |
SUBDATE() |
Synonym for DATE_SUB() when invoked with three arguments |
SUBTIME() |
Subtract times |
SYSDATE() |
Return the time at which the function executes |
TIME() |
Extract the time portion of the expression passed |
TIME_FORMAT() |
Format as time |
TIME_TO_SEC() |
Return the argument converted to seconds |
TIMEDIFF() |
Subtract time |
TIMESTAMP() |
With a single argument, this function returns the date or datetime expression; with two arguments, the sum of the arguments |
TIMESTAMPADD() |
Add an interval to a datetime expression |
TIMESTAMPDIFF() |
Return the difference of two datetime expressions, using the units specified |
TO_DAYS() |
Return the date argument converted to days |
TO_SECONDS() |
Return the date or datetime argument converted to seconds since Year 0 |
UNIX_TIMESTAMP() |
Return a Unix timestamp |
UTC_DATE() |
Return the current UTC date |
UTC_TIME() |
Return the current UTC time |
UTC_TIMESTAMP() |
Return the current UTC date and time |
WEEK() |
Return the week number |
WEEKDAY() |
Return the weekday index |
WEEKOFYEAR() |
Return the calendar week of the date (1-53) |
YEAR() |
Return the year |
YEARWEEK() |
Return the year and week |
SCRUM¶
SCRUM is an Agile framework used to manage complex product development. It emphasizes iterative progress, collaboration, and adaptability. Here’s a breakdown of the SCRUM phases, along with documentation that should be created or maintained during each phase:
1. Backlog¶
What happens:
The Product Owner creates and manages the Product Backlog, which is a prioritized list of features, enhancements, bug fixes, or technical improvements that need to be done for the project. These items are usually called Product Backlog Items (PBIs).
The team collaboratively refines the backlog, breaking larger tasks into smaller, actionable pieces.
Documentation:
Product Backlog: A list of all desired work items.
Backlog Refinement Notes: Any changes or additional information added during backlog grooming meetings.
2. Sprint¶
What happens:
A Sprint is a time-boxed period, typically 1–4 weeks, where a specific set of work items from the backlog are worked on.
During Sprint Planning, the team selects high-priority backlog items to work on during the sprint. They break down these tasks into actionable steps.
The Scrum Master facilitates the session, ensuring the team has everything they need to succeed.
Documentation:
Sprint Backlog: The set of items from the product backlog that will be worked on during the sprint.
Sprint Goal: The objective the team aims to achieve during the sprint.
Task Breakdown: A detailed breakdown of the selected work items into smaller tasks.
3. To-Do¶
What happens:
The To-Do list is typically a section of the Sprint Backlog that contains tasks the team has planned to start but hasn’t yet worked on. It provides visibility into upcoming tasks for the sprint.
These tasks are often broken down into smaller actionable items that are easy to track.
Documentation:
Sprint Backlog: This document should list all tasks that have yet to be started during the sprint.
Task Descriptions: Clear descriptions of each individual task to avoid confusion.
4. Doing¶
What happens:
The team works on the tasks they selected during Sprint Planning. This is the “doing” phase, where active development occurs. Each task is moved from To-Do to Doing as work begins.
The team often has daily Stand-up (Daily Scrum) meetings to sync up on progress, address blockers, and adjust plans.
Documentation:
Task Updates: As work progresses, team members update task status, adding notes on progress, challenges, and next steps.
Burndown Chart: A visual representation of remaining work in the sprint, showing the team’s progress.
5. Review¶
What happens:
At the end of the sprint, a Sprint Review meeting occurs where the team demonstrates the work completed during the sprint. This is done for the stakeholders, including the Product Owner.
The team discusses what went well, challenges faced, and what wasn’t completed.
Documentation:
Sprint Review Notes: A document or presentation summarizing the work completed, feedback from stakeholders, and any items that need to be adjusted.
Completed Product Backlog Items: Items that were completed during the sprint and can potentially be shipped or deployed.
Release Notes (optional): If the product is being released after the sprint, this includes updates and changes made during the sprint.
6. Done¶
What happens:
The Sprint Retrospective is a meeting held after the Sprint Review, where the team reflects on the sprint itself. The focus is on process improvement—what worked well, what didn’t, and how things can be improved in future sprints.
The team agrees on actions to take in the next sprint to improve their processes and work together more effectively.
Documentation:
Sprint Retrospective Notes: Actionable items from the retrospective that are intended to improve the team’s workflow.
Action Items: Specific improvements or adjustments the team will make in the next sprint.
Overall SCRUM Documentation Considerations:¶
Product Backlog: The entire product roadmap, which evolves throughout the project.
Sprint Backlog: More focused on a particular sprint’s work.
Burndown Chart: Tracks work completion over time.
Sprint Review and Retrospective Notes: Helps the team stay aligned and continuously improve their processes.
Definition of Done (DoD): The criteria that must be met for work to be considered “done,” typically agreed upon by the team during the retrospective.
SCRUM emphasizes continuous inspection and adaptation, so while documentation exists, it is generally minimal and lightweight compared to traditional project management approaches. The focus is on delivering working software and having efficient communication rather than producing heavy documentation.
SCRUM Master¶
The Scrum Master is a key role in the Scrum framework, responsible for ensuring that the Scrum process is being followed and facilitating the smooth functioning of the Scrum team. While the Scrum Master does not have authority over the team members, their primary focus is on enabling the team to be as effective as possible in delivering the product increment.
Roles and Responsibilities of a Scrum Master:¶
1. Facilitator of Scrum Events:¶
The Scrum Master is responsible for ensuring that Scrum ceremonies (also called events) are effectively planned, organized, and conducted. These include:
Sprint Planning: Helping the team define the goals and scope for the sprint.
Daily Standups (Daily Scrum): Ensuring these daily meetings are brief, focused, and effective.
Sprint Review: Ensuring the team demonstrates the work done during the sprint to stakeholders and gathers feedback.
Sprint Retrospective: Facilitating discussions on what went well, what could be improved, and how the team can improve in the next sprint.
2. Removing Impediments:¶
One of the key responsibilities of the Scrum Master is to identify and remove any obstacles (also called impediments) that are preventing the team from achieving their goals. These can be external (e.g., organizational barriers, technical issues) or internal (e.g., team dynamics or communication problems).
3. Shielding the Team:¶
The Scrum Master protects the team from external disruptions, distractions, and interferences. For example, they might shield the team from unnecessary meetings or requests from stakeholders that can disrupt the team’s focus.
4. Coach and Mentor:¶
The Scrum Master helps the team understand and apply Scrum principles, practices, and values. They are responsible for fostering a culture of continuous improvement, helping team members improve their skills, and guiding them in becoming more self-organizing.
The Scrum Master might also help the Product Owner understand the Scrum process and how to work effectively with the team.
5. Promoting Collaboration and Communication:¶
Scrum Masters encourage open communication and collaboration among team members and between the team and stakeholders. This includes fostering a positive, transparent, and respectful environment for both technical and non-technical discussions.
They also help facilitate better relationships between the Development Team, Product Owner, and other stakeholders.
6. Ensuring Adherence to Scrum Practices:¶
The Scrum Master helps ensure that Scrum practices are being followed properly. While they don’t directly manage the team, they provide guidance to the team on how to implement Scrum principles and how to maintain focus on the team’s goals.
7. Continuous Improvement (Kaizen):¶
Scrum Masters facilitate continuous improvement by encouraging team members to reflect and learn from each sprint. This is primarily done in Sprint Retrospectives but should also be part of the team’s daily mindset. They encourage experimentation and help the team adopt practices that improve performance and delivery.
8. Helping the Product Owner:¶
The Scrum Master assists the Product Owner in managing the product backlog by ensuring that it is well-formed, prioritized, and understood by the team. They help the Product Owner understand how to manage stakeholders’ expectations and assist with refining the backlog when necessary.
9. Building Self-Organizing Teams:¶
The Scrum Master works to build a self-organizing and high-performing team. This means fostering a culture where team members collaborate, solve problems together, and take responsibility for their work without micromanagement.
10. Promoting Transparency:¶
Transparency is one of the pillars of Scrum. The Scrum Master helps ensure that the team’s progress, work, and obstacles are visible to everyone involved. They use tools like Scrum boards, burn-down charts, and sprint reviews to facilitate this transparency.
11. Facilitating Cross-Functional Team Collaboration:¶
A Scrum team is cross-functional, meaning the team members possess various skills that allow them to complete work without relying heavily on other teams or departments. The Scrum Master encourages collaboration and coordination within the team and ensures that team members have the resources and support they need to perform their tasks.
Key Skills and Traits of a Scrum Master:¶
Strong Communication Skills: To facilitate discussions, manage conflicts, and encourage collaboration.
Problem-Solving Abilities: To identify and remove obstacles and provide solutions.
Servant Leadership: They act as a servant leader, helping the team succeed without directly controlling or managing them.
Knowledge of Scrum and Agile: A deep understanding of Scrum principles and the ability to coach others.
Patience and Empathy: Scrum Masters should be patient and empathetic, understanding team members’ concerns and working to resolve issues.
In summary, the Scrum Master’s role is to serve the team and the organization by facilitating the Scrum process, removing impediments, and helping the team improve and be more productive. They do not manage or control the team, but rather act as a coach and facilitator, ensuring that the Scrum framework is being used effectively.