From f9332e4f55475ef4bbf2a9fee16efc03c4cf158d Mon Sep 17 00:00:00 2001 From: baloola Date: Thu, 22 Aug 2024 15:43:59 +0200 Subject: [PATCH] translating parts of the first lesson --- lessons/advanced-en/asteroids/index.md | 306 ------------- lessons/advanced-en/asteroids/info.yml | 8 - .../asteroids/static/screenshot.png | Bin 53112 -> 0 bytes lessons/beginners-en/install_vienna/index.md | 17 +- lessons/beginners-en/install_vienna/info.yml | 11 +- .../pyladies-en-vienna-2024-spring/info.yml | 429 +++++++++--------- 6 files changed, 224 insertions(+), 547 deletions(-) delete mode 100644 lessons/advanced-en/asteroids/index.md delete mode 100644 lessons/advanced-en/asteroids/info.yml delete mode 100644 lessons/advanced-en/asteroids/static/screenshot.png diff --git a/lessons/advanced-en/asteroids/index.md b/lessons/advanced-en/asteroids/index.md deleted file mode 100644 index 7a8645c5cb..0000000000 --- a/lessons/advanced-en/asteroids/index.md +++ /dev/null @@ -1,306 +0,0 @@ -# Asteroids game - -We will try to make a clone of the game [Asteroids](https://en.wikipedia.org/wiki/Asteroids_%28video_game%29) -that has been released in 1979. - -Our version will look like this: - -{{ figure( - img=static('screenshot.png'), - alt="Asteroids-like game screenshot" -) }} - -The project is quite complex. It uses a few things that were -not covered by [the beginner's course](https://naucse.python.cz/2018/pyladies-en-prague/). -I know that you will be able to look them up. - -> [note] -> If you go through the project alone, it is possible that you -> get stuck at some problem. -> If that happens to you, let us know. -> We will be happy to help you! - -## Spaceship - -{# XXX: (asteroids1.py) #} - -The first step is to program a spaceship that you can control by keyboard. - -* An instance of the class `Spaceship` represents the spaceship. -* Every spaceship has two attributes, `x` and `y` (position), - `x_speed` and `y_speed`, `rotation`, and - `sprite`. (A sprite is a 2D object in Pyglet with position, speed, rotation, and image.) -* The spaceship has a method called `tick` that handles the spaceship mechanics – movement, - rotation, and control. -* All objects that are in the game are stored in a global list, `objects`. - It should contain only the spaceship for now. -* Store all pressed keys in a *set* (keyword `set`). - It is a datatype similar to list but without order. It can contain each element - only once. (Sets are like dictionaries without values.) - You can use the [sets cheatsheet](https://github.com/pyvec/cheatsheets/blob/master/sets/sets-en.pdf), - and the official Python documentation contains - [a tutorial](https://docs.python.org/3/tutorial/datastructures.html#sets) - and [a reference](https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset). - The spaceship uses the set as part of the processing in its `tick` method. -* You can use [the image set](http://opengameart.org/content/space-shooter-redux), - created by [Kenney Vleugels](http://kenney.nl). He made them public and free. Or you can draw your own images if you want! -* In the game, we will use a large number of `Sprite`s. Drawing them one by one would take quite a long time. - So add all the `Sprite`s to the (pyglet.graphics.Batch)[https://pythonhosted.org/pyglet/api/pyglet.graphics.Batch-class.html] collection, which Pyglet can efficiently draw at once. Add arguments to "batch" by using `Sprite()` to create a `sprite.delete()`. For example: - ```python - batch = pyglet.graphics.Batch() - sprite1 = pyglet.sprite.Sprite(image, batch=batch) - sprite2 = pyglet.sprite.Sprite(image, batch=batch) - - # and then you can draw all of them at once: - batch.draw() - ``` - Create the `batch` collection, as well as the `objects`, as global variables. -* To move and rotate the objects relative to their center, it is good to set the - "anchor" of the image to its center (otherwise, the anchor is in the lower left corner): - ```python - image = pyglet.image.load(...) - image.anchor_x = image.width // 2 - image.anchor_y = image.height // 2 - self.sprite = pyglet.sprite.Sprite(image, batch=batch) - ``` -* You can use the arrow keys to move the rocket left, right, and straight. - The arrows to the sides spin the rocket, the arrow forward accelerates the movement - in the direction the rocket is turned. - * The basic motion of the rocket is simple: the x-coordinate is added to the x-velocity - times the elapsed time, and the same with the y-coordinate, and for the rotation angle: - ```python - self.x = self.x + dt * self.x_speed - self.y = self.y + dt * self.y_speed - self.rotation = self.rotation + dt * rotation_speed - ``` - The speed of rotation depends on the arrows (left or right). In one case, it is - negative, in the other positive. Choose the appropriate value by experimenting - - starting at 4 radians per second. All similar "magical values" should be defined - as constants - i.e. variables that you set at the beginning and never change. It is - a convention to name constants in capital letters and put them at the beginning of the file, - right after the import: - ```python - ROTATION_SPEED = 4 # radians per second - ``` - * Acceleration is a little more complicated: the x-axis speed is added to the cosine - angle of rotation times elapsed time. The sinus is used with the y-axis. - ```python - self.x_speed += dt * ACCELERATION * math.cos(self.rotation) - self.y_speed += dt * ACCELERATION * math.sin(self.rotation) - ``` - Notice the ACCELERATION constant example. Choose it again at your discretion. - * If you have calculated the `self.x`, `self.y`, and `self.rotation` values, do not forget - to project them into `self.sprite`, otherwise nothing interesting will happen. - - Beware that the `math.sin` and `math.cos` functions use radians, whereas the `pyglet` - `Sprite.rotation` uses degrees. (Additionally, they start at different origins, and they rotate - in opposite directions.) For a sprite, therefore, the angle needs to be converted: - ```python - self.sprite.rotation = 90 - math.degrees(self.rotation) - self.sprite.x = self.x - self.sprite.y = self.y - ``` - * When the rocket leaves the window, put it back into the game on the other side of - the screen. (Check that it works on all four sides.) -* **Bonus 1:** Try to add a few rockets, each with a slightly different angle. - Each individual `Spaceship` object maintains its own state, so it should not be difficult - to create more (and to control all at once). -* **Bonus 2 :** You may have noticed a "jump" when a rocket escapes from the window and - returns to the other side. This can be avoided by rendering the whole screen once more - to the left, right, up and down. - - Pyglet has a special low-level feature that can tell "now draw everything moved by - the X pixels to the left". Full explanation would be long, so just copy the code: - ```python - from pyglet import gl - - def draw(): - window.clear() - - for x_offset in (-window.width, 0, window.width): - for y_offset in (-window.height, 0, window.height): - # Remember the current state - gl.glPushMatrix () - # Move everything drawn from now on by (x_offset, y_offset, 0) - gl.glTranslatef(x_offset, y_offset, 0) - - # Draw - batch.draw() - - # Restore remembered state (this cancels the glTranslatef) - gl.glPopMatrix() - ``` - For an overview, the documentation for the functions used here is: - [glPushMatrix](https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glPushMatrix.xml), - [glPopMatrix](https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glPushMatrix.xml), - [glTranslatef](https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glTranslate.xml). - -Have you succeeded? Can you fly through the universe? - -## Asteroids -{# XXX: (asteroids2.py) #} - -Add a second type of space object: `Asteroid`. - -* Asteroids and spaceships have many things in common: every space object will have its -position, speed, rotation, and rules how it moves. So create a `SpaceObject` class, in which will be -everything they have in common, and a `Spaceship` class, that inherits from `SpaceObject`, in which the spaceship-specific -code remains (i.e., keyboard control, ship image, start from the middle of the screen). -* The part of the code for motion will be common to all space objects (e.g. code for the -acceleration); another part will be specific to the rocket only (keypad control). Take advantage -of the `super()` function (more in [inheritance lesson](../../beginners-en/inheritance/)). -* Write the `Asteroid` class, which is also inherited from `SpaceObject`, but has its own -behaviour: it starts either at the left or bottom of the screen with a random speed, and each -asteroid has a randomly assigned image. (In the Asteroids, the left and right edges -are essentially the same, and the top and bottom too.) -* And then add some asteroids of different sizes to the game. - -Have you succeeded? Do you have two types of objects? - - -## Collisions - -Our asteroids are still pretty harmless. Let's change that. - -* In this section, your task will be to find out when the ship is hit by an asteroid. For -simplicity, we replace each object with a circle and calculate if the circles collide. -Each object will need to have a radius - the `radius` attribute. -* In order to see what the game "thinks" where and how big our objects are, -draw a circle around each object. The best thing to do is to use -[pyglet.gl](https://pyglet.readthedocs.io/en/latest/programming_guide/gl.html) -and a little math; for now, just copy the `draw_circle` function and call it for each object. -After you got this part working, you won't need to highlight the radius any longer, -and you can remove the draw_circle function again. - ```python - def draw_circle(x, y, radius): - iterations = 20 - s = math.sin(2 * math.pi / iterations) - c = math.cos(2 * math.pi / iterations) - - dx, dy = radius, 0 - - gl.glBegin(gl.GL_LINE_STRIP) - for i in range(iterations + 1): - gl.glVertex2f(x + dx, y + dy) - dx, dy = (dx * c - dy * s), (dy * c + dx * s) - gl.glEnd() - ``` -* When an asteroid crashes into the ship, the ship will explode and disappear. We'll leave the -explosion for later, but it's important to remove the object from the game. Put it in the -`SpaceObject.delete` method, because any object can be removed from the game. In this -method, you must remove the object from the list of `objects` and then delete its `Sprite` -so that it does not render within the `batch`. -* And how do you detect that collision? Within the `Spaceship.tick`, go through each object to -see if the distance between the ship and the other object is less than the sum of their radiuses -(they hit each other), and if so, call the object's `hit_by_spaceship` method. - - Finding a distance in a game where the [objects that fly out of the screen return on the other side](https://en.wikipedia.org/wiki/Wraparound_%28video_games%29) - is not entirely straightforward, so copy the code for now: - ```python - def distance(a, b, wrap_size): - """Distance in one direction (x or y)""" - result = abs(a - b) - if result > wrap_size / 2: - result = wrap_size - result - return result - - def overlaps(a, b): - """Returns true if and only if two objects overlap space""" - distance_squared = (distance(a.x, b.x, window.width) ** 2 + - distance(a.s, b.y, window.height) ** 2) - max_distance_squared = (a.radius +b.radius) ** 2 - return distance_squared < max_distance_squared - ``` - - Most other objects in the completed game (such as fire from the rocket, missile) will not do anything - when the collision happens, so the `SpaceObject.hit_by_spaceship` should do nothing - (the method only needs to exist). Only an asteroid will break the rocket, so redefine `Asteroid.hit_by_spaceship` - to call `delete` ship. - - Because there could be more rockets in our game in general, the asteroid needs to know which rocket it broke. - The `hit_by_spaceship` method should, therefore, have an argument. - - -Have you succeeded? Can you lose now? - -## Attack -Now try to break the asteroids. -  -* The missile can fire a laser in 0.3 seconds. For each rocket save a number (as an attribute) -which is set, after each shot, to 0.3 and then let this number drop by 1 per second in the -`tick` method. If the number is negative user can fire again. -* When a player holds the space bar and has the possibility to fire, then the ship should fire. -Reflect this in the game by adding an object of a new class, `Laser`. The laser starts at the -rocket's coordinates, it has the rocket's rotation and rocket speed plus something extra in the -direction of rotation. -* Each `Laser` object needs to "remember" how long it is in the game. In the beginning, -set its lifetime to a number so the laser can fly little bit further than one screen. When its lifetime -is over, the `Laser` disappears. -* In its `tick` method, the laser goes through all objects, and when its position overlaps with some -of these objects, it calls their `hit_by_laser` method. For most objects, this method does nothing, -only the asteroids will break. -* When the laser touches an asteroid, the asteroid divides into two smaller ones (or, if it's -too small, it disappears completely). - - You can set the speeds of new asteroids how you want - it is important that every smaller - asteroid flies elsewhere. Usually, new asteroids are faster than the original ones. - -* And that's all! You have a functional game! - -Have you succeeded? Can you also win? - - -## Completion and extension -If you want to continue in the game, here are some ideas. You can do it in any order - or -you can invent your own extension! - -* Is the game too difficult? - - You can add lives: there are three at the beginning, and as long as there's one left, - the rocket will appear again in the middle of the screen with zero speed after an - asteroid hit it. - The game should also ignore the keys that were held until the player presses them again - (preferably use `pressed_keys.clear ()`). - - You can show the number of ships (lives) that are left with icons at the bottom of the screen. - - **Bonus**: A few seconds after the "restart", the rocket can be indestructible to have - time to fly when there happens to be an asteroid in the middle of the screen. - -* Is the game too easy? - - Add Levels: When the player shoots all the asteroids, they move to the next level where there - are more the asteroids than in the previous level. - - You can display the level number using [pyglet.text.Label](https://pyglet.readthedocs.io/en/latest/programming_guide/text.html). - -* Is the background too black? - - In the set of pictures in the `Backgrounds` directory choose one background and paint - the whole universe with it. - -* Is the game too austere? - - Add fire and explosions! Like the `Laser`, only they don't destroy anything, they just - change their colour depending on how long they are in the game. - - You can use the ["Smoke particle assets"](http://opengameart.org/content/smoke-particle-assets) - images drawn by [Kenney Vleugels](https://kenney.nl/) again. I recommend "White Puff". - You can shrink them (e.g. `sprite.scale = 1/10`), change their colour (e.g. `sprite.color = 255, 100, 0`), - or make them partially transparent (e.g. `sprite.opacity = 100`). - - I recommend to make a new `batch` for the effects and draw them before the main batch, so the - effects can't overlap the game objects. - -* Don't you know whether you lost or won? - - In the end, you can draw a big GAME OVER or WINNER sign. - -* Are you bored? - - In the original game, UFOs sometimes appear, and sometimes they shoot at the rocket, - so if the rocket stands still in one spot and it is just spinning around, the UFO will - destroy it. You can try to complete the `Ufo` class and you can create `ShipLaser` and - `UfoLaser` that inherit from the `Laser` class. - -Have you succeeded? Does it look and behave professionally? diff --git a/lessons/advanced-en/asteroids/info.yml b/lessons/advanced-en/asteroids/info.yml deleted file mode 100644 index 57f4de052d..0000000000 --- a/lessons/advanced-en/asteroids/info.yml +++ /dev/null @@ -1,8 +0,0 @@ -title: Asteroids -style: md -attribution: -- Translated by Vsevolod Khanin, Marketa Muzikova and Petr Plavjanik -- | - Originally written by Petr Viktorin, 2015-2017 for [PyLadies CZ]. - [PyLadies CZ]: https://naucse.python.cz/course/pyladies/projects/asteroids/ -license: cc-by-sa-40 diff --git a/lessons/advanced-en/asteroids/static/screenshot.png b/lessons/advanced-en/asteroids/static/screenshot.png deleted file mode 100644 index 5cd8d12f78f1446843e58a4870344c18553153cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53112 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%0AI~l!L3%W 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 Y**g`xSE?W1OueV>dBbz1XC3bTF9PSSV*mgE diff --git a/lessons/beginners-en/install_vienna/index.md b/lessons/beginners-en/install_vienna/index.md index 7bbb1a9ba2..ef3ef6e0e4 100644 --- a/lessons/beginners-en/install_vienna/index.md +++ b/lessons/beginners-en/install_vienna/index.md @@ -1,20 +1,19 @@ -# Python installation +# Python (installation) تثبيت -We will do two things in this section: +سنقوم بعمل شيئين في هذا القسم: -* We will install Python -* We will give Python a test run. +سنقوم بتثبيت بايثون * +سنقوم بتجربة بايثون * -You might ask why we need all this. +ربما تسأل لماذا نحتاج كل هذا؟ -Python is programming language (a way how to tell computers what to do), -and also a program we need so we can talk to our computer in Python language. +بايثون هي لغة برمجة (طريقة لإخبار الحاسوب بما يجب فعله)، وهي أيضًا برنامج نحتاجه للتحدث مع الحاسوب بلغة بايثون. -Choose a page depending on your operating system: +اختر صفحة حسب نظام التشغيل الخاص بك: * [Linux]({{ subpage_url('linux') }}) * [Windows]({{ subpage_url('windows') }}) * [macOS]({{ subpage_url('macos') }}) +إذا كان لديك نظام آخر أو إذا واجهتك أي مشكلة، أرسل لنا إيميل. -If you have another system or if you have any problem send us an e-mail. diff --git a/lessons/beginners-en/install_vienna/info.yml b/lessons/beginners-en/install_vienna/info.yml index d4f3a1ef3f..e94587d062 100644 --- a/lessons/beginners-en/install_vienna/info.yml +++ b/lessons/beginners-en/install_vienna/info.yml @@ -1,15 +1,16 @@ -title: Python installation +title: Python (installation) تثبيت style: md attribution: -- Edited by Tyna Dolezalova +- Edited by Mussab Abdalla +- Edited by Tyna Dolezalova for [PyLadies Vienna]. - | Originally written by Petr Viktorin, 2014-2017 for [PyLadies CZ]. [PyLadies CZ]: https://naucse.python.cz/course/pyladies/beginners/install license: cc-by-sa-40 subpages: linux: - title: Python installation - Linux + title: Python (installation) تثبيت - (Linux) لينيكس windows: - title: Python installation - Windows + title: Python (installation) تثبيت - (Windows) ويندوز macos: - title: Python installation - macOS \ No newline at end of file + title: Python (installation) تثبيت - (macOS) ماكنتوش \ No newline at end of file diff --git a/runs/2024/pyladies-en-vienna-2024-spring/info.yml b/runs/2024/pyladies-en-vienna-2024-spring/info.yml index 7febd89f8e..f1eb0f43df 100644 --- a/runs/2024/pyladies-en-vienna-2024-spring/info.yml +++ b/runs/2024/pyladies-en-vienna-2024-spring/info.yml @@ -20,35 +20,26 @@ vars: pyladies: true coach-present: true mentors: - - name: Týna Doležalová - img: img/team/dolezalovat.jpg - role: "Geospatial Data Scientist, Overly enthusiastic about everything" + - name: علي العبيد + img: img/team/mussab.jpg + role: "منظم, مدرب" links: - - mail: mailto:dolezalova.tynka@gmail.com - - linkedin: https://www.linkedin.com/in/kristyna-dolezalova/ - - name: Lubomír Doležal - img: img/team/dolezall.jpg - role: "Satellite Data Processing, Visualisation, Web maps, Databases" + - mail: mailto:ali.a.obeid@outlook.com + - linkedin: https://www.linkedin.com/in/ali-obeid-393b801a9/ + - name: ابوبكر عثمان + img: img/team/abubakr.jpeg + role: "منظم, مدرب" links: - - mail: mailto:lubomir.bucek.ml@gmail.com - - linkedin: https://www.linkedin.com/in/lubomir-dolezal/ - - name: Fabian Schindler - img: img/team/schindlerf.jpg - role: "Python/GIS developer, game enthusiast" + - mail: mailto:abobakrosman01@outlook.com + + - name: مصعب ابوالحسن + img: img/team/mussab.jpg + role: "منظم, مدرب" links: - - mail: mailto:fabian.schindler.strauss@gmail.com - - linkedin: https://www.linkedin.com/in/fabian-schindler-311030b9/ - - twitter: https://twitter.com/__fschindler__ - - name: Martina Červená - img: img/team/cervenam.jpg - role: "Backend developer, data processing, fitness enthusiast" - links: [] - - name: Bernhard Mallinger - img: img/team/mallingerb.jpg - role: "Aspiring to keep accidental complexity low. Likes to stare at the screen until code distills to elegant solutions. Open Source for a free and open society. Coffee, pizza, music." - links: [] + - mail: mailto:baloola-mu@hotmail.com + plan: -- title: Installations +- title: Installations تثبيت البرامج slug: install_home serial: 0 materials: @@ -61,207 +52,207 @@ plan: url: https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf type: cheatsheet -- title: Introduction, installation check - slug: install - date: 2024-03-19 - materials: - - title: Keyboard layout cheat sheet - url: https://drive.google.com/file/d/1Bvnb52oirQDiZ7WI5t4Q8UeCd10-_gpT - type: cheatsheet - - lesson: beginners-en/introduction2 - - lesson: beginners-en/cmdline - - lesson: beginners-en/first-steps - - lesson: beginners-en/lesson-1-homework - type: homework - - title: Google colab tutorial - url: https://drive.google.com/file/d/1KPlvbwGpIe8HQVkancKk6wuTwhV5VkRc - type: cheatsheet +# - title: Introduction, installation check +# slug: install +# date: 2024-03-19 +# materials: +# - title: Keyboard layout cheat sheet +# url: https://drive.google.com/file/d/1Bvnb52oirQDiZ7WI5t4Q8UeCd10-_gpT +# type: cheatsheet +# - lesson: beginners-en/introduction2 +# - lesson: beginners-en/cmdline +# - lesson: beginners-en/first-steps +# - lesson: beginners-en/lesson-1-homework +# type: homework +# - title: Google colab tutorial +# url: https://drive.google.com/file/d/1KPlvbwGpIe8HQVkancKk6wuTwhV5VkRc +# type: cheatsheet -- title: First Program, Print - slug: hello - date: 2024-03-26 - materials: - - lesson: beginners-en/hello-world - - lesson: beginners-en/print - - lesson: beginners-en/variables - - title: Basics cheatsheet - url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc.pdf - type: cheatsheet - - title: VS Code Tips and tricks - url: https://www.youtube.com/watch?v=fj2tuTIcUys - type: cheatsheet - - lesson: beginners-en/lesson-2-homework - type: homework +# - title: First Program, Print +# slug: hello +# date: 2024-03-26 +# materials: +# - lesson: beginners-en/hello-world +# - lesson: beginners-en/print +# - lesson: beginners-en/variables +# - title: Basics cheatsheet +# url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc.pdf +# type: cheatsheet +# - title: VS Code Tips and tricks +# url: https://www.youtube.com/watch?v=fj2tuTIcUys +# type: cheatsheet +# - lesson: beginners-en/lesson-2-homework +# type: homework -- title: Conditions, modules and functions - slug: loops - date: 2024-04-02 - materials: - - lesson: beginners-en/comparisons - - lesson: beginners-en/and-or - - lesson: beginners-en/functions - - title: Basics cheatsheet - url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc.pdf - type: cheatsheet - - title: Homework - url: https://docs.google.com/document/d/1HsKbAt6DAH8uQYJUR8UB8sOFvzgUUr_WeZwB6cb9lcA - type: homework +# - title: Conditions, modules and functions +# slug: loops +# date: 2024-04-02 +# materials: +# - lesson: beginners-en/comparisons +# - lesson: beginners-en/and-or +# - lesson: beginners-en/functions +# - title: Basics cheatsheet +# url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc.pdf +# type: cheatsheet +# - title: Homework +# url: https://docs.google.com/document/d/1HsKbAt6DAH8uQYJUR8UB8sOFvzgUUr_WeZwB6cb9lcA +# type: homework -- title: Loops, for and while - date: 2024-04-09 - slug: strings - materials: - - lesson: beginners-en/colabturtle - - lesson: beginners-en/while - - title: If/While cheatsheet - url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_if_while.pdf - type: cheatsheet - - title: Homework - url: https://docs.google.com/document/d/1FO4J7l2oKN_vdrXVgvbrKOpJEx1Vu3f6gLnZe-tKIM4/edit - type: homework +# - title: Loops, for and while +# date: 2024-04-09 +# slug: strings +# materials: +# - lesson: beginners-en/colabturtle +# - lesson: beginners-en/while +# - title: If/While cheatsheet +# url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_if_while.pdf +# type: cheatsheet +# - title: Homework +# url: https://docs.google.com/document/d/1FO4J7l2oKN_vdrXVgvbrKOpJEx1Vu3f6gLnZe-tKIM4/edit +# type: homework -- title: Strings, Custom functions - date: 2024-04-16 - slug: custom_func - materials: - - lesson: beginners-en/str - - lesson: beginners-en/def - - title: Functions cheatsheet - url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_functions.pdf - type: cheatsheet - - title: Homework - url: https://docs.google.com/document/d/1SPL6yMD3XOm9ZFDMDX_U4zSP-ltWd7QKvie5iCS8mno/edit - type: homework - - type: cheatsheet - title: Depth exploration colored example for function recursion - url: https://docs.google.com/document/d/1QWr8yzBfYtNaKLgRKoSL5tV5MGp46BOcD9Q3Q9ouOV8/edit - - title: Practice exercises (offline session 17.04.2024) - url: https://docs.google.com/document/d/17kX5w9eEn-Ed1gcONAaU5kSKANBI24bjL_7-3XZi0Dg/edit - type: cheatsheet -- title: GIT - slug: git - date: 2024-04-23 - materials: - - lesson: git-en/install - - lesson: git-en/basics - - lesson: git-en/github - - lesson: git-en/branching - - title: Basic Git Cheatsheet - url: https://raw.githubusercontent.com/lubojr/naucse.python.cz/117a205e1c98f007e0a97877e87493fef411a768/lessons/git-en/basics/static/git_commands_cheat_sheet.png - type: cheatsheet - - title: Extensive Git cheatsheet - url: https://about.gitlab.com/images/press/git-cheat-sheet.pdf - type: cheatsheet - - title: Have you just made a git mess? - url: https://raw.githubusercontent.com/lubojr/naucse.python.cz/6307e5867765be0dd1a1e551901e4b4aca150d6c/lessons/git-en/basics/static/git-pretty.png - type: cheatsheet - - lesson: beginners-en/tictactoe - type: homework +# - title: Strings, Custom functions +# date: 2024-04-16 +# slug: custom_func +# materials: +# - lesson: beginners-en/str +# - lesson: beginners-en/def +# - title: Functions cheatsheet +# url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_functions.pdf +# type: cheatsheet +# - title: Homework +# url: https://docs.google.com/document/d/1SPL6yMD3XOm9ZFDMDX_U4zSP-ltWd7QKvie5iCS8mno/edit +# type: homework +# - type: cheatsheet +# title: Depth exploration colored example for function recursion +# url: https://docs.google.com/document/d/1QWr8yzBfYtNaKLgRKoSL5tV5MGp46BOcD9Q3Q9ouOV8/edit +# - title: Practice exercises (offline session 17.04.2024) +# url: https://docs.google.com/document/d/17kX5w9eEn-Ed1gcONAaU5kSKANBI24bjL_7-3XZi0Dg/edit +# type: cheatsheet +# - title: GIT +# slug: git +# date: 2024-04-23 +# materials: +# - lesson: git-en/install +# - lesson: git-en/basics +# - lesson: git-en/github +# - lesson: git-en/branching +# - title: Basic Git Cheatsheet +# url: https://raw.githubusercontent.com/lubojr/naucse.python.cz/117a205e1c98f007e0a97877e87493fef411a768/lessons/git-en/basics/static/git_commands_cheat_sheet.png +# type: cheatsheet +# - title: Extensive Git cheatsheet +# url: https://about.gitlab.com/images/press/git-cheat-sheet.pdf +# type: cheatsheet +# - title: Have you just made a git mess? +# url: https://raw.githubusercontent.com/lubojr/naucse.python.cz/6307e5867765be0dd1a1e551901e4b4aca150d6c/lessons/git-en/basics/static/git-pretty.png +# type: cheatsheet +# - lesson: beginners-en/tictactoe +# type: homework -- title: Lists, Tuples - slug: list - date: 2024-04-30 - materials: - - lesson: beginners-en/list - - lesson: beginners-en/tuple - - title: Lists cheatsheet - url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_lists.pdf - type: cheatsheet - - title: Homework (PDF) - url: https://drive.google.com/file/d/1fF0nl90GcCoaog0vgz4nmKGyspfGsQvS/view - type: homework +# - title: Lists, Tuples +# slug: list +# date: 2024-04-30 +# materials: +# - lesson: beginners-en/list +# - lesson: beginners-en/tuple +# - title: Lists cheatsheet +# url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_lists.pdf +# type: cheatsheet +# - title: Homework (PDF) +# url: https://drive.google.com/file/d/1fF0nl90GcCoaog0vgz4nmKGyspfGsQvS/view +# type: homework -- title: Dictionaries - slug: dict - date: 2024-05-07 - materials: - - lesson: beginners-en/dict - - lesson: beginners-en/tuple - - title: Homework (PDF) - url: https://drive.google.com/file/d/1sJhOmCTC1wspG6um4KRNJvtpUib3L2x7/view - type: homework - - title: Dictionaries cheatsheet - url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_dictionaries.pdf - type: cheatsheet +# - title: Dictionaries +# slug: dict +# date: 2024-05-07 +# materials: +# - lesson: beginners-en/dict +# - lesson: beginners-en/tuple +# - title: Homework (PDF) +# url: https://drive.google.com/file/d/1sJhOmCTC1wspG6um4KRNJvtpUib3L2x7/view +# type: homework +# - title: Dictionaries cheatsheet +# url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_dictionaries.pdf +# type: cheatsheet -- title: Recap session - slug: recap1 - date: 2024-05-14 - materials: - - title: Recap session materials - url: https://docs.google.com/document/d/1lQuHF1d3mbVzc1awfWmNVa9nYJdfrrvMNvpcX9pz6co - type: homework - # - title: Small quiz - # url: https://docs.google.com/presentation/d/1qvnz7uJuzZipXEqsqq8bufpvtGNLP2sdW6p1MjodRJE - # type: homework +# - title: Recap session +# slug: recap1 +# date: 2024-05-14 +# materials: +# - title: Recap session materials +# url: https://docs.google.com/document/d/1lQuHF1d3mbVzc1awfWmNVa9nYJdfrrvMNvpcX9pz6co +# type: homework +# # - title: Small quiz +# # url: https://docs.google.com/presentation/d/1qvnz7uJuzZipXEqsqq8bufpvtGNLP2sdW6p1MjodRJE +# # type: homework -- title: Classes - slug: classes - date: 2024-05-21 - materials: - - lesson: beginners-en/class - - lesson: beginners-en/inheritance - - title: Classes cheatsheet - url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_classes.pdf - type: cheatsheet - - title: Homework (PDF) - url: https://drive.google.com/file/d/1amhY9-pvtN8w6tHnOvR0tIcwOfNVx-Bl/view - type: homework +# - title: Classes +# slug: classes +# date: 2024-05-21 +# materials: +# - lesson: beginners-en/class +# - lesson: beginners-en/inheritance +# - title: Classes cheatsheet +# url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_classes.pdf +# type: cheatsheet +# - title: Homework (PDF) +# url: https://drive.google.com/file/d/1amhY9-pvtN8w6tHnOvR0tIcwOfNVx-Bl/view +# type: homework -- title: Modules, exceptions, testing - slug: testing - date: 2024-05-28 - materials: - - lesson: beginners-en/modules - - lesson: beginners-en/exceptions - - lesson: beginners-en/testing - - lesson: beginners-en/testing-continued - - title: Exceptions cheatsheet - url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_files_exceptions.pdf - type: cheatsheet - - title: Testing cheatsheet - url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_testing.pdf - type: cheatsheet - - title: Homework - url: https://docs.google.com/document/d/1xVaSWOmQD3PqCY6czmOaxBlAlT0AHv2z2rsveK5vfxg/edit - type: homework - - title: Coding session at Sentry - Hackerrank 27.5. - url: https://docs.google.com/presentation/d/1urPWPVNHW-j2BvY-TK2jsHXEUnzbRyVo37L2g4rpRH0 +# - title: Modules, exceptions, testing +# slug: testing +# date: 2024-05-28 +# materials: +# - lesson: beginners-en/modules +# - lesson: beginners-en/exceptions +# - lesson: beginners-en/testing +# - lesson: beginners-en/testing-continued +# - title: Exceptions cheatsheet +# url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_files_exceptions.pdf +# type: cheatsheet +# - title: Testing cheatsheet +# url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_testing.pdf +# type: cheatsheet +# - title: Homework +# url: https://docs.google.com/document/d/1xVaSWOmQD3PqCY6czmOaxBlAlT0AHv2z2rsveK5vfxg/edit +# type: homework +# - title: Coding session at Sentry - Hackerrank 27.5. +# url: https://docs.google.com/presentation/d/1urPWPVNHW-j2BvY-TK2jsHXEUnzbRyVo37L2g4rpRH0 -- title: Working with Files and Debugging - slug: files_cli - date: 2024-06-04 - materials: - - lesson: beginners-en/json - - lesson: beginners-en/files - - lesson: beginners-en/debugging - - title: PDB cheatsheet - url: https://github.com/nblock/pdb-cheatsheet/releases/download/v1.2/pdb-cheatsheet.png - type: cheatsheet - - title: Files/Exceptions cheatsheet - url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_files_exceptions.pdf - type: cheatsheet - - lesson: beginners-en/argparse - - title: Homework - url: https://docs.google.com/document/d/1ylF7Yc49LcQ4E1c6lMUM8L1YVAJva-bJhWx1Ynv1-t0 - type: homework -- title: Final Project and bonus topic - slug: final_project - date: 2024-06-11 - materials: - - title: Final project option 1 - Snake - url: https://drive.google.com/file/d/1gJ4FdvmMwKSRr5D5k-idkvYoIs588HU-/view - type: homework - - title: Final project option 2 - Battleship - url: https://drive.google.com/file/d/1X3IQG_FUiDinmLhx_ZStuEkMf4AzLdwQ/view - type: homework - - title: Requests and getting data via APIs Slides - url: https://docs.google.com/presentation/d/1iD2ei88OnwH5ggfrOK1anCpa5tuf7G1LZ9C_THZBQ6M/edit - - title: Requests and getting data via APIs Colab - url: https://colab.research.google.com/drive/11zFpt19H6FtFr8kTaI2XmPqzi6ERNOcv -- title: What Next? - date: 2024-06-18 - slug: final_project2 - materials: - - title: What next? - url: https://docs.google.com/presentation/d/10Zz8OMuwYJYAsLbyeCK4ud7r4NmCfso7xGQ4wxtbGMU/edit +# - title: Working with Files and Debugging +# slug: files_cli +# date: 2024-06-04 +# materials: +# - lesson: beginners-en/json +# - lesson: beginners-en/files +# - lesson: beginners-en/debugging +# - title: PDB cheatsheet +# url: https://github.com/nblock/pdb-cheatsheet/releases/download/v1.2/pdb-cheatsheet.png +# type: cheatsheet +# - title: Files/Exceptions cheatsheet +# url: https://github.com/ehmatthes/pcc/releases/download/v1.0.0/beginners_python_cheat_sheet_pcc_files_exceptions.pdf +# type: cheatsheet +# - lesson: beginners-en/argparse +# - title: Homework +# url: https://docs.google.com/document/d/1ylF7Yc49LcQ4E1c6lMUM8L1YVAJva-bJhWx1Ynv1-t0 +# type: homework +# - title: Final Project and bonus topic +# slug: final_project +# date: 2024-06-11 +# materials: +# - title: Final project option 1 - Snake +# url: https://drive.google.com/file/d/1gJ4FdvmMwKSRr5D5k-idkvYoIs588HU-/view +# type: homework +# - title: Final project option 2 - Battleship +# url: https://drive.google.com/file/d/1X3IQG_FUiDinmLhx_ZStuEkMf4AzLdwQ/view +# type: homework +# - title: Requests and getting data via APIs Slides +# url: https://docs.google.com/presentation/d/1iD2ei88OnwH5ggfrOK1anCpa5tuf7G1LZ9C_THZBQ6M/edit +# - title: Requests and getting data via APIs Colab +# url: https://colab.research.google.com/drive/11zFpt19H6FtFr8kTaI2XmPqzi6ERNOcv +# - title: What Next? +# date: 2024-06-18 +# slug: final_project2 +# materials: +# - title: What next? +# url: https://docs.google.com/presentation/d/10Zz8OMuwYJYAsLbyeCK4ud7r4NmCfso7xGQ4wxtbGMU/edit