6 open-source проектов для практики новичка

Оглавление (нажмите, чтобы открыть):

Open Source проекты

Хочу поднабраться опыта в искусстве программирования. Подскажите, будьте добры — в каких проектах
Open Source можно поучаствовать не имея никакого опыта разработок.

25.09.2009, 17:45

Open source. да или нет
Хочу получить совет, ситуацию опишу на таком примере: представим ситуацию, что проект OpenOffice.

Как поучаствовать в open source проекте
Хотел бы поучаствовать в open source проекте. Как правильно начать? Я нашел много проектов здесь.

Поиск open source проектов для совместной работы
Помогите найти опенсорс проекты, в которых можно было бы поучаствовать в качестве начинающего.

Желает ли кто учавствовать в Open Source проекте схемотехнического САПР?
Описания проекта нет в цифровом виде. В САПР хочется заложить следующие возможности 1. создание.

Единомышленники для написания open-source проекта на языке программирования C
Добрый день! На текущий момент являюсь студентом 4-го курса БГТУ, город Санкт-Петербург. В.

Где новичку в программировании найти упражнения и идеи для проектов?

Обучение программированию начинается с маленьких шагов. Понятно, что для начала нужно изучить синтаксис и концепцию выбранного языка. Но не менее важным является и оттачивание мастерства в составлении алгоритмов и решении программистских задач. В этой статье перечислены ресурсы, на которых собраны всевозможные задачи и идеи для собственных проектов.

Здесь можно найти список из более чем 100 идей для проектов, которые вы можете реализовать. Список предназначен для Python, но идеи можно выполнить и в других языках. В нём есть и не совсем серьёзные проекты, и хорошие упражнения для практики. Список крайне рекомендуется к ознакомлению и выполнению новичкам.

А здесь вы найдёте список из 49 клонов игр, которые вы можете написать. Выбор зависит от уровня сложности.

4 октября 2020 – 1 марта 2020, Москва и онлайн, беcплатно

Хотите создать что-то новое? Посмотрите Idea Machine и The Internet Wishlist, где люди публикуют свои пожелания по программам, которые они хотели бы увидеть.

Если хотите практических упражнений, то пройдитесь по данному списку сайтов/ресурсов:

Общие упражнения:

  • Project Euler содержит более 500 математических задач (на теорию чисел, числовых систем и пр.), которые нужно решить, используя программирование (на любом языке).
  • Code Abbey хранит более 200 задач по программированию. За решения 125 из них выдают сертификат, чем мотивируют многих студентов.
  • Rosalind – это ещё один сайт наподобие Project Euler, который предоставляет на выбор более 200 задач по биоинформатике.
  • Codingbat.com дарит упражнения по Java и Python, как для новичков, так и для продвинутых программистов.
  • codegolf.stackexchange.com – сайт, на котором публикуют и обсуждают программистские головоломки.
  • Ruby Quiz – серия головоломок, в которых вас просят написать короткие программы различной сложности. Исходные решения описаны на Ruby, но их можно реализовать на любом языке.
  • Задачи с IT-собеседований — подборка задач на логику и программирование, к каждой есть подробный разбор решения.

Задачи из олимпиад по программированию:

  • UVa Online Judge – коллекция из сотен задач с олимпиад по программированию, с онлайн-системой проверки решений.
  • TopCoder содержит сложные задачи на алгоритмы, собранные годами с разных соревнований. Также несколько раз в месяц проводит олимпиады по программированию.
  • CodeForces похож на TopCoder, но содержит больше задач на соревнованиях и несколько особых фишек, включая «виртуальные соревнования».
  • Timus – то же, что и UVA. Содержит задачи с последних соревнований (мирового и регионального уровня).
  • SPOJ – похож на UVA, с огромным числом языков программирования на выбор.
  • USACO содержит несколько задач на алгоритмы с руководством по их решению.

Под определённые языки:

  • Для Prolog, Lisp и подобных языков посетите P-99 и L-99, наборы из 99 задач для повышения вашей эффективности в данных языках.
  • Python Challenge – объединяет загадки и головоломки, которые помогут вам серьёзно прокачаться в Python.
  • 4Clojure – набор упражнений по программированию, специально разработанных под Clojure, Lisp-подобный язык.

Итак, вам на выбор дан список ресурсов для оттачивания своих навыков программирования. Для начала этого более чем достаточно. Если вы серьёзно проработаете хотя бы один из них, то это уже сделает из вас если не матёрого, то вполне крепкого разработчика, способного уверенно принимать серьёзные вызовы в программировании.

Как участвовать в open source проектах

Я написал это руководство, чтобы помочь любому присоединяться или выкладывать свои (contributing) open source проекты на GitHub. Одна из причин крутости open source — в желании людей помогать друг другу.

Не важно — программируете ли вы много лет или только начали, есть несколько моментов, которые вам нужно знать, чтобы продуктивно использовать GitHub. Гайдов «как» сделать что-то с технической точки зрения на GitHub множество: на какую кнопку нажать, какие команды запустить и подобное.

В начале публикация своей работы на GitHub пугает. Существует мало руководств, посвященных этикету, практическим приёмам и ожиданиям. Этот гайд направлен заполнить пробелы.

Читая этот гайд, помните, что нормально (и даже ожидаемо!) делать ошибки. Не нужно запоминать каждую мелочь. Делайте всё возможное и учитесь в процессе.

Гайд предполагает, что вы работаете с JavaScript-модулем, установленным через npm или bower , который размещён на GitHub. Кроме команд, предназначенных для npm или bower , большая часть этого гайда применима к другим платформам и языкам.

Как задавать вопрос

Перед тем, как спрашивать, поищите и почитайте существующие записи. Загляните в документы, Google, GitHub, и StackOverflow. Если на ваш вопрос уже отвечали раньше много раз, то разработчики, ответственные за проект, возможно, устали повторять ответ.

Если проект маленький, обычно принято задавать вопросы через отправку issue (см. ниже). Если большой — у них скорее всего есть рассылка или IRC-канал, через которые лучше всего обращаться с вопросами. StackOverflow — также очень хороший ресурс. Когда есть возможность, задавайте вопросы на публичном форуме. Таким образом ответить на вопрос сможет кто угодно, а ответ будет доступен любому человеку с таким же вопросом. Если ничего не работает, можно написать в твиттер или на почту поддержки проекта.

Отправка уведомления о баге (issue)

На GitHub уведомления о багах или улучшениях называются «issues».

Об этом спрашивали раньше?

Перед тем как отправить уведомление, нужно поискать существующие issues. Не забывайте проверять и открытые issues и закрытые. Если вы найдёте issue, который подобен вашему, прочтите всё о нём.

Если issue такой же как у вас, вы можете прокомментировать с дополнениями, чтобы помочь ответственным за проект разработчикам (maintainers) сделать отладку. Добавление комментария автоматически подпишет вас на уведомления по почте, что может быть полезным, когда будут появляться обновления, касающиеся этого issue. Если вам нечего добавить, но вы хотите получать уведомления об обновлениях на почту, вы можете нажать кнопку «watch», которая находится под комментариями.

Нет, никто не спрашивал

Если вы не можете ничего найти в существующих issues, не стесняйтесь отправить свой.

Нужно проверить, что указана версия проекта, так же как и версии связанных с ним приложений. Например, удостоверьтесь, что включили номера версий, выводимые командами node —version и npm list . Если вы заметите, что у вас установлена не последняя версия, используйте npm update и подтвердите, что issue всё ещё присутствует.

Разработчики проекта очень приветствуют тщательные разъяснения. Обычно это помогает им быстрее справиться с проблемой и всем это на руку.

Улучшаем код

Лучший способ — сделать «Fork» (копию) репозитория на GitHub. Это создаст экземпляр-клон репозитория в вашем GitHub аккаунте.

Перед тем как улучшать код, стоит сфокусироваться на том, что вы хотите конкретно сделать.

Каждый коммит должен выполнять что-то одно, а на каждый PR (см. ниже) должно быть одно специфическое улучшение.

Forking

  1. Нажмите на Fork в репозитории
  2. Перейдите в ваш форк внутри вашего аккаунта
  3. Сделайте git clone

