Як ми використовували Git, CI і code review в навчальному процесі

В Академічному університеті постійно впроваджуються нові підходи до навчання. Програми, завдання і сам процес змінюються таким чином, щоб надати студентові найбільш повні та актуальні знання, а вчитель – можливість спробувати більш ефективні методи. Так і в минулому семестрі замість того, щоб приймати ДЗ по Java "на А4 і за Гостом", ми з bintree вирішили зробити все "як у великих дядьків": використовувати Git, CI і code review. У цій замітці я поділюся з вами виниклими проблемами, їх рішеннями, плюсами-мінусами такого підходу, а також деякими міркуваннями на майбутнє.

Читати далі →

Захищаємо приватні ключі від крадіжки з VPS

На початку кожного семестру студенти магістерської програми кафедри Мііт Академічного університету (СПб) та представники компаній-партнерів збираються разом. Представники розповідають про проекти, над якими можна буде працювати, а студенти вибирають їх.
В одному з проектів, зроблених в Parallels Labs, наш студент досліджував можливість реалізації віртуального Hardware Security Module (HSM). В результаті він додав свою реалізацію VHSM open-source проект OpenVZ. Детальніше про його рішення читайте під катом.

Читати далі →

JIT-компілятор, як навчальний проект в Академічному Університеті

Близько шістнадцяти років тому вийшла перша версія Hotspot — реалізація JVM, що згодом стала стандартною віртуальною машиною, що поставляється в комплекті JRE від Sun.

Основною відмінністю цієї реалізації став JIT-компілятор, завдяки якому заяви про повільну Java по-багатьох випадках стали зовсім неспроможними.
Зараз майже всі інтерпретовані платформи, такі як CLR, Python, Ruby, Perl, і навіть чудовий мова програмування R, обзавелися своїми реалізаціями JIT-трансляторів.

В рамках цієї статті я не планую проливати світло на маловідомі деталі реалізації промислових JIT-компіляторів, скоріше це буде зовсім поверхневе ознайомлення з азами і розповідь про навчальний проект з відповідної тематики.

Таким чином вам може бути цікаво під катом, якщо:
  • Ви принципово не розумієте, що таке JIT-компілятор, або у вас є легке нерозуміння, чому такий підхід істотно краще інтерпретації.
  • Ви хотіли б написати простий JIT для свого интерпретируемого мови.
  • Ви викладаєте курс «Мови програмування і компілятори», і не проти зробити практичне завдання для студентів ще цікавіше.
  • Вам цікаво, як намальована ця картинка.


Читати далі →

Магістратура Академічного університету відкриває набір на 2015 рік

Ми раді оголосити про відкриття набору до магістратури на 2015-2017 навчальні роки.


Магістратура Академічного університету існує з 2008 року. Весь цей час ми прикладаємо багато зусиль, що б підтримувати в нашому університеті сприятливе освітнє середовище: підбираємо якісні і цікаві курси, запрошуємо в якості викладачів відомих вчених і провідних розробників, розвиває партнерські відносини з відомими IT-компаніями, створюємо зручну для студентів інфраструктуру.
Читати далі →

Оглядові онлайн-курси з математики

Часто на співбесідах в магістратуру СПбАУ або CS центр хлопці можуть відповісти на питання про елементарних поняттях як класичної, так і з дискретної математики. А ці знання потрібні для освоєння курсів алгоритмів, машинного навчання та інших Computer Science дисциплін. Щоб полегшити підготовку, Академічний університет спільно з Computer Science Center цієї весни запускають два онлайн-курсу:

  1. Лікнеп по дискретній математиці. Викладач — А. В. Омельченко (СПбАУ РАН).
  2. Введення в математичний аналіз. Викладач — А. В. Храбров (Спбду, СПбАУ РАН, CS центр).
Мета цих курсів — розглянути самі елементарні поняття дискретної і класичної математики. Вони не націлені на глибоке вивчення вищезазначених наук, однак допоможуть отримати необхідну базу і підготуватися до освоєння курсів, що потребують знання математичних основ, а також навчитися відповідати на математичні питання на співбесідах.

