Внедрение стандарта computing curricula2001 в учебные планы к.т.н., доцент андрей м. чеповский bfchep@supercompilers.com. — презентация

Математика для программистов

  • 6.042J — Mathematics for Computer Science, Fall 2010, MIT OCW
  • 6.042J — Mathematics for Computer Science, Весна 15, MIT OCW
  • Computer Science 70, 001 — Fall 2012
  • 6.041 Probabilistic Systems Analysis and Applied Probability — MIT OCW
  • 10-600 Math Background for ML — CMU
  • Linear Algebra Review — CMU
  • Statistics 110: Probability
  • 18.06 — Linear Algebra, Prof. Gilbert Strang, MIT OCW
  • 36-705 — Intermediate Statistics — Larry Wasserman, CMU
  • STATS 250 — Introduction to Statistics and Data Analysis, UMichigan
  • 131B — Introduction to Probability and Statistics, UCI
  • Multiple View Geometry — Lecture 1 (Prof. Daniel Cremers) TUM
  • The Probability and Statistics Full Course — YouTube
  • A first course in Linear Algebra — N J Wildberger — UNSW

Кто такой программный инженер

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

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

Основные составляющие программной инженерии:

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

Только до25 декабря

Пройди опрос иполучи обновленный курс от Geekbrains

Дарим курс по digital-профессиям
и быстрому вхождения в IT-сферу

Чтобы получить подарок, заполните информацию в открывшемся окне

Перейти

Скачать файл

В ходе знакомства с постановкой задачи перед началом работы по созданию ПО программный инженер старается найти ответы на следующие вопросы:

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

Когда станет понятно, будет ли это новый продукт с «нуля», или компоновка уже существующих процедур с написанием недостающих кодов, программный инженер ставит перед собой совсем другие вопросы:

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

В ходе тестирования ПО возникают совершенно отличные от предыдущих вопросы, на которые надо найти ответ:

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

Департаменты

В состав нового факультета входят:

Департамент анализа данных и искусственного интеллекта

В его состав входят исследователи с мировым именем, активно участвующие в международных исследовательских проектах в области анализа и разработки данных (Data mining), анализа формальных понятий (Formal Concept Analysis), семантических технологий и онтологического моделирования (Semantic Technologies and Ontology Engineering), мультимодальной кластеризации (Multi-Modal Clustering), машинного обучения (Machine Learning), автоматической обработки текста и коллекций текстов (Natural Language Processing), разработки интеллектуальных и рекомендательных систем (Development of Intelligent and Recommender Systems), анализа социальных сетей (Social Network Analysis) и медицинской информатики (Medical Informatics).

Департамент больших данных и информационного поиска

Руководит департаментом к.ф.-м.н., доцент, преподаватель Школы анализа данных Дмитрий Ветров. Основу департамента составят научные группы, ведущие исследования мирового уровня в области машинного обучения, распределенных вычислений, масштабируемых алгоритмов для обработки больших данных, компьютерного зрения, обработки текстов, информационного поиска и графических моделей. Сотрудники департамента регулярно публикуются на авторитетных международных ИТ-конференциях.
Для студентов и аспирантов существуют возможности стажировок как в российских и зарубежных ИТ-компаниях (Яндекс, Лаборатория Касперского, Google, ABBYY, Microsoft), так и в ведущих исследовательских группах университетов мира (ETH Zurich, MIT, EPFL Lausanne, и других). Сотрудниками департамента разработана совместная со Школой анализа данных Яндекса специализация «Анализ интернет-данных» в рамках магистерской программы «Науки о данных», а также образовательная программа бакалавриата «Прикладная математика и информатика».

Департамент программной инженерии

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

Стандарты программной инженерии

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

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

