Это не совсем отвечает на ваш вопрос, но вот мои два цента:
Идеальная тема была бы у вас:
- Интерес к.
- Мнение о.
- Уже немного знаю о, но не было времени, чтобы изучить более подробно.
Например, предположим, что вы считаете, что:
Написание программ, которые анализируют, манипулируют и кодируют данные в пользовательских текстовых форматах, редактируемых человеком, довольно сложно. Я считаю, что это может и должно быть намного проще.
Это не обязательно означает, что инструменты для работы с текстовыми форматами не существуют. Может быть, вы просто не заметили их, или они не совместимы с языком программирования, который вы знаете, или вам не понравилось их использовать. Но, может быть, есть отличный инструмент для работы с текстовыми форматами.
Оглядываясь вокруг, вы снова и снова видите Haskell и Parsec . Вы поддаваетесь обману и изучаете Haskell, и это оказывается действительно круто. Затем вы начинаете изучать Parsec и обнаруживаете, что он довольно приличный. Ваш проект может быть презентацией, знакомящей ваших коллег с Parsec, с завершением тематического исследования, демонстрирующего язык, специфичный для предметной области, в условиях «реального мира». Здесь вы на самом деле ничего не изобрели, но вы представили что-то замечательное для себя и своих коллег, и вы сделали это таким образом, который имеет для них смысл.
Опять же, предположим, что Парсек просто не обрезает это. Может быть, вы вообще не можете найти ничего, что упростило бы работу с пользовательскими текстовыми форматами (может быть, все слишком сложно для чего-то, что должно быть настолько простым). В этом случае вы можете разработать структуру, которая упростит вашу задачу. Не начинайте прямо сейчас, но проведите небольшое исследование. Посмотрите на другие системы, посмотрите на подход, который они выбрали, и найдите несколько веских причин, почему они не справляются. Изучите новый язык программирования или API, который может приблизить вас к вашей цели. Может быть, даже прочитать некоторые статьи, относящиеся к вашей теме. В этом случае ваш проект будет основываться на существующей работе, но поможет решить проблемы, которые вы видели.
Таким образом, идеальная тема - это тема, которая вас уже заинтересовала. Я считаю, что хорошо подходить к информатике с мнением о том, как все должно быть, и в то же время быть открытым для существующих идей.