Курси розміщені на дружній платформі Stepic.

Читати далі →

Бакалаврат СПбАУ. Початок

Магістратура Академічного університету готує фахівців у сфері IT вже 7 років. І з року в рік ми стикаємося з недостатньою підготовленістю надійшли з профільних для нас курсів. Як наслідок, нам доводиться викладати в магістратурі базові (бакалаврські) курси. Тому цілком закономірно, що ми прийшли до ідеї відкрити свій власний бакалаврат.

В результаті кропіткої роботи була створена і акредитована програма навчання бакалаврів, і влітку 2014 року відбувся перший набір. У зв'язку з цим хочеться поділитися з вами досвідом прийому і — недовгого поки — навчання вчорашніх школярів, обдарованих у галузі математики та інформатики, а також дізнатися вашу думку про шляхи подальшого удосконалення навчального процесу.
Читати далі →

Студентські школи в освіті

Академічний університет заохочує і спонсорує участь студентів у заходах науково-освітнього характеру. Зокрема, досить часто наші студенти беруть участь у міжнародних студентських школах. Участь у студентській школі дозволяє не тільки дізнатися про актуальний стан науки і технологій, але і наживо поспілкуватися з провідними дослідниками і завести зв'язку в співтоваристві. Крім того, на деяких школах студентам надається можливість зробити доповідь (на т. зв. student session) про те, що він в даний момент займається (наприклад, про своїй магістерській роботі). Це дуже корисно, особливо, якщо студент хоче надалі займатися дослідженнями. Цілком можливо, що на такій школі студент визначиться з подальшими напрямками досліджень або навіть знайде наукового керівника.



Якщо ви самі хочете взяти участь у подібній студентської школі, то раджу зазирнути на сайт Computer Science клубу, на якому підтримується список міжнародних студентських шкіл.

В якості прикладу публікуємо звіт нашого студента Кирила Єлагіна про поїздку на Estonian Winter School in Computer Science в 2014 р. Ця школа проходить в Естонії кожний рік і наші студенти регулярно її відвідує.


Читати далі →

Освоюємо Linux за три тижні

Ідея вступного курсу по роботі з Linux виникла у нас з колегами досить давно. Я з 2011 року займаюся биоинформатикой в Лабораторії алгоритмічної біології СПбАУ РАН (тут і тут мій напарник писав про те, чим ми займаємося). Відразу потрібно сказати, що робота біоінформатика без Linux практично неможлива, оскільки більшість биоинформатических програм створені саме під цю операційну систему і працюють тільки на ній.

xkcd.com/456/

В силу того, що це область на стику наук, ми постійно спілкуємося з біологами. Біологам ж зараз доводиться працювати з дуже великими обсягами даних, тому вміння використовувати Linux, оптимальну для подібних завдань операційну систему, стає необхідним навиком. Насправді, мова не тільки про вміння поводитися з Linux, а в цілому про комп'ютерної грамотності: які існують правила роботи на сервері, як завантажувати і ефективно зберігати файли з даними, які програми запускати для їх обробки і як це зробити і т. д. — всі ті речі, які спрощують і прискорюють вашу роботу, так і значно полегшують спільну діяльність з колегам. Незважаючи на те, що розібратися з Linux можна і самостійно, почитавши розумні книжки та сайти для людей з технічної середовища це часто викликає певні складнощі і багато здаються на початкових етапах освоєння цієї ОС (наприклад, на знайомстві з командним рядком).

На основі нашого досвіду я і мій колега Андрій Пржибельский (andrewprzh) спочатку збиралися провести кілька занять для біологів з комп'ютерної грамотності. А потім ця ідея виросла в тритижневий відкритий онлайн-курс (MOOC) Інституту біоінформатики російською мовою, який пізніше був звужений до саме введення в Linux, як відправної точки, — оскільки вмістити все в три тижні виявилося дуже і дуже важко. Курс вже почався і виявився досить популярний (на даний момент на нього записалося більше п'яти тисяч чоловік), але перший дедлайн за завданнями — 24 листопада, тому ще можна приєднатися без втрати балів або просто вивчати курс у вільному режимі (всі матеріали залишаться відкритими).

