Projekty zespołowe zaproponowane przez pracowników Nokia i prowadzone przez
nich. Spotkania będą się odbywać w siedzibie firmy. Za zaliczenie projektu
student może otrzymać punkty ECTS (co najmniej 4) oraz zaliczenie wymogu
projektu zespołowego z programu studiów.
**UWAGA**: Termin zajęć będzie ustalany z poszczególnymi zespołami. Osoby zapisane na przedmiot będą musiały dobrać się w 3-4-osobowe zespoły i wspólnie zadeklarować zainteresowanie projektami. Ankieta zgłoszeniowa zostanie udostępniona w piątek 11.10.2024 osobom zapisanym na przedmiot.
Propozycje projektów na bieżącą edycję przedmiotu:
**Generic blockchain**
Demonstrate the idea of distributed blockchain database by designing and implementing a simple blockchain system. Your system shall explore whether the blockchain concept can be used to implement generic data storage, not limited to cryptocurrency and financial transactions. Sufficient knowledge can be found in the “Blockchain Basics” book by Daniel Drescher (available in Polish also).
**Turtle reincarnated into Python**
Logo is a great programming language for teaching kids, yet now a bit overshadowed by visual environments such as Scratch. However text source code is still the very clue of programming, so let’s bring back the Logo language from oblivion by means of the turtle Python module. I want a Logo translator/interpreter to prototype a Logo dialect implemented on top of the turtle Python module. Various ideas can be explored: translator vs. interpreter, modern features such as multithreading, network/distributed programing, extending Logo with Python (implementing Logo functions directly in Python), future IDE integration (step-by-step debugging, performance monitoring).
**Let Python wriggle!**
As compound instructions in the Python programming language are marked as mere identations, so those poor snakes cannot wriggle as they (or their creators) wanted to. So let’s Python wriggle by extending its syntax by respective keywords to mark the beginning and the end of compound instruction sequence (such as ‘{‘ ‘}’ in C or ‘begin’ ‘end’ in Pascal). This way the code within a compound sequence can be written with any identation, which suits the author’s style or source readability. The extended syntax shall be then translated to official Python so it can be run by existing interpreters. Additional areas to be explored: mapping line numbers back and forth, wrapping the original interpreter in IDE environments.
**Portable text terminal abstraction**
Implement a prototype of a C library providing portable (Linux/Windows) text console abstraction with no dependencies to other 3rd party libraries (such as ncurses). The library shall provide minimal features (such as reading/writing characters in given coordinates/areas, reading/writing characters’ attributes (color, bold, italic), getting/setting terminal size, getting setting terminal font/font size, getting keyboard/mouse input), that can be used to build advanced, console based user interface.