Наиболее известные международные стандарты программной инженерии:

  • ISO/IEC 12207 — Information Technology — Software Life Cycle Processes — Процессы, происходящие при работе программных средств. В стандарт входят определения базовых понятий, таких как программный продукт и жизненный цикл программного продукта.
  • SEI CMM — Capability Maturity Model (for Software) — модель степени профессионализма при разработке ПО. В стандарте содержится информация о том, каким должен быть уровень профессионального мастерства при разработке программного обеспечения.
  • PMBOK — Project Management Body of Knowledge — Стандарт по управлению проектами.
  • SWBOK — Software Engineering Body of Knowledge — Стандарт по программной инженерии. В него входят описания направлений по разделам (областям знаний) программной инженерии.
  • ACM/IEEE CC2001 — Computing Curricula 2001 – Академический образовательный стандарт в области компьютерных наук. В него входят четыре основных раздела: Computer science, Computer engineering, Software engineering и Information systems, по каждому из которых определены области знаний, состав и планы рекомендуемых курсов.

Стандарты программной инженерии

Сегодня в рамках стандарта SWBOK разрабатывается расширенная версия стандартов по программной инженерии, в которую вошли пятнадцать направлений:

  • Software Requirements — требования к программному обеспечению.
  • Software Design — проектирование программного обеспечения.
  • Software Construction — конструирование программного обеспечения.
  • Software Testing — тестирование программного обеспечения.
  • Software Maintenance — сопровождение программного обеспечения.
  • Software Configuration Management — управление конфигурацией ПО.
  • Software Engineering Management — управление проектом информационных технологий.
  • Software Engineering Process — процесс программной инженерии.
  • Software Engineering Models and Methods — модели и методы разработки ПО.
  • Software Engineering Professional Practice — описание критериев профессионализма и компетентности разработчика программного обеспечения.
  • Software Quality — качество программного обеспечения.
  • Software Engineering Economics — экономические вопросы разработки программного обеспечения.
  • Computing Foundations — основы вычислительных технологий, которые применяют в разработке программного обеспечения.
  • Mathematical Foundations — базовые математические законы и понятия, которые используют в разработке программного обеспечения.
  • Engineering Foundations — базовые понятия инженерной деятельности.

Прочее

  • Skiena’s Computational Finance Lectures
  • AM 207 — Monte Carlo Methods and Stochastic Optimization, Harvard University
  • CS 223A — Introduction to Robotics, Stanford University
  • CS 3152 — Introduction to Computer Game Development, Cornell University
  • Open Sourced Elective: Database and Rails — Intro to Ruby on Rails, University of Texas (Lectures — Youtube)
  • SCICOMP — An Introduction to Efficient Scientific Computation, Universität Bremen (Lectures — Youtube)
  • MIT CMS.611J Creating Video Games, Fall 2014
  • Lecture: Visual Navigation for Flying Robots — TUM
  • CS E-259 XML with Java, Java Servlet, and JSP — Harvard
  • CSE 40373 — Spr 2009: Multimedia Systems
  • Exposing Digital Photography — Harvard Extension School
  • XML and Databases — WS 2011 — Universität Freiburg

Структуры данных и Алгоритмы

  • CS 61B — Data Structures, UC Berkeley
  • MOOC — Design and Analysis of Algorithms Part 1 — Prof Roughgarden — Coursera (Part 2)
  • MOOC — Algorithms Part 1 — Prof Sedgewick (Part 2)
  • COP 3530 Data Structures and Algorithms, Prof Sahni, UFL (Videos)
  • CS2: Data Structures and Algorithms — Richard Buckland — UNSW
  • 6.006 — Introduction to Algorithms, MIT OCW
  • CS 161 — Design and Analysis of Algorithms, Prof. Tim Roughgarden, Stanford University
  • CSE 373 — Analysis of Algorithms, Stony Brook — Prof Skiena
  • CS16 Introduction to Algorithms and Data Structures — Brown University
  • 6.046J — Introduction to Algorithms — Fall 2005, MIT OCW
  • 6.046 — Design and Analysis of Algorithms, Весна 2015 — MIT OCW
  • CS 473: Algorithms — University of Illinois at Urbana-Champaign
  • Programming Challenges — Prof Skiena
  • 16s-4102 — Algorithms, University of Virginia (Youtube)
  • CS 170 Algorithms — Весна 2015 — UCBerkeley
  • COP 5536 Advanced Data Structures, Prof Sahni — UFL (Videos)
  • CS 261 — A Second Course in Algorithms, Stanford University (Lectures) (Youtube)
  • CS 224 — Advanced Algorithms, Harvard University (Lecture Videos) (Youtube)
  • ECS 122A — Algorithm Design and Analysis, UC Davis
  • CSEP 521: Applied Algorithms, Winter 2013 — University of Washington (Videos)
  • CS 6150 — Advanced Algorithms (Fall 2016), University of Utah
  • ECS 222A — Graduate Level Algorithm Design and Analysis, UC Davis
  • 6.851 — Advanced Data Structures, MIT (MIT OCW)
  • 6.854 — Advanced Algorithms, MIT (Prof. Karger lectures)
  • CS264 Beyond Worst-Case Analysis, Fall 2014 — Tim Roughgarden Lecture (Youtube)
  • CS364A Algorithmic Game Theory, Fall 2013 — Tim Roughgarden Lectures
  • CS364B Advanced Mechanism Design, Winter 2014 — Tim Roughgarden Lectures
  • Algorithms — Aduni
  • Advanced Topics in Algorithms and Datastructures — SS 2005 — Universität Freiburg
  • Algorithmentheorie/Algorithms Theory — WS 2013 — Universität Freiburg (WS 2011)
  • Theory I — SS 2010 — Universität Freiburg
  • CS225 — Data Structures — University of Illinois at Urbana-Champaign