Читати далі →

Финиширование геному: швидко, якісно, недорого

Думаю, що багато читачів Хабра вже чули про біоінформатики, можливо навіть безпосередньо про завдання складання геному. Безліч людей по всьому світу зайнято написанням геномних асемблерів — програм, що інтерпретує сирі дані машин для секвенування і видають у результаті послідовність ДНК досліджуваного організму. Однак, в більшості випадків, геном цілком «з коробки» отримати не вдається. У цій статті я постараюся пояснити, чому ж геном не можна зібрати одним клацанням миші і опишу процес його «фінішування» — мабуть, самий трудомісткий етап у всій збірці, часом триває кілька років.

Також, я розповім, як ми іноді можемо істотно полегшити цей процес, використовуючи вже зібрані геноми близькоспоріднених організмів. Цим завданням я займався в рамках написання своєї магістерської дисертації в Санкт-Петербурзькому Академічному Університеті, а навчання проходило спільно з Інститутом Біоінформатики. Оскільки отриманий алгоритм досить специфічний, я почну з опису проблеми в цілому, дам огляд деяких «хардварних» методів її вирішення, а потім трохи розповім про те, що ж вийшло у мене.


Читати далі →

Дві гарні завдання по алгоритмам

    На цьому тижні я почав читати бакалаврам Академічного університету базовий курс по алгоритмам. Починав я зовсім з основ, і щоб тим, хто з базовими алгоритмами вже знаком, було чим зайнятися, я на початку пари сформулював дві, напевно, самі свої улюблені задачки по алгоритмам. Давайте і з вами ними поділюся. Рішення однієї з них навіть під катом детально розповім. Але не відмовляйте собі в задоволенні і не заглядайте відразу під кат, а спробуйте вирішити завдання самостійно. Обіцяю, що у обох завдань є достатньо прості рішення, не мають на увазі ніяких спеціальних знань з алгоритмам. Це, звичайно, не означає, що ці рішення просто знайти, але після пари один із студентів підійшов і розповів правильне рішення першого завдання. =) Якщо ж вам цікаво подивитися на початок курсу або повирішувати більше різних задач — приходьте до нас на (безкоштовний) онлайн-курс , який розпочнеться 15 вересня.
 
 
Задача 1 Дан масив A довжини (n + 1), що містить натуральні числа від 1 до n. Знайти будь повторюваний елемент за час O (n), не змінюючи масив і не використовуючи додаткової пам'яті.
 
Відразу поясню. У умови не говориться, що кожне число від 1 до n зустрічається в масиві, тому повторюваних елементів там може бути скільки завгодно (якби всі числа входили по разу, а одне & nbsp; & mdash; двічі, то завдання було б набагато простіше). Обмеження на використання додаткової пам'яті означає, що не можна заводити додатковий масив лінійної довжини, але можна заводити змінні.
 
 
Задача 2 Дана матриця nxn, що містить різні натуральні числа. Потрібно знайти в ній локальний мінімум за час O (n).
 
Локальним мінімумом матриці називається елемент, який менше всіх своїх чотирьох сусідів (або трьох, якщо цей елемент лежить на кордоні; або двох, якщо це кутовий елемент). Зверніть увагу, що від нас вимагається лінійне по n час, хоча в матриці квадратичне по n число елементів. Тому ми припускаємо, що матриця вже зчитана в пам'ять. І нам потрібно знайти в ній локальний мінімум, звернувшись лише до лінійного кількістю її осередків.
 
Під катом & nbsp; & mdash; рішення першого завдання. Ще раз закликаю вас заглядати під кат тільки після того, як повирішувати задачу. За другою завданню можу якусь підказку сказати. =)
 
Читати далі →