Skip to content

Commit

Permalink
Merge branch 'main' into longest_word
Browse files Browse the repository at this point in the history
  • Loading branch information
ozgurozbekuk authored Jan 16, 2025
2 parents 3ec3318 + cedd98b commit ed891a0
Show file tree
Hide file tree
Showing 15 changed files with 696 additions and 16 deletions.
155 changes: 144 additions & 11 deletions collaboration/retrospective.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,156 @@
<!-- this template is for inspiration, feel free to change it however you like! -->

# Retrospective
# Project Retrospective: The Matrix 🕶️

## Stop Doing
## Project Highlights 🌟

## Continue Doing
### 1. What Went Well during the project? ✅

## Start Doing
- **Collaboration Successes** 🤝

## Lessons Learned
The team worked cohesively, leveraging each other’s strengths to accomplish
project goals.Effective communication and collaboration ensured
tasks were completed efficiently.

______________________________________________________________________
- **Supportive Environment** 💪
A strong sense of mutual support within the team helped overcome
challenges and maintain momentum throughout the project.

## Strategy vs. Board
- **Tools and Workflows** 🛠️

### What parts of your plan went as expected?
- Despite initial learning curves, the team successfully mastered the use of
the project board to organize and manage tasks efficiently by the end of the
project.
- The team collaborated effectively on GitHub, utilizing pull requests (PRs)
for thorough code reviews and ensuring high code quality.

### What parts of your plan did not work out?
- **Regular Updates** 🔄

### Did you need to add things that weren't in your strategy?
Regular stand-ups and progress updates kept everyone aligned,
ensuring clarity on priorities and reducing misunderstandings.

### Or remove extra steps?
### 2. Achievements 🏆

**Over 300 commits were achieved in under two weeks**, showcasing the team’s
efficiency and dedication. Furthermore, **the team mastered GitHub workflows**,
such as pull requests and code reviews, while **enhancing collaboration and**
**teamwork skills** through the effective use of communication and task management
tools.

---

## Stop Doing 🚫

- Resolving merge conflicts independently without collaborating to
ensure all changes are integrated smoothly.
- Submitting code without thorough testing, which led to integration issues.
- Writing overly technical descriptions in issue tickets, making it difficult
for non-programmers to understand.
- Spending too much time solving problems independently
instead of seeking help when needed.

---

## Continue Doing ✅

- Maintaining mutual support and collaboration.
- Documenting progress to ensure transparency and alignment within the team.
- Regularly using GitHub to track progress and organize tasks,
leveraging branches and pull requests for better organization.
- Using majority rule through polls to resolve differences of opinion.

---

## Start Doing 🚀

- Utilize GitHub’s discussion feature more effectively in future projects.
- Systematically record key learnings in the notes document.
- Keep track of changes that impact the entire group.
- Delete obsolete branches promptly after pull request reviews.
- Establish higher standards for pull requests, testing, and communication.

---

## Challenges Encountered ⚠️

### Key Pain Points 🔑

- Communication and coordination difficulties.
- Technical issues, such as pull request problems and CI check failures.
- Challenges in maintaining consistency across the codebase.

### Specific Examples 📌

- Availability challenges: Team members were not always
available simultaneously, causing occasional delays.
- Misalignment in task requirements and expectations, leading to inefficiencies.
- Early misuse of the project board hindered task organization.
- Frustrations with resolving merge conflicts and CI failures.
- Instances of working on the wrong project or branch, resulting in delays and corrections.
- Some team members encountered communication barriers, including challenges in
conveying desired code changes effectively due to language differences.
- Connectivity issues limited access to essential online resources.

---

## Lessons Learned 🎓💡

### Insights Gained 🔍

- Developed a deeper understanding of effective code review practices.
- Enhanced proficiency in GitHub workflows and tools.
- Recognized the importance of constructive feedback and clear communication
for collaboration success.

### Specific Learnings 📚

