AI для математики, STEM та програмування

GitHub Copilot dla studentów

25 Вересня, 07:42

7 на хв читання

westudy

GitHub Copilot dla studentów: podpowiedzi edukacyjne, pierwsze dopasowanie, wcięcia, przykłady kontrolne i samodzielna zmiana wymagania.

Gdy podpowiedź pojawia się szybciej, niż uczestnik zdąży sformułować algorytm, nauka łatwo zamienia się w przyjmowanie znajomych wierszy. Warto skonfigurować GitHub Copilot do innej roli: omawiać zamysł, wyjaśniać konstrukcje i pomagać sprawdzać własny kod. Wtedy integracja z edytorem nie odbiera głównego działania edukacyjnego — samodzielnego sformułowania i wykonania rozwiązania.


Warunki własnej praktyki

Autorskie ćwiczenie w Python: first_long(words, limit) zwraca pierwsze słowo o długości ściśle większej niż limit lub None, jeżeli nie ma takiego słowa. Dla red, orange, blue i granicy cztery wynikiem jest orange. Kolejność listy ma znaczenie; nie trzeba szukać najdłuższego słowa. Ćwiczenie pozwala omówić pętlę, porównanie i wcześniejszy powrót.


Oficjalna ścieżka nauki proponuje wyłączenie automatycznych podpowiedzi kodu i dodanie instrukcji pomocy edukacyjnej; proces ten opisuje GitHub: konfigurowanie Copilot do nauki. Dalsze przykłady dla tematu „nauka z GitHub Copilot” są autorskimi scenariuszami edukacyjnymi; nie są raportem z przeprowadzonego testowania produktów.


Działanie edukacyjne przed konfiguracją

Trzeba nauczyć się znajdować pierwszy pasujący element, a nie kopiować gotowy filtr. Określa to formę pomocy Copilot.


Zapisz, co uczestnik musi zrobić sam: opisać kryterium, napisać pętlę i wyjaśnić moment powrotu.


Dla nowej listy uczeń musi określić pierwsze pasujące słowo bez podpowiedzi. Ten wynik stanie się punktem kontrolnym.


Konfiguracja bez celu edukacyjnego może tylko zmienić wygląd czatu. Powiąż ograniczenia pomocy z konkretną umiejętnością.


W omówieniu ćwiczenia uczestnika z listą zacznij od pytania, które można sprawdzić wykonaniem. Zapisz na papierze konkretne dane wejściowe i potrzebny wynik, a następnie nazwij właściwość, która je łączy. Pozostawia to miejsce na własną hipotezę przed odpowiedzią pomocnika. Jeżeli program jest zbyt duży, wyodrębnij minimalny fragment zachowujący potrzebne zachowanie. Skrócenie nie może ukrywać warunku budzącego wątpliwość. Wyjaśnij, które dane pozostały poza przykładem i dlaczego nie są teraz potrzebne. Uczeń musi wiedzieć, gdzie kończy się wniosek o małej funkcji, a zaczynają niesprawdzone założenia o całym projekcie; w tej próbie potrzebnym punktem odniesienia jest pierwszy pasujący element listy. Tak pierwsza rozmowa z AI zyskuje przedmiot i obserwowalny wynik.


Podpowiedzi w edytorze i czat

Automatyczne uzupełnianie i rozmowa pełnią różne role. W początkowym ćwiczeniu gotowy wiersz może ujawnić właśnie potrzebne rozwiązanie.


Sprawdź ustawienia dostępnego edytora. Skorzystaj z oficjalnej ścieżki dla VS Code, jeżeli pracujesz właśnie w nim.


Uczestnik musi mieć czas na napisanie własnej wersji. Upewnij się, że niepotrzebne uzupełnianie nie powróciło w innym projekcie.


Nie zakładaj identycznych przełączników we wszystkich środowiskach. Instrukcja GitHub ma konkretne wymagania wstępne i wymaga porównania z twoim edytorem.