Исправление и тестирование

Ок, теперь вы готовы к исправлению кода? Не совсем! Перед тем, как начать редактировать, вам нужно создать ветку (branch). Branch — как альтернативная временная линия. Можете почитать о git ветках тут.

Делаем ветку: git checkout -b something

Если вы пытаетесь починить баг, возможно вам стоит назвать ветку «fix-short-description». Если вы добавляете функциональность, «feat-short-description» — хорошее название. Когда вы меняете что-то в коде, возможно, вам захочется испытать его внутри какого-нибудь приложения или более крупного проекта.

В отношении стиля кода — просто пытайтесь имитировать стиль существующего. Не пыхтите над ним слишком сильно. Если владельцам не понравится внешний вид вашего кода, они предложат изменения.

Большая часть проектов пользуется наборами тестов, для уверенности в том, что имеющаяся функциональность кода не меняется из-за вносимых изменений. Это помогает поддерживать софт в стабильном состоянии.

Коммиты и пуш

Использование собственных изменений

Хоть это и не очевидно, вы можете начать использовать код в своих проектах сразу же.

Отправка ваших изменений обратно в проект

Вы сделали изменения, протестировали их с git commit и хотите отправить обратно в проект, чтобы они были включены в следующие версии.

На GitHub это делается с помощью отправки «pull request» (PR).

Отправка pull request

Золотое правило отправки pull request — всё выполнять так, как задумали владельцы проекта. Вы не можете читать мысли ответственных за проект, но можете посмотреть, что они делали в прошлом. Оценка этих действий заранее может повысить вероятность принятия ваших изменений.

Проще выражаясь: попытайтесь сымитировать стиль существующего кода. Обращайте внимание на отступы и стиль фигурных скобок в коде. Содержит стиль ранние инструкции return или там их избегают?

Код — не единственное, на что стоит обращать внимание. Заметьте какое время и формат имеют коммиты сообщений. Некоторые проекты используют настоящее время: «fixes the bug». А некоторые прошедшее: «fixed the bug».

Хороший способ проверить это — использовать git log и прочитать последние коммиты.

Что ещё стоит помнить:

Не меняйте номер версии софта (в package.json или bower.json ). Владельцы проекта сами позаботятся об этом, когда будут выпускать новую версию.

Если проект поддерживается корпорацией, возможно у них есть Contributor License Agreement (CLA) для избежания проблем с законом.

Владельцы проекта могут быть заняты, так что дайте им немного времени. Разработчики, вовлечённые в open source, часто участвуют во множестве проектов. Нередко разработчик получает десятки нотификаций о неисправностях в день, так что будьте терпеливым.

Если они не отвечают в течение 2 недель, вы можете прокомментировать это, чтобы вынести тему наверх. Чего-нибудь, вроде, «ping @ProjectMaintainer» обычно достаточно. Если даже после этого от них ничего не слышно, электронная почта — хороший способ выйти на контакт.

Команда может ответить тремя возможными способами:

  1. Всё сливается (merge). Ура!
  2. Ответственный за проект просит вас исправить что-то в PR перед тем, как принять вас. Мы обсудим это ниже.
  3. PR закрывается, а ваши изменения не добавлены. Обычно ответственные за проект дают небольшое разъяснение. Если от вас была новая фича, возможно, уже существует способ заставить код делать то, что вы хотите, вы просто этого не заметили. Если исправление бага, возможно, они хотят решить проблему иначе. Не позволяйте трудностям отбить у вас желание продолжать.
Исправление issues в pull request

Когда команда просит внести изменения в PR, новички ошибочно закрывают существующий и создают новый. Не стоит так делать! Существующий PR легко обновляется.

Во-первых, внесите изменения в соответствующие файлы. Добавьте файл с помощью git add , как вы уже делали:

git add some-file

Затем можете изменить свой предыдущий коммит вот так:

git commit —amend

Эта команда помещает ваши поэтапные изменения в предыдущий коммит.

Чтобы обновить коммит в вашем PR, вам нужно выполнить force push:

Команда —force сообщает git , что вы хотите перезаписать предыдущий коммит.

Другая распространенная ошибка — создание нескольких коммитов, вместо внесения изменений в один.

Мой PR был закрыт, но я хочу использовать свои изменения!

Хорошие новости: даже если ваше изменение не будет принято в репозиторий контрибьютора, вы в любом случае сможете его использовать. npm позволяет установить из репозитория GitHub

А ещё вы можете использовать свои изменения и одновременно видеть изменения исходного кода репозитория. Обычно это называется «maintaining a fork» (поддержка копии) проекта. Для этого потребуется добавить ещё один remote.

Создание своего проекта

Перед тем как начинать свой проект, пожалуйста хорошо изучите существующие — нет ли сильно похожего на ваш.

Поиск по существующим проектам

Иногда вы находите старый проект, который больше не поддерживается, но он решает ваши проблемы. Как делать форк смотрите выше.

Бонус: Составляйте список заметок по ходу работы. Если найдете понравившийся модуль, можете использовать заметки, чтобы улучшить секцию «See Also» в тех модулях, которые вам встретились, пока вы вели поиск, отправив им PR. Если не найдёте нужный модуль и не создадите свой собственный, можете превратить эти заметки в секцию «See Also» для своего модуля!

Начало проекта

Начало нового open source проекта должно быть крайней мерой. Почему?

Практический опыт: Не публикуйте ничего в npm пока у проекта не будет обоснованной минимальной функциональности.

Помните: вы всегда можете использовать npm link или npm install user/repo

Название проекта

Если ваш модуль — это плагин, обычно лучший способ — сделать для него префикс, в зависимости от того для чего этот плагин. В некоторых проектах есть гайды или соглашения как это делать. Например компоненты AngularJS обычно называются «angular-something», плагины Gulp —»gulp-something», а плагины Karma — «karma-something».

Мастер Йода рекомендует:  Как полюбить тестирование ПО и зачем это делать

Пишем Readme

Хороший readme должен состоять из следующих частей:

  • Объяснение, которое умещается в одно предложение.
  • Установка (Install)
  • Смотрите так же (See Also)

Это правда важно. Если существуют другие модули с аналогичной функциональностью, ваш модуль должен объяснять, чем он отличается от других. Эта секция должна быть связана с другими модулями. Это поможет другим решить когда использовать ваш.

Пишем тесты

Есть много способов писать тесты. Их важность в том, что если они провалятся, процесс будет существовать с кодом ошибки. Вы можете использовать для этого assert или if (condition) < process.exit(1) >.

Бонус: вы используете инструмент CI вроде TravisCI.

Публикация в npm

  1. Вы написали README.md , который объясняет что делает модуль. Он должен включать секцию See Also , которая ведёт на другие подобные пакеты.
  2. Вы написали тесты. Тесты должны запускаться с помощью npm test , и они должны проходить.

Бонус: Найдите кого-нибудь, кто будет содействовать в поддержке проекта. Отлично, если кто-то может помочь делать ревью issues и мёрджить PR. Невозможно угадать, как много свободного времени у вас будет в будущем. Обидно иметь непочиненные баги или несмёрженные PR в полезном проекте.

Этикет

Обычно люди покидают сообщества, которые кажутся им недоброжелательными. Чтобы быть уверенным, что все ощущают гостеприимство, важно относиться ко всем мягко и с уважением.

Чаще всего — это не проблема. Но иногда у разработчиков случаются срывы, эмоции зашкаливают, они оскорбляются.

Дальше я выделил несколько тенденций, которые наблюдал сам и способы смягчить подобные ситуации.

Предполагать, что все делают всё возможное

эта задача должна быть очевидной для решения! почему её никто не решил?

Возможно у владельца проекта есть другие важные дела в жизни, которыми ему нужно заниматься. Ставить в приоритет жизненные задачи — не значит быть лентяем. Здоровье, счастье и благополучие реального человека на другом конце интернета намного более важны, чем любой баг.

Одна из мощных сторон open source как раз в том, что вы всегда можете сделать копию и отладить ошибки сами.

вы очевидно не понимаете, о чём я говорю!

Такой тип комментария особенно отталкивает новичков. Совершать ошибки должно быть абсолютно приемлемым.

Это проблематично ещё и потому, что на окружающих участников тоже распространяется чувство вины. Возможно, вы могли бы объяснить недочёт понятнее.

Абсолютно нормально злиться из-за бессилия. Программирование — это одна из самых сложных деятельностей человека. Но, несмотря на это, нужно не упускать точки зрения других людей. Сообщество намного более ценный компонент, чем код, а быть уважительным важнее, чем быть правым.

Заключение

Спасибо за то, что прочитали. Надеюсь этот гайд поможет вам получить то, чего вы хотели от open source. А применить полученные знания помогут open source проекты «Хекслета»:

  • Hexlet Резюме. Сервис для соискателей и эйчаров, работает на Ruby on Rails.
  • Hexlet Interview. Проект на Node.js для специалистов, которые хотят пройти публичное собеседование или попрактиковаться в проведении собеседований.
  • Hexlet СИКП. Проект на Laravel. Это трекер прохождения курсов СИКП.
  • Hexlet Correction. Проект на Java. Сервис для отправки сообщений об ошибках и опечатках владельцам сайтов.
  • Codebattle. Площадка для поединков между программистами. Используются Clojure и Elixir, а также JS (React, Redux) на фронтенде.
  • Code Basics. Основы программирования для начинающих. Можно создавать обучающие курсы для новичков.

Фронтендерам на заметку: для вас найдутся задачи в каждом из проектов.

6 open-source проектов для практики новичка. #[email protected]

6 open-source проектов для практики новичка в программировании

Практика в open-source проектах поможет при составлении портфолио для трудоустройства. В статье также приведены рекомендации по изучению этой тематики.

Комментарии (9)

Игорь Ильин

всегда стремали эти тентакли гитхаба

Delwin One

Я думал это котёнок.

Платон Платонов

Игорь Новиков

Delwin, котенок с тентаклями жеж, все правильно

Евгений Мартынов

Вот истоки истоков:

Максим Гугаев

И как вы предлагаете без особых навыков заниматься open-source в известных проектах, мне кажется даже если назойливо попросится — пошлют лесом, а писать свои дополнения не имея хорошего опыта — дичь!?

Юрий Иванов

Максим, форк — pull request не? главное говна не коммитить

Максим Гугаев

Yury, В том-то и проблема, что пока не будет опыта и соответственно и портфолио ты автоматом ничего реально полезного для данного проекта не напишешь

Allayarov Azizbek

О проекте

Данный сайт является агрегатором контента из популярных социальных сетей. Добавление новых материалов производится в автоматическом режиме. Администрация проекта не несет ответственности за их содержание.

Opensource проекты для получения опыта [закрыт]

Просматривая вакансии на Java программиста в интернете, можно заметить, что даже для джуниура почти везде нужно 1-2 года опыта работы.

Много раз читал, что для получения реального опыта программирования на Java можно принять участие в разработке какого-нибудь опенсорс проекта(забесплатно :D). Скажите пожалуйста, как найти такие проекты и предложить себя в качестве кандидатуры 🙂

В теории я уже достаточно хорошо разобрался : в Java SE и основах Java EE(Servlets, JSP, JSF), знаю основы SQL, HTML, CSS, JavaScript.

Закрыт по причине того, что необходимо переформулировать вопрос так, чтобы можно было дать объективно верный ответ участником Nicolas Chabanovsky ♦ 29 мар ’16 в 6:26 .

Вопрос порождает бесконечные прения и дискуссии, основанные не на знаниях, а на мнениях. Для получения ответа перефразируйте ваш вопрос так, чтобы на него можно было дать однозначно правильный ответ, либо удалите вопрос вовсе. Если вопрос можно переформулировать согласно правилам, изложенным в справке, отредактируйте его.

1 ответ 1

даже для джуниура почти везде нужно 1-2 года опыта работы.

Это еще что. Мне попадались вакансии Senior Ruby Developer с 6+ годами опыта, хайлоадом и всем таким, не старше 23 лет. )

По сабжу. Если немного покурите Spring MVC, Hibernate и JQuery, то можете попробоваться на один из проектов JTalks. Ребята разрабатывают набор компонент для развертывания форумов/блогов/ всего такого с тесной взаимной интеграцией. Первый релиз уже состоялся и можно посмотреть что получилось, но работы еще много. Опыт командной разработки для новичка (да и не только) будет отличный.

Open Source проекты в резюме:

Open Source проекты в резюме: 5 причин писать открытый код

Open Source проекты дадут вам знания и знакомства. Рассказываем о преимуществах открытых проектов, и как использовать их в резюме.

Вас также могут заинтересовать:
6 open-source проектов для практики новичка
https://proglib.io/p/open-source-for-novice/
8 книг об open source для обучения программированию
https://proglib.io/p/8-open-source-books-for-beginners/

Статья удалена
Open Source проекты в резюме: 5 причин писать открытый код
Библиотека программиста

40 идей сторонних проектов для программных инженеров

Перевод статьи Тэш Постоловски «40 Side Project Ideas for Software Engineers».

Один из главных способов развития навыков и повышения своих шансов устроиться на работу программным инженером это работа над сторонними проектами. Проекты могут быть самыми разными: от проектов с открытым исходным кодом, вспомогательных инструментов и сценариев до интересных игрушек.

Хотя создается впечатление, что некоторые из наших коллег постоянно трудятся над новыми сторонними проектами, для других это не так уж и легко. Мы хотим работать над сторонним проектом, но пытаемся найти хорошую идею.

По моему опыту, это случается когда мы подсознательно искусственным образом себя ограничиваем. Например, мы можем намеренно ограничивать виды проектов, которые воспринимаем как “стоящие”.

Поднимая планку слишком высоко – вроде цели создать успешную, популярную и оригинальную open source библиотеку – мы отнимаем у себя возможность получить удовольствие и научиться чему-нибудь на менее амбициозных, но все равно достойных сторонних проектах.

В этой статье я хочу помочь вам в борьбе со «ступором», предложив 40 идей сторонних проектов, которые каждый программный инженер может начать в выходной. Здесь нет ударения на проектах, которые изменят мир. Вместо этого здесь есть интересные проекты, которые позволят вам добавить что-то к своему портфолио и сделают вас лучшим разработчиком.

Сторонние проекты, связанные с информатикой

Эти проекты подходят инженерам, пытающимся расширить свои основные знания по информатике. Они помогут вам узнать больше об отдельных аспектах работы с компьютером, таких как передача файлов и проектирование операционных систем. В частности, эти проекты могут быть полезны для разработчиков-самоучек, которые больше сконцентрированы на практических навыках, чем на основах информатики.

  1. FTP клиент (предлагаемая реализация: web, CLI или десктопное приложение). Постройте простой FTP-клиент. В качестве дополнительной задачи сделайте поддержку безопасной передачи файлов (secure file transfer).
  2. HTTP-сервер (предлагаемая реализация: любой язык программирования, над которым вы хотите поработать). Для глубокого понимания HTTP постройте HTTP-сервер. Есть много доступных руководств, которые могут помочь вам в этом процессе.
  3. Постройте простую операционную систему (предлагаемая реализация: любой язык программирования, над которым вы хотите поработать). Это технически сложный проект, который поможет углубить ваше понимание работы компьютера и операционных систем. Возможно, вы захотите начать с бесплатной книги с интересным названием: «Operating Systems: From 0 to 1».
  4. Постройте веб-скрапер (предлагаемая реализация: любой язык программирования, над которым вы хотите поработать). Создайте инструмент, принимающий URL в качестве input и возвращающий контент в виде HTML или XML.
  5. Bandwidth monitor (предлагаемая реализация: инструмент обновления CLI в реальном времени). Создайте инструмент для отслеживания количества скачиваемых и загружаемых в интернет данных. Пускай ежемесячно присылает вам отчет на email. Для дополнительной нагрузки – прогноз пикового времени использования.
  6. Осуществление шифрования (предлагаемая реализация: любой язык программирования, над которым вы хотите поработать). Создайте инструмент, принимающий текстовую строку в качестве input и зашифровывающий ее, например, с помощью шифра Цезаря.
  7. Создайте downtime-сигнализатор (предлагаемая реализация: приложение, подключенное к Twilio API для отправки текстовых сообщений). Создайте приложение, принимающее URL как input и отсылающее вам текстовое сообщение, когда запрос к URL возвращает другой код ответа, чем 200 (OK).

Сторонние проекты, связанные с личными финансами

Эти проекты помогут вам решить практические задачи (лучше управлять своими финансами), а также улучшат ваши навыки в программной инженерии.

  1. Калькулятор прибыли и трекер ( предлагаемая реализация: CLI, веб или мобильное приложение). Создайте калькулятор, который сможете использовать для отслеживания ежемесячного роста и снижения своих доходов. Вы можете руководствоваться чем-то вроде net worth worksheet от Чральза Шваба. Возможное расширение: пусть он отсылает вам отчет за предыдущие 12 месяцев 01 января каждого года.
  2. П рогноз налогов ( предлагаемая реализация: веб-приложение). Это будет особенно полезно, если вы занимаетесь программной инженерией на фрилансе. Создайте инструмент, принимающий в качестве входных данных ваши заработки и выдающий ожидаемую сумму налогов, которую нужно будет уплатить в конце финансового года. Сделайте его достаточно умным, чтобы он мог учитывать периоды большего или меньшего спроса на ваши услуги.
  3. Поиск сделок ( предлагаемая реализация: веб-приложение с мобильными уведомлениями). Создайте простое веб-приложение, уведомляющее, когда желанный для вас товар будет выставлен на продажу по хорошей цене. Вы можете использовать веб-скрапер для извлечения страницы продукта и уведомления вас об изменении цены.
  4. Отслеживание расходов ( предлагаемая реализация: веб- или мобильное приложение). Создайте простой интерфейс, который вы сможете использовать для добавления и разбивки своих расходов по категориям. Генерируйте ежемесячный отчет, основанный на входящих данных, и напишите пользовательские уведомления вроде «тратишь слишком много на кофе… как всегда».
  5. Калькулятор финансовой независимости ( предлагаемая реализация: веб-приложение). По существу, финансовая независимость это как можно большее сохранение и вкладывание доходов (инвестиции), что позволяет не нуждаться в работе для получения денег. Хотя многие финансово независимые люди продолжают работать, они могут позволить себе работать над тем, чем им нравится заниматься, а не тем, за что больше платят. Постройте инструмент для подсчета того, насколько вы далеки от финансовой независимости, основанного на ваших текущих сбережениях, инвестициях, доходах, пенсионных счетах и расходах. Примеры: FIREcalc, cFIREsim.
  6. «Разбиватель» счетов ( предлагаемая реализация: мобильное приложение). Постройте простой инструмент, который поможет вам и вашим друзьям делить счет, когда вы вместе обедаете.

Игры и симуляторы

Я знаю, что большинство программных инженеров очарованы миром разработок игр, графики и симуляторов, но не имеют достаточно опыта в этом. Эти проекты достаточно маленькие чтобы вы могли заглянуть в этот мир и при этом не откусить больше, чем можете прожевать.

  1. Генератор случайных имен ( предлагаемая реализация: CLI, веб- или мобильное приложение). Постройте генератор случайных имен (пример), создающий уникальные названия на лету, основываясь на алгоритме. Используйте приемы машинного обучения чтобы помочь натренировать программу с примерным набором данных из имен, похожих на те, что вы хотите генерировать. Или создайте собственные лексические правила генерации имен. Например, алгоритм генерации имен, вдохновением для которого послужил «Рассказ служанки», может иметь условие, что имена Служанок должны начинаться с «Оф», а оканчиваться на случайное мужское имя, например, Офпитер.
  2. И гра «Жизнь» (Conway’s Game of Life) ( предлагаемая реализация: любая платформа, способная на графический рендеринг в реальном времени). Игра «Жизнь» симулирует жизнь простых клеток, которые подчиняются алгоритмическим законам. Это видео поясняет, как работает игра, и включает пример возможного результата:

  • Процедурно генерируемый создатель карт ( предлагаемая реализация: приложение на основе браузера). Создайте браузерное приложение, позволяющее процедурную генерацию карты местности на основе случайного начального числа. Карта может быть такой простой или сложной, как вы хотите. Этот проект – хорошая возможность изучить процедурную генерацию.
  • Генератор персонажей ( предлагаемая реализация: браузерное, мобильное приложение, CLI). Создайте инструмент, позволяющий случайно генерировать подходящие персонажи для вашей любимой ролевой игры, как настольной (вроде Pathfinder), так и видео-игры (вроде «Divinity: Original Sin»).
  • Interactive fiction (предлагаемая реализация: CLI). Интересный способ войти в разработку игр без необходимости волноваться о графических ресурсах. Interactive fiction создает мир для игрока с помощью текстовых описаний. Dreamhold – хороший пример Interactive fiction с полезной командой «help».
  • Сторонние проекты, связанные с искусственным интеллектом

    Применение ИИ в ежедневной программной инженерии растет не по дням, а по часам. Вторгнуться в мир искусственного интеллекта сейчас легче чем когда-либо.

    1. Идеальный движок для игры в крестики-нолики (предлагаемая реализация: программа CLI). В качестве прекрасного первого ИИ-проекта попробуйте написать движок, который нельзя победить в игре в крестики-нолики. Вы можете достичь такого результата, реализовав эту стратегию, которая делает ничью худшим исходом игры.
    2. Шахматный движок (предлагаемая реализация: любой язык программирования, над которым вы хотите поработать ). Попробуйте написать движок, способный играть в шахматы с человеком, используя GUI, совместимый с Universal Chess Interface, например, Xboard. В качестве примера посмотрите Stockfish. Чтобы упростить задачу вы можете сфокусироваться на поведении только какой-то части, например, коней.
    3. Чат-бот (предлагаемая реализация: веб-приложение). Часть лучших умов человечества сейчас заняты реалистично отвечающими чат-ботами. Это ужасно сложная задача, но если сузить рамки для вашего чат-бота, у вас будет сторонний проект на вечера и выходные. Создайте чат-бот, выдающий реалистично звучащие ответы по теме, которой вы увлекаетесь: ваша любимая музыкальная группа, видеоигра, спортивная команда, ТВ-шоу. Используйте уже существующую библиотеку, такую как ChatterBot.
    4. Определитель спама (предлагаемая реализация: любой язык программирования, над которым вы хотите поработать ). Постройте инструмент для определения, является ли письмо спамом, основываясь только на содержимом. Вы можете воспользоваться этим публичным набором данных из исследования Enron для тестирования вашего определителя спама.
    Мастер Йода рекомендует:  За шутку против президента сайт Compromat.ru подвергся DDoS атаке

    Сторонние проекты, связанные с развлечениями

    Это проекты для программных инженеров, которые хотят работать над чем-то интересным и беззаботным.

    1. Поиск времени показа фильмов ( предлагаемая реализация: веб- или мобильное приложение с смс-уведомлениями или отправкой е-мэйлов). Постройте программу, которая будет уведомлять вас с помощью смс или email о времени показа потенциально интересных для вас фильмов в вашем любимом кинотеатре. Представление об «интересном фильме» может быть получено с помощью машинного обучения (если вы смотрите достаточно фильмов для получения хороших тренировочных данных) или написанного вручную алгоритма. Например, для построения программы, которая будет уведомлять вас о фильмах в жанре научной фантастики с рейтингом IMDB 7.0 и выше, или фильмах с Эми Адамс, фильмах со средним рейтингом 8.0 или выше, можно использовать Open Movie Database API вместе с HTML-парсером вроде BeautifulSoup.
    2. Б локировщик спойлеров ( предлагаемая реализация: расширение браузера). В современном мире спойлеры ваших любимых фильмов, особенно таких популярных, как «Игра престолов», могут настигнуть вас повсюду (в социальных сетях/интернете/бачках с питьевой водой). Создайте расширение браузера, удаляющее все упоминания о вашем любимом шоу с загружаемых страниц или заменяющее их картинками с котятами.

    З абавные сторонние проекты

    Все эти проекты разные, от логов сенсорных данных до поиска новых фонов рабочего стола для вашего компьютера. Их роднит только то, что они занимательны, а некоторые из них заставят вас познакомиться с интересными API.

    1. Pixel art генератор ( предлагаемая реализация: любой язык программирования, над которым вы хотите поработать ). Постройте инструмент, принимающий изображение в качестве входящих данных и преобразует его в pixel art на выходе. Если хотите улучшить свои навыки, касающиеся фронтенда, генерируйте конечный pixel art используя CSS.
    2. Инструмент, предлагающий музыку ( предлагаемая реализация: постройте враппер для Spotify API). Создайте инструмент, отслеживающий музыку, которую вы слушаете, и генерирующий плейлист сходного качества, но из песен, которые вы прежде не слышали. Spotify API предоставляет все инструменты, необходимые для извлечения данных о прослушанных композициях и для создания плейлиста, а движок рекомендаций – за вами!
    3. Регистратор температуры ( предлагаемая реализация: Raspberry Pi, датчик температуры, веб-приложение). Подключите ваш Raspberry Pi к датчику температуры и отсылайте температурные данные из вашего дома на веб-приложение, которое сохранит их в базе данных или обновит CSV-файл. Для получения бонусных очков сделайте еженедельный отчет по температуре, присылаемый вам на email. Другие проекты Raspberry Pi: домашняя автоматизация, домашняя безопасность.
    4. Приложение для «микрообучения» ( предлагаемая реализация: мобильное или веб-приложение). Постройте приложение, высылающее вам ежедневно одну страницу по теме, которую вы хотите изучить. Это может быть случайная страница из Википедии, из документации по React, о букве кандзи или страница из CIA World Factbook.
    5. Slack-бот ( предлагаемая реализация: Slack API). Если вы или ваша команда используете популярное чат-приложение Slack, постройте бот, облегчающий какие-то аспекты вашей жизни. Идеи: бот заказа кофе, бот, ежедневно докладывающий о числе коммитов, сделанных в репозиториях вашей команды, или напоминалка по какой-то теме.
    6. Обои рабочего стола ( предлагаемая реализация: Unsplash API, язык сценариев для вашей ОС). Постройте приложение, которое будет ежедневно обновлять обои вашего рабстола.

    З адачи на написание кода

    Вместо создания проекта с нуля для улучшения ваших навыков можно взять сборники задач на написание кода. Если вы хотите поработать над определенными проблемами или новы м язык ом программирования, это хорошие варианты.

    1. Advent of Code ( предлагаемая реализация: любой язык программирования, над которым вы хотите поработать ). Задания в Advent of Code появляются ежегодно в преддверии Рождества. Они включают множество занимательных задач, которые могут помочь вам подтянуть язык программирования, который вы изучаете или с которым хотите поработать. Задачи за 2015, 2020 и 2020 год все еще доступны.
    2. Kaggle’s Titanic Challenge ( предлагаемая реализация: Python или R). Kaggle предлагает захватывающее задание, знакомящее вас с основами машинного обучения с помощью Python или R: использовать настоящий набор данных о регистрации пассажиров «Титаника» для предположений, кто из пассажиров скорее всего пережил катастрофу.
    3. Project Euler ( предлагаемая реализация: любой язык программирования, в котором вы хотите попрактиковаться ). Задания в Project Euler посвящены изучению союза математики и программирования. Используйте инструменты программирования для решения разнообразных математических задач.

    Сторонние проекты, связанные с обыденностью

    Эти сторонние проекты имеют практическое назначение: они помогают справляться с некоторыми аспектами вашей ежедневной жизни. Поскольку они решают простые проблемы реального мира (вроде выбора обеда), эти решения по вашему желанию могут быть как простыми, так и сложными.

    1. Выбор обеда ( предлагаемая реализация: CLI, мобильное или веб-приложение). Если вы работающий программный инженер, вы, должно быть, сталкивались с самым сложным вопросом в разработке программ… «куда пойти поесть?». Ваш инструмент для выбора обеда призван дать ответ на этот вопрос. Он может быть супер-простым и делать случайный выбор из известного вам списка опций или более сложным – извлекать данные из Google Reviews и учитывать расположение, цены и тип кухни.
    2. Планировщи к свиданий ( предлагаемая реализация: мобильное приложение). Самое сложное в том, что касается свиданий и длительных отношений, это решение, куда пойти на свидание. Постройте инструмент, просматривающий обзоры ресторанов, календари событий и собирающий другие данные для выдвижения идей.
    3. Инструмент для упрощения вашей электронной переписки ( предлагаемая реализация: скрипты, подключенные к почтовому серверу). Если мы с вами похожи, вы еженедельно получаете слишком много писем и они накапливаются в вашем почтовом ящике. Вместо того чтобы отписываться от них от всех в припадке гнева, постройте инструмент, который будет компилировать их в одно письмо и отправлять вам его раз в неделю.
    4. Напоминалка «Возьми зонтик» ( предлагаемая реализация: мобильное приложение). Постройте простое мобильное приложение, которое по утрам будет присылать вам на телефон уведомление о том, что нужно взять с собой на работу зонтик (например, если в вашей местности ожидается дождь).
    5. Отслеживатель коллекций ( предлагаемая реализация: мобильное или веб-приложение). Постройте инструмент для отслеживания чего-то, что вы собираете. Вы можете следить за ценой предмета, годом изготовления, состоянием, местоположением.

    Сторонние проекты, связанные с данными

    Эти проекты улучшат ваши способности по работе с данными. Программные инженеры работают со все возрастающим количеством данных. Эти проекты помогут вам научиться уверенно сравнивать, парсить и анализировать данные.

    1. Создайте и автоматически обновляйте набор данных ( предлагаемая реализация: веб-скраппер на входе и CSV на выходе). Постройте инструмент, автоматически создающий и обновляющий набор данных, касающихся чего-то, что вас интересует. Рекомендуемые наборы данных: статистика по вашей любимой спортивной команде, полеты в направлении, куда и вам бы хотелось отправиться, метеорологические данные региона, где вы живете. Самое главное, что этот набор данных должен нуждаться в регулярном обновлении по мере генерации новых данных, и это должно осуществляться автоматически. Например, когда результаты вашей спортивной команды публикуются на сайте, данные должны автоматически скрапиться и добавляться к вашему набору данных.
    2. Вступите в соревнование по науке о данных ( предлагаемая реализация: R или Python). На Kaggle есть много соревнований по науке о данных, оперирующих наборами данных из реального мира и имеющих огромные денежные призы. Перед вами будут стоять реальные проблемы вроде того, как определить отравляющие онлайн-комментарии, предсказать посетителей в ресторане или распознавать объекты из космоса.

    Поделитесь своим сторонним проектом

    Одна из самых сложных вещей в работе над сторонними проектами – получить одобрение кого-то кроме вас сами, вашей половинки и вашей кошки Милли. Воспользуйтесь комментариями как возможностью поделиться своим проектом с другими и расскажите,

    • Что было сложнее всего в работе над этим проектом?
    • Что вы узнали, занимаясь этим проектом, чему научились?
    • Что бы вы посоветовали тем, кто хотел бы начать похожий проект?

    6 open-source проектов для практики новичка

    где имеются задачи для начинающих программеров.

    Вопрос: где ещё в Open Source есть здачи для начинающих которые можно преобразовать к лабораторным работам?

    1. HECTEPOB , 20.06.2005 19:58
    V.M.Kotov
    Интересная идея! Вот бы я када учился у нас такой препод был! Огромный респект!
    2. dozen , 20.06.2005 20:47
    V.M.Kotov

    цитата: Вопрос: где ещё в Open Source есть здачи для начинающих которые можно преобразовать к лабораторным работам?

    Багфиксинг любого проекта. Залезаешь на ихнюю Bugzilla/JIRA/whatever, выбираешь баги (на глазок по сложности), раздаешь студентам, шлешь патчи (опционально). Баги хороши тем, что задача небольшая, но в то же время — реальная.

    цитата: V.M.Kotov:
    Есть такая мысль вместо типичных лабораторных работ заставить студентов ковырять OpenSource проекты****
    Вопрос: где ещё в Open Source есть здачи для начинающих которые можно преобразовать к лабораторным работам?

    3. nenin , 20.06.2005 23:51

    цитата: V.M.Kotov:
    Есть такая мысль вместо типичных лабораторных работ заставить студентов ковырять OpenSource проекты.

    Боюсь, это будет медвежья услуга движению OpenSource. Во первых, «начинающий программист» это чаще всего слон в посудной лавке — после него замучаешься переделывать. Более того, «начинающий программист», которого загнали на работу из под палки (да еще и бесплатно) к тому же слон злонамеренный: в общем сломает больше, чем починит.

    Хотите своих студентов чему-нибудь научить — оставьте их в покое (захотят — сами научатся). Если Вам преподавательская сознательность не позволяет — тогда уж давайте им реальные деньги за хорошую работу. Простейший пример — что-нибудь типа eLance: и задачи обычно не большие, и деньги платят, и реальный (а не абстрактный) опыт, и, самое главное, ответственности практически никакой.

    4. Диктатор , 21.06.2005 02:37
    5. Scrudge , 21.06.2005 10:25
    Диктатор

    Во первых, «начинающий программист» это чаще всего слон в посудной лавке — после него замучаешься переделывать. — ну, ну а на что тестирование? Если изменение, не стабильно или работает неправильно — его никто не включит в рабочий проект. Open Source тем и хорош, что твой код может посмотреть любой и, при надобности подправить.
    V.M.Kotov
    Вопрос: где ещё в Open Source есть здачи для начинающих которые можно преобразовать к лабораторным работам? — лабораторная работа, обычно предпологает быстрый конкретный результат в конце работы, который должен быть соответствующим образом оценен. Для этого требуется типичная задача. Вряд ли это возможно в рамках конкретного open source проекта. А вот заставить студентов ковырять код в течении семестра, со сдачей зачета/проекта — это более возможно. ИМХО.

    6. Chippy2003 , 21.06.2005 10:38
    V.M.Kotov
    http://code.google.com/summerofcode.html

    Диктатор
    медвежья услуга движению OpenSource
    Коммитить изменения в проект будет вовсе не обязательно.

    7. hydrolizer , 21.06.2005 10:46
    Scrudge
    ну, ну а на что тестирование?
    здесь, я думаю, речь шла не о работоспособности, а о структуре кода, и возможности дальнейшей его поддержки
    8. bobah_ly , 21.06.2005 10:50
    V.M.Kotov

    В штатах как я понял поступают немного по-другому. Организовывают Open Source проект в рамках университета. Обычно получаются очень наукоемкие проекты, на которых многие защищаются.
    В качестве лабораторок для начинающих можно устроить изучением алгоритмов, написанных более продвинутыми товарищами (ну или просто STL . Более продвинутые занимаются разработкой/доработкой проекта.

    9. Dilon , 21.06.2005 10:53
    Chippy2003 там уже началась работа и сроки до конца лета
    10. V.M.Kotov , 21.06.2005 11:04
    dozen
    Принято. Но вопрос несколько шире — кого стоит поддержать, например нет желания поддерживать пентагон даже опосредовано т.е. лучше вообще что-нибудь с отечественными корнями. Конкретизируйте
    nenin
    Правила в т.ч кодирования для gcc я прочитал там объём материала — на среднюю методичку, перевести и заставить выполнять — дело техники

    цитата: Боюсь, это будет медвежья услуга движению OpenSource. Во первых, «начинающий программист» это чаще всего слон в посудной лавке — после него замучаешься переделывать. Более того, «начинающий программист», которого загнали на работу из под палки (да еще и бесплатно) к тому же слон злонамеренный: в общем сломает больше, чем починит.

    Во первых c OpenSource ничего страшного не случится — защита от дураков там имеется. Во вторых стимул у студента и так есть — лабораторка->зачёт->экзамен иначе армия

    Scrudge
    Пофиксить 5-7 багов за семестр — по-моему реально.

    Добавление от 21.06.2005 11:07:

    bobah_ly
    Понятно что надо идти к своему проекту — но для этого надо фактически менять 90% преподавательского сотава — а откуда его взять — надо вырастить, а как выростить если нет своих проектов — учиться на чужих.

    11. Scrudge , 21.06.2005 11:36
    V.M.Kotov

    кого стоит поддержать — например, у OpenSource сообщества есть проблемы с издательскими системами (настольными), реальной альтернативы InDesign и Quark Xpress нет (Scribus не всчет, он еще слишком слаб). Имеется куча просмотрщиков, но нет ни одного сопоставимого по возможностям с IrfanView или ACDSee. Аналога HyperSnapDX, нормального, тоже нет. Нет ни одного файлового менеджера сопоставимого по мощности с Total Commander или Frigate. Конкурента (подчеркну, нормального) ABBYY Lingvo тоже нет. Вообщем — вариантов море!

    например нет желания поддерживать пентагон — а какая разница если это GPL, например? Все равно все смогут использовать и пентагон в том числе.

    лучше вообще что-нибудь с отечественными корнями — а вот этого не так много, к сожалению. Из крупных проектов, лично я, на вскидку могу припомнить только Quanta+ (редактор языков разметки и скриптовых использующихся в Web аналог Macromedia Dreamweaver), да и то ребята ее разрабатывающие перешли к разработке коммерческой версии, а Open Source версию поддерживают буржуи.

    Пофиксить 5-7 багов за семестр — по-моему реально. — maybe, maybe.

    12. Chippy2003 , 21.06.2005 11:45
    Dilon
    Как список дружественных к студентам проектов все равно сойдет
    13. wolf69 , 21.06.2005 15:23
    V.M.Kotov

    Ну вот есть например такой проект
    http://prawda.newmail.ru

    Ни строчки кода внести не позволю, но наиграетесь вволю.
    Начиная от простейших вещей типа подсчета частотности слов в «Войне и мире»,
    кончая такими вещами как составление переводных и семантических словарей с помощью нейронных сетей.
    А еще можно все это добро перенести в ПалмОС

    14. Scrudge , 21.06.2005 15:33
    wolf69

    Ни строчки кода внести не позволю — интересно, что это за Open Source такой тогда?

    15. wolf69 , 21.06.2005 15:57
    Ну ты посмотри на страницу.
    Там С-кода 1 мегабайт, грамматик тоже где-то 1 мег и 30 мегабайт словарей.
    Так вот переводящая программа остается за тем человеком, кто ее сейчас пишет.
    А вот всякие вещи, которые вокруг — лингвистические исследования можно отдать студентам.
    Программы их использоваться. ну может быть и будут, но не пользователем а разработчиками.
    Просто их главный выход — лингвистическое знание, оно вообще не в виде программ.
    Программы — это просто инструмент, «усилитель интеллекта».

    Ну и вообще — кому сейчас нужны программы 10 летней давности? А вот словари не теряют актуальности
    по сто лет. А еще есть такие грамматики Хомского, которые первый раз были открыты (держись за стул)
    аж в 5 веке до нашей эры.

    16. V.M.Kotov , 21.06.2005 17:28
    wolf69
    Спасиб за ссылку, но инересуют проекты с более развитой инфраструктурой, чтобы студенты привыкали к тому как надо работать в большом проекте с CVS и т.п.

    А про словари и грамматики Хомского удалите плз — к теме отношения — ноль

    17. Scrudge , 21.06.2005 17:32
    V.M.Kotov

    А про словари и грамматики Хомского удалите плз — к теме отношения — ноль — Да, нет. Товарищ — таким образом решил рабочей силой бесплатной обзавестись.

    18. dozen , 21.06.2005 17:50
    V.M.Kotov

    цитата:
    Принято. Но вопрос несколько шире — кого стоит поддержать, например нет желания поддерживать пентагон даже опосредовано т.е. лучше вообще что-нибудь с отечественными корнями.

    Ну, меня поддержите. а, звиняйте — тут какой-то департмент в вооруженных силах мой код юзает, а вы же пламенные патриоты, неутомимо сражающиеся с потенциальным противником. тогда. тогда. вот ведь, блин, а тогда некого! DOD — крупнейший заказчик всего и вся, и почти любой OS-проект где-нибудь в DOD да используется.

    Может, отделите котлеты от мух? Хотите студентов программить научить — учите. Хотите пушечным мясом сделать — делайте. Но определитесь наконец.

    цитата: V.M.Kotov:
    *** но инересуют проекты с более развитой инфраструктурой, чтобы студенты привыкали к тому как надо работать в большом проекте с CVS и т.п. ****

    Я бы на большой проект (по настоящему) сразу не замахивался. Там ресурсы нужны, однако. Попробуйте что-нибудь типа Мозиллы стащить и помотреть. А вот с инфраструктурой- то это да.
    ИМХО:
    1. Можно попробовать поработать с Parynya ( http://www.parinyasoft.com/ ) Но я про OpSrc что-то у него не заметил. Кроме того, не исключено что багов там не очень-то много.
    2. Visual-MinGW 0.56 http://visual-mingw.sourceforge.net/ — багов много, альфа версия, и sourceforge- т.е. развитая система обратной связи.

    Свой проект бодяжить не стоит. Но может стоит попробовать «перехватить» что-нибудь умирающее- такое на sf бывает.

    цитата: например нет желания поддерживать пентагон

    а он что- домагается? Вот противный.

    19. nenin , 21.06.2005 18:25

    цитата:
    Попробуйте что-нибудь типа Мозиллы стащить и помотреть.

    200мб исходников? Мозилла далеко не «простенький» проект

    20. Dilon , 21.06.2005 21:23

    цитата:
    Попробуйте что-нибудь типа Мозиллы стащить и помотреть.

    200мб исходников? Мозилла далеко не «простенький» проект

    Я может неясно выразился- Мозилла как раз пример большого проекта (там некоторые предлагали). Как распакешь- сразу ясно, что по чём.

    21. nenin , 21.06.2005 21:40
    22. scorpi , 21.06.2005 21:48
    Я думаю Mozilla не самый подходящий проект для обучения. Лучше взять проект, в котором не изобретается велосипед для каждой ерунды, и не вводятся контрапродуктивные ограничения на используемые фичи.
    23. ViRUS_1 , 22.06.2005 07:07
    V.M.Kotov
    1)iXBT Forum DB (Delphi). Только он маленький, без CVS (все никак не могу на sf загнать). Можно взять на моем сайте. В перспективе планировал сделать плагины для разных сайтов. Студентам можно поручить их написание.
    2)RSDN@Home (C#). www.rsdn.ru

    цитата: V.M.Kotov:
    Есть такая мысль вместо типичных лабораторных работ заставить студентов ковырять OpenSource проекты, понятное дело что студенты — программисты в основном нулёвые, но в gcc напрмер есть специальный раздел

    где имеются задачи для начинающих программеров.

    Вопрос: где ещё в Open Source есть здачи для начинающих которые можно преобразовать к лабораторным работам?

    Вот ещё кстати, напомнили мне: http://www.codeblocks.org/

    24. nenin , 22.06.2005 21:46
    25. VBKesha , 23.06.2005 00:45
    Да вообще идея хорошая, а то надоело решать задачи не имеюие никакой ценности.
    26. rGlory , 23.06.2005 00:58
    Кстати есть вот что http://www.topcoder.com, при этом очень удобно, Вам даже оценки ставить не придется, они за Вас все сделают
    27. denixa , 23.06.2005 09:56
    Идея хорошая. Может имеет смысл попробывать свой проект организовать по правилам и схемам opensours, следующие покаления студентов будут приходить и дорабатывать функциональность. Только надо выбрать востребованную область, автоматизировать какуенибудь задачу для Учебного заведения. Попробуйте начать с разработки сетевой системы тестов или посложнее (пока нигде до конца не рещенной задачи) составление расписания, или разработайте(доработайте базу деконата) и т.д. Главное чтоб этим ктото пользовался. Можно еще попробывать создовать аналоги не очень сложных прорамм.
    28. softland , 23.06.2005 10:05
    Посмотри GeoBlock (https://sourceforge.net/projects/geoblock) он правда на Delphi, но там и OpenGL и базы данных и перспективы внедрения.
    29. V.M.Kotov , 23.06.2005 14:15
    all
    softland
    Речь идёт, естественно, о С/С++.
    30. ViRUS_1 , 25.06.2005 10:34
    V.M.Kotov
    http://wackowiki.com/RussianOpenSource
    31. psg , 26.06.2005 17:03
    V.M.Kotov
    А где Вы аж пару десятков студентов набрали, которые понимают, что такое указатели?

    Добавление от 26.06.2005 17:06:

    V.M.Kotov
    Кстати, IMHO Ваша идея редкостный бред. Если студенту это будет интересно, он поддержит какой-то нибудь проект. Самостоятельно. Тот, который будет интересен именно ему, а не Вам. А всем остальным проще массивчик отсортировать и после зачета забыть о программировании как о страшном сне.

    psg
    А как мне видится, редкостный бред это отучиться 5 лет по специальности «Программное обеспечение вычислительной техники и автоматизированных систем.» после чего идти работать продавцом консультантом, забыв о программировании как о страшном сне. А вот сделать так чтобы студенту был интересен именно тот проект который ему ДОЛЖЕН быть интересен вот это не просто — тут где то и есть отличие преподавателя института от преподавателя ГПТУ.
    А что такое указатели — объясняют на первом курсе — дисциплина ЯВУ (язык высокго уровня).
    Да и если Вам нечего ответить на вопрос данной ветки то просьба — не засоряйте эфир.

    32. V.M.Kotov , 27.06.2005 09:21
    33. vvd-2007 , 20.02.2007 22:17
    http://fat.hut1.ru/
    Эту программу я писал года три назад. Это графический редактор для флэш-анимации на linux. Можете взять его и делать с ним всё что вашей душе будет угодно. Ссылка на исходники в самой нижней строчке страницы. Если будут вопросы — отвечу что знаю.
    А по теме — это лучше курсовые и дипломные задания давать, а не лабораторные.
    И ещё — сходите на http://www.sisyphus.ru/ Там вроде авторы все русские.
    34. Lamn , 21.02.2007 21:39
    Можно еще посмотреть, кто сам просит о помощи: http://sourceforge.net/people/

    Добавление от 21.02.2007 21:48:

    Вспоминаю эмоции, когда заработали мои первые правки в чужом серьезном софте. Как раз в студенческие годы, как же это было здорово! Идея вплотную показать студентам реальные программы определенно хороша!

    Восемь проектов для развития навыков разработчика

    Несколько простых проектов для развития навыков, необходимых в разработке веб и мобильных приложений.

    Нельзя натренировать мускулы, просто читая о тренировках. Вам нужно ходить в спортивный зал и часами заниматься там. Также и отличным разработчиком можно стать только с практикой. Представляем вашему вниманию восемь отличных проектов, чтобы прокачать свои программистские мускулы.

    Цель — создать каждое приложение при помощи любого стека технологий, который вы предпочитаете.

    Проект 1 — клон Trello

    Чему вы научитесь, создавая клон Trello:

    • Роутинг.
    • Drag and drop.
    • Создание новых объектов (досок, списков, карт).
    • Управление входными данными и их валидация.
    • Сторона клиента: использование локального хранилища, сохранение данных в локальное хранилище, чтение данных из локального хранилища.
    • Сторона сервера: использование баз данных, сохранение данных в базу, чтение данных из базы.

    Вот репозиторий с примером, сделанным при помощи React и Redux.

    Проект 2 — панель управления пользователями

    Это простое базовое CRUD-приложение. Чему вы научитесь:

    • Создание и управление пользователями.
    • Взаимодействие с базой данных — создание, чтение, редактирование, удаление пользователей.
    • Оценка входных данных и работа с формами.

    Проект 3 — Трекер криптовалют (нативное приложение)

    Для создания приложения можно использовать Swift, Objective-C, React Native, Java или Kotlin. Чему вы научитесь:

    • Как работают нативные приложения.
    • Получение данных из API.
    • Как работает нативная разметка.
    • Как работает мобильный симулятор.

    Используйте этот API. Если вам интересно, как я это сделал, вы можете почитать туториал.

    Проект 4 — установите собственную конфигурацию webpack с нуля

    Это не совсем приложение, но очень полезно понять, как работает веб-пакет. Он перестанет быть для вас черным ящиком, а станет мощным инструментом.

    • Компиляция es7 в es5.
    • Компиляция jsx в js или vue в js (вы узнаете о загрузчиках).
    • Установка webpack dev server и перезагрузка hot module (используйте vue-cli и create-react-app).
    • Создание готовой к продакшну сборки и её развертывание при помощи Heroku, now.sh или GitHub.
    • Установка препроцессора, чтобы провести компиляцию в css — scss, less, stylus.
    • Использование изображений и svg в webpack.

    Вот отличный ресурс для начинающих.

    Проект 5 — клон Hacker News

    Каждый уже создал свою версию Hacker News, не будьте исключением. Что вы узнаете:

    • Взаимодействие с API Hacker News.
    • Создание одностраничных приложений.
    • Применение функций просмотра комментариев и профилей.
    • Роутинг.

    Проект 6 — приложение со списком дел

    Серьезно? Еще один todo-менеджер? Да, это отличный способ изучить основы. Сначала попытайтесь сделать приложение при помощи только JavaScript, а потом — при помощи любимого фреймворка или библиотеки.

    Чему вы научитесь:

    • Создание новых задач.
    • Валидация полей.
    • Фильтрация задач (завершенные, активные, все). Используйте функции filter и reduce.
    • Понимание основ JavaScript.

    Проект 7 — сортируемый drag and drop список

    Это полезно для понимания Drag and Drop API, который поможет вам создавать сложные приложения. Чему вы научитесь:

    • Drag and Drop API.
    • Создание интересных интерфейсов.

    Проект 8 — клон мессенджера (нативное приложение)

    Чему вы научитесь:

    • Веб-сокеты (мгновенные сообщения).
    • Принцип работы нативных приложений.
    • Принцип работы нативной разметки.
    • Роутинг в нативных приложениях

    5 проектов для фронтенд разработчиков

    Канадский разработчик Гаретт Левин, собрал 5 проектов, для начинающих фронтенд разработчиков.

    Я начал свой путь в веб-разработку, используя учебные видео материалы. Однако видео были лишены самого важного — полноценной практики. Я хочу вдохновить вас на изучение веб-разработки и для этого я создал несколько проектов, для начинающих фронтенд разработчиков, которые помогут оттачивать свои навыки. Я надеюсь, это руководство поможет новичкам в изучении фронт-енд разработки.

    Проект 1 – Одностраничная адаптивная верстка

    Цель: воссоздать pixel perfect дизайн и решить проблемы адаптивной верстки

    The Conquer template это отличная стартовая площадка для новичков. Здесь у новичков будет возможность создать то, что будет действительно не стыдно добавить в портфолио. The Conquer template использует Вootstrap, но не стоит не использовать его при создании проекта. Здесь вы найдете множество задач, с которыми веб-разработчик сталкивается в реальном мире. Он погрузит вас в новые технологии (такие, как flex box и float) и поможет приобрести опыт в разных техниках верстки. Сверстать макет адаптивно – будет дополнительной целью, которая заставит вас попотеть!

    Изучайте веб разработку, с помощью онлайн уроков, каждый понедельник и среду в 20:00, на канале: Быстрый старт в веб-разработке (на странице проекта доступный записи всех уроков).

    Проект 2 – Многостраничный адаптивный веб-сайт

    Цель: воссоздать pixel perfect дизайн и научиться адаптивно верстать сложные макеты

    Следующим шагом будет создание адаптивного многостраничного веб-сайта. В сети есть множество бесплатных шаблонов, но достаточно сложно найти действительно хороший. Theme Forest – замечательное место, где вы можете приобрести работы дизайнеров. Помните, вы пытаетесь стать веб-разработчиком, а не дизайнером. Не ждите, что сразу сможете стать и тем, и другим. Много веб-разработчиков не имеют никаких навыков в дизайне и, наоборот, есть много дизайнеров, которые совершенно не умеют программировать. Поэтому сосредоточьтесь на своем выборе, на веб-разработке!

    Для более быстрого старта в веб разработке оцените проект: Быстрый старт в веб-разработке

    Проект 3 — Маленькая игра-викторина, написанная на языке JavaScript

    Цель: Создать простую игру на JavaScript и jQuery.

    Особенность изучения JavaScript для начинающих фронтенд разработчиков в том что бывает сложно выбрать проект по своим силам. Отличным вариантом для начинающего веб программиста может стать разработка викторины . Это поможет вам разобраться в Document Object Model. Уровень сложности викторины будет зависеть только от вас. Начните с создания простой игры, в которой будет несколько вопросов с возможностью выбора варианта ответа. Вы узнаете много нового о работе с данными. В этот раз не стоит тратить много времени на дизайн того, что вы создаете. Я бы порекомендовал вам использовать CSS-фреймворк, например: Bootstrap, дабы быстро стилизовать вашу игру.

    Проект 4 — Сделайте аналог Giphy, используя открытый API

    Цель: Создать веб-приложение, которое использует Giphy’s API

    Как только вы получите опыт в работе с DOM и JavaScript, я рекомендую изучить шаблонизацию данных и их отображение в DOM. Отличная цель для начинающих фронтенд разработчиков — создать аналог веб-сайта giphy, используя Giphy API. Я рекомендую их API, потому что у них нет проблем с получением ключа, и форматы запросов-ответов там достаточно простые. Используя их API, создайте небольшое веб-приложение, которое будет делать следующее:

    • Отображать популярные gif-файлы при загрузке приложения
    • Позволять искать определенные gif-файлы
    • Создать кнопку «Загрузить больше»

    В процессе разработке этого проекта вы узнаете много нового. Одна из ключевых вещей – работа с асинхронными запросами. Для этого вы можете использовать JavaScript или jQuery. Ваша цель состоит в том, чтобы начать работу с асинхронным кодом. Поскольку ваше приложение будет расти и усложняться, вам нужно подумать о том, как организовать ваш код. Для этого я рекомендую использовать паттерн name spacing.

    Проект 5 — Веб-приложение Punk Beer

    Цель: Использовать Punk Beer API для создания проекта, использующего шаблонизацию для отображения данных на странице. Попробуйте использовать какой-нибудь фронтенд фреймворк, например, React.

    В этом проекте вы также будете работать с API. Punk API не требует ключа для использования и предоставляет много информации в своих ответах.

    Верстка данного проекта во многом будет схожа с версткой предыдущего. Из нового: функции «корзина покупок» или «любимый товар». Добавьте быть возможность посмотреть отобранный список товаров. Я бы рекомендовал для начинающих фронтенд разработчиков углубиться в изучение фреймворков — это поможет расширить ваши возможности и получить общее представление о современной веб-разработки. Так как я активно работаю с React от Facebook, я бы советовал начать с него. Сперва это может показаться трудной задачей, поэтому сосредоточьтесь на создании веб-приложения поэтапно:

    • Разместите данные на странице из запроса к API
    • Добавьте строку поиска (через отдельный запрос к API)
    • Добавьте функцию «любимый товар»
    • Подключите react router и добавьте функциональность просмотра «любимых товаров»

    Решение этих проблем позволит серьезно продвинуться в веб-разработке. Здесь я тоже рекомендую прибегнуть к использованию CSS-фреймворка. Я решил использовал Bulma для данного примера.

    Совершенствуйтесь и создавайте

    Если вы начинающий в веб-разработке и стремитесь создать свою собственную учебную программу, то эти пять проектов помогут вам добиться поставленной цели.

    Опираясь на свой опыт, скажу, что быстрее всего я начал развиваться, когда столкнулся с реальным проектом. Поэтому пробуйте применять свои знания на практике как можно чаще!

    Добавить комментарий