- Improved communication skills, enabling clearer expression of ideas and insights.
- Learned to request code changes effectively and provide precise,
constructive feedback during reviews.
- Gained expertise in managing merge conflicts proactively with proper workflows.
- Emphasized the importance of regular check-ins to keep the team aligned.
- Discovered the value of teamwork, flexibility, and adaptability in overcoming challenges.

---

## Strategy and Board 📋

### What parts of your plan went as expected? ✔️

- Successfully completed the expected number of challenges.
- Effectively utilized collaboration and communication tools to share resources
and coordinate tasks efficiently.
- Used GitHub and VS Code as expected, leveraging their features like cloning
repositories, creating pull requests, labeling issues, and tracking tasks.
- Fostered a supportive team environment where members were willing to assist
and support one another.

### What parts of your plan did not work out? ❌

- Merge conflicts were not managed effectively, resulting in delays.
- Communication gaps and language barriers led to duplicated efforts and
inconsistencies during code integration.
- Inefficient use of the project board workflow during early stages hindered organization.
- Time management expectations were not fully met, with the initial voluntary
deadline being missed.
- Resolving errors and CI check failures took more time than anticipated.

---

## Actionable Items for Future Projects 📈🎯

- Develop a standardized process for pull requests and code reviews.
- Implement regular check-ins or progress-tracking meetings, ensuring
unresolved challenges are documented for follow-up.
- Foster proactive communication and hold more frequent meetings to ensure
alignment and address challenges.
- Establish detailed plans with clearly defined milestones, schedules, and
deadlines for each project phase.

---

## Collective Reflection 🤝✨

The team collaborated effectively despite facing challenges, achieving
significant progress. Moving forward, improved planning, enhanced communication
and efficient task management will ensure smoother execution and even greater success.
17 changes: 13 additions & 4 deletions notes/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@ Welcome to the **Notes** directory! 🎉
This is our little corner of the project where we share all the gems we pick up
along the way. 🧠✨

Here’s what you’ll find (and what you’re welcome to add):
Here’s what you’ll find (and what you’re welcome to add):

- 🖋️ **What We're Learning:** Got a cool trick in Git? Learned a new design
pattern? Found a clever way to squash bugs? Share it here!
pattern? Found a clever way to squash bugs? Share it here!
- 😂 **Funny Moments:** Code reviews aren’t always serious — if something made
you laugh (or cry), jot it down! Laughter is the best debugging tool.
- 📚 **Resources:** Found a great article, video, or book that helped you level
up? Share it with the team!
- ❤️ **Personal Reflections:** How’s the journey been for you? Whether it’s
growth, challenges, or proud moments, we’d love to hear about it.
growth, challenges, or proud moments, we’d love to hear about it.
- 🤝 **Collaboration Stories:** Cool ways we’ve helped each other shine or
overcame hurdles as a team.
overcame hurdles as a team.
- 🎨 **Creative Additions:** Doodles, memes, or anything that adds color to our
shared experience!

Expand All @@ -25,3 +25,12 @@ your learning, share your quirks, or just have fun. Let’s make this a treasure
trove of memories and insights! 🚀

Happy noting, team! 📝🌟

---