W ćwiczeniu uczestnika z listą rozdziel dopuszczalne dane wejściowe, sposób przechodzenia po elementach i postać wyniku. Te trzy części mogą zmieniać się niezależnie. Gdy pomocnik proponuje ulepszenie, ustal, czy tylko przepisuje ten sam algorytm, czy dodaje nowe zachowanie; w tej próbie potrzebnym punktem odniesienia jest pierwszy pasujący element listy. Na przykład ciche usunięcie powtórzenia, sortowanie lub zmiana pustego wyniku wymagają już uzgodnionego wymagania; konkretnym przedmiotem sprawdzenia jest tu pierwszy pasujący element listy. Oznacz każdą zmianę osobno, aby nie uznać nowego kontraktu za poprawkę kosmetyczną. Warto, by uczestnik wyjaśnił, który test powinien pozostać niezmieniony po redakcji, a który miałby inne oczekiwanie, gdy sprawdzany jest pierwszy pasujący element listy. Jeżeli odpowiedź jest nieznana, odłóż przepisywanie i wróć do opisu tego, co funkcja ma robić; konkretnym przedmiotem sprawdzenia jest tu pierwszy pasujący element listy.


Instrukcja dla pomocnika

Sformułowanie pomóż się uczyć jest zbyt szerokie. Trzeba nazwać poziom, potrzebne działania i granicę między wyjaśnieniem a realizacją.


Dodaj instrukcję edukacyjną: doprecyzowywać kontrakt, omawiać zasady, nie podawać gotowego kodu w pierwszym kroku.


Próbne pytanie o pętlę musi przynieść wyjaśnienie lub doprecyzowanie, a nie ukończoną funkcję first_long.


Instrukcja nie gwarantuje idealnego zachowania. Jeżeli odpowiedź ujawniła realizację, przenieś samodzielne sprawdzenie na nowe zbliżone ćwiczenie.


Podczas wyjaśniania ćwiczenia uczestnika z listą nie pomijaj stanu pośredniego dla krótkiego podsumowania. Wybierz jeden element, nazwij stan przed jego przetworzeniem, sprawdzany warunek i stan po działaniu. Następnie poproś ucznia o kontynuowanie następnego kroku bez gotowej tabeli. Błąd w takiej kontynuacji pokazuje konkretne miejsce niezrozumienia: wartość zmiennej, kierunek porównania, moment dodania lub wyjście z funkcji; konkretnym przedmiotem sprawdzenia jest tu pierwszy pasujący element listy. Można prosić AI o zadanie pytania właśnie o to przejście. Długie wyjaśnienie wszystkich wierszy nie jest potrzebne, jeżeli trudność dotyczy jednego związku. Po krótkiej pomocy znów daj własne działanie, aby uczeń nie pozostał słuchaczem poprawnego, lecz cudzego śledzenia wykonania, gdy sprawdzany jest pierwszy pasujący element listy.


Algorytm pierwszego dopasowania

Gdy orange spełnia warunek, późniejsze słowa nie zmieniają już wyniku. Wcześniejszy powrót jest tutaj częścią kontraktu.


Opisz przechodzenie po liście i moment zakończenia. Oddziel szukanie pierwszego słowa od szukania najdłuższego.


Dla orange, elephant i granicy cztery wynikiem pozostaje orange, choć drugie słowo jest dłuższe.


Model może optymalizować inne zadanie. Przywróć do dialogu słowo pierwsze i wymóg zachowania kolejności przeglądania.


Weryfikację ćwiczenia uczestnika z listą buduj od oczekiwania określonego na podstawie warunku do faktycznego wykonania. Jeżeli test i realizacja pochodzą z jednego błędnego założenia, mogą być ze sobą zgodne, a mimo to nie wykonywać zadania, gdy sprawdzany jest pierwszy pasujący element listy. Dlatego najpierw oblicz mały przypadek ręcznie, a dopiero potem uruchom kod. Przy rozbieżności zachowaj dane wejściowe, oczekiwanie i uzyskany wynik. To wystarczy do merytorycznego zapytania do pomocnika: znaleźć pierwszy punkt, w którym wykonanie rozmija się z kontraktem; w tej próbie potrzebnym punktem odniesienia jest pierwszy pasujący element listy. Nie proś ogólnie o poprawienie programu, gdy możesz nazwać dokładne zachowanie. Po poprawce powtórz właśnie przypadek rozbieżności i dodaj zbliżoną kontrolę sprawdzającą, czy poprawka nie naruszyła innego wymagania; w tej próbie potrzebnym punktem odniesienia jest pierwszy pasujący element listy.


Mała funkcja ucząca zatrzymywania pętli