Презентация на тему: » Применение рекомендаций Computing Curricula: Software Engineering к российским образовательным стандартам Проф. А.Н. Терехов, СПбГУ, ЛАНИТ-ТЕРКОМ К.ф.-м.н.» — Транскрипт:

1

Применение рекомендаций Computing Curricula: Software Engineering к российским образовательным стандартам Проф. А.Н. Терехов, СПбГУ, ЛАНИТ-ТЕРКОМ К.ф.-м.н. А.А. Терехов, Microsoft

2

Постановка задачи В документе Computing Curricula: Software Engineering предложен ряд шаблонов преподавания для различных стран (США, Европа, Австралия…) К сожалению, нет примера для России Мы решили предложить свое видение шаблона преподавания программной инженерии для России

3

1. Существующие российские стандарты Были рассмотрены существующие российские стандарты: – «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей» (СПбГУ) –Разрабатываемый стандарт «Программная инженерия» (ГУ-ВШЭ) – «Информационные технологии» (МГУ) Мы решили отталкиваться от

4

Примерный план

5

2. Замечания к плану Нагрузка 36 часов в неделю в 3 семестре и особенно 40 часов в неделю в 4 семестре – слишком большая Слишком много физики – 4 часа в неделю В 3 семестре предусмотрено 4 часа в неделю на курс «Языки программирования» – лучше сосредоточиться на практикуме Курс «Неклассические логики» (4 часа в неделю в 6 семестре) входит в обязательную программу – лучше перенести в курсы по выбору

6

Сопоставление с CC:CS

7

3. Приведение к CC:CS Убрали курсы, к которым у нас были замечания Добавили традиционный и важный с точки зрения CC:SE курс CS103 – Алгоритмы и структуры данных (3 семестр, 2 часа в неделю) Добавили в 6 семестр незаслуженно забытый курс CS240 – Трансляция языков программирования

8

4. Переход к CC:SE Cначала информатика, затем программная инженерия или наоборот? –Мы выбрали первый вариант – все-таки программную инженерию должны осваивать люди, уже умеющие программировать. Возможны два варианта: тройка курсов CS101, CS102, CS103 или сжатие материала в два курса CS111 и CS112 –Мы выбрали последовательность CS101 -> CS102 -> CS103 и, параллельно с CS103, первый курс по программной инженерии SE201, т.к. сжатие материала вредит качеству изложения Можно сначала изучать императивное программирование, затем объектно-ориентированное, а можно наоборот. –Мы склоняемся к первому варианту как более традиционному, т.е. выбираем курсы CS101i и CS102i. В CC:SE предлагается два пакета основных курсов по программной инженерии. –Мы выбрали первый пакет – лучше иметь отдельный курс по требованиям к ПО, чем отдельный курс по формальным методам. В CC:SE представлено множество шаблонов разбивки курсов по годам и семестрам. –На наш взгляд, российским традициям лучше всего соответствует шаблон N2S-1 (учебный год в Северной Америке), причем его вариант N2S-1с для факультета информатики, а не N2S-1е для инженерных факультетов.

9

