diff --git a/.github/ISSUE_TEMPLATE/help_wanted.md b/.github/ISSUE_TEMPLATE/help_wanted.md new file mode 100644 index 0000000..939dbba --- /dev/null +++ b/.github/ISSUE_TEMPLATE/help_wanted.md @@ -0,0 +1,65 @@ +--- +name: help wanted +about: > + A template issue for when you're blocked on certain lines of code. + This template has many sections to get you thinking about your problem, + you don't need to fill all of them. +labels: "help wanted" +--- + + + +## The Code + + + +## Best Understanding + + + +## Best Efforts + + + +## Helpful Links + + + +## Hopeful Links + + diff --git a/.github/ISSUE_TEMPLATE/meeting_agenda.md b/.github/ISSUE_TEMPLATE/meeting_agenda.md index 8b13789..f3e0399 100644 --- a/.github/ISSUE_TEMPLATE/meeting_agenda.md +++ b/.github/ISSUE_TEMPLATE/meeting_agenda.md @@ -1 +1,26 @@ +--- +name: meeting agenda +about: A template issue for planning meetings +title: "Agenda: \_\_" +labels: agenda +--- + + + + + + + +- [ ] item 1 + - description +- [ ] item 2 + - description +- [ ] ... diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md new file mode 100644 index 0000000..2fb0558 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.md @@ -0,0 +1,15 @@ +--- +name: question +about: > + A template issue for topics you'd like to discuss or learn more about. + specific topics, general knowledge, it does not even need to be about code. + There are no bad questions! +labels: question +--- + + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..3cb4c98 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,40 @@ +--- +name: General PR template +about: A template with a generic and high-level review checklist, feel free to modify the checklists based on your PR. +--- + + + + + +## General Checks + +- [ ] the branch is up to date with `main` +- [ ] the code works when pulled and run locally +- [ ] All CI checks pass (or at least discussed) +- [ ] all conflicts are resolved (if any) +- [ ] PR has a descriptive title +- [ ] PR has appropriate labels and milestones for easy identification +- [ ] PR it is assigned to the owner +- [ ] reviewers are assigned +- [ ] the PR contributes only one focused change +- [ ] It is in the appropriate column in the project board (if necessary) +- [ ] has short and clear description +- [ ] is linked to an issue (if it is related) +- [ ] feedback is addressed (if any and if it is appropriate feedback.) + +## Markdown + + + +- [ ] the markdown source is formatted +- [ ] spelling and grammar is correct in all text +- [ ] The markdown looks correct when you preview the file +- [ ] all links and images work diff --git a/.github/workflows/ci-checks.yml b/.github/workflows/ci-checks.yml new file mode 100644 index 0000000..fdf9eb0 --- /dev/null +++ b/.github/workflows/ci-checks.yml @@ -0,0 +1,80 @@ +name: ET CI Checks + +on: [push, pull_request, workflow_dispatch] + +jobs: + ls_linting: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ls-lint/action@v2.2.3 + + md_formatting: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: nosborn/github-action-markdown-cli@v3.3.0 + with: + files: . + config_file: .markdownlint.yml + + py_formatting: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Python - Check Formatting + uses: astral-sh/ruff-action@v1 + with: + args: "format --check" + + py_linting: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + # passing ruff linting is required + - name: Python - Check Linting - ruff + uses: astral-sh/ruff-action@v1 + + # passing pylint is not required - discuss errors in code review + # adapted from https://github.com/davidslusser/actions_python_pylint/tree/main + - name: python version + run: python --version + shell: bash + if: always() + - name: install pylint + run: | + python - m pip install --upgrade pip + pip install pylint + shell: bash + - name: Python - Check Linting - pylint + run: "pylint solutions tests || echo '::warning title=Pylint Error(s)::Discuss solutions and trade-offs in code review.'" + shell: bash + + py_tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: python version + run: python --version + shell: bash + + - name: Check for test files + id: check_tests + run: | + test_files=$(find . -type f -name "**/test_*.py") + if [ -n "$test_files" ]; then + echo "Found test files:" + echo "$test_files" + echo "has_tests=true" >> $GITHUB_OUTPUT + else + echo "No test files found matching pattern **/test_*.py" + echo "has_tests=false" >> $GITHUB_OUTPUT + fi + shell: bash + + - name: Python - Run Tests + if: steps.check_tests.outputs.has_tests == 'true' + run: python -m unittest + shell: bash diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b1c6cec --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +__pycache__ +*.pytest_cache +venv/ +# .env +*.db +*.idea +*.ruff_cache diff --git a/.ls-lint.yml b/.ls-lint.yml new file mode 100644 index 0000000..11468c9 --- /dev/null +++ b/.ls-lint.yml @@ -0,0 +1,17 @@ +ls: + .dir: snake_case + .*: snake_case + .md: snake_case | regex:[0-9A-Z\-]+ + .txt: snake_case | kebab-case + .yml: snake_case | kebab-case + +ignore: + - .git + - .github + - .vscode + - venv + - .ruff_cache + - .pytest_cache + - __pycache__ + - .ls-lint.yml + - .markdownlint.yml diff --git a/.markdownlint.yml b/.markdownlint.yml new file mode 100644 index 0000000..ee6205f --- /dev/null +++ b/.markdownlint.yml @@ -0,0 +1,3 @@ +ignore: + - venv + - .github diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..a7e4b78 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,51 @@ +{ + "recommendations": [ + // For Pair Programming + "MS-vsliveshare.vsliveshare", + + // For Git & GitHub + "mhutchie.git-graph", + "eamodio.gitlens", + "GitHub.vscode-pull-request-github", + "donjayamanne.githistory", + + // For programming generally + "streetsidesoftware.code-spell-checker", + "leodevbro.blockman", + "alefragnani.project-manager", + "vscode-icons-team.vscode-icons", + "alefragnani.bookmarks", + "visualstudioexptteam.vscodeintellicode", + "aaron-bond.better-comments", + "christian-kohler.path-intellisense", + "usernamehw.errorlens", + "tamasfe.even-better-toml", + + // For writing Markdown + "DavidAnson.vscode-markdownlint", + "yzhang.markdown-all-in-one", + "bierner.markdown-preview-github-styles", + + // For writing Python + "ms-python.python", + "ms-python.vscode-pylance", + "KevinRose.vsc-python-indent", + "njpwerner.autodocstring", + "LittleFoxTeam.vscode-python-test-adapter", + "ms-python.black-formatter", + "charliermarsh.ruff", + "ms-python.pylint", + "oderwat.indent-rainbow", + "ms-python.debugpy", + "frhtylcn.pythonsnippets", + + // For writing Notebooks + "ms-toolsai.jupyter", + "ms-toolsai.jupyter-keymap", + + // For working with data + "RandomFractalsInc.vscode-data-preview", + "mechatroner.rainbow-csv", + "mtxr.sqltools" + ] +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..50d77da --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,42 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "ET: Debug Python (unittest)", + "type": "debugpy", + "request": "launch", + "program": "-m", + "args": [ + "unittest", + "${file}" + ], + "console": "integratedTerminal", + "justMyCode": true + }, + { + "name": "(gdb) Launch", + "type": "cppdbg", + "request": "launch", + "program": "enter program name, for example ${workspaceFolder}/a.exe", + "args": [], + "stopAtEntry": false, + "cwd": "${fileDirname}", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "miDebuggerPath": "/path/to/gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + }, + { + "description": "Set Disassembly Flavor to Intel", + "text": "-gdb-set disassembly-flavor intel", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..252022b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,126 @@ +{ + // https://vscode-docs.readthedocs.io/en/stable/customization/userandworkspace/#default-settings + //-------- Editor configuration -------- + + // Controls auto save of editors that have unsaved changes.: https://code.visualstudio.com/docs/editor/codebasics#_save-auto-save + "files.autoSave": "onFocusChange", + + // Format a file on save. A formatter must be available. + "editor.formatOnSave": true, + + // Controls whether the editor should automatically format the pasted content. A formatter must be available. + "editor.formatOnPaste": true, + + // Controls whether the editor should render indent quides + "editor.guides.indentation": true, + + // Controls whether the editor should highlight the active indent guide. + "editor.guides.highlightActiveIndentation": true, + + // Controls the rendering size of tabs in characters. Accepted values: "auto", 2, 4, 6, etc. If set to "auto", the value will be guessed when a file is opened. + "editor.tabSize": 2, + + // Defines a default formatter which takes precedence over all other formatter settings. Must be the identifier of an extension contributing a formatter + "editor.defaultFormatter": "esbenp.prettier-vscode", + + // Controls bracket pair colorization is enabled or not + "editor.bracketPairColorization.enabled": true, + + // Controls whether bracket pair guides are enabled or not. (true, active, false) + "editor.guides.bracketPairs": "active", + + // Controls whether horizontal bracket pair guides are enabled or not. + "editor.guides.bracketPairsHorizontal": "active", + + // Controls whether the editor should highlight the active bracket pair. + "editor.guides.highlightActiveBracketPair": true, + + // Controls whether the editor has linked editing enabled. + "editor.linkedEditing": true, + + //-------- HTML configuration -------- + + // Enable/disable auto closing of HTML tags + "html.autoClosingTags": true, + + // Configures if the built-in HTML language suggests HTML5 tags, properties and values. + "html.suggest.html5": true, + + // Defines a default HTML formatter which takes precedence over all other formatter settings. Must be the identifier of an extension contributing a formatter + "[html]": { + "editor.defaultFormatter": "vscode.html-language-features" + }, + + //-------- Emmet configuration -------- + + // Enables completion when you are writing Emmet appreveation. + "html-css-class-completion.enableEmmetSupport": true, + + //-------- JavaScript configuration -------- + + // Enable/disable auto closing of JSX tags. + "javascript.autoClosingTags": true, + + // Enable/disable auto import suggestions. + "javascript.suggest.autoImports": true, + + // Enable/disable automatic updating of import paths when you rename or move a file in VS Code. + "javascript.updateImportsOnFileMove.enabled": "always", + + // Enable/disable suggestoins for paths in import statement and require calls. (change it to false to be able to use Path Intellisense extension) + "javascript.suggest.paths": false, + + //-------- TypeScript configuration -------- + + // Enable/disable auto closing of JSX tags. + "typescript.autoClosingTags": true, + + // Enable/disable auto import suggestions. + "typescript.suggest.autoImports": true, + + // Enable/disable automatic updating of import paths when you rename or move a file in VS Code. + "typescript.updateImportsOnFileMove.enabled": "always", + + // Enable/disable suggestoins for paths in import statement and require calls. (change it to false to be able to use Path Intellisense extension) + "typescript.suggest.paths": false, + + //-------- Work Bench configuration -------- + + // Controls whether a top border is drawn on tabs for editors that have unsaved changes. + "workbench.editor.highlightModifiedTabs": true, + + //-------- Files configuration -------- + + // When enabled, will trim all new lines after the final new line at the end of the file when saving it. + "files.trimFinalNewlines": true, + + // When enabled, insert a new final line at the end of the file when saving it. + "files.insertFinalNewline": true, + + //-------- Live Server configuration -------- + + // Set Custom Port Number of Live Server. Set 0 if you want random port. + "liveServer.settings.port": 5504, + + //-------- Markdown configuration -------- + + // Enable path suggestoins while writing links in markdown files + "markdown.suggest.paths.enabled": true, + + // Defines a default markdown formatter which takes precedence over all other formatter settings. Must be the identifier of an extension contributing a formatter + "[markdown]": { + "editor.defaultFormatter": "DavidAnson.vscode-markdownlint" + }, + + // Enable/disable update table of contents on save + "markdown.extension.toc.updateOnSave": false, + + "[python]": { + "editor.defaultFormatter": "charliermarsh.ruff", + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll.ruff": "explicit", + "source.organizeImports.ruff": "explicit" + } + } +} diff --git a/0_domain_study/README.md b/0_domain_study/README.md index 8b13789..308b711 100644 --- a/0_domain_study/README.md +++ b/0_domain_study/README.md @@ -1 +1 @@ - +# Domain Research diff --git a/0_domain_study/guide.md b/0_domain_study/guide.md index 8b13789..d36e40c 100644 --- a/0_domain_study/guide.md +++ b/0_domain_study/guide.md @@ -1 +1,15 @@ +# Domain Study: Guide +To do meaningful research in a domain, you need to learn what others already do +and don't understand in this area. Use this folder to organize your group's +understanding of your research domain including: your own summaries, helpful +PDFs, links you found helpful, ... + +This folder is different from `/notes` because it contains _only_ information +about your research domain. When deciding what goes here, ask yourself this +question: _Would someone need to know this to understand our research?_ + +## README.md + +Use this folder's README to document all the notes and resources in this folder. +Someone shouldn't need to read through _everything_ to find what they need. diff --git a/1_datasets/README.md b/1_datasets/README.md new file mode 100644 index 0000000..157ea3a --- /dev/null +++ b/1_datasets/README.md @@ -0,0 +1 @@ +# Datasets diff --git a/1_datasets/guide.md b/1_datasets/guide.md index 8b13789..8b17876 100644 --- a/1_datasets/guide.md +++ b/1_datasets/guide.md @@ -1 +1,363 @@ +# Datasets: Guide +Store your local datasets in this folder (`.csv`, `.xlsx`, `.json`, `.sqlite`, +...). You can use the README to document each dataset (where it's from, what +data & types it contains, what you use it for, ...). + +One of the primary goals of this repository is that anyone can clone and +replicate your research. To make this possible **DO NOT modify or overwrite your +raw datasets**! You should keep them _exactly_ as they were when you downloaded +them, you may even want to name them `dataset.raw.ext` (eg. +`daily_temperatures.raw.csv`). + +When cleaning and processing your datasets, you should save the prepared data to +a _new_ file with a descriptive name. This approach will result in many dataset +files, but that's ok! + +## README.md + +Use the README in this folder to document each dataset in the folder. Include +information like: where is the data from? how was it collected? how does it +relate to your problem? ... + +## Types of Dataset + +A dataset is "simply" a collection of related measurements or observations. To +create a good model of your problem using data you must understanding what +_kinds_ of data exist, how to understand them, and the best ways to analyze each +one. The kind of data you choose impacts: + +- The tools you use for exploration and analysis +- How we visualize the data +- The statistical methods you can apply +- The type of conclusions you draw +- And how confident you are of your conclusions + +Below is an overview of different kinds of dataset you will encounter: + +1. [Classification by Data Type](#classification-by-data-type) +2. [Classification by Structure](#classification-by-structure) +3. [Classification by Collection Method](#classification-by-collection-method) +4. [Classification by Size and Complexity](#classification-by-size-and-complexity) +5. [Classification by Access Type](#classification-by-access-type) +6. [Classification by Purpose](#classification-by-purpose) +7. [Classification by Format](#classification-by-format) + +## Classification by Data Type + +### Quantitative (Numerical) Data + +Data that represents quantities and can represented as numbers. + +#### Continuous Data + +- **Definition**: Can take any value within a range (including fractions and + decimals) +- **Examples**: Height, weight, temperature, time, distance +- **Analysis**: Mean, median, standard deviation, histograms, scatter plots +- **Real-world example**: Recording daily temperature over a month (72.5°F, + 68.3°F, etc.) + +#### Discrete Data + +- **Definition**: Countable values, typically whole numbers +- **Examples**: Number of children, items sold, count of occurrences +- **Analysis**: Frequency tables, bar charts, mode +- **Real-world example**: Number of customers visiting a store each day (45, 52, + 38, etc.) + +### Qualitative (Categorical) Data + +Data that describes qualities or characteristics of what you want to study. + +#### Nominal Data + +- **Definition**: Categories with no inherent order or ranking +- **Examples**: Gender, blood type, country, color, product type +- **Analysis**: Frequency counts, mode, chi-square tests, pie charts +- **Real-world example**: Survey responses for favorite color (red, blue, green, + etc.) + +#### Ordinal Data + +- **Definition**: Categories with a meaningful order or ranking +- **Examples**: Education level, satisfaction ratings (1-5), economic status +- **Analysis**: Median, percentiles, rank correlations, stacked bar charts +- **Real-world example**: Customer satisfaction ratings (very dissatisfied, + dissatisfied, neutral, satisfied, very satisfied) + +### Binary Data + +- **Definition**: Data with only two possible values +- **Examples**: Yes/no questions, pass/fail outcomes, true/false conditions +- **Analysis**: Proportions, odds ratios, logistic regression +- **Real-world example**: Email spam classification (spam/not spam) + +### Time Series Data + +- **Definition**: Sequential data points collected at specific time intervals +- **Examples**: Stock prices, weather data, website traffic +- **Analysis**: Trend analysis, seasonal decomposition, forecasting +- **Real-world example**: Monthly sales figures over several years + +## Classification by Structure + +### Structured Data + +- **Definition**: Organized in a consistent, predefined format +- **Examples**: Relational databases, spreadsheets, CSV files +- **Characteristics**: + - Follows a schema + - Easy to search and analyze + - Typically stored in rows and columns +- **Real-world example**: Customer information in a CRM database + +### Semi-structured Data + +- **Definition**: Has some organizational properties but not rigid schema +- **Examples**: JSON, XML, email, HTML +- **Characteristics**: + - Flexible format + - Contains tags or markers to separate elements + - Self-describing structure +- **Real-world example**: JSON response from a web API + +### Unstructured Data + +- **Definition**: No predefined format or organization +- **Examples**: Text documents, images, audio, video, social media posts +- **Characteristics**: + - Difficult to process with traditional tools + - Often requires specialized techniques (NLP, computer vision) + - Comprises ~80-90% of all data generated +- **Real-world example**: Customer reviews or feedback in free text format + +## Classification by Collection Method + +### Primary Data + +- **Definition**: Collected firsthand for a specific purpose +- **Examples**: Surveys, experiments, interviews, direct observations +- **Advantages**: Tailored to research needs, higher control over quality +- **Disadvantages**: Time-consuming, potentially expensive +- **Real-world example**: Market research survey designed specifically for a new + product + +### Secondary Data + +- **Definition**: Data previously collected for other purposes +- **Examples**: Census data, published studies, company records +- **Advantages**: Cost-effective, time-saving, often larger sample sizes +- **Disadvantages**: May not perfectly fit current research needs +- **Real-world example**: Using government census data for demographic analysis + +### [Proxy Data](https://centerforgov.gitbooks.io/benchmarking/content/Proxy.html) + +- **Definition**: Data that is +- **Examples**: Tree rings to proxy historical weather patterns, tax data to + proxy incomes +- **Advantages**: Helos you understand phenomena that are difficult or + impossible to study directly. +- **Disadvantages**: You cannot draw conclusions with the same confidence. +- **Real-world example**: Using the stock market + unemployment rates as a proxy + for the economy.. + +### Experimental Data + +- **Definition**: Generated from controlled experiments with manipulated + variables +- **Examples**: A/B tests, clinical trials, laboratory experiments +- **Characteristics**: + - Control and treatment groups + - Controlled conditions + - Designed to establish causality +- **Real-world example**: Testing whether a new website design increases + conversion rates + +### Observational Data + +- **Definition**: Collected through observation without direct intervention +- **Examples**: Traffic patterns, wildlife behavior, market trends +- **Characteristics**: + - Natural setting + - No manipulation of variables + - Good for establishing correlation (not causation) +- **Real-world example**: Observing and recording consumer shopping behaviors in + a store + +## Classification by Size and Complexity + +### Small Data + +- **Definition**: Datasets manageable with traditional tools and methods +- **Characteristics**: + - Can fit in memory of a typical computer + - Processable with standard software (Excel, SPSS) + - Usually under several gigabytes +- **Analysis**: Standard statistical methods, desktop tools +- **Real-world example**: Survey responses from 500 participants + +### Big Data + +- **Definition**: Datasets too large or complex for traditional processing +- **Characterized by the 5 Vs**: + - **Volume**: Extremely large size + - **Velocity**: Generated at high speed + - **Variety**: Various formats and types + - **Veracity**: Uncertainty and reliability concerns + - **Value**: Extracting meaningful insights +- **Analysis**: Specialized tools (Hadoop, Spark), distributed computing +- **Real-world example**: Social media data from millions of users + +### High-dimensional Data + +- **Definition**: Many variables or features per observation +- **Examples**: Genomic data, image data, complex sensors +- **Challenges**: + - Curse of dimensionality + - Feature selection importance + - Visualization difficulties +- **Analysis**: Dimension reduction techniques (PCA, t-SNE), specialized + algorithms +- **Real-world example**: Gene expression data with thousands of genes measured + for each sample + +## Classification by Access Type + +### Public Data + +- **Definition**: Freely available to anyone +- **Examples**: Government data portals, open datasets, public research data +- **Characteristics**: + - No access restrictions + - Often licensed for reuse + - May have usage guidelines +- **Real-world example**: World Bank development indicators + +### Private Data + +- **Definition**: Access restricted to authorized users +- **Examples**: Company internal data, personal health records, proprietary + research +- **Characteristics**: + - Security measures required + - Often subject to privacy regulations + - May require anonymization for broader use +- **Real-world example**: Patient medical records in a hospital database + +### Proprietary Data + +- **Definition**: Owned by organizations and often commercially valuable +- **Examples**: Nielsen ratings, credit scores, market research data +- **Characteristics**: + - Commercial value + - Legal protections + - Often licensed for a fee +- **Real-world example**: Credit bureau consumer data + +## Classification by Purpose + +### Transactional Data + +- **Definition**: Records of business or system transactions +- **Examples**: Sales records, banking transactions, server logs +- **Characteristics**: + - High volume + - Time-stamped + - Operation-focused +- **Real-world example**: Point-of-sale data from retail stores + +### Analytical Data + +- **Definition**: Processed and organized for analysis and decision-making +- **Examples**: Data warehouses, OLAP cubes, aggregated reports +- **Characteristics**: + - Often derived from transactional data + - Optimized for querying and analysis + - May include historical perspectives +- **Real-world example**: Quarterly sales performance dashboard + +### Master Data + +- **Definition**: Core business entities that rarely change +- **Examples**: Customer database, product catalog, employee records +- **Characteristics**: + - Reference data + - Shared across systems + - Requires governance +- **Real-world example**: Product master list with SKUs, descriptions, and + categories + +### Metadata + +- **Definition**: Data about data +- **Examples**: File creation dates, database schema, data dictionaries +- **Characteristics**: + - Describes structure and context + - Essential for data management + - Facilitates data discovery +- **Real-world example**: Column names and descriptions for a dataset + +## Classification by Format + +### Tabular Data + +- **Definition**: Organized in tables with rows and columns +- **Examples**: CSV, Excel files, database tables +- **Characteristics**: + - Most common format for analysis + - Each row is an observation, each column a variable +- **Real-world example**: Excel spreadsheet of monthly expenses + +### Hierarchical Data + +- **Definition**: Organized in a tree-like structure with parent-child + relationships +- **Examples**: XML, JSON, file systems +- **Characteristics**: + - Nested structure + - Good for representing complex relationships +- **Real-world example**: Organization chart + +### Network Data + +- **Definition**: Represents connections between entities +- **Examples**: Social networks, transportation systems, web links +- **Characteristics**: + - Consists of nodes and edges + - Focus on relationships +- **Real-world example**: LinkedIn connections network + +### Spatial Data + +- **Definition**: Contains geographic or geometric information +- **Examples**: GIS data, maps, satellite imagery +- **Characteristics**: + - Contains coordinates or shape information + - Often requires specialized tools +- **Real-world example**: Census data with geographic coordinates + +### Temporal Data + +- **Definition**: Emphasizes time dimension +- **Examples**: Time series, event logs, historical records +- **Characteristics**: + - Time-stamped + - May show patterns over time +- **Real-world example**: Server logs with timestamp for each entry + +## Key Considerations for Beginners + +### Data Quality Assessment + +- **Completeness**: Missing values, coverage +- **Accuracy**: Errors, outliers, validity +- **Consistency**: Internal contradictions, logical issues +- **Timeliness**: How recent is the data? + +### Ethical Considerations + +- **Privacy**: Personal identifiable information (PII) +- **Consent**: Was data collected with proper consent? +- **Bias**: Is the sample representative? +- **Transparency**: Can methods and sources be disclosed? diff --git a/2_data_preparation/README.md b/2_data_preparation/README.md new file mode 100644 index 0000000..58add43 --- /dev/null +++ b/2_data_preparation/README.md @@ -0,0 +1 @@ +# Data Preparation diff --git a/2_data_preparation/guide.md b/2_data_preparation/guide.md index 8b13789..212602e 100644 --- a/2_data_preparation/guide.md +++ b/2_data_preparation/guide.md @@ -1 +1,19 @@ +# Data Preparation: Guide +This folder is for any Python scripts or notebooks you use to clean & prepare +your datasets. These files should: + +1. Read in datasets from `0_datasets` +2. Clean, reformat, or otherwise process the datasets for later. +3. Write the processed dataset into `0_datasets` with a helpful file name. + +**DO NOT modify an existing dataset in `0_datasets`! Instead, save your +processed data to a _new_ file.** This is critical to open research: Someone +should be able to clone this repository and run your scripts to replicate your +research. If you modify an original dataset, others cannot replicate your work. + +## README.md + +Use this folder's README to give a quick summary of each script/notebook - which +dataset(s) does it process and how? which datasets does it create and save to +`/1_datasets`?. diff --git a/3_data_exploration/README.md b/3_data_exploration/README.md new file mode 100644 index 0000000..8d180e0 --- /dev/null +++ b/3_data_exploration/README.md @@ -0,0 +1 @@ +# Data Exploration diff --git a/3_data_exploration/guide.md b/3_data_exploration/guide.md index 8b13789..9064ec0 100644 --- a/3_data_exploration/guide.md +++ b/3_data_exploration/guide.md @@ -1 +1,28 @@ +# Data Exploration: Guide +This folder is for any Python scripts or notebooks you use to _explore and +understand_ your datasets. These files should: + +1. Read in prepared datasets from `0_datasets` +2. Explore and understand the dataset without running a deep analysis: + - Generate some visualizations (in a notebook, or in a separate image file + saved to this folder) + - Run some descriptive statistics + (_[beware](https://www.researchgate.net/publication/316652618_Same_Stats_Different_Graphs_Generating_Datasets_with_Varied_Appearance_and_Identical_Statistics_through_Simulated_Annealing) + the + [Datasaurus Dozen](https://www.research.autodesk.com/publications/same-stats-different-graphs/)!_) + - ... let your curiosity guide you, but _avoid_ running any inferential + statistics or using any machine learning at this stage. + +**DO NOT modify an existing dataset in `0_datasets`!** This is critical to open +research: Someone should be able to clone this repository and run your scripts +to replicate your research. If you modify an original dataset, others cannot +replicate your work. + +> [Chapter 4 - Exploratory Data Analysis](https://bookdown.org/rdpeng/artofdatascience/exploratory-data-analysis.html) +> from the Art of Data Science is a good starting reference. + +## README.md + +Use the README in this folder to give a quick summary of each script/notebook - +which dataset(s) it explores, and how. diff --git a/4_data_analysis/README.md b/4_data_analysis/README.md new file mode 100644 index 0000000..b0957fc --- /dev/null +++ b/4_data_analysis/README.md @@ -0,0 +1 @@ +# Data Analysis diff --git a/4_data_analysis/guide.md b/4_data_analysis/guide.md index 8b13789..1f92e90 100644 --- a/4_data_analysis/guide.md +++ b/4_data_analysis/guide.md @@ -1 +1,23 @@ +# Data Analysis: Guide +This folder is for any Python scripts or notebooks you use to gain insights from +your data through modeling, inferential statistics, and other analytical +techniques. These files should: + +1. Read in prepared datasets from `0_datasets` +2. Learn from your datasets using methods that are appropriate to your research + question, dataset and team's constraints. + +**DO NOT modify an existing dataset in `0_datasets`!** This is critical to open +research: Someone should be able to clone this repository and run your scripts +to replicate your research. If you modify an original dataset, others cannot +replicate your work. + +> [Chapters 5-8](https://bookdown.org/rdpeng/artofdatascience) from the Art of +> Data Science are a good starting reference. + +## README.md + +Use the README in this folder to document your analysis strategy and provide a +quick summary of each script/notebook. You can also explain your research +results in-depth in this folder's README. diff --git a/5_communication_strategy b/5_communication_strategy deleted file mode 100644 index 8b13789..0000000 --- a/5_communication_strategy +++ /dev/null @@ -1 +0,0 @@ - diff --git a/5_communication_strategy/README.md b/5_communication_strategy/README.md new file mode 100644 index 0000000..30560c7 --- /dev/null +++ b/5_communication_strategy/README.md @@ -0,0 +1 @@ +# Communication Strategy diff --git a/5_communication_strategy/guide.md b/5_communication_strategy/guide.md new file mode 100644 index 0000000..275ba73 --- /dev/null +++ b/5_communication_strategy/guide.md @@ -0,0 +1,6 @@ +# Communication Strategy: Guide + +This folder is here to organize the communication strategy for your research +findings. You can use it however you like. Your communication artefact doesn't +need to be stored here - it could be a video hosted on YouTube, a SM campaign, +... don't constrain yourself to something that can be stored on GitHub! diff --git a/6_final_presentation/README.md b/6_final_presentation/README.md new file mode 100644 index 0000000..cf54d89 --- /dev/null +++ b/6_final_presentation/README.md @@ -0,0 +1 @@ +# Final Presentation diff --git a/6_final_presentation/guide.md b/6_final_presentation/guide.md index 8b13789..bf5fb9c 100644 --- a/6_final_presentation/guide.md +++ b/6_final_presentation/guide.md @@ -1 +1,6 @@ +# Final Presentation: Guide +You can use this folder to plan your final presentation including presentation +outlines, scripts, ... + +Don't forget to link to your final presentation in the repository README! diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..e69de29 diff --git a/LICENSE b/LICENSE index de0946d..6e628e4 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2025 MIT Emerging Talent +Copyright (c) 2024 MIT Emerging Talent Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index f9042ce..051dddd 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,25 @@ -# ELO2_LAPERLE_HT -How can data-driven digital platforms showcasing Haiti’s natural beauty, culture, and historical heritage change the global perception of Haiti and promote sustainable tourism? +# 🌿 Team GreenFrontier + +Welcome to the collaboration space for **Team GreenFrontier** – Group 02 of the +MIT Emerging Talent program __CDSP. + +We are a team of aspiring data scientists working together to build strong + collaboration skills, grow through shared learning, and prepare for + impactful data science projects. Our focus is on clear communication, + mutual respect, and continuous development as a team. + +Stay tuned for updates as we define and begin our project journey! + +## The team member comprises + +Mohamed Tilal + +Ridwan Ayinde + +Said Ibrahim + +Safiya Hashimi + +Mervil Pierre Kenley + +Mithchell Lawensky Cenatus diff --git a/collaboration/README.md b/collaboration/README.md new file mode 100644 index 0000000..5a026af --- /dev/null +++ b/collaboration/README.md @@ -0,0 +1,59 @@ +# Collaboration + + + +We strive to create a supportive, collaborative team environment built on trust, +open communication, and respect for each other’s time. We value shared growth, +clear alignment on goals, and the ability to adapt to change. By taking +ownership of our work, offering constructive feedback, +learning from challenges, and documenting our progress, we aim to work +efficiently and grow both individually and as a team. + + +## 🌟 Our Group Norms + +### 🤝 Build and Sustain Trust + +Commit to creating a reliable and supportive environment where trust underpins + all interactions. + +### 🗣️ Foster Open Communication + +Ensure a culture where all voices are valued, and ideas, concerns, and feedback + are openly shared. + +### ⏱️ Respect Time and Focus + +Honor each other’s time by striving for purposeful and efficient communication + and collaboration. + +### 🌱 Promote Team Growth + +Support collective learning, personal development, and the achievement of + shared goals. + +### 🧭 Ensure Clarity and Alignment + +Maintain shared understanding and alignment on goals, expectations, and progress. + +### 🔄 Embrace Growth from Challenges + +Approach mistakes and challenges as opportunities for learning and improvement. + +### 🧘 Adapt with Flexibility + +Be open to change and ready to adjust plans, roles, or processes as the project evolves. + +### 🚀 Encourage Initiative and Ownership + +Empower each member to take responsibility for tasks, contribute ideas, + and proactively address issues. + +### 🧠 Practice Constructive Feedback + +Give and receive feedback respectfully, with the aim of helping each other + grow and improve the project. + +### 📚 Document and Share Knowledge + +Keep track of decisions, lessons, and resources to build a shared knowledge base. diff --git a/collaboration/communication.md b/collaboration/communication.md new file mode 100644 index 0000000..86aed69 --- /dev/null +++ b/collaboration/communication.md @@ -0,0 +1,76 @@ + + +# Communication for Group GreenFrontier + +--- + +## Communication Schedule + + +| Day | How | Topic of Discussion | +|-----------|-------------|-----------------------------| +| Monday | Slack | Weekend progress updates | +| Tuesday | Slack | Prep for video call | +| Wednesday | Zoom Call | Midweek check-in | +| Thursday | Slack | Progress updates | +| Friday | Slack | Prep for video call | +| Saturday | Video Call | Code review, code help | +| Sunday | Nothing | Rest day | + + +## Communication Channels + +Our group will **check in twice a week** until the project deadline +(**August 25th**). + +- **Issues**: Bug tracking, task management + ([GitHub Issues Guide] + ()) +- **Pull Requests**: Code reviews and discussions +- **Slack**: Daily communication, quick updates, screenshots, etc. +- **Video Calls**: Weekly check-ins, deep discussions +- **Project Board**: Visual tracking of tasks and to-do lists + +--- + +## Availability + +### Weekly Availability for Calls/Messaging + + +| Team Member | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday | +|-------------|----------|----------|-----------|----------|----------|-----------|----------| +| Mohamed | 4–8PM | 4–8PM | 4–8PM | 4–8PM | 4–8PM | 8AM–8PM | 8AM–8PM | +| Mervil | 12–5PM | 12–5PM | 12–5PM | 12–5PM | 12–5PM | 12–5PM | 12–5PM | +| Mithchell | 4–8PM | 4–8PM | 4–8PM | 4–8PM | 4–8PM | 8AM–8PM | 8AM–8PM | +| Ridwan | 4–8PM | 4–8PM | 4–8PM | 4–8PM | 4–8PM | 8AM–8PM | 8AM–8PM | +| Sufiya | 9AM–3PM | 9AM–3PM | 9AM–3PM | 9AM–3PM | 9AM–3PM | 12AM–3PM | 9AM–2PM | +| Said | 11AM–3PM | 11AM–9PM | 11AM–9PM | 11AM–3PM | 11AM–3PM | 8AM–3PM | 8AM–3PM | + + +### Time Available Per Day + +- **Mohamed Tilal**: _5h_ +- **Mervil Pierre Kenley**: _6h_ +- **Mithchell Cenatus**: _5h_ +- **Ridwan Ayinde**: _5h_ +- **Sufiya Hashimi**: _5h_ +- **Said Ibraim**: _5h_ + +--- + +## Asking for Help + +There’s a fine line between confidently **learning from mistakes** and stubbornly +getting **nowhere**. Here’s when to ask for help: + +1. **0 → 30 min**: Try on your own. +2. **30 → 60 min**: Ask the group for help. +3. **60+ min**: Tag coaches in Slack or GitHub. diff --git a/collaboration/constraints.md b/collaboration/constraints.md new file mode 100644 index 0000000..2407950 --- /dev/null +++ b/collaboration/constraints.md @@ -0,0 +1,34 @@ + + +# Constraints + +Some boundaries around our project. + +## External + + + +## Internal: Involuntary + + + +## Internal: Voluntary + + diff --git a/collaboration/guide.md b/collaboration/guide.md deleted file mode 100644 index 8b13789..0000000 --- a/collaboration/guide.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/collaboration/guide/0_repository_setup.md b/collaboration/guide/0_repository_setup.md new file mode 100644 index 0000000..aae9cb7 --- /dev/null +++ b/collaboration/guide/0_repository_setup.md @@ -0,0 +1,39 @@ +# Repository Setup + +Before diving into your project make sure your team has all the practical things +in place. This step isn't very hard but everything will go more smoothly if you +take the time to do this correctly at the beginning. + +## Setup and Share a Repository + +As a team you will choose the name for your team and select someone from your +team to be the repo owner. This person will fork this repository and configure +it for collaboration: + +- Public face of your repository + - Change your + [repository description](https://stackoverflow.com/questions/7757751/how-do-you-change-a-repository-description-on-github) + - Add or remove topics from your repository + - Update your main README with your group name and an initial overview of your + project. (You can change this as much as you want.) +- Under settings in your repository select: + - _Issues_ + - _Projects_ + - _Always suggest updating pull request branches_ +- Collaboration Settings + - Require a code review for PRs to `main`/`master` + ([owanateamachree](https://owanateamachree.medium.com/how-to-protect-the-master-branch-on-github-ab85e9b6b03), + [github docs](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/approving-a-pull-request-with-required-reviews)) + - You will need to type `master` into the _Branch name pattern_ input box. + (or type `main` if you have changed your default branch) + - Select these settings to protect matching branches: + - _Require approvals_ + - _Dismiss stale pull request approvals when new commits are pushed_ + - _Require approval of the most recent reviewable push_ + - _Require conversation resolution before merging_ + - _Do not allow bypassing the above settings_ + +## README + +Write the [main README](../../README.md) for your repository! You can always +update it as you learn more about code review and collaboration on GitHub. diff --git a/collaboration/guide/1_group_norms.md b/collaboration/guide/1_group_norms.md new file mode 100644 index 0000000..c7bd0e3 --- /dev/null +++ b/collaboration/guide/1_group_norms.md @@ -0,0 +1,4 @@ +# Group Norms + +Complete the _Group Norms_ assignment from the Code Review workshop and write +your norms summary and list in the [Collaboration README](../README.md) diff --git a/collaboration/guide/2_learning_goals.md b/collaboration/guide/2_learning_goals.md new file mode 100644 index 0000000..dd660b2 --- /dev/null +++ b/collaboration/guide/2_learning_goals.md @@ -0,0 +1,26 @@ +# Objectives + +The first step to developing a software project is to make sure everyone agrees +on the project objectives. For these exercises, setting objectives means +discussing what everyone wants to learn from these exercises. + +For example, do you want to; + +- Review DSs and algorithms you have already studied. +- Learn new DSs and algorithms. +- Practice using new programming language features. +- Practice more complete, readable, and documented solutions. +- Learn to program faster, to be more a more efficient developer. +- Focus on code review, going through several cycles of feedback for each + solution. +- ... or anything else you can think of + +There are no wrong answers, it's ok if everyone has different objectives! Shat's +important is that everyone has the same expectations. + +## `/collaboration/learning_goals.md` + +Write your group's objectives for these exercises in +[/collaboration/learning_goals.md](../learning_goals.md). If different members +have different objectives, you can write this in the `learning_goals.md` file. +You don't need to have one description for everyone! diff --git a/collaboration/guide/3_constraints.md b/collaboration/guide/3_constraints.md new file mode 100644 index 0000000..ad18e64 --- /dev/null +++ b/collaboration/guide/3_constraints.md @@ -0,0 +1,20 @@ +# Constraints + +After dreaming big, the most helpful thing you can can do to define your project +is to be clear about _what it isn't_. Thinking big is great for brainstorming +but can get in the way of finishing your projects on time. + +An important step to _scoping_ your project is to discuss your group's +**constraints** before you even begin thinking of user stories. Defining your +constraints will help to define a realistic project and commit to it. +Constraints can also help you to build a more creative project! + +It may not sound intuitive, but the fewer restrictions you have on your work the +less likely you are to find a creative solution! The crucial skills you need to +learn is how to place _constructive_ constraints on your project and on your +team. + +## `/collaboration/constraints.md` + +Fill out the template file in [/collaboration/constraints.md](../constraints.md) +as a group, either in a call or asynchronously. diff --git a/collaboration/guide/4_communication.md b/collaboration/guide/4_communication.md new file mode 100644 index 0000000..8cbaacc --- /dev/null +++ b/collaboration/guide/4_communication.md @@ -0,0 +1,33 @@ +# Communication Plan + +Decide as a team when you will be able to meet, and how you'll stay in touch +between meetings. The example in this repository gives some ideas for organizing +this file, but it's up to your group to find what works best for you. + +This is one of the most important steps in collaboration! Group projects go by +very quickly, often you'll only have one week to plan and deliver a milestone. +Taking a few extra minutes to plan before starting can save you a day or two of +confusion during the sprint. + +## Meeting Agendas + +Writing a meeting agenda ahead of time is always a good idea. There is no right +way to plan a meeting, your group should search online and experiment to find +what works best for you. + +This repository has a _template issue_ you can use to create a meeting agenda. +Each time your group is planning a meeting you can create a new issue using this +template and write a meeting agenda. You can use comments to discuss +before/after the meeting, you can add meeting minutes in the issue body or +comments, and close the issue when all meeting points have been addressed. + +## `/collaboration/communication.md` + +> Careful! Be sure to protect your privacy when filling out this document. +> Everything you write here will be public, so share only what you are +> comfortable sharing online. You can share the rest in confidence with you +> group by another channel. + +Fill out the template file in +[/collaboration/communication.md](../communication.md) as a group, either in a +call or asynchronously. diff --git a/collaboration/guide/5_project_board.md b/collaboration/guide/5_project_board.md new file mode 100644 index 0000000..a0d5694 --- /dev/null +++ b/collaboration/guide/5_project_board.md @@ -0,0 +1,38 @@ +# Project Board + +Setting up your Project Board should be easy enough, using it well will take a +lot of discipline and attention to detail! + +## Columns + +Finally, create your project board and add these columns: + +1. **TODO**: Unclaimed challenges that no one is working on. +1. **DOING** Challenges someone has assigned to themselves and is actively + working on. + - Each group member can only have _one_ claimed issue in the DOING column at + a time. + - Use the `help wanted` label in this column if you are blocked. +1. **READY FOR REVIEW**: Issues with a linked PR to review. + - After your issue is READY FOR REVIEW you can claim a new challenge from the + TODO column. +1. **UNDER REVIEW**: After assigning yourself to review a challenge in the READY + FOR REVIEW column, move the issue to this column. + - Issues stay in this column until the reviewer has approved the solution and + merged it to `main`. +1. **DONE**: After merging a solution and closing the issue, the reviewer moves + challege issued to this column. + +## Issues + +Create one _**issue**_ for each interesting challenge you think someone in your +group may want to solve. I's always ok to add more issue later, so no need to +spend hours cluttering the project board right away. There's also no maximum! +Your TODO column can be as full as you like. + +Be sure each issue has: + +- A full description of the challenge. This doesn't need to be as thorough as a + docstring, but it should be clear enough that others can start solving it + without asking you for help. +- Links to any helpful references or resources for solving this challenge. diff --git a/collaboration/guide/6_development.md b/collaboration/guide/6_development.md new file mode 100644 index 0000000..655c5b5 --- /dev/null +++ b/collaboration/guide/6_development.md @@ -0,0 +1,60 @@ +# Development + +Everything is planned, the board is ready, it's time to get working. As you +develop your project, you will keep track of everything on the project board. + +## `/notes` + +This repository comes with an empty [/notes](./notes) folder your group can use +to keep shared notes on everything you learn about Python, Git, GitHub, code +review, collaboration ... or life : ) + +## `help-wanted` Label + +Add this label to your issue when you're blocked. Your team mates will be able +to see this on the project board or by filtering all the project issues. + +## Opening New Issues + +Issues are flexible, you can always create new issues or update existing ones +after the project has started. Up to now you have created issues for planned +tasks, but issues can be used for all sorts of tasks. Especially tasks that you +weren't able to plan for. + +Some common reasons to create new issues: + +- **Bugs**: if you find a _bug_ in the `master`/`main` branch you can open a new + issue, describe the problem, and attach the `bug` label. Someone can claim the + issue, fix the bug on a new branch, and open a PR. +- **Enhancements**: if you have an idea to improve code that _already exists_ in + the `main` branch you can open a new issue, describe the changes you have in + mind, and add the `enhancement` label. If some has time they can claim this + issue, develop the enhancement on a new branch, and send a PR. + +## Claim, Branch, Review, Merge + +This is it, the real deal. Finally you can write some code! + +You and your team mates will each work on one task at a time, asking for help +and tracking your progress with the project board. + +You will be responsible for writing your code on a new branch, and your team +mates will be responsible for reviewing and merging your code to main/master. As +a team you should make your best effort to use _branches_ for organizing your +work. If you wrote a good development strategy you will already be half-way +there. + +It will take a little while to get used to this workflow, but once you do +there's no going back: + +### Branching Strategy + +Your group's git branches should look something like this: + +[![branching strategy](./assets/branching_strategy.svg)](https://excalidraw.com/#json=IBDwrOShConw1SJwEqvii,-a8F2kZpRHiR2itGLU7IiA) + +## Individual Workflow + +Your individual workflow should look something like this: + +[![claim, branch, review, merge](./assets/claim_branch_review_merge.svg)](https://excalidraw.com/#json=-kZH0xSi4KCTru2JePZQV,X9da-5Fl_9AdgMdIbW1X5Q) diff --git a/collaboration/guide/7_retrospective.md b/collaboration/guide/7_retrospective.md new file mode 100644 index 0000000..5924ca3 --- /dev/null +++ b/collaboration/guide/7_retrospective.md @@ -0,0 +1,56 @@ +# Retrospective + +> “Regardless of what we discover, we understand and truly believe that everyone +> did the best job they could, given what they knew at the time, their skills +> and abilities, the resources available, and the situation at hand.” +> +> - [Norm Kerth](http://www.amazon.com/Project-Retrospectives-Handbook-Reviews-Dorset-ebook/dp/B00DY3KQJU/ref=tmm_kin_swatch_0?_encoding=UTF8&sr=&qid=) + +All done :) + +Your team has either finished the project ahead of time, or the deadline has +arrived and you're still not finished. No problem either way! + +A retrospective is meant for looking back at how the project went and learning +what to do differently next time. An incomplete project with a great +retrospective is still a success. + +## Behaviors, not People + +Focus on what your group can _do_ that will make the next sprint better. A huge +list of things to stop doing doesn't help you move forward. + +Retrospectives are all about behaviors that can be changed, not people that need +fixing. Keep your retrospectives _positive_ and _general_. **_You should NEVER +mention people by name!!!_** + +## Strategy vs. Board + +Take some time as a group to compare your Development Strategy to your Project +Board. + +- What parts of your plan went as expected? +- What parts of your plan did not work out? +- Did you need to add things that weren't in your strategy? +- Or remove extra steps? + +## The Four Points + +Your group will summarize your work by providing answers to these three +questions. You can have more than one answer! You can answer with bullet points, +paragraphs, links, images ... whatever is most clear. + +- **Stop Doing**: what mistakes did you make? did you miss a step? could your + communication have been better? be specific! +- **Continue Doing**: what went well that you should continue doing in the next + project? be specific! +- **Start Doing**: any good ideas you'd like to try out in the next project? be + specific! +- **Lessons Learned**: what cool things or general lessons has your team + learned? This can be about anything, not just code! + +## `/collaboration/retrospective.md` + +Fill out the template file in +[/collaboration/retrospective.md](../retrospective.md) as a group, either in a +call or asynchronously. diff --git a/collaboration/guide/README.md b/collaboration/guide/README.md new file mode 100644 index 0000000..6cd2bc9 --- /dev/null +++ b/collaboration/guide/README.md @@ -0,0 +1,214 @@ +# Group Study: Guide + +A brief guide to collaboration in this repository. It covers repository +configuration, setting learning goals, basic collaboration documents, and a +branching workflow. + +There is hopefully enough in here to get you started, but we know there are +still gaps. Let us know what's missing so we can fill it in! + +______________________________________________________________________ + +## Suggested Study + +Emerging Talent workshops that may be helpful: + +- [Documenting and Testing](https://github.com/MIT-Emerging-Talent/documenting-and-testing) +- [Debugging](https://github.com/MIT-Emerging-Talent/debugging/) +- [TDD with LLMs](https://github.com/MIT-Emerging-Talent/test-driven-development-with-large-language-models) + +### Local Development Without Git + +#### Visual Studio Code (VSCode) + +VSC is a very popular development environment. Take a look through these links +to start learning all you can do with VSC. You don't need to understand +everything right away, there will be more than enough time to practice: + +- [ArjanCodes](https://www.youtube.com/watch?v=fj2tuTIcUys) - _setting up + VSCode_ +- [academind VSC tutorial](https://www.youtube.com/watch?v=VqCgcpAypFQ) +- [shortcuts cheatsheet](https://vscode-shortcuts.com/) +- [The Coding Train](https://www.youtube.com/watch?v=yJw0SyKO9IU) +- VSC Intro from VSC + - [tutorial step-through](https://code.visualstudio.com/docs/introvideos/basics) + - [get started](https://code.visualstudio.com/docs/getstarted/introvideos) +- Are you using Windows? + - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) + - [WSL with VSCode](https://docs.microsoft.com/en-us/windows/wsl/tutorials/wsl-vscode) + - [nvm command not found](https://dev.to/duhbhavesh/nvm-command-not-found-1ho) + +#### VSCode Debugging + +Some tutorial series covering how to use the Python debugger in VSCode. These +tutorials are not in a special order, look around and find the one that works +best for you: + +- [Boris Paskhaver](https://www.youtube.com/playlist?list=PLQzZ4krxwT9Yay3kz8ly4wXiYJHzMtsWi) +- [Ghost Together](https://www.youtube.com/watch?v=oCcTiRGPogQ) +- [Tech with Tim](https://www.youtube.com/watch?v=7qZBwhSlfOo) +- [The examples in this repo](https://denepo.js.org/watch/?url=https://raw.githubusercontent.com/MIT-Emerging-Talent/debugging/main/0_stepping_through/guide.mp4) + +#### VSCode Extensions + +[Guide for installing extensions in VSCode.](https://code.visualstudio.com/learn/get-started/extensions) + +- [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) +- [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) +- [Python Preview](https://marketplace.visualstudio.com/items?itemName=dongli.python-preview) + (basically Python Tutor inside VSCode) +- [Test Explorer](https://marketplace.visualstudio.com/items?itemName=LittleFoxTeam.vscode-python-test-adapter) +- [Python Indent](https://marketplace.visualstudio.com/items?itemName=KevinRose.vsc-python-indent) + +#### Command Line Interface (CLI) + +- [relative vs. absolute paths](https://www.youtube.com/watch?v=ephId3mYu9o) +- [The Coding Train](https://www.youtube.com/watch?v=FnkkzgYuXUM&list=PLRqwX-V7Uu6Zu_uqEA6NqhLzKLACwU74X&index=3) +- [Matt's Lectures and Tutorials](https://www.youtube.com/watch?v=mUXVBMhr7Xg) +- [Jesse Showalter](https://www.youtube.com/watch?v=5XgBd6rjuDQ) +- [Enough to be Dangerous](https://www.learnenough.com/command-line-tutorial) +- CLI games: + - [bashcrawl](https://gitlab.com/slackermedia/bashcrawl/) - clone & play + - [Terminus](https://web.mit.edu/mprat/Public/web/Terminus/Web/main.html) - + online + - [iTerm](https://sr6033.github.io/lterm/) - online +- [A huge cheat sheet](https://gist.github.com/LeCoupa/122b12050f5fb267e75f) + +______________________________________________________________________ + +### Local Development With Git + +#### Git + +- Learn to visualize what happens inside of Git with: + - [learngitbranching](https://learngitbranching.js.org/) + + [a Video Guide](https://www.youtube.com/watch?v=dG0ke9vILQM) + - [git-school](https://git-school.github.io/visualizing-git/) + - [ohmygit](https://ohmygit.org/) - a git game +- [Git and GitHub for Poets](https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZF9C0YMKuns9sLDzK6zoiV) + (also talks about GitHub) +- [merge-a-matic](https://github.com/lpmi-13/merge-a-matic) +- [Git Katas](https://github.com/eficode-academy/git-katas) +- [git-it](https://github.com/jlord/git-it-electron/) +- [Understand how to use Atomic Commits](https://curiousprogrammer.io/blog/how-to-craft-your-changes-into-small-atomic-commits-using-git) +- [rebasic](https://github.com/lpmi-13/rebasic) + +______________________________________________________________________ + +### Local/Remote Development + +#### GitHub + +- [lab.github.com/githubtraining](https://lab.github.com/githubtraining/paths/) + - [first day on github](https://lab.github.com/githubtraining/first-day-on-github) + - [first week on github](https://lab.github.com/githubtraining/first-week-on-github) + - [prepare to use github](https://lab.github.com/githubtraining/prepare-to-use-github) +- [Getting Started with GitHub](https://help.github.com/en/github/getting-started-with-github) +- [Creating a GitHub Repository](https://www.youtube.com/watch?v=WfhRyz3Wf4o) +- [Connecting to GitHub with SSH](https://www.youtube.com/watch?v=p4Jhf729jgg) +- [Creating a local repo and push](https://www.youtube.com/watch?v=vbQ2bYHxxEA) +- [GitHub & VSCode](https://www.youtube.com/watch?v=ZDo0Qht5D6w) +- and much more at + [hackyourfuture.github.io/study](https://hackyourfuture.github.io/study) +- lab.github.com: + - [First Day on GitHub](https://lab.github.com/githubtraining/first-day-on-github) + - [First Week on GitHub](https://lab.github.com/githubtraining/first-week-on-github) +- [The Net Ninja](https://www.youtube.com/watch?v=QV0kVNvkMxc&list=PL4cUxeGkcC9goXbgTDQ0n_4TBzOO0ocPR&index=8) + +______________________________________________________________________ + +### Remote Collaboration + +- [Building Software Together](https://buildtogether.tech/) _a student's guide + to being a compassionate programmer_ - The technical parts are more advanced + than what you're learning now, but all the rest is gold. + +### Collaborating on GitHub + +- [Adding collaborators to a repository](https://www.youtube.com/watch?v=p49LRx3hYI8) +- [about code reviews](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-request-reviews) +- [requesting a code review](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/requesting-a-pull-request-review) +- [prevent pushing to `main`](https://stackoverflow.com/a/57685576) +- [Git Workflow for 2](https://github.com/hackyourfuturebelgium/git-workflow-workshop-for-two) +- [Pull Requests](https://www.youtube.com/watch?v=2M16faxEQsg) +- [Git & GitHub for Poets](https://www.youtube.com/watch?v=BCQHnlnPusY&list=PLRqwX-V7Uu6ZF9C0YMKuns9sLDzK6zoiV) +- The Net Ninja: + [11](https://www.youtube.com/watch?v=MnUd31TvBoU&list=PL4cUxeGkcC9goXbgTDQ0n_4TBzOO0ocPR&index=11) +- linking PRs to Issues: + [reference 1](https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue), + [reference 2](https://help.github.com/articles/autolinked-references-and-urls/) +- [closing Issues using keywords](https://help.github.com/en/enterprise/2.16/user/github/managing-your-work-on-github/closing-issues-using-keywords) + +______________________________________________________________________ + +### Open Source Development + +#### What is Open Source Software? + +- [Mozilla](https://www.youtube.com/watch?v=7c0IrsDsNaw) +- [Brian Daigle](https://www.youtube.com/watch?v=1ehpgbb3XD0) codes of conduct + and github walk-through: +- [Explained with Legos](https://www.youtube.com/watch?v=a8fHgx9mE5U) +- [And with recipes](https://www.youtube.com/watch?v=9ShgYrBkTRs) +- [Open Source vs. Closed Source](https://www.youtube.com/watch?v=2q91vTvc7YE) +- [Free/Libre vs. Open Source](https://www.youtube.com/watch?v=Ag1AKIl_2GM) + (think "free speech", not "free food") + +To learn more about all things Open, check out the +[Open Knowledge Foundation](https://okfn.org) and +[Open Knowledge Belgium](https://openknowledge.be). + +#### Open Source Licenses + +The license attached to an Open Source project is not just a detail! Check out +these links to learn more about the many licenses available: + +- [opensource.org](https://opensource.org/licenses) +- [choosealicense.com](https://choosealicense.com) +- [techsoup](https://www.techsoup.org/support/articles-and-how-tos/making-sense-of-software-licensing) +- [infoworld](https://www.infoworld.com/article/2839560/sticking-a-license-on-everything.html) +- copyleft: [what is this?](https://www.youtube.com/watch?v=6Xky8HTqaZo), + [copyleft.org](https://copyleft.org) +- :) [ErikMcClure/bad-licenses](https://github.com/ErikMcClure/bad-licenses) + +#### Codes of Conduct + +The Code of Conduct in an Open Source project describes how contributors should +treat each other. Open Source projects are about sharing and welcoming: + +- [Contributor Covenant](https://www.contributor-covenant.org) +- [opensource.guide](https://opensource.guide/code-of-conduct/) +- [opensourcedesign.net](https://opensourcedesign.net/code-of-conduct/) + +#### Contributor Guidelines + +Contributor Guidelines are important to standardize coding practices and +workflows for an Open Source project. You could think of it as describing how +the code should be treated: + +- [mozillascience](https://mozillascience.github.io/working-open-workshop/contributing/) +- [docs.github.com](https://docs.github.com/en/github/building-a-strong-community/setting-guidelines-for-repository-contributors) +- Templates + - [briandk](https://gist.github.com/briandk/3d2e8b3ec8daf5a27a62) + - [opensource.com](https://opensource.com/life/16/3/contributor-guidelines-template-and-tips) +- Examples + - [opensource.guide](https://github.com/github/opensource.guide/blob/main/CONTRIBUTING.md) + - [github/docs](https://github.com/github/docs/blob/main/CONTRIBUTING.md) + - [microsoft/vscode](https://github.com/microsoft/vscode/blob/main/CONTRIBUTING.md) + - [atom/atom](https://github.com/atom/atom/blob/master/CONTRIBUTING.md) + - [voxmedia](https://github.com/voxmedia/open-source-contribution-guidelines) + +#### How to Contribute + +- [opensource.guide](https://opensource.guide) +- [freecodecamp](https://github.com/FreeCodeCamp/how-to-contribute-to-open-source) +- [contribution-guide.org](https://www.contribution-guide.org) +- [redhat](https://www.redhat.com/en/resources/open-source-participation-guidelines-overview) +- [better-programming](https://medium.com/better-programming/4-effortless-steps-for-contributing-to-open-source-projects-35000599367b) +- Small contributions matter! + - [Why the GitHub metric monoculture?](https://medium.com/@leskis/why-the-github-metric-monoculture-d179a2f1d130) + - [pybot](https://github.com/lpmi-13/pypobot) + +and finally ... + +- [Contribute to this Project!](https://github.com/Syknapse/Contribute-To-This-Project) diff --git a/collaboration/guide/assets/branching_strategy.svg b/collaboration/guide/assets/branching_strategy.svg new file mode 100644 index 0000000..a6d15ec --- /dev/null +++ b/collaboration/guide/assets/branching_strategy.svg @@ -0,0 +1,21 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1da1fiStb+3r/C6ffrIVOXXbf55lxyxftd8e1Zrlx1MDAwMFx1MDAwMVwiXHUwMDE4XHUwMDEwgqizzn+fXbSSXGJcdFxyXGZITlx1MDAxZqtXd2sqJEVqP7Wffamd/3xbW/tcdTAwMWW+tL3v/1r77j2X3aZf6bj973/Y409ep+u3XHUwMDAy7GKD37utXqc8OLNcdTAwMWWG7e6//vnP6Fx1MDAxM0659fDzU17Te/CCsIvn/T/+vrb2n8G/sfs0/cBcdTAwMWKcOzhcdTAwMWHdRZDRg0etYHBDqrikUlBcdTAwMGXDM/zuXHUwMDE23in0KthddZtdL+qxh767lZdTVW7t1tktafqnl2HvotCL7lr1m83z8KU5XHUwMDE4ULeFX1wi6uuGnVbDu/YrYd3ee+R42qc6rV6tXHUwMDFleF37xaMv0mq7ZT98sdch0VE3qFxyrlx1MDAxMVx1MDAxZHnG36RhXHUwMDBlp5pcdTAwMDLDb0spkcNe+3mphKMpXHUwMDAzYTgx2siRYW22mq2OXHUwMDFk1v+RQYtcdTAwMDZWcsuNXHUwMDFhji6oROdoqT0jo3P671/WkUZwysSwp+75tXqIXYo4XHUwMDFj762irq43ePrCUGY0gFx1MDAxZXbYu7VcdTAwMGKVgVxi/Dt65Fx1MDAxZPfBK9hPXHUwMDA0vWYz/tyCyttze1x1MDAxN5VIWNjbkT+jr2PP345cdFl0h1674v6UXGKqXGLTQlx0Lrjiw35cdTAwMTS8xujtm61yI0GIuqHbXHQ3/KDiXHUwMDA3tdGPeEElpafpdsPN1sODXHUwMDFm4jBOWn5cdTAwMTCOnjG47nqn0+rXPXfsWeCVU/va9nJcdTAwMTGqbIt+WotEafDL8Od//5F49tg82zac4ejT3+L/v83B1HiWKlxyz1opzVxipdPD+eGw9qL6YfOsXGZhUelC2dtcdTAwMTflbMNZaeNcdTAwMDDwXHUwMDE0OIM0jtRqXGJnXHUwMDAyI1x1MDAwM1tcZqClwzXTiYBcdTAwMTaCO4JxSIA0w6VWXHUwMDAyg+hcdTAwMGJlXHUwMDBi0tGz+oL0e1x1MDAxYptp22JzvCBQU1wiRo9cdTAwMGW1NFx1MDAxM6BRbGKS/itY770+nrb31PFcdTAwMDXZuORyT4dHxZP7XHUwMDE0WNfdcr3X8VZcdTAwMGZsI5UjuNQmXHUwMDEx2FxmjKOAUZB6XHUwMDAxwFx1MDAwZTtu0G27XHUwMDFkREZcdTAwMTK4lVx1MDAxNDJcdNuUaHBcYjck3vtcdTAwMDZuSiU1XHUwMDAwXHUwMDAyouX5XHUwMDBi3dlH98epti0+yTOiO/Sew0R003R0XHUwMDFiQVx1MDAwMPW2YFOju/NaXHUwMDA393D9xnve3y5B/7DHdmQ98+jm3KHSKIJr2Ti6qZaOXHUwMDEwID9cdTAwMDHdlo4lKu5cdTAwMTjTXHUwMDFlQpozzank0dzMXHLpXHUwMDBmXHUwMDFks2FXaj5cdTAwMTd2q60gPPdfXHUwMDA3y1x1MDAwN/lwNO8++E373CNcdTAwMTI/XHUwMDEwXctcYl0/+Fx1MDAxMZTwXHSWYzJle9ebfi1cdTAwMTjoMK/6UcpDXHUwMDFm7dVhd9hqR71lvFx1MDAxYl7R64w/nVbHr/mB27yYeGerMHeH66/DYvPe9Vx1MDAwNtpcdTAwMTRnXHUwMDBlJqLSazb9djfZNobRg++45CiinOK/U8OSimr73DeN/PXJ/vHpJlx1MDAwNd7f3cs2lzbcOJQollxmSlx1MDAwNmjPXHUwMDEwXHUwMDA0LiyVS1x1MDAwYmTsXHUwMDEySKLCZVxuXHUwMDE3XHJIVLeAQ9OSsWhQq8CmkFTGZfVcdTAwMTfYnFdOXHUwMDE5S5NTXHUwMDFjXHUwMDAz5SDV9DZfT5ZexU1gTnc3Xlx1MDAwZsOrzfNm8aCfdTmVTuTBXHUwMDE5lVOuuFx1MDAwM5pcdTAwMDDTRGROTlx1MDAwNaBuk1xcrFaFrFxcTClOi0SzaYb19LDTL+w91q9d0b/qdFx1MDAxZTd7J6fVbrblVEmYIKdcdTAwMDAqu3JKpaSEXHUwMDFh8vdYTzlPXHUwMDE1VIKPh2pCpufjN7R3s364mV83533++nhkeuv8OOuCylx1MDAxY0DtnyyoknxcXFCzJKaaXG4wXHUwMDA0wfO3XHUwMDEw01R6ylxiM2g3ajaD2Shhv1TcpZt7XHUwMDA3YEzfJ9u7fjv7Ypq+nlwiSFx1MDAxZG5cdTAwMDDFQWROTFx1MDAxNdeUMkN/XHUwMDFmtZ/muYyZzePhRU6NUkpPLaPmnOXzxcZ5uN9/fH3c7txvn5xm3YZcdTAwMDLpMCqFMkk2XHUwMDE0N9xRxlrwS7WhKIqiZiTZsSGUI0Dq8XhcdTAwMDRcdTAwMTCjOIWMxiNmk93YY/2tPZa5hKm2bTjJ0Vx1MDAwNb7F/5/VZSnSYVxyRmmL6ulhfXb4XHUwMDAyft5TV7xQr2ychOboOZd1hiSIXHUwMDAzMlx1MDAxNdZK21AvU3RcdTAwMTH+ynRYXHUwMDEz4XxE7iRvJYKGa1xccleqc5BaxLjZsr2V5brbbHpBzVuNy3LC7Zfrt1x1MDAwNDl6cJhcdTAwMDNAXGZVZoZY4fZdbe+mwangwXGxeEQvb/JnMuPYlMJhP3GZQFx1MDAwYtGMZY6VQsGzZ75IXHUwMDBlhlx0XHUwMDEw0aB+V17ITapcdTAwMDLRkiElXHUwMDAyOb3t8rpdb4b9x7yBRlx1MDAxMFx1MDAxNJ+2n85cdTAwMWGFs2xcdTAwMGKppspcdTAwMDFcdTAwMDU8OZxNXHTXjuZcdTAwMDLFUy8x71xmXHUwMDEwXHSMJipcdTAwMTBcco5SiWkqyFRtXHUwMDFjW2cz80xSNYPo/l1o4fhM21x1MDAxNs3xjKxwLp9cdTAwMDRcdTAwMDXFtDRsXHUwMDA211k71Du3nnvUZ49cdTAwMDdBNYT93eLGa7ZxbVx1MDAxMLjpPlx0PKAy6zszklx1MDAwMc5cdTAwMTFdufKZXHUwMDA1wUuQU6YpXHUwMDE1MFx1MDAwM0eqXj5vVdjV0U6VP5+Lwk3QL1x1MDAxNjMvppNcXGdcdTAwMDIlKKNSynDMSO7Uyj1nK1x1MDAxNlKJ1lx1MDAxY1x1MDAxMJghN//WrcnSy+bL3k7p9aBaKzz7r09+xqVcdTAwMTQmSSnllGZVTCmTVFx1MDAxYmbU77OYpjF5NsFcdTAwMTUkKVPamOmjur2boHeab72E/bOb0kPN3bhxdzJcdTAwMWXVNVo4xJhcdTAwMTQmL1x1MDAxNMpILON8OUSe6pSsNYVcYknOj+FcdTAwMDJpvF6Esv9i8Z/F4kem2bb3XHSekcGnJprLdJVDXHUwMDA1YVxmiJ6ev5+zy7OWd7lxe9ntbolGd//w0n/MOJptRIazlJw3ypl0XGJEXHUwMDAxm+XA2ZIznrKBXHUwMDA0p8FhXHUwMDFmXHUwMDEz0N9ziVx1MDAwNFx1MDAxM8pkN17zXHUwMDA16fGzXHUwMDEzptq2XFw0yzNcdTAwMDI7NWCT6lx1MDAxMqZgXUwoy9NTye3Gxl6NPz3vuseHVXnx+ljtrvOF4rriduveQoGNWFx1MDAwNoQupKSYI512QHCil1xu7PSATcygXHUwMDE5OoOtXHUwMDFkypFXrJBCSlx1MDAwMobPXHUwMDE1aJ0rYONcdTAwMDatsO511n5cdTAwMDQrXHUwMDBl3Uw1kGmCOFLPp4dJalxuXHUwMDFhx0mRhsnp/Vx1MDAxM8WHXHUwMDE3XHUwMDEzPj25OXLd7dTysKGbZivbapharoP6bLBcdTAwMDc9IVx1MDAwNVxyrTI0/IZcdTAwMWJCloLW+XZxUq5cdTAwMDWjXHUwMDE0bdKMqmFcdTAwMWSX3y81PGhcdTAwMGLexjlpS0mqtSwkYajvYXp6zTYvd1x1MDAxZkvr8qWT81tnXHJ1+1x1MDAxNFx1MDAxYZ1xXFxcdTAwMTPk10xyXHUwMDFiQEoqt8CVI4ySVGQvZ1x1MDAwZlBCOFOrT9WfXHUwMDA1wPOKqU5P1aeKXG79YVx1MDAxOL/0j+fMyUbpWD9eX21e3/nth93ScyPzclxuuCZcdTAwMTCZXFxHgDLCXHUwMDFku/9cdTAwMGayl1xcamymj0L2+NvIaSpJSs8hUFxujCZcdTAwMDSmJ0k1n+dLvftbfXBSW2/mLopeob6bbSG1iS5UXHUwMDBizlx1MDAxMpPQJOOOVHS5rlxuqVx1MDAxYy1o8nZ4+JnbmkCRXGbYXHUwMDA0XHUwMDA3+KJIfyGKlFx1MDAxYp9q24aTvDiKNGmbXHUwMDE4kdJINsM2sdvqxo6Xe9jx6F6zXHUwMDFk6vvjorffyjaspZi0nVFcbpHZoFx1MDAxN1x1MDAxMCVcZl1xiulnUSRJU8WUKSRI1kafWkx3bnLHZ512jpa2XHUwMDAyj5RI7rR0sp9xMZVcdTAwMDShT94yoEfFVHHjoH2uSVx1MDAwNrMsKVx1MDAwZdggR1p5bHbpXGZcdNJcdTAwMGKLWFx1MDAxYc9cdTAwMDSZYWd4N1C73fvOPe+Gh4rmm14+f3GYbVx1MDAxOVVEOCY1Td/yJ4nPYbleJO5cdTAwMTj9wVFcdTAwMTRcdTAwMTEkmVx1MDAxNslB+0IotojCXCJf/OizXFxIo/Ns23CGZ2RHqZWC0t1HSlipMdN7jy73blWT54rH7qPvXr1S/2B7O+PBWVx1MDAwMahUXGKQZDjjoeUn9uO66SRnTI9vudFcdTAwMWG1XGasdMe85Fx1MDAxMqL5WXb4xntue1x1MDAxZN9cdTAwMGVsNVGbSfdfwI6bdD9EOlx1MDAxNVx1MDAwNKnQ0lUzbMT2ucjrvHl+XG6uVOG1IM96+iBzKVDcRq1cdTAwMDelgYxBXHUwMDFlXHUwMDAxXHUwMDEwXHTDwH3GXHUwMDE4OFx1MDAxY1x1MDAwNvqCS1x1MDAxOfNFXHJ2ZiviXHUwMDEwUFx1MDAwNlGK16Axc2HVVXXt5kVcIlx1MDAxOMlsWtSX5lx1MDAxZD97oWV1J1x1MDAxOHxUTUjHVWBLsc2wl33TdSu7J1xijcO8d/b85PeL9DD3V4M5Mahcclx0U4ZcdTAwMWHCWbzMlL2isWX7qCBGXHUwMDFhXCJcdTAwMDXjoyNdqVx1MDAxMchcdTAwMTXH4VP++1x1MDAxOIFcdTAwMTNFd0L9WORSs1x1MDAxNGF42W5cdTAwMWSd+b1cdTAwMDNTJ1CqPjw2lNDXfz3BXHUwMDE1jlx1MDAwMFwiJC5cdTAwMWOC0ljR7IFhqFGmiDSaXHUwMDBihmZYrFx1MDAxY1BcdTAwMDZcdTAwMDRcdTAwMTeosHjTK6/EtPz4Tmyr+GiBXHUwMDFiu0mHilx1MDAxOZJg7nePqvu9u9ers/1ypU2e1nub1cXmrH1cbq1CZSdcdTAwMTjKpSRMiFiS0GC9RfPI7jDTRitDtMhSyEfht1x1MDAxMWpcdTAwMTGe4S9e9XeK+Fx1MDAxMFx1MDAwNopcdTAwMWIyw1x1MDAxNpKt+o65qFTKrerTpuxcbl5Yf9nI+D4nSrVwXHUwMDAwKH2rbj5ayVxucY3syu530pAtXzpcdTAwMDeFrG8hkdyMKKO5XCI+wFx1MDAxODJcdDFDyVx1MDAxYriBW/fA7ZTO+lvAz1x1MDAxZbzczU3WhdSg2S6QM0GSkNpcbt7IqIUtj5gxIaX2pSdcdTAwMTmoXHS4fMKk01x1MDAwYr9QyVx0zJC0tb310j3eXHUwMDE3fn9TP235OeNTryGyJqG/4ktcdTAwMTSUI1x1MDAxNXJF7DNcXMS84z8rXHUwMDA0gqOktD5j67BaXHUwMDBly58n/qNwZIBcdTAwMDbIXHUwMDAyKP5cdTAwMTdb+q3iP+nvgUGCTdBUncHPfGqK3adcdTAwMTZ4d5Wji8PmXHUwMDExbWy2TNZcdTAwMDD+UVx1MDAwNYGyb3kh5G1XXHUwMDAwkSP2XHUwMDBmIVx1MDAwZVAgjC4xnss4OMloXHUwMDFli/8wyVx1MDAxNcfFaaWKR+n4jsClv1x1MDAxZsLr1Ly1KFx1MDAwZbP2I/Cra3641ne7a91euYxfp9prfm5YaOZBLSBW5NpFJ1x1MDAxMcLptaWpZEA4m8FcdTAwMTd3lD/cXHUwMDExUKmaO9IzW+LqqsJ0xov1S0ZcdTAwMWRNSUrSqtbMQc233LpXRqWzSDXe91x1MDAxZc1FiiBcdTAwMTlnXHUwMDBiQPMylDKbXHUwMDBi5JlQyqNgWaheXHUwMDFln2zbctE8L0w1pzorXHJRUlBcdTAwMDXT4/retJRX5LeNe/5IToP1wHts1rKNa0o1d/TAOZ2Wa4VPe8l1MJh2TDKux7UzamZcdTAwMDOgVupHR8ODx+qhfV5+xtqqXHUwMDEzNFx1MDAxMlx1MDAwNrDcmqhMpCdpUFx01vOmpncySsWrvFC6XHUwMDBl9ltX7aPd+mknv+5mXHUwMDFioLaYkmAmJXlKK2btXHUwMDE3XHUwMDEwkmvCiFx1MDAxNiPjWm3NL9S6XGJcdTAwMTW16i1NM+nYeVx1MDAwNZXqVEFcdTAwMTWSXGJcdTAwMWPK9Cm7freTU4E6f915aDzXio2r41x1MDAxZJL5ynQoI3TYRr2MXHUwMDFhXHUwMDFjyKiYSmW9o6BXnVGwOClNLfnF018yTVx1MDAxNFx1MDAwZYLwXHUwMDE5XurwUDznl7eF+l4uaFx1MDAwNtvrW/lccq+QcVx1MDAxOVx1MDAwNeFcZktcdTAwMDSNL6WGO1RcdC3R/l+ejM5cdTAwMTeGZVx1MDAwMExcYmkyWrz3L2zE/Fx1MDAxNnFYSLVhKOdcdTAwMWO58ixb72Th+KRU4U+5c2jfV7f2yUW3oLJccmzNJ72txTDILEeSXHUwMDAwaEpos+qsoOUrXHUwMDFmatKzXHUwMDA1mDFcdTAwMDYoNTNon902c7dvTnv3XHJ3vVx1MDAxMPT2XHUwMDBle7vNjFx1MDAwYilcdTAwMWHa3KB2UUmlXHRsXHUwMDEykFx1MDAxYWRVL1X7zFx1MDAxMdXiXHUwMDAwXFxcdTAwMDBARnOrv3RPwtmfXHUwMDE01UpFtFx1MDAwMG5cdTAwMDM60yud1t3e02EzV7tsb16e75yYrWNcdTAwMWFcdTAwMWWk4HlcdG8/jz4zXHUwMDEzooVccmS/18RcdTAwMTnjk0I7REouXHUwMDE3UFx1MDAxNGfiu8+ldLQyXHUwMDA2XHUwMDAxobWWKlZeIyp8XHUwMDE1XHL8PVZtg+yai9UqXHUwMDFlqflcXEHpKdxo0ZS+u9FarXb3XHUwMDFmP4JSr7ZW9Z8/14OWdu9R55mISUHkPeOJ+PyJnHyhu/XQ6VJz0L99cFx1MDAwZnvV4+OTmEsrWS3/lF5mrSHCQVx1MDAxYSkofJRebvOCuN3ro4hcdTAwMDT8q8bkzso3tY5QYbfeXGKZVPVcdTAwMTSIg8ZcdTAwMGKaXFzcVjxRMcUzXHUwMDBlqVFcXFDP/plcdTAwMWRcdTAwMTfTK//RXHUwMDFkTFPVsfzVWrFU7fhuXHUwMDEwXG7GuUBcdTAwMTiN7Su160F6ZW+NXHUwMDA0XHUwMDA0NJtqu+kokj+Me9wlLvGyc5WKXajiS5VJ28alcVxcXHUwMDEzzqrrZ+ZcdTAwMTAzM4RcdNjPifrWfWO7qDZrxyd3u0ePLaLL49j/qMBcdTAwMDdcdTAwMWLs0WBcdTAwMDJcIrShaFx1MDAxYlxuMpJgxZR2XHUwMDE0cC2RlVv7MZL4YcRcdTAwMDbXXHUwMDBlnsIjI+n7gvjaJFVcdTAwMTmrayFcdTAwMTVcYja2Tc2aXHUwMDA16Vx1MDAxYoCk0Vxmllx1MDAwMWU1XGJ7zlx1MDAwM+V3TdvGc9dcdTAwMWVQNf7xIyh3PLz82mjUaOZA2FxcXHUwMDFh+kNcYmpcdTAwMWW9PcU3XHUwMDE5VeFcdTAwMTO5dHpcbmgql0ZcdTAwMDKJRM2o6VPE3FKdXFy+1vy9vZP75/OHu1x1MDAxMls355lcdTAwMDFPWuU+bd+AinqEWS4r9cclXHQ0dZRgkjKDJFeJmKpZ1JryvrYpcIRhtlYvUYbEXFzmXHUwMDExq7GWvLZpYlxuXHUwMDE3UMrFeFx1MDAxMWg8aF/JtIhtios2mlx1MDAxNT5q85Vcbjp+di5t5m1cdTAwMWKf83HuMFx1MDAxMfmpVvSEcojMUM5QXHUwMDFiT29HP7Wa6m6/XHKdMy+fv7+7MNfH3lxc7/38VOijXHUwMDFkzcBcYrRFXHUwMDE0qsKYITGAPuPI6Yh9uVx1MDAwM1x1MDAxNTz+gq9FI386VvNcdTAwMWXdXHUwMDA2VJJSLaLYz9xcdTAwMDa0Qlx1MDAxYv5cdTAwMTOzRKdQhp9hS8+hk5NcdMFcXJpcdTAwMWHVUzpeXHTj0ohcdTAwMTleybB1e1F0Xy9cdTAwMGU2Lp82nstn136zsXubebzyn1V0XHUwMDE5XHUwMDE1aElcdTAwMTH+MZ2bMmZcdTAwMWOGQEbjXHUwMDAxXHUwMDFmh4IlXHUwMDAylkiHMdDK4Hqs7WtcdTAwMTBcdTAwMTOUNcfRaNBcdTAwMDJwxGj0kTFlzSUjuLQs4t10XHUwMDBi19VMz+kh+811dfrMXHUwMDBmesfmfFHKOj3Jx5I9JVxin35r+/ou2zjaLtxXizey0OuVrzc2ve2sY1x1MDAxZtHtID1SwCVcdTAwMWGf2oxgnyOH4sZuzVwiVFEq0sNY/yv2XHUwMDE5XHUwMDBlRKbkUYyX9EIy/tHPsVx1MDAwMmUtXHUwMDE10cvydicp6279TS9GenKgOjveY8/rhp+ttKdcdTAwMWXOXHUwMDEylTekv5/FXHUwMDA2cIhGpTV9XHUwMDEw+vZo66pz17/f93TxtrbezHvd+2LGXHUwMDAxrK1vz1xihlpbaFx1MDAxNVx1MDAwN+jPz9tUbKU4QVPbmPhqtnAzm+GNXHUwMDE4KKU1UVx1MDAxYZl9gupGiCtcdTAwMDJEK1BSgolZSkM7m2iOVkNcdTAwMTZVt5TxylNfqvu95VJn3rbxOV+Q6maTXG4/XHUwMDBmSnBcdTAwMDJMz9tPxUMlfLx5KVx1MDAxN+BJtFxuObbz3LnPOPSlsFlcdTAwMDFGI7zxRzJShVx1MDAwNpW1dohG2ZVWWS6Rtc+muVxy4CpFVlrvS0lkNJ9XjvPvobm/vS1cdTAwMTDf3Xb7PMRrXHUwMDBl1+DvT77X30jIaqpcdTAwMGXa929v4Lco81x1MDAwNkv3n9/+/C8rzvjSIn0= + + + + + mainbranchchallengebranchanother challengebranchexperimentbranchmerge experiment if it was successfulexperiment branchoops!bug fixpull main,create branchpull main,create branchpush branch,create pull requestpush branch,create pull request \ No newline at end of file diff --git a/collaboration/guide/assets/claim_branch_review_merge.svg b/collaboration/guide/assets/claim_branch_review_merge.svg new file mode 100644 index 0000000..77fd84d --- /dev/null +++ b/collaboration/guide/assets/claim_branch_review_merge.svg @@ -0,0 +1,21 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1da1fbyLL9nl/hm/t13NPV755vXHUwMDEwwjNAeFx1MDAwNcLNWSxhXHUwMDBi28Ev/OB11vz3WyVcdTAwMDOSbfnFsYg4XHUwMDE5Zk1ILLnVkrp2711dVf3vXHUwMDBmhcLH3kM7/PhX4WN4X1xu6rVyJ7j7+Fx1MDAwN31+XHUwMDFidrq1Vlx1MDAxM1x1MDAwZono391Wv1OKzqz2eu3uX3/+XHUwMDE5f4OVWo3Bt8J62Fxim70unvd/+O9C4d/Rn4nrdMJSL2hW6mH0hehQfClcdTAwMDVi9NO9VjO6rDbeOS+5ezmh1l3Dy/XCMlx1MDAxZb1cburdMD5CXHUwMDFmffy+vfp4tMXb5mHn5vtW03WEenyIr3pVq9ePelx1MDAwZvXBPVx1MDAwNaVqv5PoU7fXaV2Hp7Vyr4rHYeTzl+91W/hcdTAwMDTib3Va/Uq1XHUwMDE5drtD32m1g1Kt90Cfcf7y6eAh/FWIP7nHf1nLmVLO439WSMvNy9Ho+4Yz7o3UXG7M4GekY59a9VaHOva/PPqJu3ZcdTAwMTmUrivYv2Y5PqdcdTAwMTSWVTmIz7l7ul2hPVx1MDAxM17j87ZeW6vUy1x1MDAxOdWwVqn28Fx1MDAxNGeZlF44bUFFf8ZcdTAwMWRcdKM3XHUwMDAyXHUwMDA231x1MDAxOFdS+ZcjdPn2VjlcdTAwMWFcdTAwMWP/it9DJ2iEW/SVZr9eTz7KZvnpUVx1MDAwZVx1MDAxZLikXHUwMDAzn0fHWXKsXHKNt6DTad293GJieFxc3Tb4Ne+LtS/rXzZ39j9cdTAwMWbb7Wbx48t5f//xynbPVrdMu3jxWL+4hEPfcpWLk4eLJbR7/92vQO+4s7FduthpXtavXHUwMDBlNvtcdTAwMDez21x1MDAxZHxZrKi1L+ZTuOqKm99lt19b3SlWh68y3IG43ae/xS+s3y5cdTAwMDdcdTAwMDOrXHUwMDAzy+nde+91YqDWa83r0ZdWb5WuY0P9kOjwXHUwMDE4QPTC+15cdTAwMWE2gIRJ2Fx1MDAwMFx1MDAwMiTnzlx1MDAwYjU3OMhd2Oiv2N3PlduNxsOXXvE+UGH+wUEzyVx1MDAxNZdGaSelVCPg4JiLkSEzcFBcdTAwMDYxSFo9XHUwMDBlXG6J5/+MXHUwMDAyzlpjXHUwMDA1nv9rUGCa6Sxt9Fx1MDAxYtCwwOiP77nV7Fx1MDAxZNVcdTAwMWXpuoJcdTAwMGZ9ulx1MDAxZTRqdXqn8WOLzFx1MDAwMjtYqlx1MDAwN7XGn6VOiL0oXHUwMDA0zUKt2+0nhiadtlKvVZrRufhwws6QMfVqOGm/nNColcvJmbiE11x1MDAwZWrNsDP+JlqdWqXWXGbqx/P1XHUwMDAzXHUwMDFmQ7j5PC6AicRQ64Z0MLrpV1x1MDAwMYFITCkjQGCNQ5rAXHUwMDEzT3NcdTAwMTZcdTAwMGWcu5/3K/Zb/dzttDo7/fPtzk3lKvc44Fx1MDAxZDNcdTAwMTJvk0BgXGZcdTAwMDfwY2a9NICzN2SHXHUwMDAzoOPX8IJcdTAwMDBcdTAwMTB/9oxcdTAwMDCWgzZKJlx1MDAxOEK+eED61LhcdTAwMTBcdTAwMDJcdTAwMThntUhcdTAwMGX9VyBcdTAwMDCYoU+nIECxXHUwMDEwdLtowIVcdTAwMDek5GhMV1x1MDAxM6y/XHUwMDFlXvWm2H6v1X6V4U+5/IjRI/jrxNB6sXvQU+1+qkKQbqLx44D0Rkth4yc5y/pcdTAwMWLdsGKPr07W2/v6oi/WXHUwMDFme3efy7m3flx1MDAxMFxmyVx1MDAxMDiUXHREXHUwMDAzhq1fasJcdTAwMDYpXHUwMDA10lx1MDAwNGGlXHUwMDFi7ddyjF9cIlx1MDAwMqVzXHUwMDAwYiGeXHUwMDBiz8FG4iBcdTAwMWW/L5RcdTAwMDCkxfeUVzzISlx1MDAxN2w1zvnPQ9/44u/31u9Vt1x1MDAxMVx1MDAxY16HS2j3+1qd35xurJrj4s/zg7Xjzdp+e31cdO1Wt3c73ZPHi7VKN9g8KVUu2vfhUba4+Do6oNVERPBcboR0izhccjY3e42DTzurn8tXXHUwMDBmXHUwMDE3ZWE6e+0rmXtEMFxubX5cIlwiOGA4XHQrXHUwMDE04847x31GuiDB8acoXHUwMDAyIZySmnOdtflnPWHPT9nXwtuw3mpcdTAwMTe+44RZOFx1MDAwZbrXhS8tnInrXHUwMDBmbztxz9GNXGZZu0qM4lx1MDAxMTPFycApXHUwMDFjmXNcdTAwMWLpZWu7fWHPP1+u1fSeO/puu9d7pdxcdTAwMWKplMxKgzc7UO/DRqqEZ5p7p1x1MDAxZFx1MDAxMnuvk3azzGlbx7b/YqNcdL70ZKNOaOO1ydxEXzkznXy/PN78tFH93uy1+ydcdTAwMGb1i/Lxxvd8M/ZG6zYs9KrhQCZcdTAwMTd6rcJaq9as/GhcdTAwMTZcdTAwMGJtvGqhXHUwMDExdFGp/9lAU6aDRK1cdTAwMGKlVqPdx0/ppGedXWiGd4XLTtAsVVx1MDAwYne1Xlx1MDAxNT+ptFrlQlx1MDAxM99E4jwkXHUwMDE3eCuFu7BeL9KhMjXWqOFTf2OpkL/7nlOjWDFcdTAwMTXlhsdmXHUwMDEy5tRkL6VWXHUwMDFhxYmT8+uTdC6ac6BD6s+s5sZpXHUwMDE0/tzHjUTOXHTNmeBgtLJKXHUwMDFi51x1MDAxM09/qc5cdCbwUXPjlUfMXHUwMDAzXHUwMDA01Vx1MDAxNKXCOXNcdTAwMTZQKlx1MDAxOeQkPInIz1JFIFx1MDAxNnNcdTAwMDVLWMKIXHUwMDEx7nlcZomnT/6Ob/BNKEy3XHUwMDE3dHqrtWZcdTAwMTntcLhjT4t3W3OsntGjXGLadFx1MDAxN8xcdTAwMWGD5NJcdTAwMTllJcpNkzjjqlXq031cdTAwMTQ549xZXHUwMDAxwmrvuPNeazt292GzPLtX01x1MDAwNftLryzDkSdpssV+aa7EhF5Jq8BIL1xmdlxunFx1MDAwMDXWqzpcdTAwMDLUp1xiQ/Dxf0Xs6o0+5uh5rlx1MDAxMFx1MDAxZVTDYGxcZuBdJY+NXHUwMDAyR5taXHUwMDFjnlx1MDAwYuO/XHUwMDE1YsOK/vHy93/9kXr25EFcdTAwMWZcdTAwMWRcdTAwMWRcdTAwMWLucXtcdTAwMWaSv1/ll0H+Nlx1MDAxMfekXHUwMDAxXHUwMDEwfJHVmU/nZ1x1MDAwZvLKP8rLjZXtjYvvm6eNnU7ecVx1MDAwZmVcctPeelx1MDAwN9ZGnlk7hHxcYnmMaJVAVepRjNmRji1cdTAwMDf4lORokWCH5rVcdTAwMTjyrGDaKiMtXHUwMDBlXHUwMDE0i2RzXHUwMDE08ZRcdTAwMDSEPGHizuWL+mXlRPlcdTAwMDVO4Km2NklFSTXRzFx1MDAxNNeeXFxcdTAwMDDzW5m52avAl/O17m1p/2G3uv1weHZWybuVaTBMXG6vxMDGRmSUsZpxwSWCvqblkWxklFApMipl8dOAXHUwMDAy8MZmbk358XVcdTAwMWOGN/2w20N+/qlVXHUwMDBlXHUwMDBih+FtLbyboDpmLk++VnfM6ESGXlx1MDAwZWsmXHUwMDA2MIGgmVx1MDAwMZF3bvvs7z2u3Nx3zuxuq9/tu+217VXXzLt9Klx1MDAwM8xxiWA08EWOzIJcdTAwMTbNXHUwMDE3qb9SXHUwMDA2jUNnZaDSp4Qs+YTUeDZQZK1OQm49XHUwMDFkVp43Pz3qa3/5c3N17St83t856+Tb09Hud6tcdTAwMDNcdTAwMWT/JNdR1pNcdTAwMDMgerCFTthuXHLp+q+HhatOqzH0XHLyXHUwMDA2/DnwXGbQuZ1cdTAwMTdr7kSGnPhCqVWvh0FcdTAwMDVcdTAwMGbTiXRzg8+x1WdvQuR4oKORK1wi/ohOOERS/lC4anWm41Rm3pH/jmc1p0fFw1REnehRsYnpczQm1HLrvJrfcZxOXHUwMDFmc46oTlx1MDAwMePI7pTn4LROLGbR97WwzEtjXHUwMDA1XG4+4WxGslx1MDAwMjVcdTAwMWPzqFxcXHUwMDA0Pm/rlE/TXHUwMDE2gvzbWiNcdTAwMDdcdTAwMDWC/jFtgUpbXG7OPSxcdTAwMDFt3507ZabjXCLplsDuXHUwMDE46clcdTAwMWaBMt7HXHUwMDFlxcKzf1x1MDAwM8Zudi7vyXRZXYh9OviShcNJ1GpcdTAwMGKgkn6EZD+Bg0a9aVx1MDAwNb5s8v64sV69J+9JceJcdTAwMTinn7HRXHUwMDFkN/ch+ftVzlx1MDAxM1x1MDAxM7vNRiFOolZ3elx1MDAwMdfJdvVordu6O17pb35cdTAwMTZn9dLPo5PuTt4hjla/pFx1MDAxMS8xbcOc0Vx1MDAwYsc0UjVuhCZcYpMj/VqS58RKJkG657C6XHUwMDE0XHUwMDA2XHTaModooVx1MDAwNE5yyns/XHUwMDE29e49XHUwMDFl1Fxc5DW4RTZcdTAwMWW3d697pZWTeq9+4D6Jx9XHkyX4T35cdTAwMDFRnWpuXHUwMDEz/Sd6SviYxKOgXHUwMDE3WIe+Lq73d068+3bha837x+vaTlDJffiYloIppFx1MDAxMdZBZE5i2NaUY+bJfzlsXHUwMDA1v8CBgrZEXHUwMDBlSZd5XG5Jfvwnn1rNcr80n/8kI10yo1x1MDAwYlx1MDAxOXpPXHUwMDFjn+jdXHUwMDE03HNcdTAwMGJcbtT8od07qztb6nTz8UK3yse9iilVjFvLu3UqY1BBxf7N4fwv7zXTSLeQodBkmM08XGIpa6XjMVwiaJrOXHSRfVx1MDAxY1dGM11cdTAwMDYzUprlL+I6Kde6yK27T3K9ilx1MDAwMyTsXHUwMDE2KDCiXHUwMDFhokonXV5ccm7JXHUwMDExQFFbka8gqF/TXHRttJVWM9L//cHpJbLcMWfB4GuVXHUwMDEwz4i8XHUwMDA15bBUK4cvXHUwMDFmXHUwMDE1alfxl5v4mrvPvXhrx8h7eFx1MDAxMlx1MDAxOVx1MDAwN5JcYtBcdTAwMTNFgaCFbeXM/Fg4Pf9vOVhYbpHKWypcdTAwMTgqxVBcblvvjPDe2ZhcdTAwMDfQ91x1MDAxZKXKOvLfSoun8GxcIt1pVVdcdKREzlx1MDAxOa1QXHUwMDAxxNrkXHUwMDA1XHUwMDFkUZswyylcdTAwMDZCcmesXHUwMDE4czRb44VcXE7M+5I9XHUwMDFm+NiUSFx1MDAxMKzlez7U3fWKrO5cdTAwMWa0+qsrXHUwMDBm/WD1S8XLx1TPXHUwMDA3MC5cdTAwMDGFtvI421vOdTJs48nxXHUwMDAxjFx1MDAwMlx1MDAxOFx1MDAxY9dcdTAwMTLHXHUwMDA1XHUwMDBlXHUwMDBiOXbzc3lCZka3PHeKM4HSk1x1MDAxMplRiHvsmlXjnXLMa+E4UuooXHUwMDAwY7xP78tcdTAwMGaCctt5K51T+Ji5XHUwMDE3f1xmXHUwMDFktYBWx0Hju1LWoI6Y3SBQeDpaXHUwMDBlXHUwMDE3QmnphsJSirRg5JVcdTAwMTVcdTAwMWOpj8FcdTAwMTalntUgcFx1MDAxY1x1MDAwNVx1MDAwNqdnYTyOYp1cZjrCXHUwMDA2jUI0tlxuzdFcdTAwMGInhZjZnuRcdTAwMDZZlZf4llxyXHUwMDA3bkaaXHUwMDFiNe64uVx1MDAwZsnfXHUwMDBiI7zWevTTWItcdTAwMWFuJTg+v98nXYHnnO2iTTHkuo6jXHUwMDEyXHUwMDA1Ye3wYr5cdTAwMTOWSce9XHUwMDA2b8EmqeZStSjjXHUwMDFh20fL5mAoNSGmfEOhguC00kjLsVdcdFx1MDAxMEg4t7nzUsBcdTAwMTJcdTAwMTKd351ze/pC9Vx1MDAxMJpcdTAwMDIgXHUwMDAwgKF3ilx1MDAwNlx1MDAwN5Bwsj6jqWYobjRCj7Y4s8P4vc+F8NP9oIVcdTAwMTFHtlx1MDAxZVx1MDAwNChcIlx1MDAwNCGKXHUwMDBiO96pd1xy6ZOHOP2MXHUwMDBm7mUhXHUwMDFjKDUxN4smXHUwMDA0ROlcdTAwMDXKuaTmueVcdTAwMWPgKFx1MDAxY0+D1IKSMVx1MDAwMVx1MDAwMS7GsKdcdTAwMDY8w1x0h3vPLSGgXHUwMDFi6dmSwiGkZIpcdTAwMDP+4lx1MDAxNs1K+Fx1MDAxNFx1MDAwZauNxklcdTAwMTUvYXGE4FxmO45w2Fx1MDAwMIpcdTAwMTKc8P+LXHUwMDExbtREl7iwx5G5guBGXHUwMDAyXHUwMDA1TCOFNePYZ5j00SSCL1xuvLTvO1x1MDAxZbmoXeTLct5cclx1MDAwMq2HiZVA3JF4XHUwMDE0WVx1MDAxN5Jroa2b2aBcdTAwMTBMIVx1MDAxM0A1XGJUV8CL4Vx1MDAxNqU3zGlcbvpGayOxNlx1MDAwN5W0xN29UtpjXHUwMDA3rFx1MDAxZG5cdTAwMTBcdTAwMTVcdTAwMWJcdTAwMDONklx1MDAwNPmY0qDkrPbwskyAk0pcbpJcdTAwMGIjVHLMxlx1MDAxNlx1MDAwNNqJpXGQWE+kkkiDXHUwMDExhVx1MDAxMmJqJtLuXHUwMDFmrGzv+db2/lbxS/OnOK9u8/vbvCOt8JzhODNI0fFtSjOcduI0PnmU8cpRbJrnXHUwMDE5lcTgKXFcdTAwMTGJgL+Xklx1MDAxOIbi4ZX4hXGhSLnFK3X/68rWXGbcZz+ad2EnLPxoPlx1MDAwNSol/UVv4Vqco1x1MDAxYvOsb1x1MDAxOPdaQqQnXHUwMDA2MzlNem+R7LB0XHUwMDE3d87tXHUwMDE05z+GbEdRrLqklYxcdTAwMTFChGbMhcRcdMFJR6lcdTAwMTLZXHUwMDE4KkPG4Fx1MDAwNWXCXGIqKpiyXHUwMDFh6fHV43xigCuhlVx1MDAxYo9cdTAwMWRcdTAwMDXpKTxnXHUwMDE5i5O5pUOTSM/0pbUh0iM4kkZcdTAwMGYk9aQ1nqdoK8fIreaUl+Bxslx1MDAxYSc9c1x1MDAxMbFWs/F4t+NcdTAwMWa25PX5xYm8cSf17Z+TXCKsyLflnSaeRVx1MDAxZSk/1inFXHUwMDFjziSg8IHirK3E+45tmjje6Wd0pC+JlCiYnFx1MDAxMWbpXctFXCI3zfG3Tzeb/W8nW+XrrSOzbY0s5j5cdTAwMTNWKs6sdU/V+sbq9SFcdEC6KrlGda5Fwi+65GKe8VOelqyCL0Xj2LCZV+rLT7DFU1xcdDks3Fx1MDAwNd1C0G53WrdvzUhm9WFcdOFcdTAwMTbTY1x1MDAwZsVERlwiUKdoVEZcdTAwMGKY6XRcdTAwMTDOqZkq65hcdTAwMDVaedJcdTAwMDBITUYoXHQqKEa+MznIZ5HZuKGl0myQszb4XHUwMDExKZxcdTAwMDQlNEMt95xZg1x1MDAxYXPUilFcXDqOiJPXortZxVx1MDAxZs4qjvs8ky1cdTAwMTF6XjUpykQhglx1MDAxMWvzOPqEUFx1MDAwYizq797feDg5O6lcdTAwMWXzi/LuwUlcdTAwMWJuXHUwMDFh53k3Nk3ZXGZWUVx1MDAwMrQhY1x1MDAxYilwLcAwYYx/Tu/MaM1cdTAwMDdg3LrG50SEXHUwMDAzoexvVatqN+xUnlJ/Pv2K2J9p188w8lDKKeVcdTAwMGKkVcbLXHUwMDA1ZsEv4mF1x1x1MDAxY4nW5re91lnNlzrto9ynXHUwMDE5afBcZic5ZOaS09rMXGJZXHUwMDE1VrFcYp6Gyj4u1ShdilHK8TRcIoX2IJyEd59VvVBcdTAwMDGp2C5cdTAwMDZcdHsjiX8pXHUwMDE5e2utZlh468i9/7yfc8bVPZUvWdhVPjmbkFJ7vCNHxNyGXtn7eWqvbtvl5s1J5+Z442z/xuQ+xFhrw6TWyiSfbJRKqC1D8zeoRVx1MDAxNVx1MDAxYXlcIlx1MDAxMGK5daNTXHUwMDAyLFKc5Fx1MDAwNsFIXHUwMDE473+jyVx1MDAxN+2i0Ks+Zeb+aEYxrle1Zq1bXHLLP5qR1fSC7vWbXHUwMDBi1MU6tVx1MDAwNFx1MDAwN/pUxSrc5MUuaXFq4ElcdTAwMWKYZcJd/7B5fL95b3pcdTAwMGafz8Jv/PLelbbybsKo/5hLXHUwMDE0eFx1MDAxZibRaMDMS4Bs7VihYJX+OSeP85TJXHUwMDFiO4dcdTAwMWSRepgyPNWYtFopylrO2ryfXHUwMDBlLLvI5Fx1MDAxZq9s93LLlK96lY3mVrO43bs9be80d/xcdTAwMWJsO/P0tzdTwJNcdTAwMDPb7URcdKxcdTAwMDVE27jMbbzpLynvxis9XHUwMDAzr1x1MDAxMKVcdTAwMTSMXHUwMDFir1x1MDAxNoqhRYGhSGJcdTAwMDVcdTAwMTml81x1MDAwYlLZTihlXHUwMDAwwJq0srAgNNNcdTAwMGWxxDo8h2rpjZqw4ILq+XGdv7D27JfAptcgLlxmxTxSUrHF9+295dr49Fxics8lvm/hlVHavDLocfpkVkgk+FNcdTAwMDVcdTAwMWXkwlx1MDAwMrwxQ/GOybBIcFxugLw0XHUwMDE0+mXhfVx1MDAwN0FOXHUwMDFl84Ojo6M9bu9D8vfC5en5ZP+6do7rRepcIq7slaq61+/+lFtcdTAwMDdy4+Fgryb9stN4lo53iHOWUbYxZczTz0hcdTAwMDFcdTAwMTPDmTbWWYhcXFx1MDAwYlx1MDAxOWX3g02BODXuXFxwXHUwMDEyNCj43VRH0Fx0XHUwMDBil4NGfzSjXHUwMDAyy79QbczVmXlUhnqlj1x1MDAwMCY76bmjKIZcdTAwMDVqXHUwMDA0PKzzi+P+/bHba1x1MDAxY/TbX3bF7e3pae5NXHUwMDE2uGaR5/t5QWpYYFiaQZCtKZelo0DN5aRcdTAwMDeEbiUpru/3MdmV7nVUimszrLff1j7Tr5yhZ1x1MDAxZdxEY1RcdTAwMTRcdTAwMDa8UD316bmIOTVGpINMeK/Sxb7TilFYK1x1MDAxMjpSXHUwMDE0XCJcdTAwMWJblDBfxVOHdJFcdTAwMDP8qk1f50l2XHUwMDFlXHUwMDFhdVx1MDAwYm/3iHJHqUT+RNaWzlx1MDAxOCvcXHUwMDA1tVx1MDAxZfL+yO6CQi9cZlx1MDAxYYVcdTAwMDZ26m1ccn+ujmRcdTAwMWSskrT1sfKqOFx1MDAxM+HYW6C+6kHNXFyXPz9cXO/fnq2uuupG0ZxcdTAwMTd3845cdTAwMDaenPScR543XCLUwy58LymbTepB+jT3I93KUaWsyL+PiOZ/t1CVWaWyXttuVo7FWfvAvbbduuuUVlxyXHUwMDA09r7b3miv3FVcdTAwMWFcdTAwMWL39zlcZtnRk1x0XGIo5dDWXHUwMDE2qbl+vb7/tfZlp3Fw0/blYq/V319ccnKPOcBcciXXXHUwMDAwPK84XGZjjuaMwqS1llx1MDAxMtmIXHUwMDE47dfbhrE6nFx1MDAwNFx1MDAxY1xyj99HXHJ8XHJqnT83oprBXzutXG7eWIPchG9KXHUwMDBmZvUhS4Wg1OTymThT4phcXEBcIpRPLz/Xy4fySFxcm1N3fFg6X3/IvYF6i9Otp1x1MDAxNEpII1x1MDAwNV4gKVx1MDAxMJS+XHUwMDFiXHUwMDE1Xc8m+U2KXHUwMDE0XHUwMDAzTaQ7vVTINI4ke17X/bKa9n/BdqppqPKaemRUXHSr3Wld4sOlXHUwMDFhW8OlwpOFuGJfXalcdTAwMWV0u6RccqJi47TXJJ7SQnOJtEM1rLffPDLpre5mzvglLV9cdTAwMDV2yLonYVx1MDAxZCUw+0WKgq31mtXm+U1cdTAwMDdOLrtH3/j1w8VZcjfvnEKdc0xJIZ6dISPbS3DHLFx1MDAxNYuJNp9cdTAwMTM6m+VT6ebbXlx1MDAwMsBaSi7P625KsyRDXHUwMDBlMSneMuGu1bl+2bmgXHUwMDEzNlq98Km638v+XHUwMDA28Y6S5XDc1oNyOVx1MDAwMlx1MDAwM7Lf4l3QxFx1MDAxYivUg8uwPr5cdTAwMWZcdTAwMDK+UCpcdFx1MDAxODRcdTAwMWYoVrHWLVx1MDAwNNG7KbSahW5cdTAwMWRcdTAwMDfOMyy8wMFTrcJcYjiijVx1MDAxY95cdTAwMWHt3v9zynhbXHSRXGJYXHUwMDFhJY3kXyGhMzeSplx1MDAxYlLOkZRcdTAwMTbBmcJcdTAwMTnjOYxsXHUwMDE4Sp1QLCp6qFx1MDAwN1v5ZFx1MDAwM6WoK1VcdTAwMWNcbkPF08eRXHUwMDE1j7KE+9uMV99cdTAwMTIgXGZcdTAwMDdv5O+4tcT0abyQjEQh96j0JJioXGZJcmeywktsXGLgWXH+TUoxw7lcIlGm+1ZcdTAwMGKF4Wxs7rVy3Cmqw2LcWJ/ed+BJcfJcdTAwMTinn/HRXHUwMDFkN/gh+XtxiFN+Yvkt7anQmVx1MDAxMPOzxfRcdTAwMDDD5WLc8kvIgnD0+DlcdTAwMTdKIFx1MDAxOVx1MDAxYoE4i49cdTAwMWVoY1x0XHUwMDA0Qa1NRltyOk2M1eFcdTAwMTPXtI1PXG7C4WtnXHUwMDFhTU5JXHUwMDFj/qDHQ+2AO4s2XHUwMDBiy6CSS1x1MDAwNziLk0TM1d6y+NbcZVxc0Vx1MDAwNoUy4DTO7DhcImhZYjxcbs8yYynXXHUwMDBiXGbVWHfg9dhzeU+4I6RgtIdcdTAwMGZcdTAwMTUvloLqviW/Xlx1MDAwNODMKO3xXHUwMDE1Ko5cdTAwMDaiZranXHUwMDAwrVx1MDAwNVx1MDAxNFpcZkdcdTAwMTWW2Lsvak9cdTAwMTnH8DJkTFx1MDAxZVuVs+vCKlq5XHUwMDE2VlE1e1qx8kPtUW1QXHJU39lwnLD07PaEkmhFIMkhT1hcdTAwMGJ6uMFRI1tcdTAwMTBnJ/pcdTAwMWb15D3fLVotxU/Ov0BQO9q5XHUwMDE3/V7lsLF5tKa3T8uVa8h9Plx1MDAwMlxib1x1MDAxOdVwsWg+3Dkx7ICUyjODXHUwMDE4a9D0XHUwMDA0TvEum1x1MDAwNEJcdTAwMWMsLFx1MDAwNVxcU6L8dJRDr23mTshpsIlPSb1dIFx1MDAwMUqsWqOAuutpO8FcdTAwMWbNoNlcdTAwMWHUuif19rb6dO7OLCHKbzI9Si5cdTAwMTKNXHUwMDE244rmXGJcdTAwMDXzXHUwMDA3XHUwMDEzpPt38263XG5cdTAwMTSTRuI0IYxOycZHi+JcdTAwMDYossJSKe1s+Fx1MDAxMUpcdTAwMGUq9kUlXHUwMDE4KVx1MDAwMjhlXHUwMDE5XHUwMDAx51x1MDAxYWbwnVx1MDAxONJcdTAwMDeQdL89WzSqXHUwMDFhKbWTeeRHWVx1MDAwYkBcdTAwMTW4Y3f18+f1iVr9vHd5t3u8Wz1MXHUwMDE3gPh8PZfANc26kJKJ4Imq4oTLXHUwMDE1zmrSmvG6V8utikppXHUwMDA2pPmk5lRcdTAwMTNK8zRiXHUwMDE2Vf13nJawXGI0jX/fdVFxtmRIL7V0VlitXHUwMDEz/mH6KVxuTztOoFQ3XHUwMDFlXHUwMDE1izNiJvNxiinnXHUwMDFkheNaikhcdTAwMTithy+ogL2W3HinnTAziVx1MDAxNFxi1EVe0ujl2K5cdTAwMTPDzFxmL8ScXHUwMDE2pFVpa1x1MDAwNDGTOeItIXVEfYWSU1KM4PBcdTAwMGVcdTAwMDBj1r0kYmblRHxcdTAwMTeoXHUwMDAzuFx1MDAxM4v4+Or6OnCljrk82Gyq8tGx3epWSrlcdTAwMDd4rTVcdTAwMWFcdTAwMTjV4Fx1MDAwNVx1MDAxY1x1MDAxN1x0wlx1MDAxM+lfpOyWXHUwMDBm/H/E2H9tVVTkh9hJpX/pbm9cYpDuVVr2VaTsR7NcdTAwMTL2XG70MJFcdTAwMDL1WpGv/n/elorN6ELWydxUen+SkVx1MDAwMlwiglx1MDAwNyFcdTAwMTZIXGKdPlx1MDAxNebUSD1cdTAwMTUnTux+OpxsXHUwMDAx4Fxys1x1MDAxYVFcdTAwMWNnbpOZeFKo0UhcdTAwMTdcdTAwMWLOQdA2R2kpocox4CjUjUR2kESTZ1x1MDAxYkZcdTAwMWRo8C5MXlc8/1x06vwnqDOqeign1pAwXHUwMDFhXHUwMDEwdvT8xKDvKoG7XGKC7cvN8u1p97HV2V3PfbUnklx1MDAwMCzawlGBXHUwMDE3iLTD28BcIlx1MDAwNHCmvVE2ykXXXHUwMDE5bUxcdTAwMDFgmY1cblx1MDAxOVwii0Sqm1ZcdTAwMDFcbrkoylx1MDAwMiW0QH1cdTAwMDfCjHlznJfISFx1MDAxM9ukv9+IT1x1MDAwNuSnpb3GKDc7XHUwMDExWD+DR5w0i6tP7b8peUi7bqa5YGJymTby90pcdTAwMTKuc1x1MDAxYm7ZftpRle8rO191o/yt94m3XHUwMDFiPPfZ1N5KZqTXSNuNoiXFXHUwMDExu9WCRaHYwnLpfUahnj4tmTru5/OqvFwi2clV5omZOSNcdTAwMDO5XHT1RLKGzUnlOdI16+aGk2JcdTAwMTQndFx1MDAxYqaH/VBcdTAwMTBPeN+uXHUwMDA3T8E7OMT7PbREXG7mXHSaT3XdSq1cdTAwMDa9nrdcdTAwMGV7Wn6/R+FMXHTyXHUwMDBi015cclxi1CZhPnFlOjNcdTAwMTXcJm9cdTAwMGWhxeTN6Y1cdTAwMTFSeCPmTzxPp2I5RzckXHUwMDA0kkG006ZcdTAwMDZcdTAwMGbOjW1cdTAwMGbhkJZo7mmZiU7Khpb859tDeIorMGJcdTAwMTlbvLw7f/TcsT+ccVxuLIs2dlx1MDAwN6CV45TdITgzyFU1XHROgTObtWM3P5dHem4nOVx1MDAwNSSBXCJcdTAwMTLmca5FdlxuNqaWL90yXGZZs8GjTnlLi95jvXpXXHUwMDFl6V+wP1x1MDAwNMDEVXNAKeCNNmZ+tFv/eSD9+uHXLd44OP9cdTAwMWF2blx1MDAwZde/XuZcdTAwMWXtUPQwQbuOPceGXHKjXHUwMDFk+eE5N9rDqNEuXHUwMDEz7XxKMHtKYp2XVE1cdTAwMTCWsf3fr5ZZ8/Kgbr9Uwlx1MDAxZb+xR3b8qpkmz01eXHUwMDA0R45jNYhFUkpOz1dcdTAwMGZOXHUwMDBmYa96XHUwMDEwdIr7ne/NXHUwMDAzt5776Fx1MDAxNcRwZlx1MDAxMe9RcVuw2lxyu0KkclxmuTO30iEvsZJntCXVvMErimSuNvBcdTAwMGKXSVx1MDAxY7mE1Fx1MDAxYm5cdTAwMWX3T+zK8z28LJtMq2NNUX3ISuZ3YaZvn5Fzs1WGXG7Wk5tcdTAwMDMtwlxiPlx1MDAxNrtcIonV4DHFkdHYbCZPrVx1MDAwNXPCXCJcdTAwMTG0YGin03FcdTAwMTPGd+WYoV1GNa1+J+vfPZm0xXdFXHUwMDFimuZvKzlUuS5ZkHX5YmGRbduQXHUwMDEwOlx1MDAxZIWgckWFXHUwMDFjx1g5XCI1vm2nJIK4U0KOXHUwMDA38M6lXHUwMDE15C5s9Ffs7ufK7Ubj4UuveFx1MDAxZqhwQp+Qk9BuckaiWlx1MDAwMJnSJ5BMcto5QSqLNNry91x1MDAxZLxSdIZccupKJ79W1JwpqqkpZm65W1x1MDAwNCtcdTAwMTggqdBcdTAwMDL/h0TBnsFRQ5uiccpcdTAwMDYhsjdPuIqgr3Dh0Vx1MDAwZbWPQriHWlSOMy1cdTAwMTAwcegoa1x1MDAxNZ+ji14xXCK7XHUwMDE0NKMsypHhXHUwMDE2kVx1MDAxNzEhhDSaS5StMHvjYi1cdTAwMTnqKsRcdO654N7J4aeHOMVQgDllXHUwMDFkwoRxM+9cdTAwMTnA0L7hSlx0pFx1MDAwM8bJkVx1MDAxMFwiQLxjWkZcdTAwMTXAPcWAz2xQeMG4oOVcdTAwMWWvrVx1MDAwNFx1MDAwMyPtjUJY3N6H5O+Fq6P6iaVcdTAwMWKstkbYXHUwMDA1XHUwMDAydHaPoX5wc3p2u3988Ll33N7bvz/8mvdJzHvinp7sXHUwMDAwRvdjQMHDrFBcdTAwMTJVXCK+aFx1MDAwYtnMYDhEWLI++1x1MDAxNFxyiLMsbbzifiNcdDha9qz65lx1MDAxNVx1MDAxN6f3YFx1MDAxMWn44cn6P1x1MDAwNu32UY9cbrc9T4FcdTAwMWZva+HdasqguYp+aO1cIrJsMqIwolx1MDAxOX9/+Pv/XHUwMDAxU3lJdCJ9 + + + + + claim/create an issue- assign yourselfDevelop Your Task Locally- move the issue to Doing- pull master/main to your computer- create a new branch with a good name- create small, well-named commitsRequest a Code Review- push your branch to the group repo- create a PR from your branch main/master- request a review from your colleagues- link your PR to your issue- move your issue to Ready for ReviewConduct a Code Review- discuss your changes in the PR- have a call to talk in person- run the code from your branch all together- decide together if the code needs changeschangeswere requestedyour code was approvedMerge your Changes- merge your PR to main/master- move your issue to Done you think youhave finishedyour taskyou are blockedwith your taskAsk for Help... waiting for a team matePair/Group Programming- discuss the problem in your issue- have a call with your classmates- ask a coach for help - push your work to your remote branch- link to your code in your issue- add the help-wanted label to your issue- see if anyone is around on slack- ask for help in the class repoclaim or create another issueget back to work!Un-Blocked- remove the help-wanted label- explain the solution in an issue commentsuccess!claim or create another issue... waiting for help \ No newline at end of file diff --git a/collaboration/learning_goals.md b/collaboration/learning_goals.md new file mode 100644 index 0000000..4474a26 --- /dev/null +++ b/collaboration/learning_goals.md @@ -0,0 +1,15 @@ +# Learning Goals + +## Collective + +As Team GreenFrontier, our shared goals for these exercises are: + +- Strengthen our collaboration and communication skills in a technical context. +- Develop a consistent workflow for writing, reviewing, and improving code. +- Practice writing clear, readable, and well-documented solutions. +- Support each other’s learning through feedback and knowledge sharing. +- Build confidence in tackling coding problems as a team. + +## Individual + diff --git a/collaboration/petit.c b/collaboration/petit.c new file mode 100644 index 0000000..b3a8924 --- /dev/null +++ b/collaboration/petit.c @@ -0,0 +1,16 @@ +#include +#include +int main() +int A,B,C; +printf("Entrer A,B:"); +scanf("%d",&A); +scanf("%d",&B); +if (A _Each member should reflect briefly on their contributions, challenges, and learnings._ + +### Mohamed Tilal + +- **Contributions:** + + hosting the Meetings and adding the agendas. + + Adding the norms, the main README, learning goals and the retrospective files. + +- **Challenges:** + Lack of activit on slack caused that I didn't know what is best of the team. + + The team didn't start the work until the end of the milestone + so I had some time problems. +- **What I Learned:** + I realized the importance of organizing our workflow more effectively and + assigning tasks based on each member’s strengths and skills. + A well-structured approach not only improves productivity but + also helps everyone contribute where they can add the most value. + +--- + +## 🌱 Final Thoughts + +This phase has been challenging, but it’s also a valuable learning opportunity. +With clearer roles, better time planning, and stronger communication, +**Team GreenFrontier** can realign and move forward with confidence. +Let’s use this moment to reset and build a better team rhythm together. diff --git a/guide.md b/guide.md new file mode 100644 index 0000000..53b8877 --- /dev/null +++ b/guide.md @@ -0,0 +1,151 @@ +# ET6 CDSP Starter: Guide + +This repository is here to help guide you through the +[Collaborative Data Science Project (CDSP)](https://docs.google.com/document/d/1TaoVVqJD5EqmBGLw6_qzph8EZnuL6uhY/edit?usp=sharing&ouid=100638458423869369523&rtpof=true&sd=true). + +This repository's structure roughly follows the CDSP milestones. It's also +designed to help you do **reproducible** research. If your research process is +well organized, others should be able to clone it, run all scripts (without +errors!), and evaluate your conclusions for themselves. + +```text +/ +├── README.md # Project overview and main findings +├── /collaboration/ # Team norms, strategies, and retrospectives +├── /notes/ # Shared resources and learning materials +├── /0_domain_study/ # Domain research and background +├── /1_datasets/ # Raw and processed datasets +├── /2_data_preparation/ # Scripts for cleaning and processing data +├── /3_data_exploration/ # Scripts for initial data understanding +├── /4_data_analysis/ # Scripts for in-depth analysis +├── /5_communication_strategy/ # Materials for communicating findings +└── /6_final_presentation/ # Final presentation materials +``` + +Below are some suggestions on how to use the folders/files in this repository, +but they're just suggestions! Your group should find a system that works for you + +--- + +## 1. Cross-Cultural Collaboration + +- Use `/collaboration` to document team norms (in `README.md`), collaboration + strategies, project goals, and your milestone retrospectives. This folder is a + living document — you should update it through the whole project. +- Use `/notes` to share useful resources: tools, tutorials, examples, or + anything else that helps your team learn and work better. +- In the main `README.md`, write a short intro to your team and what you're + hoping to study. +- Create a retrospective for this milestone in `/collaboration` using the + template. + +--- + +## 2. Problem Identification + +- Use `/0_domain_study` to build a reference folder for your research domain. A + new teammate should be able to catch up using this folder. +- Use `/0_domain_study/README.md` to organize your notes in `0_domain_study` so + people don't have to read every single file to find what they need. +- In the main `README.md`, write a summary of your research question, relevant + background, and why you think this is a meaningful problem to work on. +- Create a retrospective for this milestone in `/collaboration` using the + template. + +--- + +## 3. Data Collection + +- Store **all datasets** (raw or processed) in `/1_datasets`. This folder is for + data only — not code. (Unless you happen to have a dataset that's inside a + `.py` file…) +- In `/1_datasets/README.md`, document each dataset: where it's from, how it was + collected, how it connects to your research question, and any limitations or + caveats. +- Use `/2_data_preparation` to keep all your cleaning, transformation, and prep + scripts. These scripts should read data from `/1_datasets` and write new + datasets back to that same folder. +- In `/2_data_preparation/README.md`, explain what each script does: which + datasets it reads, what it does to them, and what outputs it creates. +- Use `/3_data_exploration` to explore, visualize, and get a feel for your + datasets. This isn't the place for answering research questions — it's just to + understand your data. +- In `/3_data_exploration/README.md`, summarize what each script/notebook + explores, and which datasets it uses. +- In the main `README.md`, describe how you're modeling your research question + with data, what datasets you're using, and how you prepared them. +- Create a retrospective for this milestone in `/collaboration` using the + template. + +--- + +## 4. Data Analysis + +- Use `/4_data_analysis` for scripts and notebooks that actually analyze your + data to answer your research question. Don’t try to cram everything into one + file — you can have many scripts/notebooks in here as long as they are clearly + named. It's expected that your research findings and conclusions will be the + result of many smaller analyses, trying to fit everything into a single + notebook will be unhelpful. You can always cite different scripts/notebooks to + support different parts of your conclusions. +- In `/4_data_analysis/README.md`, outline your analysis strategy and summarize + what each script or notebook does. +- In the main `README.md`, include: + - A short summary of your analysis approach + - A clear statement of your research conclusions (right at the top) + - How confident you are in your results + - What limitations your work has + - Any ideas for future research +- Create a retrospective for this milestone in `/collaboration` using the + template. + +--- + +## 5. Communication Strategy + +- Use `/5_communication_strategy` for planning and drafting your communication + artefact. That includes audience research, message development, and assets + like images or scripts. +- You don’t need to store the final artefact here if that doesn’t make sense For + example, in cohort 6 a group created an instagram account and meme campaign as + their communication strategy! You can't push that to a folder on GitHub. +- In `/5_communication_strategy/README.md`, summarize your strategy: who you’re + reaching, what you’re saying, and why. +- In the main `README.md`, include a summary of your communication strategy and + a link (if possible) to your final artefact. +- Create a retrospective for this milestone in `/collaboration` using the + template. + +--- + +## 6. Final Presentation + +- Use `/6_final_presentation` to store slides, scripts, or notes from preparing + your final presentation. +- In `/6_final_presentation/README.md`, list what’s in the folder and link to + your actual presentation. +- Create a retrospective for this milestone in `/collaboration` using the + template. + +--- + +## General Tips + +- Keep README files updated as you go. They’re for humans. Future-you is a + human. +- Reproducibility is key. Someone else should be able to run your pipeline + without tweaking your code or guessing what goes where. +- Use clear, consistent file names — you don’t want to waste time figuring out + what `final_final_revised3.ipynb` was supposed to do. +- Document your work as you’re doing it. Waiting until the end = pain. +- Cross-reference when needed. ("This analysis uses the cleaned data from + `/2_data_preparation/clean_survey_data.py`.") +- Commit early and often. Write commit messages that your teammates (and your + future self) will understand. +- Do regular repo reviews as a team. Is everything findable? Understandable? + +--- + +--- + +Happy studies! diff --git a/notes/README.md b/notes/README.md new file mode 100644 index 0000000..17e0f0d --- /dev/null +++ b/notes/README.md @@ -0,0 +1 @@ +# Notes diff --git a/notes/guide.md b/notes/guide.md index 8b13789..82f3800 100644 --- a/notes/guide.md +++ b/notes/guide.md @@ -1 +1,4 @@ +# Notes: Guide +Use this folder to organize your team's notes about the project process, data +science, and anything else you found useful while completing the CDSP project.