Autorski przykład zwraca pierwsze słowo o długości ściśle większej od granicy. Zasadnicze znaczenie mają w nim miejsce powrotu i dokładny znak porównania. Przeczytaj realizację po własnej próbie, a następnie zamknij ją przed nowym testem.


def first_long(words, limit):
    for word in words:
        if len(word) > limit:
            return word
    return None

Dla red, orange, blue i granicy cztery pętla najpierw pomija red. Przy orange warunek jest spełniony i funkcja kończy pracę. Blue nie jest już sprawdzane. Jeżeli wejście to orange, elephant, wynikiem pozostaje orange. Uczeń wskazujący elephant być może odczytuje zadanie jako szukanie najdłuższego słowa. Potrzebne jest tu doprecyzowanie kontraktu, a nie dodatkowe wyjaśnienie składni.


Osobna para przypadków sprawdza granicę. Dla blue i granicy cztery wynikiem jest None; dla blue i granicy trzy wynikiem jest blue. Zmieniono tylko jeden parametr, więc różnicę łatwo powiązać ze znakiem porównania. Dla pustej listy pętla nie wykonuje się ani razu i działa końcowy powrót. Jeżeli None znajdzie się wewnątrz pętli, funkcja może zatrzymać się na pierwszym krótkim słowie i pominąć potrzebny element dalej.


Można poprosić Copilot o wyjaśnienie tego błędnego wcięcia bez poprawiania pliku. Niech zaproponuje dane wejściowe rozróżniające dwie wersje, a uczeń sam zapisze oczekiwanie. Oficjalna ścieżka nauki GitHub dla VS Code przewiduje możliwość ograniczenia automatycznych uzupełnień i skonfigurowania roli pomocnika za pomocą instrukcji. Aktualne kroki należy brać z materiałów pomocy GitHub dotyczących nauki, a dostęp i warunki konta sprawdzać oddzielnie.


Po omówieniu zmień wymaganie: znaleźć pierwsze słowo o długości nie mniejszej od granicy. Uczeń musi powiedzieć, które oczekiwanie się zmienia, a dopiero potem edytować znak. Następnie zaproponuj zwracanie indeksu zamiast słowa. To już inna zmiana wyniku, której nie warto łączyć z poprzednią w jednym niewidocznym autouzupełnieniu. Mały kolejny krok daje prowadzącemu podstawę do dostrzeżenia własnego rozumienia uczestnika.


Graniczna wartość długości

Ścisłe porównanie wyklucza słowo o długości równej dokładnie limit. Przypadek równości pomaga wykryć błąd znaku.


Sprawdź blue przy granicy cztery: nie pasuje. Dla orange przy granicy pięć oczekuj dopasowania.


Wyjaśnij różnicę między > i >= na własnym przykładzie. Zapisz oczekiwanie przed uruchomieniem kodu.


Test wyłącznie na wyraźnie długim słowie nie wykryje błędnego uwzględnienia równości. Dodaj właśnie przypadek graniczny.


Kontrprzykład do ćwiczenia uczestnika z listą musi odróżniać zatwierdzony algorytm od konkretnego błędnego pomysłu. Wybierz ten pomysł przed doborem liczb lub ciągów znaków. Jeżeli niewłaściwy sposób przechodzi wszystkie istniejące przykłady, trzeba szukać danych wejściowych, w których jego ukryte założenie staje się widoczne; konkretnym przedmiotem sprawdzenia jest tu pierwszy pasujący element listy. Zmieniaj jedną istotną właściwość: kolejność, powtórzenie, znak, granicę lub brak elementów. Poproś ucznia o prognozę dla obu sposobów i wyjaśnienie, dlaczego oczekiwania się różnią. Taka para daje podstawę poprawki, którą można sprawdzić niezależnie od autorytetu AI. Jeżeli prognoza się nie udaje, wróć do ręcznego wykonania tych małych danych wejściowych, zamiast dodawać kilka nowych trudności jednocześnie; w tej próbie potrzebnym punktem odniesienia jest pierwszy pasujący element listy.


Analiza faktycznego błędu

Jeżeli funkcja zwraca None po pierwszym krótkim słowie, problem może tkwić w położeniu powrotu oznaczającego brak wyniku.


Dostarcz własną wersję i poproś o prześledzenie red, orange. Znajdź moment, w którym funkcja kończy się przedwcześnie.


