O mnie


Jestem Marcin. Mam 24 lata, pochodzę z Katowic i właśnie zdobyłem tytuł magistra informatyki na Uniwersytecie Edynburskim. Interesuję się wszelkiego rodzaju analizą danych. Szukam pracy, w której będę mógł wykorzystać i rozwinąć moją wiedzę z zakresu Data Science i Machine Learning.

Zainteresowania


  • Data Science
  • Sztuczna Inteligencja
  • Machine Learning
  • Deep Learning
  • Natural Language Processing
  • Software Engineering

Edukacja


Master of Informatics with Honours
The University of Edinburgh

2022

Ukończyłem pięcioletnie, jednolite studia magisterskie, warte 300 kredytów ECTS na Uniwersytecie Edynburskim. W tym momencie, mój uniwersytet zajmuje 15 miejsce w światowym rankingu QS.


International Baccalaureate Diploma
Prywatne Liceum Ogólnokształcące im. Melchiora Wańkowicza

2017

W liceum ukończyłem program międzynarodowej matury (IB). System IB jest o tyle trudny, że nauczanie w nim odbywa się wyłącznie w języku angielskim. Sprostałem tym wymaganiom i finalnie z czterech przedmiotów (matematyki, fizyki, czytaj dalej... biznesu i zarządzania oraz polskiej literatury) uzyskałem najwyższą możliwą ocenę, tzn. 7. Z pozostałych dwóch przedmiotów (chemii i języka angielskiego) zdobyłem 6.

Moją poprzedzającą edukację również odznaczają ponadprzeciętne osiągnięcia. W gimnazjum byłem laureatem trzech różnych konkursów przedmiotowych (olimpiad), a mianowicie z matematyki, fizyki i historii. Pokaż mniej...

Umiejętności


Data Science

Python wraz z jego narzędziami analizy danych to mój ulubiony język programowania. Używam naukowego Pythona niezależnie czy dotyczy to bezpośredniej statystycznej analizy danych, czy obróbki i przygotowania ich do dalszego czytaj dalej... przetwarzania przez algorytmy uczenia maszynowego. Pracowałem ze zbiorami danych z dziedzin takich jak Computer Vision (CV), Natural Language Processing (NLP) czy Time-Series. Wielokrotnie pomagałem znajomym, gdy potrzebowali pomocy przy analizie danych, dotyczyło to projektów z tak różnych przedmiotów jak lingwistyka czy fizyka. Ogólnie rzecz biorąc, żadne źródło danych nie jest mi straszne. Zawsze staram się znaleźć miejsca w kodzie, które mogą zostać przyspieszone poprzez wektoryzację. Techniki wizualizacji danych to moje ulubione zagadnienie z dziedziny Data Science. Pokaż mniej...


Deep Learning

PyTorch

W ramach moich studiów zaimplementowałem od zera dużą część klasycznych komponentów sieci neuronowych, od prostych wielowarstwowych perceptronów, do bardziej skomplikowanych warstw konwolucyjnych (CNNs) czy sieci czytaj dalej... rekurencyjnych (RNNs), itp. Ze względu na powyższe podejście do dziedziny Deep Learning od podstaw, dobrze orientuję się w jej głównych ideach i działaniu wysoko poziomowych bibliotek takich jak PyTorch.

Wpis na blogu Andreja Karpathy-ego, pod tytułem, The Unreasonable Effectiveness of Recurrent Neural Networks zainspirował mnie do przepisania jego starego Torchowego kodu w PyTorchu. W trakcie projektu nauczyłem się PyTorcha i udało mi się zbudować modele językowe oparte na RNNach, traktujących litery jako elementarne jednostki tekstu. Takowe modele językowe trenowałem na prozie słynnych polskich pisarzy takich jak Henryk Sienkiewicz, aby później symulowały ich archaiczny język.

Moją znajomość PyTorcha pogłębiłem również podczas różnych kursów uniwersyteckich. Używałem Pytorcha w Computer Vision (CV), Reinforcement Learning (RL) i Natural Language Processing (NLP). W pracy z NLP używałem również bibliotek spaCy oraz Transformers od Hugging Face. Najbardziej ambitny projekt w dziedzinie Deep Learning w którym brałem udział, nosi nazwę: Is RGB all you need? The usefulness of depth in semantic segmentation. Po więcej informacji proszę sięgnąć do jego osobnej sekcji. Pokaż mniej...


Web Development

JavaScript to mój drugi ulubiony język programowania zaraz po Pythonie. Mam doświadczenie w full-stackowym rozwijaniu aplikacji webowych. Podczas stażu w Almarze IT, we front-endzie pracowałem przy kodzie opartym na czytaj dalej... czystym JavaScripcie, wspartym jedynie przez bibliotekę DataTables. Natomiast w Konsepcie, używałem Reacta. Przy tworzeniu serwerów aplikacji webowych najczęściej używam biblioteki Flask, w języku Python. W Almarze IT, używałem również Javowego frameworka Spring Boot, przy tworzeniu aplikacji opartej na architekturze MVC. Pokaż mniej...