Финальный вариант

10

Комментарии В 1 семестре добавился курс по групповой динамике –Умение работать в группе необходимо студентам с самого начала обучения Для курса NT291 по профессиональной деятельности нашелся хороший аналог в виде курса по социальным и этическим вопросам (в 4 семестре) В 3 семестр добавляются курсы SE201 – начальный курс по программной инженерии и NT272 – по инженерной экономике В 4 семестре добавляются SE211 – по проектированию нижнего уровня и SE212 – по человеко-машинному взаимодействию –Чтобы уменьшить нагрузку, в 4 семестре вполне можно пожертвовать факультативом (4 часа) или практикумом (4 часа). Мы предпочли аннулировать практикумы в 4-6 семестрах. В 5 семестр вставили курс SE311 по проектированию распределенных систем, а в 6 семестр – еще 2 курса первого пакета: –SE321 – QA и тестирование –SE322 – Анализ требований В 6 семестре для этих курсов удобно использовать единственный курс в по программной инженерии Последний курс первого пакета «SE323 – Управление программными проектами» должен читаться на 3 курсе, но у нас, как и в шаблоне N2S-1i, он поместился в 9 семестре SE400 – дипломный проект завершает программу обучения

Основные составляющие

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

Обучение состоит из трёх основных частей. Сначала я дам общий обзор, а дальше расскажу подробнее о каждой части.

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

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

На втором и третьем курсе сейчас по 30 студентов, на четвёртом — 15.

Также мы постоянно создаём или ищем новые курсы по запросам студентов, ищем хороших преподавателей, которые понимают предмет и умеют преподавать. Так, в этом модуле в программе буквально за несколько недель удачно появился экспериментальный курс по реверс-инжинирингу от SPbCTF. А если подходящий курс найти не получается, можно по договорённости пройти что-нибудь содержательное с Computer Science Center, ШАД или Coursera.

Advanced CS

After completing every required course in Core CS, students should choose a subset of courses from Advanced CS based on interest.
Not every course from a subcategory needs to be taken.
But students should take every course that is relevant to the field they intend to go into.

Advanced programming

Topics covered:

Courses Duration Effort Prerequisites
4 weeks 6-8 hours/week Scala programming
9 weeks 6-8 hours/week none
14 weeks
12 weeks
8 weeks 6 hours/week Python, object-oriented programming
4 weeks 6 hours/week Python, programming experience

Advanced systems

Topics covered:

Courses Duration Effort Prerequisites Notes
10 weeks 6 hours/week Alternate links contain all 3 courses.
10 weeks 6 hours/week Computation Structures 1
10 weeks 6 hours/week Computation Structures 2

Advanced theory

Topics covered:

Courses Duration Effort Prerequisites
8 weeks 10 hours/week discrete mathematics, logic, algorithms
16 weeks 8 hours/week algorithms, C++
8 weeks 3 hours/week mathematical thinking, probability, calculus

Advanced Information Security

Courses Duration Effort Prerequisites
5 weeks 4-6 hours/week understanding basic web technologies
3 weeks 3 hours/week
3 weeks 2-3 hours/week Core Security
7 weeks 1-2 hours/week Core Programming and Core Security
7 weeks 1-2 hours/week Secure Software Development: Requirements, Design, and Reuse
7 weeks 1-2 hours/week Secure Software Development: Implementation

Advanced math

Courses Duration Effort Prerequisites Discussion
14 weeks 12 hours/week corequisite: Essence of Linear Algebra
14 weeks 12 hours/week
10 weeks 4-8 hours/week
24 weeks 12 hours/week

Компьютерные сети

  • Prof. Shiv Kalyanaraman’s Online Audio and Video Lectures on Computer Networking
  • Audio/Video Recordings and Podcasts of Professor Raj Jain’s Lectures — Washington University in St. Louis (YouTube)
  • Computer Networks, Tanenbaum, Wetherall Computer Networks 5e — Video Lectures (U Washington MOOC)
  • CSEP 561: PMP Network Systems, Fall 2013 — University of Washington (Videos)
  • CSEP 561 – Network Systems, Autumn 2008 — University of Washington (Videos)
  • Introduction to Data Communications 2013, Steven Gordon — Thammasat University, Thailand
  • Communication Systems — SS 2008 — Universität Freiburg
  • Communication Systems (Telecommunication from ISDN/GSM to VoIP) — WS 2010 — Universität Freiburg
  • Internetworking — SS 2005 — Universität Freiburg
  • Mobile Computing — WS 2004 — Universität Freiburg
  • Network Algorithms — SS 2013 — Universität Freiburg
  • Telecommunication Systems — SS 2012 — Universität Freiburg
  • Wireless Sensor Networks — WS 2006 (English) — Universität Freiburg