None powinno być zwracane po zakończeniu całego przeglądania, jeżeli żadne słowo nie pasowało.


Pełne przepisanie maskuje przyczynę. Najpierw wyjaśnij nieprawidłową ścieżkę, potem samodzielnie zmień jeden fragment.


Na ścieżce nauki ćwiczenia uczestnika z listą wygodnie jest udzielać wsparcia stopniowo. Najpierw pytanie doprecyzowujące o wynik, potem nazwa potrzebnej właściwości, następnie jedno pokazane przejście stanu; w tej próbie potrzebnym punktem odniesienia jest pierwszy pasujący element listy. Pełną realizację pozostaw do omówienia po własnej próbie lub do sytuacji, w której jej rolę wprost określił prowadzący, gdy sprawdzany jest pierwszy pasujący element listy. Na każdym stopniu uczeń musi mieć coś do samodzielnego wykonania: wybrać oczekiwanie, kontynuować pętlę, zaproponować test lub wyjaśnić wcięcie; konkretnym przedmiotem sprawdzenia jest tu pierwszy pasujący element listy. Zanotuj, jaka pomoc rozwiązała trudność. W następnym ćwiczeniu zacznij od mniejszego wsparcia, ale zachowaj wystarczający warunek. Pozwala to oceniać potrzebę pomocy na podstawie rzeczywistego działania, a nie ogólnego wrażenia, że uczestnik wszystko zrozumiał, gdy sprawdzany jest pierwszy pasujący element listy.


Dziennik własnych decyzji

Notatki uczestnika muszą pokazywać, które podpowiedzi wykorzystano i co autor zrealizował sam. Czyni to omówienie przejrzystym.


Zachowaj algorytm początkowy, jedną radę, poprawioną wersję i przypadki kontrolne. Dodaj własne wyjaśnienie powrotu.


Uczeń musi odtworzyć funkcję bez historii czatu. Sprawdź ją na nowym zestawie słów.


Duży zrzut ekranu rozmowy nie zastępuje opisu decyzji. Pozostaw tylko fragmenty wyjaśniające konkretną zmianę.


Po poprawce ćwiczenia uczestnika z listą przejrzyj zmienione wiersze oddzielnie od tekstu wyjaśniającego modelu. Każda przyjęta zmiana musi mieć powód w kontrakcie i sprawdzenie w wykonaniu. Nie trzeba zamieniać małej funkcji edukacyjnej w skomplikowany uniwersalny komponent bez odpowiedniego zadania; w tej próbie potrzebnym punktem odniesienia jest pierwszy pasujący element listy. Jeżeli pojawiły się nowe typy wejścia, obsługa uszkodzonych danych lub zależności zewnętrzne, zapisz je jako osobne rozszerzenie; w tej próbie potrzebnym punktem odniesienia jest pierwszy pasujący element listy. Początkowa kontrola pozostaje przy tym potrzebna. Uczeń musi umieć powiedzieć, które stare właściwości zachowano i co sprawdza się teraz dodatkowo. Właśnie taki krótki przegląd zmiany pokazuje odpowiedzialne czytanie kodu, a nie tylko zgodę na gotową propozycję; konkretnym przedmiotem sprawdzenia jest tu pierwszy pasujący element listy.


Dostęp i zasady projektu edukacyjnego

Możliwości Copilot zależą od dostępnego konta i środowiska. Warunki dostępu studenckiego sprawdza się oddzielnie od metodyki nauczania.


Sprawdź aktualne warunki swojego konta i zasady prowadzącego. Przygotuj sposób wykonania ćwiczenia bez AI.


Samodzielna ścieżka musi zawierać treść zadania, dokumentację i testy. Brak serwisu nie zmienia celu ćwiczenia.


Nie obiecuj wszystkim uczestnikom takiego samego planu taryfowego lub dostępu bez sprawdzenia. Zadanie edukacyjne nie powinno zależeć od niepotwierdzonej ulgi.