Natural Language Processing

NLTK
spaCy
Transformers

W dziedzinie Natural Language Processing (NLP) mój uniwersytet oferował wiele kursów, z których ukończyłem następujące: Processing Formal and Natural Languages, Text Technologies for Data Science, Accelerated Natural Language Processing, czytaj dalej... Natural Language Understanding, Generation, and Machine Translation (NLU+). Dzięki temu, mam dogłębną wiedzę z zakresu podstaw NLP, jak i wyspecjalizowanych metod do rozwiązywania jej szczególnych problemów. Zwłaszcza w ramach kursu NLU+, studiowałem najnowsze nowinki w NLP takie jak modele atencyjne, transformery, BERTa czy prompting ogromnych przetrenowanych modeli jak GPT. Do rozwiązywania problemów w NLP używałem PyTorcha, jak również bibliotek spaCy i Transformers od Hugging Face. Na marginesie, chciałabym wspomnieć że kursy NLP na moim uniwersytecie były prowadzone przez światowej klasy naukowców w tej dziedzinie. Przykładowo, profesor Alexandra Birch jest jednym z twórców metody byte-pair encoding (BPE) używanej dzisiaj praktycznie wszędzie do segmentacji tekstu, a jednocześnie wykładowcą kursu NLU+. Pokaż mniej...


Bazy Danych

MongoDB
PostgreSQL

MongoDB to moja ulubiona baza danych. W MongoDB projektowałem schematy, budowałem oraz optymalizowałem indeksy, jak również pisałem kwerendy. Używałem tej bazy danych podczas mojej pracy nad Konseptem. W ramach uniwersyteckiego czytaj dalej... kursu Text Technologies for Data Science, brałem również udział w projekcie Lyrix. Celem projektu było utworzenie wyszukiwarki tekstów piosenek. Końcowo, musieliśmy wyszukiwać informacje spośród zbioru pond 2 milionów piosenek. W back-endzie aplikacji użyliśmy MongoDB.

Znam się również na tradycyjnych relacyjnych bazach danych. Zarówno w trakcie mojego stażu w Almarze IT, jak i w trakcie moich studiów musiałem projektować i tworzyć schematy tabel, oraz SQL-owe kwerendy. Pokaż mniej...


Version Control

Git
GitHub

Używałem Gita jako VCSa zarówno w moich własnych, jak i uniwersyteckich projektach grupowych.


UNIX

Bash
Linux

Komputerowa infrastruktura mojego uniwersytetu była w całości oparta na systemie operacyjnym Linux. W związku z tym musiałem się nauczyć korzystać z UNIXa i GNU Basha. Moje własne komputery korzystają z Windowsa.


Wirtualizacja

Vagrant
VirtualBox

Kiedy muszę skorzystać z biblioteki nie wspieranej na Windowsie, tworzę VMa z odpowiednimi zależnościami przy użyciu Vagranta i VirtualBoxa. Zwłaszcza kiedy taki problem dotyczy bibliotek w Pythonie, tworzę zdalny serwer Jupyter czytaj dalej... Notebooka na VMie, lecz korzystam z niego w przeglądarce hosta. Pokaż mniej...


Inne

Powyższa lista przedstawia pozostałe języki programowania których używałem podczas moich studiów.

Haskell był pierwszym językiem którego się nauczyłem. Dzięki temu, czytaj dalej... do dzisiaj mam dobrą znajomość zasad programowania funkcjonalnego. Pokaż mniej...


Technologie Blockchain

Ethereum
Solidity

Podczas piątego roku studiów, uczestniczyłem w kursie Blockchains and Distributed Ledgers. W ramach kursu zapoznałem się z podstawami technologii blockchain, jak również jej najbardziej popularnymi przedstawicielami, tzn. czytaj dalej... Bitcoinem i Ethereum. Projektowałem oraz programowałem w Solidity, optymalizowałem z perspektywy bezpieczeństwa, sprawiedliwości, kosztów eksploatacji, wdrażałem oraz dokonywałem transakcji ze smart kontraktami Ethereum. Kurs ukończyłem z oceną A1 (95%). Stworzyłem zdecentralizowaną wersję gry w szachy, opartą na smart kontraktach Ethereum. Pokaż mniej...


Doświadczenie


Programista
Konsept App
2021

