Автор: Лида Тунези

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

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

Работа Найка направлена ​​на то, чтобы остановить подобные проблемы до того, как они обретут форму.

«Основная цель моего исследования - помочь программистам и разработчикам создавать более качественное программное обеспечение, - говорит Наик, - и я больше всего заинтересован в использовании для этого машинного обучения и искусственного интеллекта».

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

Лучше часто означает безопаснее. «Кибербезопасность стала одним из основных способов повышения качества, а не только производительности или энергоэффективности», - говорит Наик.

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

«Традиционно преобразования компилятора нацелены на производительность: как я могу заставить часть программного обеспечения работать быстрее?» - говорит Наик. «Но мы хотим изучить преобразования для уменьшения сложности программного обеспечения, чтобы злоумышленникам было сложнее использовать слабые места».

Компиляторы были одним из первых интересов Наика в области информатики.

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

Naik также устраняет этот пробел с помощью инструментов искусственного интеллекта. Компилятор ASPIRE использует идеи ИИ, как и другой исследовательский проект Наика - помощник ИИ для разработчиков программного обеспечения.

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

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

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

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

«Я участвую в образовательных онлайн-программах Penn Engineering, - говорит Наик, - и многие технологии, которые я использую в своих исследованиях, могут помочь не только профессиональным разработчикам, но и студентам, которые пытаются научиться программировать. Если бы мне пришлось преподавать курсы, которые я преподаю в небольших классах в Пенсильвании, онлайн-классу из сотен или тысяч студентов, мне потребовались бы интеллектуальные системы обучения, интеллектуальные автогрейдеры и даже интеллектуальные стратегии выставления оценок на экзаменах. Если ученик не совсем правильно понимает решение вопроса, как начать с ним общаться? Как вы можете создать алгоритм, который даст лучшую обратную связь этому ученику? »

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

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

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

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

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

Есть ощущение, что медицина станет следующим рубежом для кибератак, - говорит Найк. Например, злоумышленники могут взять под контроль устройства, встроенные в человека, например, кардиостимуляторы. К таким проблемам Найк обращается в рамках центра PRECISE Пенна, который тесно сотрудничает с группами в Медицинской школе Перельмана. Работу, которую я проделал, можно напрямую применить для улучшения качества этих типов киберфизического встроенного программного обеспечения, - говорит он.

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