_**Razan Ibrahim**_
I primarily utilized the CS sessions from the MIT Emerging Talent Program,
Cohort 6 📚✨, along with
a [short playlist](https://drive.google.com/drive/folders/1LiY4mKB1Vv4FRcS3J2ROHuHgqan1CWd4)
created by our teammate Clement 🎥🙌. Additionally, I sought help and support
from the team 🤝💡 to effectively tackle this project.
8 changes: 7 additions & 1 deletion solutions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,13 @@ while corresponding test files are maintained in the `tests` folder.
| `calculate_average.py`| Calculates the average of a list of numbers | Clement |
| `spiral_traverse.py` | Traverses a 2D matrix in spiral order | Fahed |
| `euler_totient.py` | Computes Euler's totient function (ϕ(n))| Fahed |
| `is_prime.py` | determine whether a given number is prime. | Fahed|
| `gcd.py` | A function to calculate the greatest common divisor (GCD)| Fahed|
| `kronecker_product.py` | Computes the Kronecker ⊗ product of 2 matrices | Fahed|
| `fibonacci.py` | Generates Fibonacci sequences up to n terms | Fahed |
| `direction_to_degree.py` | Convert a cardinal direction to degree | Obay |
| `check_odd_or_even.py` | Checks if a number is odd or even | Clement |
| `grading_system.py`| Assigning letter grade to a numeric score. | Razan |
| `kronecker_product.py` | Computes the Kronecker ⊗ product of 2 matrices | Fahed|
| `feet_to_meters.py` | Converting feet to meters| Obay |
| `area_circle.py`| Calculates the area of the circle | Majd |
| `multiplication.py`| Calculate the multiple of two numbers | Majd|
Expand All @@ -42,6 +45,9 @@ while corresponding test files are maintained in the `tests` folder.
| `password_strength.py` | Checks the strength of a password| Anas |
| `decimal_to_binary.py` | Converts decimal to its equivalent binary| Anas |
| `longest_word.py` | Find longest word in sentences| Özgür |
| `count_character.py`| counts occurrences of a character in a string| Mohamed|
| `is_positive.py` | Determines if a given number is positive | Faisal |
| `is_palindrome.py` | Checks string palindrome properties | Faisal |

---

Expand Down
49 changes: 49 additions & 0 deletions solutions/count_character.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
A module for counting occurrences of a character in a string.
Created on 12/1/2025
@author: Mohamed Altayeb
Group: ET foundations group 16 (Matrix)
Module functions:
- count_character: counts occurrences of a character in a string.
"""


def count_character(input_string: str, character: str) -> int:
"""
Counts the number of occurrences of a specific character in a string
It will treat capital letters as different characters compared to small letters.
Arguments:
input_string (str): The string to count in.
character (str): The character to count.
Returns:
int: The number of occurrences of the character in the string.
Raises:
AssertionError: if input string is not a string or character is not a single
character string.
>>> count_character("Mohamed", "m")
1
>>> count_character("test", "l")
0
>>> count_character("mississippi", "s")
4
"""
# Make sure inputs are correct
if not isinstance(input_string, str):
raise AssertionError("The input_string must be a string.")
if not isinstance(character, str) or len(character) != 1:
raise AssertionError("The character must be a single character string.")

# Return the number of occurrences of character in the string
return input_string.count(character)
2 changes: 2 additions & 0 deletions solutions/direction_to_degree.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
direction_to_degree.py
Expand Down
1 change: 1 addition & 0 deletions solutions/feet_to_meters.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Module to convert feet to meters.
Expand Down
58 changes: 58 additions & 0 deletions solutions/fibonacci.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
A module for generating Fibonacci sequences.
Module contents:
- generate_fibonacci: Generates Fibonacci sequence up to n terms.
The Fibonacci sequence is a series of numbers where each number is the sum of the two
preceding ones, starting with 0 and 1.
Author: Fahed Daibes
Created: 12-Jan-2025
"""


def generate_fibonacci(n: int) -> list:
"""
Generates the first n terms of the Fibonacci sequence.
Parameters:
- n (int): The number of terms to generate.
Returns:
- list: A list containing the first n terms of the Fibonacci sequence.
Raises:
- AssertionError: If the input is not a positive integer.
Examples:
>>> generate_fibonacci(0)
[]
>>> generate_fibonacci(1)
[0]
>>> generate_fibonacci(5)
[0, 1, 1, 2, 3]
>>> generate_fibonacci("five")
Traceback (most recent call last):
...
AssertionError: Input must be a non-negative integer.
"""
# Defensive check
assert isinstance(n, int) and n >= 0, "Input must be a non-negative integer."

if n == 0:
return []
if n == 1:
return [0]

sequence = [0, 1]
for _ in range(2, n):
sequence.append(sequence[-1] + sequence[-2])

return sequence
Loading

0 comments on commit ed891a0

Please sign in to comment.