Konsept od Nagne Studios to projekt mający na celu usprawnienie i zautomatyzowanie pracy Menadżera Produktu. Brałem bezpośredni udział w projektowaniu funkcji aplikacji i planowaniu ich możliwych implementacji, bazując na czytaj dalej... znajomości sztucznej inteligencji. Dużą częścią projektu, nad którą pracowałem był silnik rekomendacji. Aby stworzyć takowy silnik, musieliśmy wpierw utworzyć bazę danych polecanych obiektów. Zebrałem zbiór danych przy użyciu crawlera, którego zaprogramowałem. Następnie musieliśmy wyczyścić oraz otagować nasze dane. Do tego celu stworzyłem specjalną aplikację webową. Podczas pracy przy Konsepcie używałem Pythona, Flaska, Reacta, JavaScripta i MongoDB. Pokaż mniej...


Sprzedawca
Tartan Weaving Mill
2019 - 2020

Tartan Weaving Mill to największy sklep z pamiątkami w Edynburgu. Podczas zatrudnienia w sklepie brałem czynny udział w obsłudze klienta.


Stażysta Programista
Almar IT
2018

Almar IT to średniej wielkości firma oferująca systemy zarządzania stacjami paliw na terenie Europy Centralnej. Podczas stażu zaznajomiłem się z dużą bazą kodu firmy. Technologiczne zaplecze firmy uwzględniało Javę, Spring czytaj dalej... Boota, Hibernata, bazę danych PostgreSQL/Oracle, JavaScripta i bibliotekę DataTables. Żeby zostać zaangażowanym w projekt musiałem nauczyć się od zera JavaScripta i Spring Boota. Końcowo, brałem udział w rozwoju jednej z funkcji systemu CRM. Pokaż mniej...

Języki


Polski

Jetsem natywnym użytkownikiem języka polskiego.


Angielski

Od liceum cała moja edukacja przebiegała wyłącznie w języku angielski. Mieszkałem, studiowałem i pracowałem w Wielkiej Brytanii przez 5 lat. Moja szóstka z rozszerzonego języka angielskiego w programie międzynarodowej matury IB, jest równoznaczna z certyfikatem znajomości języka angielskiego na poziomie B2+ (źródło).


Niemiecki

Posiadam certyfikat Goethego świadczący o znajomości tego języka na poziomie A1 (Goethe-Zertifikat A1).

Projects


Is RGB all you need? The usefulness of depth in semantic segmentation.

W ramach kursu Machine Learning Practical wraz z Maciejem Kowalskim, postanowiliśmy zbadać jak dane inne niż RGB (kolor) mogą zostać wykorzystane, aby zwiększyć skuteczność istniejących modeli klasyfikujących w Computer Vision czytaj dalej... (CV). Naszym celem było pokonanie bazowego modelu opartego tylko na RGB na zbiorze zdjęć lotniczych wykonanych przez drony, przy użyciu dostępnych dla każdego piksela danych o wysokości punktu pochodzących z sensora LIDAR. Zadaniem była semantyczna segmentacja, czyli przypisanie każdemu pikselowi klasy, mówiącej czy takowy piksel stanowi część domu, drogi, samochodu, drzewa, itp.

Wypróbowaliśmy wiele metod przekształcenia bazowej architektury ResNet, aby wykorzystać nowe dane dotyczące wysokości. Kolejnym z naszych celów było wykorzystanie gotowych przetrenowanych modeli. Chcieliśmy uniknąć trenowania nowych modeli od zera. Właściwe wdrożenie nieprzetrenowanych parametrów do gotowej sieci neuronowej okazało się największym wyzwaniem. W ramach projektu, musieliśmy odpalać nasze eksperymenty na klasterze kart graficznych udostępnionym przez nasz uniwersytet. Jedno z rozwiązań wymagało niskopoziomowych zmian w operacji konwolucji. Udało mi się dokonać powyższych zmian używając wyłącznie prostych zwektoryzowanych matematycznych operacji w PyTorchu. Wspomnianą wyspecjalizowaną konwolucję zapakowałem w PyTorchowy moduł, dostępny na moim GitHubie.

Końcowe rezultaty projektu można znaleźć w załączonym raporcie pdf. Pokaż mniej...


WebSweeper

Aby nauczyć się JavaScripta i Bootstrapa napisałem od zera responsywną aplikację webową do gry w sapera. Później rozwinąłem aplikację o system, który liczy prawdopodobieństwo wystąpienia bomby na dowolnym polu w grze. Czytaj dalej... Informację tę gracz może następnie wykorzystać jako wskazówkę. System rozwiązujący zaprojektowałem całkowicie sam w oparciu o znajomość zasad prawdopodobieństwa i analizę procesu gry człowieka. Naiwne rozwiązania, często prowadziły do wykładniczego zapotrzebowania względem pamięci RAMu. Z tego powodu musiałem szukać inteligentnych rozwiązań. Pokaż mniej...


EthereumChess

Zainspirowany kursem Blockchain and Distributed Ledgers, stworzyłem zdecentralizowaną wersję gry w szachy, opartą na smart kontraktach Ethereum.