From 4587ba1f7fb7532e049dece087d0ff1d81854a20 Mon Sep 17 00:00:00 2001 From: Emma Smith Zbarsky Date: Thu, 17 Oct 2024 14:34:51 -0400 Subject: [PATCH] Update the dependency on Image Processing Toolbox 1) Update the ci.yml file to pull in the Image Processing Toolbox 2) Remove the old release.yml 3) Update the README.md and README.mlx to note the use of Image Processing Toolbox 4) Fix broken internal link in AlgorithmSoln --- .github/workflows/ci.yml | 4 +- .github/workflows/release.yml | 108 ----------------- .../Solutions/AlgorithmsSoln.mlx | Bin 62565 -> 62508 bytes README.md | 109 +++++++++--------- README.mlx | Bin 4547057 -> 4545011 bytes 5 files changed, 59 insertions(+), 162 deletions(-) delete mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b8552be..6814333 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,7 +38,9 @@ jobs: uses: matlab-actions/setup-matlab@v2 with: release: ${{ matrix.MATLABVersion }} - products: # Simulink Statistics_and_Machine_Learning_Toolbox + products: > + Image_Processing_Toolbox + # Simulink Statistics_and_Machine_Learning_Toolbox # List required products above in the format shown (and uncomment them) # List of product strings: # Simulink diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index ada3aa0..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,108 +0,0 @@ -# Release Fundamentals of Programming across all supported releases of MATLAB - -name: MATLAB Release - -# Run workflow when a tag is created -on: - push: - tags: - - 'v*' - -jobs: - # This workflow contains: - # 1. a matrixed test job run across a bunch of releases of MATLAB - # 2. a reporting job that summarizes the tests, and updates release badge - test: - strategy: - fail-fast: false - matrix: - MATLABVersion: [R2020a, R2020b, R2021a, R2021b, R2022a, R2022b] - # The type of runner that the job will run on - runs-on: ubuntu-latest - - steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - - - name: Set up MATLAB - uses: matlab-actions/setup-matlab@v1 - with: - release: ${{ matrix.MATLABVersion }} - - # Runs all tests in the project. Put results in a version specific subdirectory - - name: Run tests - uses: matlab-actions/run-command@v1 - with: - command: addpath("buildutil"),testToolbox('ReportSubdirectory',"${{ matrix.MATLABVersion }}") - - # Save the contents of the report directory from each release into a single artifact. Since each release makes their own directory, they all update the same artifact. - - name: Save Report Directory - uses: actions/upload-artifact@v3 - if: always() - with: - name: report - path: report - - # Report on what releases tested successfully. - # Generate a draft release based on the tag - # Recreate the tag with the final version of JSON files - release: - needs: test - if: always() - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - with: - ref: refs/heads/main - - - name: Set up MATLAB - uses: matlab-actions/setup-matlab@v1 - - # Copy all the reports down into the container - - uses: actions/download-artifact@v3 - with: - name: report - path: report - - # Generate the JSON for the releases tested badge - - name: Generate tested with badge - uses: matlab-actions/run-command@v1 - with: - command: addpath("buildutil"),badgesforToolbox() - - # Publish test results from all the releases - - name: Publish Test Results - uses: EnricoMi/publish-unit-test-result-action@v2 - if: always() - with: - junit_files: "report/*/test-results.xml" - - # Commit the JSON for the MATLAB releases badge - - name: commit changed files - continue-on-error: true - run: | - git config user.name "${{ github.workflow }} by ${{ github.actor }}" - git config user.email "<>" - git commit report/badge/tested_with.json -m "Final checkins for release ${{ github.ref_name }}" - git fetch - git push - - # Retag the repo so that the updated files are included in the release tag - - name: update tag - if: always() - continue-on-error: true - run: | - git config user.name "${{ github.workflow }} by ${{ github.actor }}" - git config user.email "<>" - git tag -d "${{ github.ref_name }}" - git push --delete origin ${{ github.ref_name }} - git tag -m "Release ${{ github.ref_name }}" ${{ github.ref_name }} - git push --tag - - # Create the release - - name: Create GitHub Release - uses: ncipollo/release-action@v1 - with: - draft: true - generateReleaseNotes: true diff --git a/InstructorResources/Solutions/AlgorithmsSoln.mlx b/InstructorResources/Solutions/AlgorithmsSoln.mlx index fd3bc3b33c484d479509d7d5a679519f95cf9745..8dc225e8688dc21b5a51083c124ebb717eefdcaf 100644 GIT binary patch delta 8952 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 U^Ba@S?hlg|^biKy?*IS*0MhuVKL7v# diff --git a/README.md b/README.md index fe11fb5..f2cc3a6 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,22 @@ - # Fundamentals of Programming - + [![View on File Exchange](https://www.mathworks.com/matlabcentral/images/matlab-file-exchange.svg)](https://www.mathworks.com/matlabcentral/fileexchange/103225-fundamentals-of-programming) or [![Open in MATLAB Online](https://www.mathworks.com/images/responsive/global/open-in-matlab-online.svg)](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=README.mlx) -![MATLAB Versions Tested](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2FMathWorks-Teaching-Resources%2FVector-Arithmetic%2Frelease%2FImages%2FTestedWith.json) +[![MATLAB Versions Tested](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2FMathWorks-Teaching-Resources%2FFundamentals-of-Programming%2Frelease%2FImages%2FTestedWith.json)](https://MathWorks-Teaching-Resources.github.io/Fundamentals-of-Programming) **Curriculum Module** -_Created with R2023b. Compatible with R2023b and later releases._ +_Created with R2024a. Compatible with R2024a and later releases._ # Information This curriculum module contains interactive [MATLAB® live scripts](https://www.mathworks.com/products/matlab/live-editor.html) that teach fundamental concepts and basic terminology related to programming computers. This includes discussion of inputs and outputs, numbers, strings, arrays, branches and loops. This content is broken into six instructional live scripts and one project where live script instructions are paired with a plain code practice script. Solutions are available to instuctors upon request. - ## Background -You can use these live scripts as demonstrations in lectures, class activities, or interactive assignments outside class. [Fundamentals of Programming](#H_E8C62B23) includes an [introduction](#H_FB3BEAB7) to programming which includes discussion of errors, documentation, and other commonly encountered challenges for beginners. [Data](#H_DA6DEBA0) introduces double and string data types. [Arrays](#H_9364948C) introduces 1, 2, and 3-D arrays, as well as a brief overview of matrix operations. Applications include both text and image data. [Branches](#H_8EADE081) introduces the concept of conditional branching in the form of if/else branches and switch statements. [Loops](#H_C3C86B1D) introduces the concept of conditional looping in the form of for loops and while loops. [Chaos Game Project](#H_3717D850) provides a scaffolded approach to implementing the chaos game by combining skills from each of the other scripts. The final script, [Algorithms](#H_23FB8762), introduces algorithms, pseudocode, and testing. Additional files include the navigation file [Main Menu](#H_F8C0793B) and the [Collected Pro Tips](#H_F8C0793B). +You can use these live scripts as demonstrations in lectures, class activities, or interactive assignments outside class. Fundamentals of Programming includes an introduction to programming which includes discussion of errors, documentation, and other commonly encountered challenges for beginners. Data introduces double and string data types. Arrays introduces 1, 2, and 3\-D arrays, as well as a brief overview of matrix operations. Applications include both text and image data. Branches introduces the concept of conditional branching in the form of if/else branches and switch statements. Loops introduces the concept of conditional looping in the form of for loops and while loops. Chaos Game Project provides a scaffolded approach to implementing the chaos game by combining skills from each of the other scripts. The final script, Algorithms, introduces algorithms, pseudocode, and testing. Additional files include the navigation file Main Menu and the Collected Pro Tips. The instructions inside the live scripts will guide you through the exercises and activities. Get started with each live script by running it one section at a time. To stop running the script or a section midway (for example, when an animation is in progress), use the EndIcon.png Stop button in the **RUN** section of the **Live Editor** tab in the MATLAB Toolstrip. @@ -27,12 +25,12 @@ The instructions inside the live scripts will guide you through the exercises an Solutions are available upon instructor request. Contact the [MathWorks teaching resources team](mailto:onlineteaching@mathworks.com) if you would like to request solutions, provide feedback, or if you have a question. - + ## Prerequisites -This module assumes familiarity with basic mathematics at a high school level. One exercise in [Data.mlx](#H_DA6DEBA0) requires the use of the quadratic formula, for instance. Understanding the chaos game requires locating points on a Cartesian coordinate system and understanding of either vectors or midpoints. Trigonometric functions are used as example functions. With respect to programming knowledge, this module is intended for absolute beginners who have used simple calculators in the past. +This module assumes familiarity with basic mathematics at a high school level. One exercise in Data.mlx requires the use of the quadratic formula, for instance. Understanding the chaos game requires locating points on a Cartesian coordinate system and understanding of either vectors or midpoints. Trigonometric functions are used as example functions. With respect to programming knowledge, this module is intended for absolute beginners who have used simple calculators in the past. + - ## Getting Started ### Accessing the Module ### **On MATLAB Online:** @@ -41,87 +39,93 @@ Use the [OpenInMO.png](https:/ ### **On Desktop:** -Download or clone this repository. Open MATLAB, navigate to the folder containing these scripts and double-click on [FundamentalsofProgramming.prj](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj). It will add the appropriate files to your MATLAB path and open an app that asks you where you would like to start. +Download or clone this repository. Open MATLAB, navigate to the folder containing these scripts and double\-click on [FundamentalsofProgramming.prj](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=README.mlx). It will add the appropriate files to your MATLAB path and open an app that asks you where you would like to start. -Ensure you have all the required products ([listed below](#H_E850B4FF)) installed. If you need to include a product, add it using the Add-On Explorer. To install an add-on, go to the **Home** tab and select AddOnsIcon.png **Add-Ons** > **Get Add-Ons**. +Ensure you have all the required products (listed below) installed. If you need to include a product, add it using the Add\-On Explorer. To install an add\-on, go to the **Home** tab and select AddOnsIcon.png **Add-Ons** > **Get Add-Ons**. + - ## Products -MATLAB® is used throughout. The `imsplit` command in `Arrays.mlx` is from the Image Processing Toolbox™. +MATLAB® is used throughout. Image Processing Toolbox™ is used for imsplit in Arrays.mlx. - # Scripts - -## [**Introduction.mlx**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Introduction.mlx&focus=true) -| `Introduction` | **In this script, students will...** | +## [**Introduction.mlx**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Introduction.mlx) +| | | | :-- | :-- | -| [Earth-Moon-Rocket.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Introduction.mlx&focus=true) |- recognize and use the terms input and output.
- recognize, interpret, and respond to messages about syntax errors.
- recognize and interpret comments in code.
- use documentation and search to learn more about how to use a programming language.
- recognize and explain the importance of attention to detail when coding. | +| | **In this script, students will...**
| +| [Earth-Moon-Rocket.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Introduction.mlx)
| $\bullet$ recognize and use the terms input and output.
$\bullet$ recognize, interpret, and respond to messages about syntax errors.
$\bullet$ recognize and interpret comments in code.
$\bullet$ use documentation and search to learn more about how to use a programming language.
$\bullet$ recognize and explain the importance of attention to detail when coding.
| +| | | - -## [**Data.mlx**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Data.mlx&focus=true) -| `Data` | **In this script, students will...** | +## [**Data.mlx**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Data.mlx) +| | | | :-- | :-- | -| [Fading-Pi.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Data.mlx&focus=true) |- recognize and explain that floating point arithmetic does not operate under the same rules as real number arithmetic.
- apply the limitations of floating point arithmetic to computation.
- recognize and use strings to store and communicate textual data.
- recognize and use whitespace in string operations.
- recognize and interpret special characters that are neither text nor numbers.
- recognize and explain simple consequences of the interactions between data types. | +| | **In this script, students will...**
| +| [Fading-Pi.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Data.mlx)
| $\bullet$ recognize and explain that floating point arithmetic does not operate under the same rules as real number arithmetic.
$\bullet$ apply the limitations of floating point arithmetic to computation.
$\bullet$ recognize and use strings to store and communicate textual data.
$\bullet$ recognize and use whitespace in string operations.
$\bullet$ recognize and interpret special characters that are neither text nor numbers.
$\bullet$ recognize and explain simple consequences of the interactions between data types.
| +| | | - -## [**Arrays.mlx**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Arrays.mlx&focus=true) -| `Arrays` | **In this script, students will...** | +## [**Arrays.mlx**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Arrays.mlx) +| | | | :-- | :-- | -| [Computer-Thoughtbubble.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Arrays.mlx&focus=true) |- identify, create, and use vectors and matrices containing numbers or text.
- use vector indexing to extract information from a vector or matrix.
- identify standard file types and the corresponding extensions.
- explain why file type matters and import data from external files.
- recognize and use three dimensional arrays. | +| | **In this script, students will...**
| +| [Computer-Thoughtbubble.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Arrays.mlx)
| $\bullet$ identify, create, and use vectors and matrices containing numbers or text.
$\bullet$ use vector indexing to extract information from a vector or matrix.
$\bullet$ identify standard file types and the corresponding extensions.
$\bullet$ explain why file type matters and import data from external files.
$\bullet$ recognize and use three dimensional arrays.
| +| | | - -## [**Branches.mlx**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Branches.mlx&focus=true) -| `Branches` | **In this script, students will...** | +## [**Branches.mlx**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Branches.mlx) +| | | | :-- | :-- | -| [Maze.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Branches.mlx&focus=true) |- recognize and apply if/then branching logic to solve problems.
- recognize and apply switch branching logic to solve problems. | +| | **In this script, students will...**
| +| [Maze.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Branches.mlx)
| $\bullet$ recognize and apply if/then branching logic to solve problems.
$\bullet$ recognize and apply switch branching logic to solve problems.
| +| | | - -## [**Loops.mlx**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Loops.mlx&focus=true) -| `Loops` | **In this script, students will...** | +## [**Loops.mlx**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Loops.mlx) +| | | | :-- | :-- | -| [SeasonLoopFinal.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Loops.mlx&focus=true) |- use for loop logic and syntax to write and execute iterative code.
- use while loop logic and syntax to write and execute repetitive code, and decide when it is the correct method. | +| | **In this script, students will...**
| +| [SeasonLoopFinal.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Loops.mlx)
| $\bullet$ use for loop logic and syntax to write and execute iterative code.
$\bullet$ use while loop logic and syntax to write and execute repetitive code, and decide when it is the correct method.
| +| | | - -## [**Chaos Game Project**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/ChaosGameProject.mlx&focus=true) -| `Project` | **In this script, students will...** | +## [**Chaos Game Project**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/ChaosGameProject.mlx) +| | | | :-- | :-- | -| [ChaosGameAngle.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/ChaosGameProject.mlx&focus=true) [ChaosGameSquare.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/ChaosGameProject.mlx&focus=true) |- apply conditional branching and looping logic in context to solve problems.
- explain that different programming solutions to the same problem can run in very different amounts of time.
- identify common file formats and their extensions.
- communicate results by exporting data from a program in a standard, shareable file format. | +| | **In this script, students will...**
| +| [ChaosGameAngle.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/ChaosGameProject.mlx) [ChaosGameSquare.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/ChaosGameProject.mlx)
| $\bullet$ apply conditional branching and looping logic in context to solve problems.
$\bullet$ explain that different programming solutions to the same problem can run in very different amounts of time.
$\bullet$ identify common file formats and their extensions.
$\bullet$ communicate results by exporting data from a program in a standard, shareable file format.
| +| | | - -## [**Algorithms.mlx**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Algorithms.mlx&focus=true) -| `Algorithms` | **In this script, students will...** | +## [**Algorithms.mlx**](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Algorithms.mlx) +| | | | :-- | :-- | -| [Algo-flowchart.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Algorithms.mlx&focus=true) |- explain the concept of an algorithm.
- implement an algorithm presented in pseudocode.
- explain the importance of testing both code and algorithms. | +| | **In this script, students will...**
| +| [Algo-flowchart.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/Algorithms.mlx)
| $\bullet$ explain the concept of an algorithm.
$\bullet$ implement an algorithm presented in pseudocode.
$\bullet$ explain the importance of testing both code and algorithms.
| +| | | - # Additional Scripts -[Main Menu](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=MainMenu.mlx&focus=true) - Just the link sections of this script for navigation +[Main Menu](./MainMenu.mlx) \- Just the link sections of this script for navigation -[Collected Pro Tips](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/CollectedProTips.mlx&focus=true) - Notes on how to implement particular concepts in MATLAB +[Collected Pro Tips](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Fundamentals-of-Programming&project=FundamentalsofProgramming.prj&file=Scripts/CollectedProTips.mlx) \- Notes on how to implement particular concepts in MATLAB - # License The license for this module is available in the [LICENSE.md](https://github.com/MathWorks-Teaching-Resources/Fundamentals-of-Programming/blob/release/LICENSE.md). # Related Courseware Modules -| **Courseware Module** | **Sample Content** | **Available on:** | +| | | | | :-- | :-- | :-- | -| [**Treasure Hunt Game: Learn to Code**](https://www.mathworks.com/matlabcentral/fileexchange/123265-treasure-hunt)
Build and customize an interactive searching game | TreasureHuntAnimation.gif | [OpenInFX.png](https://www.mathworks.com/matlabcentral/fileexchange/123265-treasure-hunt)[OpenInMO.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Treasure-Hunt&project=TreasureHunt.prj)[GitHub](https://github.com/MathWorks-Teaching-Resources/Treasure-Hunt) | -| [**Programming: Structuring Code**](https://www.mathworks.com/matlabcentral/fileexchange/115905-programming-structuring-code)
Learn how to organize your code into functions, debug, comment, and share | RGB-Turkeys.png | [OpenInFX.png](https://www.mathworks.com/matlabcentral/fileexchange/115905-programming-structuring-code)[OpenInMO.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-Structuring-Code&project=StructuringCode.prj)[GitHub](https://github.com/MathWorks-Teaching-Resources/Programming-Structuring-Code) | -| [**Programming: Organizing Data**](https://www.mathworks.com/matlabcentral/fileexchange/115900-programming-organizing-data)
Learn more about strings, numeric data types, memory, and ways of storing data | sst.png | [OpenInFX.png](https://www.mathworks.com/matlabcentral/fileexchange/115900-programming-organizing-data)[OpenInMO.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-Organizing-Data&project=OrganizingData.prj)[GitHub](https://github.com/MathWorks-Teaching-Resources/Programming-Organizing-Data) | -|
[**Programming: A Starter Project Using MATLAB and Python**](https://www.mathworks.com/matlabcentral/fileexchange/116490-programming-a-starter-project-using-matlab-and-python)
Use MATLAB, Python, and the OpenWeather API together to implement a weather prediction dashboard | TokyoWindMap.gif |
[OpenInFX.png](https://www.mathworks.com/matlabcentral/fileexchange/116490-programming-a-starter-project-using-matlab-and-python)
[OpenInMO.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-A-Starter-Project-Using-MATLAB-and-Python&project=MATLABwithPython.prj)
[GitHub](https://github.com/MathWorks-Teaching-Resources/Programming-A-Starter-Project-Using-MATLAB-and-Python) | +| **Courseware Module**
| **Sample Content**
| **Available on:**
| +| [**Treasure Hunt Game: Learn to Code**](https://www.mathworks.com/matlabcentral/fileexchange/123265-treasure-hunt)
Build and customize an interactive searching game
| TreasureHuntAnimation.gif
| [OpenInFX.png](https://www.mathworks.com/matlabcentral/fileexchange/123265-treasure-hunt)
[OpenInMO.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Treasure-Hunt&project=TreasureHunt.prj)
[GitHub](https://github.com/MathWorks-Teaching-Resources/Treasure-Hunt)
| +| [**Programming: Structuring Code**](https://www.mathworks.com/matlabcentral/fileexchange/115905-programming-structuring-code)
Learn how to organize your code into functions,
debug, comment, and share
| RGB-Turkeys.png
| [OpenInFX.png](https://www.mathworks.com/matlabcentral/fileexchange/115905-programming-structuring-code)
[OpenInMO.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-Structuring-Code&project=StructuringCode.prj)
[GitHub](https://github.com/MathWorks-Teaching-Resources/Programming-Structuring-Code)
| +| [**Programming: Organizing Data**](https://www.mathworks.com/matlabcentral/fileexchange/115900-programming-organizing-data)
Learn more about strings, numeric data types,
memory, and ways of storing data
| sst.png
| [OpenInFX.png](https://www.mathworks.com/matlabcentral/fileexchange/115900-programming-organizing-data)
[OpenInMO.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-Organizing-Data&project=OrganizingData.prj)
[GitHub](https://github.com/MathWorks-Teaching-Resources/Programming-Organizing-Data)
| +| [**Programming: A Starter Project Using MATLAB and Python**](https://www.mathworks.com/matlabcentral/fileexchange/116490-programming-a-starter-project-using-matlab-and-python)
Use MATLAB, Python, and the OpenWeather API
together to implement a weather prediction dashboard
| TokyoWindMap.gif
| [OpenInFX.png](https://www.mathworks.com/matlabcentral/fileexchange/116490-programming-a-starter-project-using-matlab-and-python)
[OpenInMO.png](https://matlab.mathworks.com/open/github/v1?repo=MathWorks-Teaching-Resources/Programming-A-Starter-Project-Using-MATLAB-and-Python&project=MATLABwithPython.prj)
[GitHub](https://github.com/MathWorks-Teaching-Resources/Programming-A-Starter-Project-Using-MATLAB-and-Python)
| +| | | | Or feel free to explore our other [modular courseware content](https://www.mathworks.com/matlabcentral/fileexchange/?q=tag%3A%22courseware+module%22&sort=downloads_desc_30d). # Educator Resources - [Educator Page](https://www.mathworks.com/academia/educators.html) - + # How to Contribute Looking for more? Find an issue? Have a suggestion? Please contact the [MathWorks teaching resources team](mailto:%20onlineteaching@mathworks.com). If you want to contribute directly to this project, you can find information about how to do so in the [CONTRIBUTING.md](https://github.com/MathWorks-Teaching-Resources/Fundamentals-of-Programming/blob/release/CONTRIBUTING.md) page on GitHub. @@ -130,4 +134,3 @@ Looking for more? Find an issue? Have a suggestion? Please contact the [MathWork *©* Copyright 2023 The MathWorks™, Inc - diff --git a/README.mlx b/README.mlx index 6433148f928c367abc65ab93b162f92f32bec941..bd04e8216eb18b1860e4068111cbc8643b0df452 100644 GIT binary patch delta 9746 zcmZ{q1z1#D`}Q}|-Q6KbcX#I?B?w4KcS|#LBS=V>h=78Cq;xk@(j8LLpa?2_TaNEh zIR6i>A2Yynub%bX*Iw(WBl*rrW%3hJOBWYK&Sx~O3z7I7yuxI0{~p`FZ$As z4sPZSZbn*OPUfx#Y@YUZ73%UZ41a6hp9(GC12q(&1{Ks8xtQCzva|jAS$P1%1Vj3F zFx%yFHaQqP0M=`V$%n7{n$4`1=@#NLh%TM1NCliyeaB}+Til>VO3wN{%sBjWE=#eo1y~#%h ziMtDnyVAS)yNQ_&z)J<)8U_6*Q%pykG&qUe(S>jIqfm*fFJB-;@wW8%grh6kwG%Tm zEXN_k`9~|0n*)^_i<6&ou7pGnLsLRn#^CzpcZ|L3ct?fAtZI|_O{gERVpk$9#)hC3 zhlzix6U85kD>zKm7fZhcRvJ@T_h@9+nPuvJPRo5_%U6$-9nHBmbW+=bzS3OU4iO930zB_bDAd zWv5y|{C=M3;+*4!%frfcM))Q@X0axcsyz~(^({Rt9q%=oH4`Qu&I(TFi2CT)S-$AM z-MDk$_MO3UyWHjeafeXcu3PK;TQa$d$cc`TUAZzSMeyg|Pa({!cQsttkrU!W+VAHw z-Uqt8ULwWuBz_$Kk^U?+Th)Ry5hm_!gh{(cJNH_}kHP?$!f|WVZUGpF1`XExA@<9H z;zw0?w8vq{YhbNv`h4Gp+Ckii>^^ya9auhISl(K?qIno`@BZ<_H&TSN@5R=ca76Rc zv4)EHsiFCTSIfB~2(efwRpc67qW96x2P&{t!SFwbY7fg;0b@8Pc|1{J4dLa~FE%I0*YZlcVog_Bc6DpfQFqg=3m= z3Rg;ztktfg$IlM7a8B8_rZ*HR!AsN|BB(-sh~$QPaTh{TfM>57e;*#vfPCHJYHOs~q zNFAW13Evi(oUJWmGY&FGsfaWVb}G_e8d$w)3K3$i8qzIveb?eqFFM6Hlh{}z81%JA zBj8?=8s9m=WQpCS4qazHwj!Prrjxk-^5b|$0+e+v8)6JkF2G;an2WR%wJ1ocD7tRr zn@n$zf6$aKSzbAFl4Mt42Bcup?=>pCdT$4mbsR@wvTcsN(5FYZDc?}M>}fxnj0agxjLi*cis?1ffx$qv-aRg?ntm}LnpxJb17TB{Vb zA~_&!gFphD4@!Dx2Eb5hg*Ft}n?Ox^a*xZVa@OfSf-pm&e6Xs29fQ_*f>w=N8)qaG zt{U&_>}#V{X=WMe>VCi3g9Ez*#{=@s?>ro@8*R$!(Z?!Z?(*M%_X!Yy_6Gr1g}G;f zq}VVc2kDiJsz_Vn$f&?Q83rO&u86e&pS09eFFNT|iXa?ou~umz3yYBl;SC-_0)l(H z?k63hF3j2!Ft8mjQQ0xz{o7p}Q#cx+NUMVZnWlnTUo2S3t960dymBR`hpz)H@ylts zxeVR4dVa1oW##WH`fD9HZ5yn`J24t@QQ;v~_Gdf`ID|2+f6y{ZbkVS|kl3UHzao&W zme)(FrdpKb^pl;JN)2&p{vMrLs~ZnaAf|?jspr#HWSuh(476fr8H`S0@_XxwW-$|)=Y2t09d>g1^Vwr>duEvmouY_`>JJBp=}QpS~*OL zb?w#*pIJO0rPF4CaYy{tgHniq2TKbpcvAVEysc!&9KDBd)K-j-%gRuD;MJZ#IES}`*h{f&h!EH)TXlZa{c&TR5?+9sLyOb1HD3p0wUJ!;DyO}5-Pq?Ej+M-2Qd1KywpSfil&+D`j;DV(C`_(t(nEWU=3G9=$RtsY{y#Ku6Sa-!%CC3%gA zQ-Vnm)VIq?855{!yL~f>Y>8(3aihYhIo)&JSfz($!}gE7Ple@s8W#5U=RZFa?eh^8 zQwkew$DcyA7;x#4Z+-^x)XlO@W`ft|%{3=!SJ9Bj<&Kspk;gHQq9!{`f+xX!SO%l1 zVoXd0(_kSP?HjQ%f}jJ9{z5ce%2CI7H)YH@eUvIfZC>h|kCY#enyBd+9gICu2ckQc z8|=u~X0IjA)nUp*Jl!{eqe5y_1oL$+0QED|5Su7XHw_fzFM;|I>5S#@=rzhHkbK-= z(zUg8-7~sVSdLVCY~ze|Q|!q2w)&mCIDt)~P?&S82;o#d=o}5SWtB&g(Dbx|%~R_w z4JUf4IKrbs*UF(%R8grplt{^NIp>P^P&nh}Qud9;zNbJwG!qm2%d<5T@RfLt`sR(~t}Plz#qov+N2oY_wx^I8R?3x-M6gla?t0 zE3{<7<`S8aX- zt5aZHTpHhlES=Bq_u9m4S>4+|CKDXVeHmBmkL)#sxu8Y=AT#k|B##HS0f6sOg3x}# zG3A+SifHBc@qp5UR>SHwk+kvIV7g&z6LaUnrv=y|SWKsICKn$pao;N+n$!DdJIwm) zJq+tw66rTpONtx|Che>{6KGjWFe&fdNube$hxHYyXvnB=?G5Toqr!PD;S?*9 z9uPIRh(v3Lnjv7DeKxLecYkg&4Mw`dM9`;?!CDRdJP(>q?pc5K+O^8>$#Vv1EB?+q zYShjuv}$P8qyg|86Kk>l5sgK)Nxi1jI0fHek`sEEDoPPT^Ag;-U{fS4%tpO)Q3Jt{ zOsnm@H$`+(G_!#IQjniVT*|~QBiH;FDpI$ygSUoK17*4R^Pgd*1s^PQEE+XgeAs?y z!ndo!eqjO~3u~tQob$RWY>xk|rcO7_*TVL5WpxraesWsfOyY~eVVhPQdY9(Q^fVgO zhanGU>RjekUn&@f3h=iPQC6nvSC(?)@n4;P7k_uWMOiP8u%0I2K@>qV=zEVQ@9|DW zDSY2@UR0p{zE$Dg`d-a=`9+EyFvwcAQX2Q*i*6|`6pcT6xgXN#lVF({eOJA}<7lYS zoAodQ)k?*5VPhp?JMjrITom2q3VUfy#`IS&HdPG4FYJQlUOi*)9-8x_)#vBwmp`_y zGI#LYD|}pRxb!ZG0%2dAKg>jJIY@c_p_}Lsp*QXOIPspts|uvq_e*N--gVV2O;pCj@mdiaKn5yED)%p_%zRi`h`ypGJ*|Qzh6b-O`Nc0fH`^tfiA&L)-N; z*@*{lG`5fI%M?SV!bd&6zu~;t=hB(Zm%LzDF@TAmz}c+_Bm*OJrMWlpc-H8uz5KE9 zIekeQ3}z3ib&($mJ;;Ts9O!&_J`6K5l6LOE*9*l)|0s&r%mLG)yM0AUZ=APduGQzc zkgRKVUSJVtmQ5u81C!Jsv)gJ#7sq@!aQ$hZokh?7r-UjK=?l}oD);bJ|2Gja^3-s< zDx9sE7=d*%Lo^V_M|IwiO~i5sIUC$DM{NoZv?6*-Mwb`6gijR(YH^bJLWBa0u#w^A zEQq1mSrLq4J>FGV;#ebAnSkq52o#{KB=reEpWwhWrG~U3hXqPZaRiXlBk;SXz7i>S zuKh~4H}$me-iz9r;Q2FMQ|1PZoyvmUceB|B4Wb!cdgcg5U)LqS+L07KXn)E|Ip&`7 zQ?K23DDD-Xk?qNsPZ?!P3D%9d=#xa}>Z@ANUJI2~m^2OIgjDXJL%LS;hNT?`52L-a zC&-6d(J?VQ^lnO)$t9~g1FiD*_>N==>JYiW-q2GVo2Lt$F?e6$Q(d2p>^m`61~z^r zOO8ZQb?V4|oCzz}oQjI?^2N65k&TTN86vlb3)}iEIcaxrv4<*JZ&uTJki-6bXLSAv z)V?Ra;k=_eiijJ_Ft;L0#?v<=ZEdz_b5L+Ey&p6G*e%FX#3>QyC*gh_bid9QGS%}f z?648G=esLCUfFCbH!7bH%Cw-%Cd*(c?6dgoEPmcT$_k5DmJ$K(M^*YEg&Xt48N1E6 zTFcU}3S(r?qgicoI&u~_;|;VEbhl>`p@`>X8_pDW8!# z+ima4;AB9QyT#;%eVdYDK-Mg3xw=e;I?lP(q?4sF39-WcxYgCA4LRlz-uG)r7*N60 zbA*=$u~f>VKB~H{VPXxO&%WHreJPiUH2f}F&fX0fqP!MqXX|=u~)qP zLjp4@yH!KQmqITL-g~wI**5qc-#uvMXDaR!W}joKV6G;mcP|yw*qhb!xx`=37L~;I zZ(3`yJ$w5lE!pQj0kbGT1bj{&9?4XRi+d#xIeJ2et8VES(-oaK==Zc+KizQ3@=mLq zXEMMm@6VhT+b}S>SjbI!K#)bUS0W+&ggq&4mZSsN^uR)VY*#CqjP!O09X%In+(Du) zmf5}Ey@B|wt~(XV7L#W1AuF$9w=bCE)%)oNy4Jyd2Rws~9?kp#5(BaOZtw5u*v?mM zIf^elg7|{6l93EJHGo`mV6(gBjb2w($6y z?j&)eWIE1Gtf@RmKXWMD>2%bVZ4x-OAZjf{Pr_e@jT0XS0?>-Z*>lKf}EXx!E`q8BYX=Geq%MLOlH?{6`5`@I2 z!<$S+rQ=myiFCp1F<`tbZ&d`{880X<|1E=Um#>$CCB1A)ZE9+=RE8IXq*0eGYyVCczYif@_Hm<-@J_xN9~SWc;1h{#@LaKKYAl3t@T3y%j-&X!5ZTTP0sxO?EA&dcZDe}Hlj;o z^#bpAU82sXIDcNysFbFsL7NmWNxuy*)ZH<1=PcSMf`;)AVjPQPjmw49y_4sIz+b7O zsK7xp@GzALFnPS#dAQF-7FbhV$q6+>kQF7&>+OoX5Xz&>bP=H*LRpE1P$ zT%Kr7Clq@%8=oH2(mk=Kyeo3Jhi{4CKX(G0C`Z3dYak`fn1iYebGL@xtGQNs09*sKMKL7QRm~x zg3k9WouNl?ikjAG%URmrNc}>YSBySviBb`s%(5e0=<<9f6E<$va3%WqQkQREt2H1f zCZYGDjf503yi*A^;c|E>Xm5Ag66x-l?NoVY=A`*p^@7uI%py_%4QGA|nFC%>LB8`& zvZ0mTyLj&7?ICQ=e4gwNGKLkpUGbfJDQGG=a=a4{j|)uu=I@LTma;=08KI1Do#8A^ zY#rZyG4Q=^1;)4%A*8n2p)l8-e6cNu=!q^mrhhLJuFBRiG-278?I=q*WTe$rEUj~p za;D%@27EAeu;Cz!f7)2uOi-5=nstm_Eb<$ZcH6f&B!}X=Suehph`{JS37H|}L4{1h zbJ*j!5Fa2hO^iThzHNu>gBD z;L)_jcm~jGX~$>oB*RAusbq&0_SYUnFJ0-L=w+Lho4HI@Pjt09Jo3%&RgdPZ?2A3l zvq@4}I5X|@br@c{(1L^o_3NuE@uoK#>1eJAzf=lbhf=}6TiE4Uc}B~1a+Giv_lqy% zTZ^Cw+sxErU~E{WWSNTCwAZ|BT>pv46@`o%8?8(%|5V!eqQHds+yXJ6q2S^H!bH$UXzGE;%%vKR(_MP?Abe5o7W{B-gp1O~#X9dg75OuV|&*9_K1P zZoB_|W{!6aX-7RLG_xj+G{NTAqe)iMU3s;II4-E+q|4Tt-QkYe$ie{mg+fl1YnH#Q zDVf@nyOgW$!KijEr$6N17PvReuDDvEug+k))wLj41zAoRyQ?z=iZ6}XHl7&XUE|Dl z!5y_d9?g7TK2s~=qgq_D8=+U}D)5b?=4STcUTiE4j4SOAd>ie0$m6^& zf;oC97mfUd#4mikE-#1Lty4pF%(vto9M!+M5h@%WtcKDuYUZbM0cU^GD^d-*Fw954*me-l;ZLIFQGTj1Uw$@p}qy5>x+Vq z?Xkhv-_PP5-QAqrub;%*s|}#Eb71{QPH2F@V^Y*$OE!9|i5uHL*XWHl)7)K}(`(af z+#B2-WI+utApDeSYP`E)s*ML`x=6?Ij>4WM0ltf2sc!Y1 zQM2_?e{(Yp0s}c%m!aUcHp}e5uaKH`qV)v$tEV{3&PXBj^hJ&EBCe%}|94!UI1Eli>lZ zU)?h|vo>M3wl}df=VY_Awg{FW3zr~+0l5PL3j$XwK?WZw$ny7r#j;UiR4Xh1G=Ti4 z6ekDE+Pm8D?Xd9Il9Xq9viRWX%HK6{u>A^>(St`E_#Jfk-yqKGprX47(+t0Z?(6@j zB(CeA1qebo66@bBlu?$fZ1w|yI*{vW{Hveb*P1qMgjT;B8tWocr4PUz0D!&o9}Ukh zP59zR1Q5iO#g9lMHwI+ovq48UpCGW^CVYE9xPA?5ILagv2r>u?2r38~2s#J`2qp*? z2sQ`~2rdX72tEh_2q6d&2r&o=2q_2|2ssD^2qg#=2sH=|2rUR5$XyV65C)KYAdDbP zAj}{vAgmy4AnYI%^RTP-WK6tnmZ30bg!<}5b=gz^7J!h5|ss*I)Pxo=4P*Ii>9cmV)M_&*Z9 zYsqesR1@#-m6~fPi;r_->Q!zz;}qqu(g@=SHA_jV%li;sSHK@dDRtE@@h-HfdVg z&i01P&JFvs96Ai319Gd+g4eP~GBUM~WMmc4ZyZRjZSONsfIAy8xXMYv1Ib}^Su$wo zvjNo(4lLQTpC|)9J#k|ix{CFHJ3J1KB-NAW-1fAOd)}d2Us3Q^#E2@jVe{wo35%D%*`zn%RzUn@tA?8p5(qcKf$x0d%x}r$_aY_w|YI`T#=&vBj*Ub5%ogQ>H2O{73m$(hB?g zixteT>|oJ-$Dd?UZyU2@AzpG*7}jKdx?|P~-yS%eDmYgxcaedC+@cwg8r3z(B;&QL z$#?{bC}B8_*T*!k4|VG+#W0i^A%qI#Z#6*JpZmQf>3)f!72hu)uZ5LgNut!G@~BTl z-QDF-Up81nL`S=mT9Gtsz5#o^2tt3IH{49jOx#S^?LAB#T~e~NWQkHHv}8+ftTyx2bmuNGSP~qn zd%uS&MZ!cD6Y3r(iW$U#73SgJ)n};3j3iy0kr635I?CgOqAoV};%IXYg@my7^NIib zgOcnabc!O#LUpk?W-8`1fq`yq%E#d|+k|h-+mXc7PDBQ3wVSH^HcpjU#`$48)7x(X zW4I|8dk@3->ynuzBt1g8Tcl2?9f zU~Yv0KS%%n`vhRu0kG>pP2jJ0f88#C{_lFh?GkR^F8HPUr-Ucq%U^d5ZVPYSH29^v z76L#I*u>u^<{v$Htste;L>2=yJ~x|x`x?TZGN{1K`2V<+aJzup-sw*Pe&A+v+ety~ zZtMSbC%?_fFa1AXdSo{?(`&18TYcM<{7(x2nA-3+?8mPSQcW50ckiza3e%rx0QjkU zGydAH{99ehFRyYVp7SokjqRDA|B?5iO5K!S5BN>> z?L_}aeN1{oeVz8Nn-2Z!vvxb_|B+i#-jM&FJ-?m*|EQY{Z>X=`!2iY#^cVkJ9J=iV z{>Zx%Zpg2l!T;ny$}d|0{SyoTWxY4TuT8?g;lC@p?GXOxF(z-Qul>Sp^=+d7DE+H{ zB`NdwEM5DC+wxn6;adC8hD35-_S!!DXBpp0kbg;>)lw>qWl1@HWy{+Y-A*vSWdBs; rt^P}O??3h2$}WG^W36#r&vmLHP*a9S`1LR#D88 delta 11743 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