Final project

OSS University is project-focused.
The assignments and exams for each course are to prepare you to use your knowledge to solve real-world problems.

Students who would like more guidance in creating a project may choose to use a series of project oriented courses. Here is a sample of options (many more are available, at this point you should be capable of identifying a series that is interesting and relevant to you):

Courses Duration Effort Prerequisites
12 weeks 15 hours/week programming
26 weeks 2-5 hours/week
30 weeks 2-5 hours/week machine learning
30 weeks 3-5 hours/week none
30 weeks 1-5 hours/week strong programming
30 weeks 2-6 hours/week C++ programming
43 weeks 1-6 hours/week none
29 weeks 4-5 hours/week One year programming experience
6 months 5 hours/week programming, interactive design

Evaluation

Upon completing your final project:

  • Submit your project’s information to PROJECTS via a pull request.

  • Put the OSSU-CS badge in the README of your repository!

    • Markdown:
    • HTML:
  • Use our channels to announce it to your fellow students.

Solicit feedback from your OSSU peers.
You will not be «graded» in the traditional sense — everyone has their own measurements for what they consider a success.
The purpose of the evaluation is to act as your first announcement to the world that you are a computer scientist
and to get experience listening to feedback — both positive and negative.

The final project evaluation has a second purpose: to evaluate whether OSSU,
through its community and curriculum, is successful in its mission to guide independent learners in obtaining a world-class computer science education.

Cooperative work

You can create this project alone or with other students!
We love cooperative work!
Use our to communicate with other fellows to combine and create new projects!

Which programming languages should I use?

My friend, here is the best part of liberty!
You can use any language that you want to complete the final project.

The important thing is to internalize the core concepts and to be able to use them with whatever tool (programming language) that you wish.

Безопасность

  • 6.858 Computer Systems Security — MIT OCW
  • CSEP590A: Practical Aspects of Modern Cryptography, Winter 2011 — University of Washington (Videos)
  • CIS 4930/ CIS 5930 — Offensive Computer Security, Florida State University
  • 18-636 Browser Security, Stanford
  • Internet Security — Weaknesses and Targets (WT 2015/16) (WT 2012/13 (YouTube))
  • IT Security, Steven Gordon — Thammasat University, Thailand
  • Security and Cryptography, Steven Gordon — Thammasat University, Thailand
  • Web Security — SS 2008 — Universität Freiburg
  • CS461/ECE422 — Computer Security — University of Illinois at Urbana-Champaign (Videos)

Difference Between Software Engineering and Computer Science

Here are the important differences between Software Engineering vs Computer Science:

Parameter Software Engineering Computer Science
Definition Software engineering is defined as a process of analyzing user requirements and then designing, building, and testing software applications. Computer science is a discipline that involves the design and understanding of computers and computational processes.
Meanings Software Engineering is a study of how software systems are built. Computer Science is the study of how computers perform theoretical and mathematical jobs.
Selection You should choose Software Engineering if you want to learn the overall life cycle of how specific software is built and maintained. You should choose Computer Science if you want to get into a specialized field in CS like artificial intelligence, machine learning, security, or graphics.
Project management Students of software engineering will likely take courses on project management, both in undergraduate and graduate programs. Project management is often included in the computer science curriculum. Mostly as part of a software engineering course.
Course include In Software Engineering, you will also learn programming languages and general computing principles. Computer science students will study how data is stored, processed, and applied on various other computing devices.
Scope Emerging occupations related to software engineering depend on the state of software and technology in the future. It is a field of computer science which also includes careers in cloud computing and AI technology.
Developer The average salary for a computer scientist is $103,643 per year in the United States. The average salary for a software engineer is $107,932 per year.
Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: