Набор универсальных лабораторных работ

Умение приходит только вместе с практикой. Как быстро освоить программирование в целом или только один новый язык в частности? Все очень просто, мы предлагаем вам набор унифицированных лабораторных работ, которые позволят вам задать себе правильные вопросы и попытаться найти правильные ответы.

Универсальные лаборторные работы

Введение

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


1. Введение в язык программирования

  • Найти максимальное значение в массиве. (адаптировать алгоритм для матрицы)
  • Реализовать на базе бинарного файла телефонную книгу.
  • В строке найти самую повторяющуюся подстроку (можно упростить до поиска самого повторяющегося символа).
  • Реализовать поразрядный сдвиг влево/вправо.
  • На базе ООП реализовать модель: сотрудник школы, ученик, учитель.
  • Реализовать школьный журнал, в случае неверных входных данных возвращать ошибку (реализовать через исключения).

2. Профилизация


Веб

  • Создать приложение, которое выводит "Hello, World!" на главной странице.
  • Добавить поле, в котором пользователь сможет ввести свое имя и получить "Hello, %USERNAME%"
  • Добавить возможность хранить USERNAME в cookie. (+ кнопка "выход", которая очищает cookie)
  • Добавить возможность заливать аватарки
  • Добавить возможность выбрать язык интерфейса
  • Добавить возможность переключать цветовую схему
  • Разверните написанное на любом удаленном сервере

Базы данных

  • Написать телефонную книгу с использованием любой реляционной СУБД.
  • Написать телефонную книгу с использованием NoSQL базы данных
  • Написать веб-приложение, которое будет отображать количество пользователей "онлайн" (активность в последние пять минут). Для этого использовать key-value хранилище (пример: redis, memcached).
  • К телефонной книге добавить "расширенный поиск".

Работа с сетью

  • Написать программу, которая выводит последние 10 твитов произвольного пользователя. (см. twitter API)
  • Написать RSS агрегатор .
  • Добавить к RSS-агрегатору возможность экспорта на FTP-сервер.
  • Написать программу, которая отправляет email на произвольный сервер.
  • Написать программу, которая загружает email с произвольного mail-сервера (см pop3).
  • Написать простого icq,jabber,irc-бота (см готовые библиотеки)
  • Для одного из протоколов (DNS, FTP, POP3, SMTP, IRC, IMAP, Jabber, ICQ, ed2k, BitTorrent) написать собственную библиотеку для работы со стороны клиента (или напишите сервер).

Многопоточность

  • Написать download-manager с возможностью параллельной загрузки нескольких файлов.
  • Решить задачу, указанную выше, с помощью процессов операционной системы.
  • Модифицировать download-manager, добавив возможность ускорить загрузку файлу с помощью многопоточности.

Графика

  • Написать программу, которая умеет строить несколько типов диаграмм.
  • Написать программу, которая умеет визуализировать графы.
  • Написать программу, которая генерирует captcha (?).
  • Написать программу, которая конвертирует из одного формата в другой (пример: jpg to gif).

Криптография

  • Найдите библиотеку для генерации криптостойких псевдослучайных чисел.
  • Написать генератор паролей
  • Напишите программу, считающую MD5, SHA1, SHA256 или иную хэш-функцию от заданной строки.
  • Напишите программу, шифрующую файлы при помощи AES или иного симметричного шифра.
  • Найдите библиотеку, реализующую алгоритм RSA. Напишите с ее помощью программу для обмена ключами по открытому каналу (например, электронной почте) и передачи по этому же каналу зашифрованных и защищенных цифровой подписью сообщений.
  • Сделайте то же самое с использованием эллиптических кривых.

Полезные материалы:

↑ Расскажите друзьям о статье


Comments system Cackle

© EduNow.su — материалы подлежат полному/частичному копированию при указании прямой ссылки на источник. (Сегодня 29.06.17)