From 6640825affd9673169a80dafdfdb51f571c2f628 Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Tue, 21 Apr 2026 17:17:33 +0100 Subject: [PATCH 01/11] updates to welcome to cyf module --- common-content/en/module/induction/accounts/index.md | 6 +++--- common-content/en/module/onboarding/expectations/index.md | 6 +++--- common-content/en/module/onboarding/goals/index.md | 6 +----- common-content/en/module/onboarding/help/index.md | 8 +------- 4 files changed, 8 insertions(+), 18 deletions(-) diff --git a/common-content/en/module/induction/accounts/index.md b/common-content/en/module/induction/accounts/index.md index 4a918aa7f..17ccf43c3 100644 --- a/common-content/en/module/induction/accounts/index.md +++ b/common-content/en/module/induction/accounts/index.md @@ -52,7 +52,7 @@ You will use [GitHub](https://github.com/signup) to store your code and to colla ### LinkedIn -Sign up for LinkedIn. LinkedIn is the largest professional social network. You will use it to help you get a job and to advance your career. +Sign up for [LinkedIn](https://www.linkedin.com/). LinkedIn is the largest professional social network. You will use it to help you get a job and to advance your career. Make a LinkedIn account. Use your real name. Sign in with Google. Connect with your cohort. @@ -90,12 +90,12 @@ Use your professional Chrome profile for all your {{}} work. You will ### VSCode -We will use [Visual Studio Code](https://code.visualstudio.com/) (VSCode), a professional IDE you will use on this course and at work. +We will use [Visual Studio Code](https://code.visualstudio.com/) (VSCode), a customisable text editor you will use on this course and at work. If you are new to using tools like VSCode there are [video resources](https://www.youtube.com/watch?v=B-s71n0dHUk) which can help you familiarise yourself with the interface. - [ ] I have downloaded and installed [Visual Studio Code](https://code.visualstudio.com/). ### Zoom -Usually we use [Meet](https://applieddigitalskills.withgoogle.com/c/college-and-continuing-education/en/google-meet-for-beginners/overview.html), but sometimes we use [Zoom for remote sessions](https://zoom.us/download). Install it now. +Usually we use [Meet](https://applieddigitalskills.withgoogle.com/c/college-and-continuing-education/en/google-meet-for-beginners/overview.html), but sometimes we use [Zoom for remote sessions](https://zoom.us/download). If you are using a library computer you can use the web version, if you are using your own computer you should install it now. - [ ] I have downloaded and installed [Zoom](https://zoom.us/download) onto my computer. diff --git a/common-content/en/module/onboarding/expectations/index.md b/common-content/en/module/onboarding/expectations/index.md index 88ba05649..6842d1f17 100644 --- a/common-content/en/module/onboarding/expectations/index.md +++ b/common-content/en/module/onboarding/expectations/index.md @@ -11,21 +11,21 @@ hide_from_overview="true" publishResources = false +++ -## Learners, we expect you to: +### Learners, we expect you to: - Work in groups and individually, in class and during the week. - Show up on time and participate in all activities, including helping others. - Complete the work in the way it is specified. - Do your best. -## Learners, you can expect: +### Learners, you can expect: - Fair, achievable requirements, explained as clearly as possible. - Help from volunteers and other learners with your questions and blockers. - A safe, inclusive environment where you can learn and grow. - Many opportunities to succeed. -## We expect everyone to: +### We expect everyone to: - Follow the [Code of Conduct](https://codeyourfuture.io/about/code-of-conduct/). - Help each other. diff --git a/common-content/en/module/onboarding/goals/index.md b/common-content/en/module/onboarding/goals/index.md index 6e2fa6cff..734eb2add 100644 --- a/common-content/en/module/onboarding/goals/index.md +++ b/common-content/en/module/onboarding/goals/index.md @@ -37,16 +37,12 @@ _By the end of this module_ you will have tracked changes to data (your code) ov #### Requirements and Testing -_By the end of this module_ you will have tested your work using acceptance criteria, manual testing, and automated testing. Your goal is to interpret requirements and write code to meet acceptance criteria. +_By the end of this module_ you will have written code to solve specific problems and verified that it does what it is supposed to. Your goal is to interpret requirements and write code to meet acceptance criteria. #### Code review _By the end of this module_ you will have revised, refactored, and reviewed code using code review. Your goal is to form the habits of a professional who can think, talk, and write in a technical context. -#### Data - -_By the end of this module_ you will have manipulated data with HTML, Git, and Google Sheets. Your goal is to begin to understand how data is structured and how to manipulate it. - #### Scientific method _By the end of this module_ you will have written and asked well-structured developer questions. Your goal is to build a strategy to methodically solve problems. diff --git a/common-content/en/module/onboarding/help/index.md b/common-content/en/module/onboarding/help/index.md index 7cc959182..534c3cadc 100644 --- a/common-content/en/module/onboarding/help/index.md +++ b/common-content/en/module/onboarding/help/index.md @@ -35,15 +35,9 @@ We can help you with data access if you need support with it. See our [internet It will always be provided in class. -{{}} - -If you need a computer, you must be enrolled as a trainee before we can help you. - #### 💻 A computer -The onboarding module can be completed entirely on a library computer. Once you have completed this module and enrolled as a Trainee, we can lend you a laptop if you need. - -{{}} +The onboarding module can be completed entirely on a library computer. If you do not have access to a computer, or if you are worried your computer won't be able to run everything needed during the course, we can lend you a laptop. We ask that you complete the onboarding module step before we enrol you as a Trainee. We are obliged to only enrol people we have a reasonable expectation of being able to complete the whole course. But predicting the future is a challenge! We have created this module to try to give as many people as possible a fair chance to show they can do this. From 192e00bc7dd546ffdf8117d454d9dcb57e037533 Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Thu, 23 Apr 2026 16:21:52 +0100 Subject: [PATCH 02/11] remove references to github.dev --- common-content/en/module/induction/accounts/index.md | 2 -- common-content/en/module/onboarding/help/index.md | 2 +- org-cyf/content/itp/onboarding/sprints/1/prep/index.md | 3 --- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/common-content/en/module/induction/accounts/index.md b/common-content/en/module/induction/accounts/index.md index 17ccf43c3..d47714bc9 100644 --- a/common-content/en/module/induction/accounts/index.md +++ b/common-content/en/module/induction/accounts/index.md @@ -79,8 +79,6 @@ See this example fully filled-in Slack profile - make sure yours has at least th ## Applications -If you're working on a library computer, you can't download these applications. You will use [GitHub Dev](https://github.dev/) to complete coursework instead. - ### Google Chrome - [ ] I have downloaded and installed Google Chrome. diff --git a/common-content/en/module/onboarding/help/index.md b/common-content/en/module/onboarding/help/index.md index 534c3cadc..4f86902b6 100644 --- a/common-content/en/module/onboarding/help/index.md +++ b/common-content/en/module/onboarding/help/index.md @@ -37,7 +37,7 @@ It will always be provided in class. #### 💻 A computer -The onboarding module can be completed entirely on a library computer. If you do not have access to a computer, or if you are worried your computer won't be able to run everything needed during the course, we can lend you a laptop. +If you do not have access to a computer, or if you are worried your computer won't be able to run everything needed during the course, we can lend you a laptop. Let us know **as soon as possible** if you need to borrow one. We ask that you complete the onboarding module step before we enrol you as a Trainee. We are obliged to only enrol people we have a reasonable expectation of being able to complete the whole course. But predicting the future is a challenge! We have created this module to try to give as many people as possible a fair chance to show they can do this. diff --git a/org-cyf/content/itp/onboarding/sprints/1/prep/index.md b/org-cyf/content/itp/onboarding/sprints/1/prep/index.md index fe2633f02..ac1d2d628 100644 --- a/org-cyf/content/itp/onboarding/sprints/1/prep/index.md +++ b/org-cyf/content/itp/onboarding/sprints/1/prep/index.md @@ -7,9 +7,6 @@ weight = 1 name="Do the prep" src="module/onboarding/do-the-prep" [[blocks]] -name="GitHub Dot Dev" -src="module/induction/dot-dev" -[[blocks]] name="Install VS Code" src="module/induction/install-vscode" time=10 From 54b96f90554ab909d521af117b52ead450bdab01 Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Thu, 23 Apr 2026 17:20:07 +0100 Subject: [PATCH 03/11] move some git content to welcome module --- .../induction/check-git-installation/index.md | 17 +++++---- .../en/module/induction/cyf-blog/index.md | 4 +- .../induction/development-process/index.md | 8 ++-- .../en/module/induction/dot-dev/index.md | 23 ----------- .../module/induction/sharing-history/index.md | 38 ++++++++----------- .../module/induction/version-control/index.md | 10 +---- .../itp/onboarding/sprints/1/prep/index.md | 16 -------- org-cyf/content/itp/welcome/prep/index.md | 16 ++++++++ 8 files changed, 49 insertions(+), 83 deletions(-) delete mode 100644 common-content/en/module/induction/dot-dev/index.md diff --git a/common-content/en/module/induction/check-git-installation/index.md b/common-content/en/module/induction/check-git-installation/index.md index d6290c6af..e55465f70 100644 --- a/common-content/en/module/induction/check-git-installation/index.md +++ b/common-content/en/module/induction/check-git-installation/index.md @@ -1,9 +1,9 @@ +++ -title = 'Check Git installation' +title = 'Check Git Installation' time = 15 vocabulary=[] [tasks] -1='Double check Git is installed on your local machine' +1='Check Git is installed on your local machine' [build] render = 'never' list = 'local' @@ -13,9 +13,15 @@ vocabulary=[] ### Git -You will use Git continually as a developer. We will cover Git in more depth later in the course. Right now, we will just check that you have it installed. +{{}} -Open up a terminal and run the command `git --version` to double check you have Git installed. +Git is **version control software** that allows developers to create and manage different versions of a project. + +{{}} + +You will use Git continually as a developer. Before we can do any work with it we need to check that you have it installed. + +Open your computer's terminal application and run the command `git --version` to double check you have Git installed. If it is installed successfully, you should get a version number (which may not be exactly the same as this example, but should look similar): ``` @@ -23,6 +29,3 @@ git version 2.40.0 ``` Otherwise, you will need to [install](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) it or ask for support on your Slack channel. - -> [!TIP] -> If you are working on a library computer, you do not have a terminal, but your github.dev account already has Git installed. (It's called "Source Control".) So you can skip this step. diff --git a/common-content/en/module/induction/cyf-blog/index.md b/common-content/en/module/induction/cyf-blog/index.md index 90f74d335..43d1f00e0 100644 --- a/common-content/en/module/induction/cyf-blog/index.md +++ b/common-content/en/module/induction/cyf-blog/index.md @@ -1,5 +1,5 @@ +++ -title = 'Blog' +title = 'CYF Blog' time ="5" hide_from_overview = true [build] @@ -14,6 +14,6 @@ Ahmed and Naima are writing a blog together about their struggles learning codin The published blog is live here 👉 [Educational blog](https://git-demo-week1.netlify.app/) -{{}} +{{}} Explore the [Educational blog](https://git-demo-week1.netlify.app/). Click on the link on the site and check to see if it is working. {{}} diff --git a/common-content/en/module/induction/development-process/index.md b/common-content/en/module/induction/development-process/index.md index 96f49350d..9db19860e 100644 --- a/common-content/en/module/induction/development-process/index.md +++ b/common-content/en/module/induction/development-process/index.md @@ -11,15 +11,15 @@ hide_from_overview = true Ahmed and Naima are using the following **development process** for writing their blog: -> - writing the blog in a single file on a **single** computer -> - saving multiple versions of the file on the same computer -> - taking turns to use the computer during the day +- Writing the blog in a single file on a **single** computer +- Saving multiple versions of the file on the same computer +- Taking turns to use the computer during the day At the moment, the computer has a folder with the blog that looks like this: ![different-blog-versions](different-blog-versions.png) -{{}} +{{}} Describe some of the challenges that Ahmed and Naima face when trying to write a blog together in this way. diff --git a/common-content/en/module/induction/dot-dev/index.md b/common-content/en/module/induction/dot-dev/index.md deleted file mode 100644 index a4ea19877..000000000 --- a/common-content/en/module/induction/dot-dev/index.md +++ /dev/null @@ -1,23 +0,0 @@ -+++ -title = 'GitHub.dev' -description = 'Completing coursework on a library computer' -time = 20 -[objectives] -1='Access the dotdev environment on a library computer if you do not have your own' -[build] - render = 'never' - list = 'local' - publishResources = false - -+++ - -If you do not have a computer of your own yet, here's how to complete your work directly on GitHub without a local environment. - -Each repo on GitHub has a `.dev` environment so you can edit the code in your browser using an online VSCode. - -You can go to this environment directly by replacing `github.com` with `github.dev` in the URL. For example, to open the [`Module-Onboarding`](https://github.com/CodeYourFuture/Module-Onboarding) repo, you can go to - -https://github.dev/CodeYourFuture/Module-Onboarding - -> [!TIP] -> If you do have a computer, you should set up VSCode and a local environment. This is a workaround for people who don't yet have the luxury of a personal computer. diff --git a/common-content/en/module/induction/sharing-history/index.md b/common-content/en/module/induction/sharing-history/index.md index eda3b612a..961b729ad 100644 --- a/common-content/en/module/induction/sharing-history/index.md +++ b/common-content/en/module/induction/sharing-history/index.md @@ -12,9 +12,7 @@ time="30" +++ -Earlier on, Ahmed and Naima realised they also need the following: - -> a way to share the history of the project between different users and different computers +Earlier on, Ahmed and Naima realised they also need a way to share the history of the project between different users and different computers. To share a project and its history, we can use an online platform called **GitHub** @@ -26,7 +24,7 @@ By storing projects on GitHub, multiple users can gain access to the history of On GitHub we call our project and its history a **repository**. {{}} -{{}} +{{}} ### Explore 🔍 @@ -42,44 +40,38 @@ It will take you to a GitHub repository called **education-blog**. Answer the following questions using the page linked to above: -a) View the **README.md** file. What do the instructions tell you? -b) How many files are there inside the `blogs` folder? -c) How many lines are there in the **package.json** file? -d) Find the file with the blog content you can see on the live site here [blog 1](https://git-demo-week1.netlify.app/blogs/1) +1. View the **README.md** file. What do the instructions tell you? +2. How many files are there inside the `blogs` folder? +3. How many lines are there in the **package.json** file? +4. Find the file with the blog content you can see on the live site here [blog 1](https://git-demo-week1.netlify.app/blogs/1) You'll learn more about these type of files throughout the course. {{}} -> We can use the Github interface to explore the different **commits** (versions) of a project too. +We can use the Github interface to explore the different **commits** (versions) of a project too. -{{}} +{{}} ### Explore 🔍 Go to the following link: https://github.com/CodeYourFuture/education-blog/commits/main -Try answering the following questions: - -Go to the commit that says "add test p element to index page" +Go to the commit that says "add test p element to index page" and try answering the following questions: -#### Questions - -- How many files were changed in this commit? -- Who created the change? -- What time did the change take place? +1. How many files were changed in this commit? +2. Who created the change? +3. What time did the change take place? {{}} -{{}} +{{}} ### Explore 🔍 Go to the following link: https://github.com/CodeYourFuture/education-blog/commits/main and locate commit that says "remove \ and # from start of paragraph" -#### Questions - -- How many files were changed in this commit? -- What change was made in this commit? +1. How many files were changed in this commit? +2. What change was made in this commit? {{}} diff --git a/common-content/en/module/induction/version-control/index.md b/common-content/en/module/induction/version-control/index.md index 13f37b8c4..13f922482 100644 --- a/common-content/en/module/induction/version-control/index.md +++ b/common-content/en/module/induction/version-control/index.md @@ -15,17 +15,11 @@ time="10" To improve their way of working, Ahmed and Naima realise they need the following: -> - a way to both know what the most recent version is -> - a way to know what the old versions were, and in what order (i.e. how they got to the current version, and what content they may have deleted that they may want to get back) +- A way to both know what the most recent version is +- A way to know what the old versions were, and in what order (i.e. how they got to the current version, and what content they may have deleted that they may want to get back) To manage the different versions of the blog project, they decide to use **Git**. -{{}} - -Git is **version control software** that allows developers to create and manage different versions of a project. - -{{}} - In Git, we create different versions of a project over time by creating **commits**. A **commit** is a snapshot of our project at a particular point in time. You can also think of a **commit** as a particular version of a project. diff --git a/org-cyf/content/itp/onboarding/sprints/1/prep/index.md b/org-cyf/content/itp/onboarding/sprints/1/prep/index.md index ac1d2d628..1cb059753 100644 --- a/org-cyf/content/itp/onboarding/sprints/1/prep/index.md +++ b/org-cyf/content/itp/onboarding/sprints/1/prep/index.md @@ -11,10 +11,6 @@ name="Install VS Code" src="module/induction/install-vscode" time=10 [[blocks]] -name="Check Git" -src="module/induction/check-git-installation" -time=5 -[[blocks]] name="Create CYF Folder" src="module/induction/cyf-folder" time=5 @@ -31,18 +27,6 @@ name="Set up Planner" src="https://github.com/CodeYourFuture/Coursework-Planner/tree/main" time=30 [[blocks]] -name="CYF Blog" -src="module/induction/cyf-blog" -[[blocks]] -name="Development Process" -src="module/induction/development-process" -[[blocks]] -name="Version Control" -src="module/induction/version-control" -[[blocks]] -name="Sharing History" -src="module/induction/sharing-history" -[[blocks]] name="Explore" src="module/induction/checkout-a-commit" [[blocks]] diff --git a/org-cyf/content/itp/welcome/prep/index.md b/org-cyf/content/itp/welcome/prep/index.md index 41c0b4493..d05a3251b 100644 --- a/org-cyf/content/itp/welcome/prep/index.md +++ b/org-cyf/content/itp/welcome/prep/index.md @@ -29,4 +29,20 @@ src="module/induction/accounts" [[blocks]] name="House Rules" src="blocks/house-rules" +[[blocks]] +name="Check Git Installation" +src="module/induction/check-git-installation" +time=5 +[[blocks]] +name="CYF Blog" +src="module/induction/cyf-blog" +[[blocks]] +name="Development Process" +src="module/induction/development-process" +[[blocks]] +name="Version Control" +src="module/induction/version-control" +[[blocks]] +name="Sharing History" +src="module/induction/sharing-history" +++ From 9d5fb15659d7312a55eec6ea070bd6d4230bb480 Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Fri, 24 Apr 2026 09:47:43 +0100 Subject: [PATCH 04/11] replace exercise numbers with names --- .../en/module/induction/cyf-blog/index.md | 2 +- .../module/induction/development-process/index.md | 2 +- .../en/module/induction/sharing-history/index.md | 14 ++++---------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/common-content/en/module/induction/cyf-blog/index.md b/common-content/en/module/induction/cyf-blog/index.md index 43d1f00e0..211642be6 100644 --- a/common-content/en/module/induction/cyf-blog/index.md +++ b/common-content/en/module/induction/cyf-blog/index.md @@ -14,6 +14,6 @@ Ahmed and Naima are writing a blog together about their struggles learning codin The published blog is live here 👉 [Educational blog](https://git-demo-week1.netlify.app/) -{{}} +{{}} Explore the [Educational blog](https://git-demo-week1.netlify.app/). Click on the link on the site and check to see if it is working. {{}} diff --git a/common-content/en/module/induction/development-process/index.md b/common-content/en/module/induction/development-process/index.md index 9db19860e..6463c9e7e 100644 --- a/common-content/en/module/induction/development-process/index.md +++ b/common-content/en/module/induction/development-process/index.md @@ -19,7 +19,7 @@ At the moment, the computer has a folder with the blog that looks like this: ![different-blog-versions](different-blog-versions.png) -{{}} +{{}} Describe some of the challenges that Ahmed and Naima face when trying to write a blog together in this way. diff --git a/common-content/en/module/induction/sharing-history/index.md b/common-content/en/module/induction/sharing-history/index.md index 961b729ad..ea833a07e 100644 --- a/common-content/en/module/induction/sharing-history/index.md +++ b/common-content/en/module/induction/sharing-history/index.md @@ -24,15 +24,13 @@ By storing projects on GitHub, multiple users can gain access to the history of On GitHub we call our project and its history a **repository**. {{}} -{{}} - -### Explore 🔍 +{{}} In this exercise, you'll need to explore a **GitHub repository.** You'll need to look around and figure out where to find different files and find out information about them. -**⚠️ You won't be expected to know what the files do at this stage.** +**You won't be expected to know what the files do at this stage.** Go to the following link: https://github.com/CodeYourFuture/education-blog @@ -51,9 +49,7 @@ You'll learn more about these type of files throughout the course. We can use the Github interface to explore the different **commits** (versions) of a project too. -{{}} - -### Explore 🔍 +{{}} Go to the following link: https://github.com/CodeYourFuture/education-blog/commits/main @@ -65,9 +61,7 @@ Go to the commit that says "add test p element to index page" and try answering {{}} -{{}} - -### Explore 🔍 +{{}} Go to the following link: https://github.com/CodeYourFuture/education-blog/commits/main and locate commit that says "remove \ and # from start of paragraph" From 4cd1e80cceda944b50834ab1a6146179696f2327 Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Fri, 24 Apr 2026 10:40:32 +0100 Subject: [PATCH 05/11] add outlines of git content to welcome module --- .../onboarding/git/creating-a-commit/index.md | 27 +++++++++++++++++++ .../git/pushing-and-pulling/index.md | 20 ++++++++++++++ .../git/remote-repositories/index.md | 17 ++++++++++++ .../onboarding/git/vscode-setup/index.md | 18 +++++++++++++ org-cyf/content/itp/welcome/prep/index.md | 12 +++++++++ 5 files changed, 94 insertions(+) create mode 100644 common-content/en/module/onboarding/git/creating-a-commit/index.md create mode 100644 common-content/en/module/onboarding/git/pushing-and-pulling/index.md create mode 100644 common-content/en/module/onboarding/git/remote-repositories/index.md create mode 100644 common-content/en/module/onboarding/git/vscode-setup/index.md diff --git a/common-content/en/module/onboarding/git/creating-a-commit/index.md b/common-content/en/module/onboarding/git/creating-a-commit/index.md new file mode 100644 index 000000000..abec09982 --- /dev/null +++ b/common-content/en/module/onboarding/git/creating-a-commit/index.md @@ -0,0 +1,27 @@ ++++ +title = 'Creating a Commit' +time ="45" +objectives = [ + "Use Git to identify which files have been changed", + "Selected files to be included in a commit", + "Create a commit" +] +hide_from_overview = true +[build] + render = 'never' + list = 'local' + publishResources = false + ++++ + +TODO: + +- Initialise a repository in an empty folder +- Create a text file +- Add some content +- Screenshots of UI changes +- Make a commit +- Add more content +- Show changes in UI +- Make another commit +- Show history \ No newline at end of file diff --git a/common-content/en/module/onboarding/git/pushing-and-pulling/index.md b/common-content/en/module/onboarding/git/pushing-and-pulling/index.md new file mode 100644 index 000000000..8fcc5f8e0 --- /dev/null +++ b/common-content/en/module/onboarding/git/pushing-and-pulling/index.md @@ -0,0 +1,20 @@ ++++ +title = 'Pushing and Pulling' +time ="30" +objectives = [ + "Link local and remote repositories", + "Upload files to GitHub" +] +hide_from_overview = true +[build] + render = 'never' + list = 'local' + publishResources = false + ++++ + +TODO: + +- Add a remote in VSCode +- Push commits +- Explain that we can retrieve code from GitHub with `git pull` but leave example for a later module \ No newline at end of file diff --git a/common-content/en/module/onboarding/git/remote-repositories/index.md b/common-content/en/module/onboarding/git/remote-repositories/index.md new file mode 100644 index 000000000..8a3e3935c --- /dev/null +++ b/common-content/en/module/onboarding/git/remote-repositories/index.md @@ -0,0 +1,17 @@ ++++ +title = 'Remote Repositories' +time ="10" +objectives = [ + "Create a repository on GitHub" +] +hide_from_overview = true +[build] + render = 'never' + list = 'local' + publishResources = false + ++++ + +TODO: + +- Walk through process of creating a repo on GitHub \ No newline at end of file diff --git a/common-content/en/module/onboarding/git/vscode-setup/index.md b/common-content/en/module/onboarding/git/vscode-setup/index.md new file mode 100644 index 000000000..3ed586886 --- /dev/null +++ b/common-content/en/module/onboarding/git/vscode-setup/index.md @@ -0,0 +1,18 @@ ++++ +title = 'Configuring Git with VSCode' +time ="10" +objectives = [ + "Connect your GitHub account to VSCode" +] +hide_from_overview = true +[build] + render = 'never' + list = 'local' + publishResources = false + ++++ + +TODO: + +- Explain that we can use Git through VSCode, but this is not the only way +- Step through process of linking the two \ No newline at end of file diff --git a/org-cyf/content/itp/welcome/prep/index.md b/org-cyf/content/itp/welcome/prep/index.md index d05a3251b..92d1dd726 100644 --- a/org-cyf/content/itp/welcome/prep/index.md +++ b/org-cyf/content/itp/welcome/prep/index.md @@ -45,4 +45,16 @@ src="module/induction/version-control" [[blocks]] name="Sharing History" src="module/induction/sharing-history" +[[blocks]] +name="Configuring Git with VSCode" +src="module/onboarding/git/vscode-setup" +[[blocks]] +name="Creating a Commit" +src="module/onboarding/git/creating-a-commit" +[[blocks]] +name="Remote Repositories" +src="module/onboarding/git/remote-repositories" +[[blocks]] +name="Pushing & Pulling" +src="module/onboarding/git/pushing-and-pulling" +++ From 654e75dbdcef5e64f448edce797a5e27ecacffab Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Fri, 24 Apr 2026 17:13:04 +0100 Subject: [PATCH 06/11] add/update git material in sprint 1 --- .../en/module/induction/branching/index.md | 16 ++++---- .../induction/checkout-a-commit/index.md | 2 +- .../en/module/induction/cyf-folder/index.md | 25 +---------- .../induction/forking-a-repository/index.md | 18 ++++---- .../induction/previous-versions/index.md | 22 +++------- .../module/induction/viewing-files/index.md | 15 ++----- .../module/induction/working-locally/index.md | 24 +++++------ .../en/module/induction/wrapping-up/index.md | 33 --------------- .../onboarding/git/ignoring-files/index.md | 18 ++++++++ .../en/module/onboarding/git/merging/index.md | 20 +++++++++ .../onboarding/git/undoing-a-commit/index.md | 19 +++++++++ .../itp/onboarding/sprints/1/prep/index.md | 41 +++++++++---------- org-cyf/content/itp/welcome/prep/index.md | 3 ++ 13 files changed, 119 insertions(+), 137 deletions(-) delete mode 100644 common-content/en/module/induction/wrapping-up/index.md create mode 100644 common-content/en/module/onboarding/git/ignoring-files/index.md create mode 100644 common-content/en/module/onboarding/git/merging/index.md create mode 100644 common-content/en/module/onboarding/git/undoing-a-commit/index.md diff --git a/common-content/en/module/induction/branching/index.md b/common-content/en/module/induction/branching/index.md index 1d22865a9..170d1928e 100644 --- a/common-content/en/module/induction/branching/index.md +++ b/common-content/en/module/induction/branching/index.md @@ -20,7 +20,7 @@ On the left page of the page, we see additional information: ![main-branch-highlighted](main-branch-highlighted.png) -> So what is **`main`**? +So what is `main`? `main` is a **branch**. @@ -35,7 +35,7 @@ gitGraph A branch represents a particular history of development in a project - the different versions there have been. -{{}} +{{}} A **branch** is a sequence of commits in a project. @@ -50,14 +50,18 @@ gitGraph commit commit branch "try-purple" + checkout "try-purple" commit commit checkout main branch "try-blue" commit + checkout main + commit + commit ``` -The **`main`** branch is often treated as a special branch - it's where we put commits which people working on the project have agreed on. Other branches (e.g. the experimental purple branch) may have extra changes that have not been agreed on. If people working on the project agree the changes from the purple branch are good, we'll add those changes to the main branch. +The `main` branch is often treated as a special branch - it's where we put commits which people working on the project have agreed on. Other branches (e.g. the `try-purple` branch) may have extra changes that have not been agreed on. If people working on the project agree the changes from the purple branch are good, we'll add those changes to the main branch. When we're working on something new, we haven't agreed with other people that our new thing is good yet, so we often don't add our changes to the main branch straight away. Instead we make our own branch to experiment on. @@ -75,13 +79,11 @@ gitGraph In the diagram above, we can continue to commit on the "week-1-coursework" branch without altering the history of the `main` branch. -{{}} - -### Creating a local branch +{{}} 1. Open the `education-blog` repository in VSCode. -2. Using this clip, create a new branch called `update-blog-1` in your local repository 👉 https://youtube.com/clip/UgkxvXsnm_98Rx0NUZq25apQWA6POccRoQzw +2. Using [this clip](https://youtube.com/clip/UgkxvXsnm_98Rx0NUZq25apQWA6POccRoQzw), create a new branch called `update-blog-1` in your local repository. 📋 How can you check that you've successfully created a branch? diff --git a/common-content/en/module/induction/checkout-a-commit/index.md b/common-content/en/module/induction/checkout-a-commit/index.md index feed20d94..de8ec96f8 100644 --- a/common-content/en/module/induction/checkout-a-commit/index.md +++ b/common-content/en/module/induction/checkout-a-commit/index.md @@ -16,7 +16,7 @@ Recall that a commit is a snapshot of our project at some point in time. Therefore, we should be able to check out a previous version of our project and look at the files and folders there. We can use the Github interface to check out the files and folders at a previous commit. -{{}} +{{}} Go back to this page https://github.com/CodeYourFuture/education-blog/commits/main diff --git a/common-content/en/module/induction/cyf-folder/index.md b/common-content/en/module/induction/cyf-folder/index.md index 18122c781..28f3441f5 100644 --- a/common-content/en/module/induction/cyf-folder/index.md +++ b/common-content/en/module/induction/cyf-folder/index.md @@ -15,27 +15,4 @@ vocabulary=[] > [!IMPORTANT] > Make a folder called `{{}}` in your home directory. Store all your work for the course in this folder. -You'll need to create a {{}} folder to store your projects on the course. You can do this any way you like, but here we are using the terminal. - -### How to create a folder using the terminal - -1. Open a terminal on your computer. - -For each of the steps below, you'll need to use the command line in your terminal. - -Use this [cli documentation](https://www.techrepublic.com/article/16-terminal-commands-every-user-should-know/) to remember terminal commands. - -2. In your terminal, print your current working directory. - -3. List the files and folders in your current working directory. - -You'll need a place to store your work for the course. - -4. **M**a**k**e a new **dir**ectory called `{{}}` in your home directory. - -5. **C**hange **d**irectory into the `{{}}` directory. - -6. Double check you're in the right place by **p**rinting your current **w**orking **d**irectory. - -> [!TIP] -> If you're working on a library computer, skip this step. You will store your work in your GitHub account. +You'll need to create a `{{}}` folder to store your projects on the course. It's up to you how you organise your work, but we suggest having a sub-directory for each module and then for each sprint. You can create the folder using your system's file explorer, or using the terminal app if you're comfortable doing that. \ No newline at end of file diff --git a/common-content/en/module/induction/forking-a-repository/index.md b/common-content/en/module/induction/forking-a-repository/index.md index 9661e4c3a..1a2bf7385 100644 --- a/common-content/en/module/induction/forking-a-repository/index.md +++ b/common-content/en/module/induction/forking-a-repository/index.md @@ -12,11 +12,15 @@ time ="10" Often we want to take an existing project and start working on it independently. In other words: we start making our own versions of the project separate from the original project. -We can create a {{}}A **fork** is a copy of a repository that exists on Github{{}}. +We can create a **fork**. A fork is a copy of a repository that exists on Github. -When we create a fork on Github, the new forked repository gets a new url: +A GitHub repository's url looks like this: -#### https://github.com/CodeYourFuture/cyf-demo-repo +``` +https://github.com/CodeYourFuture/cyf-demo-repo +``` + +Like any url it is made up of different parts. ```mermaid flowchart LR @@ -52,13 +56,11 @@ flowchart LR C --> D[cyf-demo-repo] ``` -{{}} - -### 🍴 Fork a repo +{{}} 1. Go to https://github.com/CodeYourFuture/education-blog. -1. Find the **Fork** button on this page. -1. Click on the Fork button to create a new fork of the repository and set yourself as the owner of the fork. +2. Find the **Fork** button on this page. +3. Click on the Fork button to create a new fork of the repository and set yourself as the owner of the fork. 📋 How can you check you successfully forked the original repository? diff --git a/common-content/en/module/induction/previous-versions/index.md b/common-content/en/module/induction/previous-versions/index.md index 09f7a7b6f..8d77cc25f 100644 --- a/common-content/en/module/induction/previous-versions/index.md +++ b/common-content/en/module/induction/previous-versions/index.md @@ -9,34 +9,22 @@ time ="20" +++ -We can view the different commits of a project on Github. This means we can see what the website looked like before, in previous versions. +We can view the different commits of a project on Github. This means we can see what an application looked like before, in previous versions. -{{}} -Here are some different versions of the same educational backlog. +{{}} +Here are some different versions of the educational blog we introduced in the previous module. [Deployed version A educational blog](https://git-demo-week1-version-a.netlify.app/) - - [Deployed version B educational blog](https://git-demo-week1-version-b.netlify.app/) - - [Deployed version C educational blog](https://git-demo-week1-version-c.netlify.app/) - - #### Questions 1. What is the difference between Version A and Version B on the index page (the page you first land on after clicking on the link) 1. What is the difference between Version C and the main version of the site. -1. Which commit from the [**education-blog**](https://github.com/CodeYourFuture/education-blog/commits/main) repo correspond to Version C? Remember to check the git history. -1. Which commit from the [**education-blog**](https://github.com/CodeYourFuture/education-blog/commits/main) repo correspond to Version A? +1. Which commit from the [**education-blog**](https://github.com/CodeYourFuture/education-blog/commits/main) repo corresponds to Version C? Remember to check the git history. +1. Which commit from the [**education-blog**](https://github.com/CodeYourFuture/education-blog/commits/main) repo corresponds to Version A? {{}} diff --git a/common-content/en/module/induction/viewing-files/index.md b/common-content/en/module/induction/viewing-files/index.md index a7a8dc388..3806b52da 100644 --- a/common-content/en/module/induction/viewing-files/index.md +++ b/common-content/en/module/induction/viewing-files/index.md @@ -1,7 +1,7 @@ +++ title = 'Viewing files from a git clone' time ="20" -objectives=["Open a cloned repository in your IDE","Explore the repository in your IDE","Open the Integrated Terminal in VSCode"] +objectives=["Open a cloned repository in VSCode","Explore the repository in VSCode","Open the Integrated Terminal in VSCode"] [build] render = 'never' list = 'local' @@ -9,13 +9,9 @@ objectives=["Open a cloned repository in your IDE","Explore the repository in yo +++ -Once you've got a local copy of a codebase on your local machine you can start to view the files and folders in that codebase. You can use a code editor like VSCode. +Once you've got a local copy of a codebase on your local machine you can start to view the files and folders in that codebase using VSCode. -VSCode is an application that enables developers to view and edit files on their local machine. - -{{}} - -### Explore VSCode +{{}} 1. Figure out how to open the cloned repository on your local machine in VSCode. @@ -23,9 +19,6 @@ VSCode is an application that enables developers to view and edit files on their 3. Try opening the Integrated Terminal in your VSCode window -🤔 If you get stuck on any of these exercises, it's a good idea to search online. For example, you could Google "opening terminal in vscode" +If you get stuck on any of these exercises, it's a good idea to search online. For example, you could Google "opening terminal in vscode" {{}} - -> [!NOTE] -> If you're working on a library computer, use dot dev to open the repo in your browser, and navigate the files and folder there. You cannot open a terminal in the library, so come to class to try this part out. diff --git a/common-content/en/module/induction/working-locally/index.md b/common-content/en/module/induction/working-locally/index.md index 05c7b8481..437635727 100644 --- a/common-content/en/module/induction/working-locally/index.md +++ b/common-content/en/module/induction/working-locally/index.md @@ -12,6 +12,10 @@ time ="20" +++ +Before we can work on it we need to get a **local copy** of the education blog repo. A repository on GitHub is said to be **remote** and a repository on our own computer is said to be **local**. + +We call a local copy of a GitHub repository a **clone**. The process of copying a remote repository on to a local machine is called **cloning**. + Here is a diagram representing how the repositories interact after forking and cloning: ```mermaid @@ -37,28 +41,20 @@ flowchart TD linkStyle 0,1 stroke:#0d6efd,stroke-width:2px ``` -Sketch this diagram in your notebook. When you inevitably get mixed lost about where your changes are, you can refer back to this diagram to help you understand what's happening. +Sketch this diagram in your notebook. If you get confused about where your changes are you can refer back to this diagram to help you understand what's happening. -> [!NOTE] -> If you're working on a library computer, just fork the repo to your own GitHub account. You can't clone a repo on a library computer, so come to class to try cloning out. You can explore the files using dot dev in the same way as you would in Visual Studio Code. +How can we get a copy of an existing GitHub repository on our local machine? -We can also use Git on our local machine to perform similar tasks as we do on GitHub. So we need to address the following question: -> How can we get a copy of an existing GitHub repository on our local machine? - -In other words, we need to get a {{}}A repository on GitHub is said to be **remote**. A repository on our own computer is said to be **local**.{{}} of the repository which is on GitHub. - -We call a local copy of a GitHub repository a **clone**. The process of copying a remote repository on to a local machine is called **cloning**. - -### 🎯 Goal: Clone a remote repository to your local machine +{{}} You'll need to clone **your fork** of the education blog repo. Follow through the steps in the video "How to clone a repository from GitHub to Visual Studio Code". {{}}https://www.youtube.com/watch?v=ILJ4dfOL7zs{{}} -
- -##### 🎗️ Reminder: +#### Reminder: - Use the URL for your fork of the `education-blog` repo when you are cloning - When selecting the location to clone your files, choose the `CYF` folder you created in the [module prep](/user-data/prep/#create-cyf-folder) + +{{
}} \ No newline at end of file diff --git a/common-content/en/module/induction/wrapping-up/index.md b/common-content/en/module/induction/wrapping-up/index.md deleted file mode 100644 index 5f8a36ae6..000000000 --- a/common-content/en/module/induction/wrapping-up/index.md +++ /dev/null @@ -1,33 +0,0 @@ -+++ -title = 'Wrapping up Git' - -time ="20" -hide_from_overview = true -[objectives] - 1='Commit changes to a local git branch' -[build] - render = 'never' - list = 'local' - publishResources = false - -+++ - -{{}} - -📋 Double check the learning objectives from this sprint. Make a note of those objectives that you're still struggling with. - -Now you'll need to **create a commit**. - -You can use the "How to commit changes and push them in Visual Studio Code" video to figure out how to create a commit. - -We'll cover this topic often in workshops. Come to a CYF centre to work on this with a mentor. - -1. Try opening your clone of education-blog in VSCode -1. Make sure you're on the `main` branch -1. Make a **new** branch for your changes -1. Try fixing a typo in the `README.md` file -1. Try using the video to create a commit of your work. - -{{}} - -{{}}https://www.youtube.com/watch?v=B8RSMBSzFuA{{}} diff --git a/common-content/en/module/onboarding/git/ignoring-files/index.md b/common-content/en/module/onboarding/git/ignoring-files/index.md new file mode 100644 index 000000000..ebc839ea1 --- /dev/null +++ b/common-content/en/module/onboarding/git/ignoring-files/index.md @@ -0,0 +1,18 @@ ++++ +title = 'Ignoring Files' +time =45 +[objectives] + 1="Create a .gitignore file" +[build] + render = 'never' + list = 'local' + publishResources = false + ++++ + +TODO: + +- Create an additional file in a repo - **do not commit** +- Explain why we may not want to commit it +- Create `.gitignore` +- Use `git status` (or equivalent in VSCode) to show file is being ignored \ No newline at end of file diff --git a/common-content/en/module/onboarding/git/merging/index.md b/common-content/en/module/onboarding/git/merging/index.md new file mode 100644 index 000000000..4f2accc17 --- /dev/null +++ b/common-content/en/module/onboarding/git/merging/index.md @@ -0,0 +1,20 @@ ++++ +title = 'Merging' +time =45 +[objectives] + 1="Push a branch to GitHub" + 2="Create a pull request" + 3="Merge a pull request to `main`" +[build] + render = 'never' + list = 'local' + publishResources = false + ++++ + +TODO: + +- Define "merging" +- Show GitHub UI for a branch compared to `main` +- Show PR UI +- Show merging \ No newline at end of file diff --git a/common-content/en/module/onboarding/git/undoing-a-commit/index.md b/common-content/en/module/onboarding/git/undoing-a-commit/index.md new file mode 100644 index 000000000..447476003 --- /dev/null +++ b/common-content/en/module/onboarding/git/undoing-a-commit/index.md @@ -0,0 +1,19 @@ ++++ +title = 'Undoing a Commit' +time =45 +[objectives] + 1="Use `git revert` to undo a commit" + 2="Reset the repository to a previous version with `git reset`" +[build] + render = 'never' + list = 'local' + publishResources = false + ++++ + +TODO: + +- Add some extra content to an existing repo (education blog?) +- Revert a commit and examine history +- Reset to a previous commit and examine history + diff --git a/org-cyf/content/itp/onboarding/sprints/1/prep/index.md b/org-cyf/content/itp/onboarding/sprints/1/prep/index.md index 1cb059753..93bb4e3c7 100644 --- a/org-cyf/content/itp/onboarding/sprints/1/prep/index.md +++ b/org-cyf/content/itp/onboarding/sprints/1/prep/index.md @@ -7,26 +7,6 @@ weight = 1 name="Do the prep" src="module/onboarding/do-the-prep" [[blocks]] -name="Install VS Code" -src="module/induction/install-vscode" -time=10 -[[blocks]] -name="Create CYF Folder" -src="module/induction/cyf-folder" -time=5 -[[blocks]] -name="Fork your Planner" -src="https://www.youtube.com/watch?v=cnx0RuAu2tc" -time=5 -[[blocks]] -name="Make your Planning Board" -src="https://www.youtube.com/watch?v=Hbtfil-G0h0" -time=15 -[[blocks]] -name="Set up Planner" -src="https://github.com/CodeYourFuture/Coursework-Planner/tree/main" -time=30 -[[blocks]] name="Explore" src="module/induction/checkout-a-commit" [[blocks]] @@ -45,10 +25,27 @@ src="module/induction/viewing-files" name="Branching" src="module/induction/branching" [[blocks]] -name="Wrapping up Git" -src="module/induction/wrapping-up" +name="Merging" +src="module/onboarding/git/merging" +[[blocks]] +name="Undoing a Commit" +src="module/onboarding/git/undoing-a-commit" +[[blocks]] +name="Ignoring Files" +src="module/onboarding/git/ignoring-files" +[[blocks]] +name="Fork your Planner" +src="https://www.youtube.com/watch?v=cnx0RuAu2tc" +time=5 +[[blocks]] +name="Make your Planning Board" +src="https://www.youtube.com/watch?v=Hbtfil-G0h0" time=15 [[blocks]] +name="Set up Planner" +src="https://github.com/CodeYourFuture/Coursework-Planner/tree/main" +time=30 +[[blocks]] name="Forms in 25 minutes" title="Form building" src="https://www.youtube.com/watch?v=fNcJuPIZ2WE" diff --git a/org-cyf/content/itp/welcome/prep/index.md b/org-cyf/content/itp/welcome/prep/index.md index 92d1dd726..b2474c486 100644 --- a/org-cyf/content/itp/welcome/prep/index.md +++ b/org-cyf/content/itp/welcome/prep/index.md @@ -30,6 +30,9 @@ src="module/induction/accounts" name="House Rules" src="blocks/house-rules" [[blocks]] +name="Create CYF Folder" +src="module/induction/cyf-folder" +[[blocks]] name="Check Git Installation" src="module/induction/check-git-installation" time=5 From 24ff89eedf6f1637b54760df9c63d1997a9f89c0 Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Tue, 28 Apr 2026 14:39:27 +0100 Subject: [PATCH 07/11] move form content to sprint 1 --- org-cyf/content/itp/onboarding/sprints/1/prep/index.md | 3 +++ org-cyf/content/itp/onboarding/sprints/2/prep/index.md | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/org-cyf/content/itp/onboarding/sprints/1/prep/index.md b/org-cyf/content/itp/onboarding/sprints/1/prep/index.md index 93bb4e3c7..031f34546 100644 --- a/org-cyf/content/itp/onboarding/sprints/1/prep/index.md +++ b/org-cyf/content/itp/onboarding/sprints/1/prep/index.md @@ -51,6 +51,9 @@ title="Form building" src="https://www.youtube.com/watch?v=fNcJuPIZ2WE" time=25 [[blocks]] +name="What are Forms" +src="module/html-css/what-are-forms" +[[blocks]] name="Backlog" src="blocks/backlog" +++ diff --git a/org-cyf/content/itp/onboarding/sprints/2/prep/index.md b/org-cyf/content/itp/onboarding/sprints/2/prep/index.md index 9b2df8e65..34f6255cf 100644 --- a/org-cyf/content/itp/onboarding/sprints/2/prep/index.md +++ b/org-cyf/content/itp/onboarding/sprints/2/prep/index.md @@ -7,9 +7,6 @@ weight = 1 name="Spaced Repetition" src="blocks/spaced-repetition" [[blocks]] -name="What are Forms" -src="module/html-css/what-are-forms" -[[blocks]] name="Google Sheets Query Function Explained" src="https://www.youtube.com/watch?v=oCKvAcXTLZo" time=20 From e9c3f7fa23291a3f664b18ebf3c7513b9b434a3c Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Tue, 28 Apr 2026 14:57:27 +0100 Subject: [PATCH 08/11] move unix/node setup to onboarding --- .../en/module/js1/check-unix-os/index.md | 10 ++----- .../en/module/js1/install-node/index.md | 28 +++++++++---------- .../itp/onboarding/sprints/2/prep/index.md | 9 +++--- .../structuring-data/prerequisites/index.md | 13 --------- .../itp/structuring-data/sprints/1/_index.md | 2 +- .../itp/structuring-data/sprints/2/_index.md | 2 +- .../itp/structuring-data/sprints/3/_index.md | 2 +- 7 files changed, 24 insertions(+), 42 deletions(-) delete mode 100644 org-cyf/content/itp/structuring-data/prerequisites/index.md diff --git a/common-content/en/module/js1/check-unix-os/index.md b/common-content/en/module/js1/check-unix-os/index.md index b4fba7fe8..d5567778a 100644 --- a/common-content/en/module/js1/check-unix-os/index.md +++ b/common-content/en/module/js1/check-unix-os/index.md @@ -14,21 +14,18 @@ time = 15 If you get stuck on any of the below or above instructions, please post in your class channel on Slack. -You probably already have this if you have done previous modules. - -{{}} -Code Your Future does not support Windows. +{{}} We have found that we don't reliably have volunteers at class who can debug Windows problems, and they frequently come up, stopping trainees from making progress. We do not support Windows so as to not waste lots of trainee and volunteer time. We have made this decision even though Windows is a popular operating system and has features like WSL which help to get experience with Unix. {{}} -If you have a Mac or Linux machine already, you already have a UNIX based operating system. All CYF-supplied laptops run Mac OS or Linux. If you have your own machine and it runs Windows, you should already have set up a Linux partition. +If you have a Mac or Linux machine already, you already have a UNIX based operating system. All CYF-supplied laptops run Mac OS or Linux. If you have your own machine and it runs Windows you will need to set up a Linux partition. -If you have still not done this, you must do it now. We cannot support learners using Windows. It takes too much time from everybody else. If you need help doing this, post in Slack, or bring your laptop to a CYF co-working space to get support. It's normal to need help with this process. +If you have still not done this you must do it now. If you need help doing this, post in Slack, or bring your laptop to a CYF co-working space to get support. It's normal to need help with this process. The Ubuntu website has [instructions which you can follow](https://help.ubuntu.com/community/WindowsDualBoot) to dual-boot your system. > [!TIP] > @@ -36,4 +33,3 @@ If you have still not done this, you must do it now. We cannot support learners -[Dual Boot on Windows](https://help.ubuntu.com/community/WindowsDualBoot) diff --git a/common-content/en/module/js1/install-node/index.md b/common-content/en/module/js1/install-node/index.md index b69ec9ef8..c138257c4 100644 --- a/common-content/en/module/js1/install-node/index.md +++ b/common-content/en/module/js1/install-node/index.md @@ -18,29 +18,29 @@ Check if you already have NodeJS installed by running `node -v` in a terminal. T {{}} -## 🐧 On Ubuntu +### 🐧 On Ubuntu 1. Install nvm by running the following commands in your terminal: -```terminal +```bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash ``` 2. After the installation is complete, you'll need to source the nvm script by running: -```terminal +```bash source ~/.bashrc ``` 3. Install the latest LTS version of Node.js by running: -```terminal +```bash nvm install --lts ``` 4. Check that you have successfully installed Node.js by running: -```terminal +```bash node -v ``` @@ -48,17 +48,17 @@ You should see a version number like `v22.11.0`. 5. Check that you have successfully installed npm by running: -```terminal +```bash npm -v ``` You should see a version number like `10.9.0`. -##  On Mac +###  On Mac 1. Install the the Xcode Command Line Developer Tools by running the following command in your terminal: -```terminal +```bash xcode-select --install ``` @@ -66,31 +66,31 @@ These may already be installed, in which case you will see "xcode-select: note: 2. Create a (Non-Login Interactive) Shell Configuration File: -```terminal +```bash touch ~/.zshrc ``` 3. Install nvm: -```terminal +```bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash ``` 4. After the installation is complete, you'll need to source the nvm script by running: -```terminal +```bash source ~/.zshrc ``` 5. Install the latest LTS version of Node.js by running: -```terminal +```bash nvm install --lts ``` 6. Check that you have successfully installed Node.js by running: -```terminal +```bash node -v ``` @@ -98,7 +98,7 @@ You should see a version number like `v22.11.0`. 7. Check that you have successfully installed npm by running: -```terminal +```bash npm -v ``` diff --git a/org-cyf/content/itp/onboarding/sprints/2/prep/index.md b/org-cyf/content/itp/onboarding/sprints/2/prep/index.md index 34f6255cf..11f7f2bc8 100644 --- a/org-cyf/content/itp/onboarding/sprints/2/prep/index.md +++ b/org-cyf/content/itp/onboarding/sprints/2/prep/index.md @@ -7,12 +7,11 @@ weight = 1 name="Spaced Repetition" src="blocks/spaced-repetition" [[blocks]] -name="Google Sheets Query Function Explained" -src="https://www.youtube.com/watch?v=oCKvAcXTLZo" -time=20 +name="Install a unix based os" +src="module/js1/check-unix-os" [[blocks]] -name="Databases with Google Sheets" -src="module/databases/databases-with-sheets" +name="Install Node" +src="module/js1/install-node" [[blocks]] name="Backlog" src="blocks/backlog" diff --git a/org-cyf/content/itp/structuring-data/prerequisites/index.md b/org-cyf/content/itp/structuring-data/prerequisites/index.md deleted file mode 100644 index 622fb2bbf..000000000 --- a/org-cyf/content/itp/structuring-data/prerequisites/index.md +++ /dev/null @@ -1,13 +0,0 @@ -+++ -title = 'Pre-Reqs' -description = 'Things you must set up to get started' -layout = 'prep' -menu_level = ['module'] -weight = 1 -[[blocks]] -name="Install a unix based os" -src="module/js1/check-unix-os" -[[blocks]] -name="Install Node" -src="module/js1/install-node" -+++ diff --git a/org-cyf/content/itp/structuring-data/sprints/1/_index.md b/org-cyf/content/itp/structuring-data/sprints/1/_index.md index cd4327ae6..60fee00d9 100644 --- a/org-cyf/content/itp/structuring-data/sprints/1/_index.md +++ b/org-cyf/content/itp/structuring-data/sprints/1/_index.md @@ -3,6 +3,6 @@ title = 'Sprint 1' description = 'The plan for this sprint' layout = 'sprint' menu_level = ['module'] -weight = 2 +weight = 1 theme = "Programming fundamentals" +++ diff --git a/org-cyf/content/itp/structuring-data/sprints/2/_index.md b/org-cyf/content/itp/structuring-data/sprints/2/_index.md index 4c250b5ad..97c5203e0 100644 --- a/org-cyf/content/itp/structuring-data/sprints/2/_index.md +++ b/org-cyf/content/itp/structuring-data/sprints/2/_index.md @@ -3,6 +3,6 @@ title = 'Sprint 2' description = 'The plan for this sprint' layout = 'sprint' menu_level = ['module'] -weight = 3 +weight = 2 theme = "Comparisons, assertions, and breaking down problems" +++ diff --git a/org-cyf/content/itp/structuring-data/sprints/3/_index.md b/org-cyf/content/itp/structuring-data/sprints/3/_index.md index 309ab50bd..ac74cc086 100644 --- a/org-cyf/content/itp/structuring-data/sprints/3/_index.md +++ b/org-cyf/content/itp/structuring-data/sprints/3/_index.md @@ -3,6 +3,6 @@ title = 'Sprint 3' description = 'The plan for this sprint' layout = 'sprint' menu_level = ['module'] -weight = 4 +weight = 3 theme = "Test cases with Jest" +++ From 63bf28deb078ec9c469f1759b697ebb344cf1469 Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Thu, 30 Apr 2026 11:15:37 +0100 Subject: [PATCH 09/11] move variable content to sprint 2 --- .../en/module/js1/define-computer/index.md | 1 + common-content/en/module/js1/logging/index.md | 3 +++ common-content/en/module/js1/scripts/index.md | 4 +++ .../en/module/js1/terminal/index.md | 3 +++ .../itp/onboarding/sprints/2/prep/index.md | 27 +++++++++++++++++++ .../structuring-data/sprints/1/prep/index.md | 27 ------------------- 6 files changed, 38 insertions(+), 27 deletions(-) diff --git a/common-content/en/module/js1/define-computer/index.md b/common-content/en/module/js1/define-computer/index.md index 8c9e7f370..6d6f70b44 100644 --- a/common-content/en/module/js1/define-computer/index.md +++ b/common-content/en/module/js1/define-computer/index.md @@ -13,4 +13,5 @@ time = 5 Modern computers are **complicated**: it would be too difficult and time-consuming to list all the components that make up a modern computer. So to build our mental model, we will use this simple definition of a computer: +>[!Definition] > A **computer** is a device used to store and perform operations on data. diff --git a/common-content/en/module/js1/logging/index.md b/common-content/en/module/js1/logging/index.md index bc092314b..20f123b8e 100644 --- a/common-content/en/module/js1/logging/index.md +++ b/common-content/en/module/js1/logging/index.md @@ -11,6 +11,9 @@ time = 10 +++ +>[!caution] +> Should combine this with scripts section + ### Printing to the terminal To look at values when our program runs, we can use a function called `console.log`. diff --git a/common-content/en/module/js1/scripts/index.md b/common-content/en/module/js1/scripts/index.md index d421d4fa6..edbfb8cf2 100644 --- a/common-content/en/module/js1/scripts/index.md +++ b/common-content/en/module/js1/scripts/index.md @@ -11,6 +11,10 @@ time = 10 +++ +>[!Caution] +> - Remove references to REPL - we haven't covered that +> - Combine with next section (logging) + So far we’ve seen how expressions can be evaluated using the Node REPL. The Node REPL is useful for evaluating expressions quickly. But usually, our programs have many instructions, and we want to keep and re-run them instead of typing them out each time. So we save our instructions in files. Node can also execute instructions written in a file. diff --git a/common-content/en/module/js1/terminal/index.md b/common-content/en/module/js1/terminal/index.md index 460947828..9f20bc83f 100644 --- a/common-content/en/module/js1/terminal/index.md +++ b/common-content/en/module/js1/terminal/index.md @@ -12,6 +12,9 @@ time = 10 +++ +>[!CAUTION] +>**TODO: Rewrite this to use the VSCode terminal** + Programmers need interfaces to ask computers to do things. A computer terminal is an **interface** where programmers can issue commands to a computer. Because users enter text instructions and receive text output, we say that the terminal is a **text-based interface**. ### Open Your Terminal diff --git a/org-cyf/content/itp/onboarding/sprints/2/prep/index.md b/org-cyf/content/itp/onboarding/sprints/2/prep/index.md index 11f7f2bc8..7cf1cf7c6 100644 --- a/org-cyf/content/itp/onboarding/sprints/2/prep/index.md +++ b/org-cyf/content/itp/onboarding/sprints/2/prep/index.md @@ -13,6 +13,33 @@ src="module/js1/check-unix-os" name="Install Node" src="module/js1/install-node" [[blocks]] +name="Define a computer" +src="module/js1/define-computer" +[[blocks]] +name="Interface" +src="module/js1/interface" +[[blocks]] +name="Terminal" +src="module/js1/terminal" +[[blocks]] +name="Prep dir" +src="blocks/prep-dir" +[[blocks]] +name="Scripts" +src="module/js1/scripts" +[[blocks]] +name="Logging" +src="module/js1/logging" +[[blocks]] +name="Data" +src="module/js1/data" +[[blocks]] +name="Variables" +src="module/js1/variables" +[[blocks]] +name="Declarations and Statements" +src="module/js1/declarations-statements" +[[blocks]] name="Backlog" src="blocks/backlog" +++ diff --git a/org-cyf/content/itp/structuring-data/sprints/1/prep/index.md b/org-cyf/content/itp/structuring-data/sprints/1/prep/index.md index 3eb815d90..fd8fc5212 100644 --- a/org-cyf/content/itp/structuring-data/sprints/1/prep/index.md +++ b/org-cyf/content/itp/structuring-data/sprints/1/prep/index.md @@ -5,39 +5,12 @@ layout = 'prep' menu_level = ['sprint'] weight = 1 [[blocks]] -name="Define a computer" -src="module/js1/define-computer" -[[blocks]] -name="Interface" -src="module/js1/interface" -[[blocks]] -name="Terminal" -src="module/js1/terminal" -[[blocks]] -name="Data" -src="module/js1/data" -[[blocks]] name="REPL" src="module/js1/repl" [[blocks]] -name="Prep dir" -src="blocks/prep-dir" -[[blocks]] -name="Variables" -src="module/js1/variables" -[[blocks]] -name="Declarations and Statements" -src="module/js1/declarations-statements" -[[blocks]] name="Functions" src="module/js1/functions" [[blocks]] -name="Scripts" -src="module/js1/scripts" -[[blocks]] -name="Logging" -src="module/js1/logging" -[[blocks]] name="Errors" src="module/js1/errors" [[blocks]] From 79b83c247753e5abe4937fb292b83706d5ff1b77 Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Thu, 30 Apr 2026 12:07:50 +0100 Subject: [PATCH 10/11] move conditional and error content to sprint 2 --- .../en/module/js1/comparison/index.md | 7 +++++++ .../en/module/js1/conditionality/index.md | 3 +++ common-content/en/module/js1/errors/index.md | 3 +++ .../module/js1/interpreting-errors/index.md | 3 +++ .../js1/interpreting-this-error/index.md | 3 +++ .../js1/reusing-variable-names/index.md | 4 ++++ .../en/module/js1/strategy/index.md | 3 +++ .../itp/onboarding/sprints/2/prep/index.md | 21 +++++++++++++++++++ .../structuring-data/sprints/1/prep/index.md | 3 --- .../structuring-data/sprints/2/prep/index.md | 15 ------------- 10 files changed, 47 insertions(+), 18 deletions(-) diff --git a/common-content/en/module/js1/comparison/index.md b/common-content/en/module/js1/comparison/index.md index 3a1e1cce7..c1edaa6ee 100644 --- a/common-content/en/module/js1/comparison/index.md +++ b/common-content/en/module/js1/comparison/index.md @@ -13,6 +13,13 @@ time = 40 +++ +>[!caution] +> This block is currently in two places and both need to be updated: +> +> **In Onboarding**: Rewrite as a general intro to comparing values. Trainees have not covered functions at this point +> +> **In Structuring & Testing Data**: This would be a useful refresher before we start testing, but needs the context that trainees will already be familiar with teh concept + {{}} ===[[Define current and target]]=== Let's start with a function declaration of `formatAs12HourClock`: diff --git a/common-content/en/module/js1/conditionality/index.md b/common-content/en/module/js1/conditionality/index.md index 5ebebcd2e..65276aefb 100644 --- a/common-content/en/module/js1/conditionality/index.md +++ b/common-content/en/module/js1/conditionality/index.md @@ -15,6 +15,9 @@ time = 30 +++ +>[!caution] +> Examples need to be rewritten without using functions + > Recall: JavaScript programs are built up from sequences of **declarations** and **statements**. In programming, we can use an **`if` statement** to execute some code when a given condition is `true`. In JavaScript, we can write an `if` statement as follows: diff --git a/common-content/en/module/js1/errors/index.md b/common-content/en/module/js1/errors/index.md index ebc772cda..209d3a13f 100644 --- a/common-content/en/module/js1/errors/index.md +++ b/common-content/en/module/js1/errors/index.md @@ -12,6 +12,9 @@ time = 20 +++ +>[!caution] +> Moving this earlier in the course - check everything still makes sense + > 🗣️ Recall: A programming language is a set of rules for writing computer instructions. So we need to understand what happens when we **_break_** those rules. diff --git a/common-content/en/module/js1/interpreting-errors/index.md b/common-content/en/module/js1/interpreting-errors/index.md index 8b64bbf6e..2616327b4 100644 --- a/common-content/en/module/js1/interpreting-errors/index.md +++ b/common-content/en/module/js1/interpreting-errors/index.md @@ -12,6 +12,9 @@ time = 20 +++ +>[!caution] +> Moving this earlier in the course - will need a new example without using a function + ## An error is thrown When we run the file with Node, we get an error in the console: diff --git a/common-content/en/module/js1/interpreting-this-error/index.md b/common-content/en/module/js1/interpreting-this-error/index.md index ec2cb68dc..5c56366d3 100644 --- a/common-content/en/module/js1/interpreting-this-error/index.md +++ b/common-content/en/module/js1/interpreting-this-error/index.md @@ -14,6 +14,9 @@ time = 20 +++ +>[!caution] +> Moving this earlier in the course. Update this to use new example from previous page. + We saw this error - let's try to understand it: ``` diff --git a/common-content/en/module/js1/reusing-variable-names/index.md b/common-content/en/module/js1/reusing-variable-names/index.md index 910cdd821..c614f6ec8 100644 --- a/common-content/en/module/js1/reusing-variable-names/index.md +++ b/common-content/en/module/js1/reusing-variable-names/index.md @@ -11,6 +11,10 @@ time = 30 +++ + +>[!caution] +> This may not make sense with the updated error example but should still be covered alongside variables. Move this earlier with a different example if necessary. + We saw this error: ``` diff --git a/common-content/en/module/js1/strategy/index.md b/common-content/en/module/js1/strategy/index.md index a474edcc5..2934f8caf 100644 --- a/common-content/en/module/js1/strategy/index.md +++ b/common-content/en/module/js1/strategy/index.md @@ -13,6 +13,9 @@ hide_from_overview = true +++ +>[!caution] +> Useful context for the next block but should be rewritten to be less explicitly dependent on the function + Our function works for morning inputs like `"08:00"`. In this case, the function returns the target output of `"08:00 am"` as required. However, at the moment, the output of `formatAs12HourClock("23:00")` is `"23:00 am"`. > 💡 We need to execute some different logic when the time is beyond midday diff --git a/org-cyf/content/itp/onboarding/sprints/2/prep/index.md b/org-cyf/content/itp/onboarding/sprints/2/prep/index.md index 7cf1cf7c6..d6b27eff0 100644 --- a/org-cyf/content/itp/onboarding/sprints/2/prep/index.md +++ b/org-cyf/content/itp/onboarding/sprints/2/prep/index.md @@ -40,6 +40,27 @@ src="module/js1/variables" name="Declarations and Statements" src="module/js1/declarations-statements" [[blocks]] +src="module/js1/comparison" +name="Comparison" +[[blocks]] +src="module/js1/strategy" +name="Strategy" +[[blocks]] +src="module/js1/conditionality" +name="Conditionality" +[[blocks]] +name="Errors" +src="module/js1/errors" +[[blocks]] +src="module/js1/interpreting-errors" +name="Interpreting errors" +[[blocks]] +src="module/js1/interpreting-this-error" +name="Interpreting this error" +[[blocks]] +src="module/js1/reusing-variable-names" +name="Reusing variable names" +[[blocks]] name="Backlog" src="blocks/backlog" +++ diff --git a/org-cyf/content/itp/structuring-data/sprints/1/prep/index.md b/org-cyf/content/itp/structuring-data/sprints/1/prep/index.md index fd8fc5212..b50b33b11 100644 --- a/org-cyf/content/itp/structuring-data/sprints/1/prep/index.md +++ b/org-cyf/content/itp/structuring-data/sprints/1/prep/index.md @@ -11,9 +11,6 @@ src="module/js1/repl" name="Functions" src="module/js1/functions" [[blocks]] -name="Errors" -src="module/js1/errors" -[[blocks]] name="Percentages" src="module/js1/percentages" [[blocks]] diff --git a/org-cyf/content/itp/structuring-data/sprints/2/prep/index.md b/org-cyf/content/itp/structuring-data/sprints/2/prep/index.md index 7be767d1c..cf49c0ad2 100644 --- a/org-cyf/content/itp/structuring-data/sprints/2/prep/index.md +++ b/org-cyf/content/itp/structuring-data/sprints/2/prep/index.md @@ -13,21 +13,6 @@ name="Comparison" src="module/js1/assertions" name="Assertions" [[blocks]] -src="module/js1/interpreting-errors" -name="Interpreting errors" -[[blocks]] -src="module/js1/interpreting-this-error" -name="Interpreting this error" -[[blocks]] -src="module/js1/reusing-variable-names" -name="Reusing variable names" -[[blocks]] -src="module/js1/strategy" -name="Strategy" -[[blocks]] -src="module/js1/conditionality" -name="Conditionality" -[[blocks]] src="module/js1/sub-goal" name="Sub-goal" [[blocks]] From 41cac07beb3967eb2715d108edb55163f4c7fe54 Mon Sep 17 00:00:00 2001 From: Colin Farquhar Date: Thu, 30 Apr 2026 12:40:17 +0100 Subject: [PATCH 11/11] move functions content to sprint 3; add pseudocode skeleton --- .../onboarding/problem-solving/index.md | 16 +++++++ .../en/module/onboarding/pseudocode/index.md | 17 +++++++ .../onboarding/throwing-errors/index.md | 18 +++++++ .../itp/onboarding/sprints/1/prep/index.md | 6 --- .../itp/onboarding/sprints/3/prep/index.md | 47 +++++++++++++++++-- .../structuring-data/sprints/1/prep/index.md | 27 ----------- 6 files changed, 93 insertions(+), 38 deletions(-) create mode 100644 common-content/en/module/onboarding/problem-solving/index.md create mode 100644 common-content/en/module/onboarding/pseudocode/index.md create mode 100644 common-content/en/module/onboarding/throwing-errors/index.md diff --git a/common-content/en/module/onboarding/problem-solving/index.md b/common-content/en/module/onboarding/problem-solving/index.md new file mode 100644 index 000000000..a0df5999f --- /dev/null +++ b/common-content/en/module/onboarding/problem-solving/index.md @@ -0,0 +1,16 @@ ++++ +title = 'Breaking Down a Problem' +time =20 +[objectives] + 1="Breakdown a problem into smaller steps" +[build] + render = 'never' + list = 'local' + publishResources = false + ++++ + +TODO: + +- Set up the [workshop](https://curriculum.codeyourfuture.io/itp/structuring-data/sprints/2/day-plan/#problem-solving-workshop) +- Relate to previous page on pseudocode if possible \ No newline at end of file diff --git a/common-content/en/module/onboarding/pseudocode/index.md b/common-content/en/module/onboarding/pseudocode/index.md new file mode 100644 index 000000000..6ca291a32 --- /dev/null +++ b/common-content/en/module/onboarding/pseudocode/index.md @@ -0,0 +1,17 @@ ++++ +title = 'Pseudocode' +time = 30 +[objectives] + 1="Define 'pseudocode'" + 2="Plan code using pseudocode" +[build] + render = 'never' + list = 'local' + publishResources = false + ++++ + +TODO: + +- Define pseudocode +- Construct an example \ No newline at end of file diff --git a/common-content/en/module/onboarding/throwing-errors/index.md b/common-content/en/module/onboarding/throwing-errors/index.md new file mode 100644 index 000000000..a434ed5c2 --- /dev/null +++ b/common-content/en/module/onboarding/throwing-errors/index.md @@ -0,0 +1,18 @@ ++++ +title = 'Throwing Errors' +time =45 +[objectives] + 1="Throw an error if something isn't right when code runs" +[build] + render = 'never' + list = 'local' + publishResources = false + ++++ + +TODO: + +- Discuss good vs bad ways for something to fail +- Construct a function to validate an input, eg. `checkOverMinCharacterLength(stringToCheck)` +- Have it throw an error if condition not satisfied +- Example of using `catch` to handle the error? \ No newline at end of file diff --git a/org-cyf/content/itp/onboarding/sprints/1/prep/index.md b/org-cyf/content/itp/onboarding/sprints/1/prep/index.md index 031f34546..eecef6f17 100644 --- a/org-cyf/content/itp/onboarding/sprints/1/prep/index.md +++ b/org-cyf/content/itp/onboarding/sprints/1/prep/index.md @@ -28,12 +28,6 @@ src="module/induction/branching" name="Merging" src="module/onboarding/git/merging" [[blocks]] -name="Undoing a Commit" -src="module/onboarding/git/undoing-a-commit" -[[blocks]] -name="Ignoring Files" -src="module/onboarding/git/ignoring-files" -[[blocks]] name="Fork your Planner" src="https://www.youtube.com/watch?v=cnx0RuAu2tc" time=5 diff --git a/org-cyf/content/itp/onboarding/sprints/3/prep/index.md b/org-cyf/content/itp/onboarding/sprints/3/prep/index.md index b3ce79c1e..020451c2a 100644 --- a/org-cyf/content/itp/onboarding/sprints/3/prep/index.md +++ b/org-cyf/content/itp/onboarding/sprints/3/prep/index.md @@ -8,14 +8,51 @@ name="Enroll as a Trainee" src="https://github.com/CodeYourFuture/Module-Onboarding/issues/72" time=30 [[blocks]] -name="Record a Goose" -title="Accessibility audit" -src="https://github.com/CodeYourFuture/Project-Record-A-Goose/" -time=180 -[[blocks]] name="Learn about Interview Introductions" src="module/induction/interview-introductions" [[blocks]] +name="Functions" +src="module/js1/functions" +[[blocks]] +name="Percentages" +src="module/js1/percentages" +[[blocks]] +name="Defining functions" +src="module/js1/declaring-functions" +[[blocks]] +name="Playing computer" +src="module/js1/playing-computer" +[[blocks]] +name="Scope" +src="module/js1/scope" +[[blocks]] +name="Return" +src="module/js1/return" +[[blocks]] +name="Reuse" +src="module/js1/reuse" +[[blocks]] +name="Parameters" +src="module/js1/parameters" +[[blocks]] +name="Solving problems with functions 📼" +src="module/js1/functions-workshop" +[[blocks]] +name="Throwing Errors" +src="module/onboarding/throwing-errors" +[[blocks]] +name="Pseudocode" +src="module/onboarding/pseudocode" +[[blocks]] +name="Breaking Down Problems" +src="module/onboarding/problem-solving" +[[blocks]] +name="Undoing a Commit" +src="module/onboarding/git/undoing-a-commit" +[[blocks]] +name="Ignoring Files" +src="module/onboarding/git/ignoring-files" +[[blocks]] name="Backlog" src="blocks/backlog" +++ diff --git a/org-cyf/content/itp/structuring-data/sprints/1/prep/index.md b/org-cyf/content/itp/structuring-data/sprints/1/prep/index.md index b50b33b11..512926461 100644 --- a/org-cyf/content/itp/structuring-data/sprints/1/prep/index.md +++ b/org-cyf/content/itp/structuring-data/sprints/1/prep/index.md @@ -7,31 +7,4 @@ weight = 1 [[blocks]] name="REPL" src="module/js1/repl" -[[blocks]] -name="Functions" -src="module/js1/functions" -[[blocks]] -name="Percentages" -src="module/js1/percentages" -[[blocks]] -name="Defining functions" -src="module/js1/declaring-functions" -[[blocks]] -name="Playing computer" -src="module/js1/playing-computer" -[[blocks]] -name="Scope" -src="module/js1/scope" -[[blocks]] -name="Return" -src="module/js1/return" -[[blocks]] -name="Reuse" -src="module/js1/reuse" -[[blocks]] -name="Parameters" -src="module/js1/parameters" -[[blocks]] -name="Solving problems with functions 📼" -src="module/js1/functions-workshop" +++