From 355dcc5a8212f9705ec3650e45b2cbd0596485a1 Mon Sep 17 00:00:00 2001 From: Sebastian Steger Date: Tue, 19 Aug 2025 16:05:10 +0200 Subject: [PATCH] added readme.md --- README.md | 20 ++++++++++++++++++++ vscode-devcontainer-popup.png | Bin 0 -> 9771 bytes 2 files changed, 20 insertions(+) create mode 100644 README.md create mode 100644 vscode-devcontainer-popup.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..9c4b7f5 --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ +# PR3 Code Repository + +This repository contains all code of the PR3 lecture. This includes assignments. Solutions and code produced during the lecture is added incrementally during the semester. + +## Usage + +The code for each programming language is located in a dedicated subfolder. The individual development environment is defined by a [Development Container](https://containers.dev/) which ensures a uniform easy to set up coding experience on all platforms (Windows/MacOS/Linux). The following tools shall be available on the developer's machine: + +- A [container runtime](https://en.wikipedia.org/wiki/OS-level_virtualization) such as [docker](https://www.docker.com/) or [podman](https://podman.io/). Windows users should install [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/) beforehand. + +- [Visual Studio Code](https://code.visualstudio.com/) along with the [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension. + +Follow these steps to get started: + +1. Clone this repository into a local folder of your choice. Use a WSL folder on Windows. +2. Navigate to the subfolder of the desired programming language (e.g. `cd pr3-xyz/go`). +3. Open Visual Studio Code in that folder by executing `code .` +4. Click on *Reopen in Container* in the popup that appears on the bottom right corner: ![](vscode-devcontainer-popup.png) + +This will open the folder in the dedicated *Development Container* that contains all required tools. Furthermore, programming language specific Visual Studio Code extensions are automatically installed inside the *Development Container* without affecting the host system. diff --git a/vscode-devcontainer-popup.png b/vscode-devcontainer-popup.png new file mode 100644 index 0000000000000000000000000000000000000000..d230c7362aecfa536afa4af900546dd2dd3632ad GIT binary patch literal 9771 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 literal 0 HcmV?d00001