Zakończenie pracy nad ćwiczeniem uczestnika z listą warto sprawdzać na nowych danych wejściowych i bez poprzedniego omówienia przed oczami. Pozostaw tę samą zasadę, ale zmień dane zewnętrzne. Poproś najpierw o przewidzenie wyniku, potem uruchomienie własnego kodu i wyjaśnienie zgodności lub rozbieżności. Następnie zmień jedno wymaganie, aby uczeń wskazał potrzebną poprawkę przed jej wykonaniem. Jeżeli potrafi wyjaśnić tylko stary gotowy przykład, transfer nie został jeszcze pokazany. Nie jest to powód, by od razu zaczynać wszystko od nowa: przywróć konkretną pominiętą pomoc i daj inną zbliżoną kontrolę; konkretnym przedmiotem sprawdzenia jest tu pierwszy pasujący element listy. W notatkach pozostaw regułę wyboru, jeden sprawdzony przypadek i otwartą granicę zastosowania funkcji.


Druga próba: od wzoru do własnej decyzji

Aby sprawdzić rozumienie pierwszego dopasowania, użyj listy z dwoma pasującymi słowami i jednym niepasującym przed nimi. Uczestnik musi wskazać, na którym elemencie wykonanie się zatrzyma, a następnie nazwać słowa, które nie zostaną już odczytane. Pytanie dotyczy przepływu wykonania, dlatego poprawna znajomość długości każdego słowa nie jest jeszcze wystarczającą odpowiedzią.


Osobno podaj tylko krótkie słowa. Poproś o pokazanie ścieżki do None bez pomijania kroków. Jeżeli uczeń mówi, że funkcja zwraca je po pierwszym słowie, wróć do wcięcia końcowego return. Różnica między wierszem wewnątrz pętli a wierszem po niej ma konkretny skutek. Warto narysować dwie ścieżki i poprosić o wybór tej, która odpowiada kontraktowi.


Do dialogu z Copilot przygotuj własne pytanie: dlaczego ostatniego powrotu nie można umieścić od razu po sprawdzeniu warunku w pętli? Niech pomocnik odpowie pytaniem o dane kontrolne lub krótką podpowiedzią. Uczestnik sam buduje przypadek z krótkim pierwszym słowem i dłuższym drugim. Taka interakcja pozostawia mu kluczowe działanie szukania kontrprzykładu.


Po analizie zrób przerwę od gotowej realizacji. Zapisz algorytm słowami i odtwórz kod na podstawie tego zapisu. Różnice w nazwach zmiennych nie są błędem, jeżeli zachowanie zostało zachowane. Następnie uruchom wcześniej wybrane przykłady. Jeżeli odtworzony wariant nie działa, ustal, czy zmienił się znak porównania, wcięcie, zwracana wartość lub kolejność elementów. Poprawiaj jedną ustaloną przyczynę naraz.


Nowe wymaganie dotyczące indeksu wymaga decyzji o przypadku bez dopasowania. Zachowaj None lub wyraźnie przyjmij inną wartość, ale nie pozwalaj modelowi wybrać jej niepostrzeżenie. Uczeń musi wyjaśnić, dlaczego zero nie może bez dodatkowej umowy oznaczać jednocześnie pierwszego elementu i braku wyniku. Pytanie to wiąże postać zwracanej wartości z dalszym wykorzystaniem funkcji.


Na zakończenie zajęć poproś uczestnika o stworzenie jednej poprawnej i jednej błędnej wersji oraz wymyślenie danych wejściowych, które je rozróżnią. Niech nie pokazuje nazw wersji przed prognozą partnera. Prowadzący ocenia podstawę kontrprzykładu, a nie piękno opracowania kodu. Właśnie to własne sprawdzenie pozwala dostrzec korzyść edukacyjną z podpowiedzi w edytorze.


Polecenie do następnej własnej próby

Uczę się pisać first_long(words, limit). Pomóż wyjaśnić algorytm i sprawdzić przykłady, ale pozostaw realizację mnie. Zadawaj jedno pytanie doprecyzowujące i nie dodawaj gotowego kodu.


Do praktyki ćwiczenia uczestnika z listą dodaj własną wersję początkową i nazwij miejsce, w którym potrzebna jest pomoc. Pozostaw w zapytaniu tę część, którą chcesz wykonać samodzielnie. Po odpowiedzi dotyczącej ćwiczenia uczestnika z listą zapisz przyjęty krok i jego podstawę. Jeżeli model ujawnił całe rozwiązanie przed własną próbą, użyj innego zbliżonego warunku do samodzielnego sprawdzenia, gdy sprawdzany jest pierwszy pasujący element listy.


Co sprawdzić przed zakończeniem

