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 na początku semestru osobom zapisanym na przedmiot.
Propozycje projektów na bieżącą edycję przedmiotu:
**High-performance multi-pattern string search**
Develop a high-performance multi-pattern string search tool in Rust, Python or in C++ that leverages Hyperscan (https://github.com/intel/hyperscan) and incorporates prior knowledge about files to accelerate search process. The tool should initially be implemented as a basic Hyperscan-based search engine, then enhanced with a mechanism for specifying which files are likely to contain which patterns (e.g., using file extensions, metadata, or labels, and potentially employing techniques like Bloom filters). The tool should then be modified to filter the file list before searching, avoiding unnecessary scans.
**Logo Turtle goes to Mars**
Exploration of the planet Mars is just around the corner. To secure the landing spot a squad of mechanical turtles is going to be sent there beforehand. Therefore a Logo programming language dialect is needed to control those mechanical turtles over the three light minutes time distance between the Earth and Mars planets. You need to develop a Logo language interpreter prototype which communicates with turtles in a fully asynchronous, event based manner. For example the interpreter sends a command (such as “move forward 10 meters) to a turtle and the turtle sends back its status (“fully succeeded”, “partly succeeded” or “failed”) after roughly 6 minutes (two times 3 light minutes). The reply from the turtle is then passed to an event handler logo procedure which continues the interpreter-turtle dialogue appropriately.
Not to start from the very scratch you can reuse the interpreter developed be some other Nokia-driven projects: https://github.com/YarynaRachkevych1/python-logo.git.
**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.
**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).