Etap | Dowód przyjętego rezultatu; Działanie edukacyjne przed konfiguracją | Dla nowej listy uczeń musi określić pierwsze pasujące słowo bez podpowiedzi. Ten wynik stanie się punktem kontrolnym.; Instrukcja dla pomocnika | Próbne pytanie o pętlę musi przynieść wyjaśnienie lub doprecyzowanie, a nie ukończoną funkcję first_long.; Graniczna wartość długości | Wyjaśnij różnicę między > i >= na własnym przykładzie. Zapisz oczekiwanie przed uruchomieniem kodu.; Dziennik własnych decyzji | Uczeń musi odtworzyć funkcję bez historii czatu. Sprawdź ją na nowym zestawie słów.


Materiał do lekcji

LMS WeStudy może być miejscem organizacji zajęć na temat „nauka z GitHub Copilot”. Przygotuj warunek wyjściowy, instrukcję własnej próby i osobny klucz prowadzącego. W pracy nad ćwiczeniem uczestnika z listą ważne jest określenie dostępnych pomocy przed rozpoczęciem pracy. Konkretne możliwości prezentowania materiału i informacji zwrotnej sprawdź we własnym środowisku nauczania, gdy sprawdzany jest pierwszy pasujący element listy.


W materiałach WeStudy do omówienia ćwiczenia uczestnika z listą warto pozostawić fragment początkowy, zatwierdzoną redakcję i warunek kontrolny. Prowadzący potrzebuje wyjaśnienia własnego wyboru dotyczącego ćwiczenia uczestnika z listą, a nie tylko ukończonego pliku lub długiej historii czatu. W następnym zadaniu zmień dane zewnętrzne i sprawdź to samo działanie edukacyjne przy mniejszym wsparciu.


FAQ

Czy gotowa odpowiedź jest potrzebna na początku tematu „nauka z GitHub Copilot”?

W ćwiczeniu uczestnika z listą zacznij od własnej prognozy lub fragmentu. Wzoru używaj po próbie do analizy konkretnej różnicy. Jeżeli analizujesz już gotowy przykład, wprost nazwij jego rolę edukacyjną i pozostaw inny warunek do własnej kontynuacji, gdy sprawdzany jest pierwszy pasujący element listy. Samodzielne działanie dotyczące ćwiczenia uczestnika z listą musi być widoczne osobno od pracy pomocnika.


Jak postępować, gdy wyjaśnienie ćwiczenia uczestnika z listą jest sprzeczne?

Wróć do zatwierdzonego warunku i znajdź pierwszą rozbieżność. Dla ćwiczenia uczestnika z listą zapisz konkretne pytanie i materiał pozwalający je sprawdzić. Źródło zasady, ręczne sprawdzenie lub omówienie prowadzącego muszą odpowiadać właśnie wątpliwej tezie. Sama liczba odpowiedzi AI dotyczących ćwiczenia uczestnika z listą nie określa, która z nich jest uzasadniona.


Jak zmniejszać pomoc podczas praktyki ćwiczenia uczestnika z listą?

Pozostaw jedną krótką pomoc i zaproponuj wykonanie następnego kroku. Jeżeli własna kontynuacja ćwiczenia uczestnika z listą się udaje, usuń pomoc w nowym zbliżonym przypadku. Jeżeli nie, doprecyzuj, co dokładnie jest niezrozumiałe. Powrót do konkretnej trudności dotyczącej ćwiczenia uczestnika z listą jest przydatniejszy od przypadkowego zwiększania liczby gotowych przykładów.


Co zachować po zajęciach na temat „nauka z GitHub Copilot”?

Dla ćwiczenia uczestnika z listą wystarczą własna próba początkowa, przyjęte rozwiązanie, powód zmiany i nowy przypadek kontrolny. Taki zapis pozwala odtworzyć potrzebne działanie bez czytania całej rozmowy. Wniosek o ćwiczeniu uczestnika z listą ogranicz do sprawdzonej właściwości; szerszy rezultat wymaga innych własnych prób o określonych warunkach.


Źródła i dalsza lektura

Twój kolejny krok

Wypróbuj Westudy za darmo

Od pierwszego pomysłu do własnej szkoły online. Twórz, ucz i rozwijaj swój projekt z WeStudy.

Rozpocznij za darmo

30dni za darmo

Przez 30 dni korzystaj bezpłatnie ze wszystkich funkcji