View on GitHub

ITMO-PE

My study notes about Program Engineering at University ITMO

MainPage/Computer Architech/Labs

Лабораторная работа №1. Техническая проблема

  • Murphy’s law : Anything that can go wrong will go wrong.

Руководство по проведению лабораторной работы №1 для преподавателей

Цель: ознакомить учащегося с комплексной технической проблемой, связывающей воедино множество аспектов разработки, эксплуатации и поддержки компьютерных систем.
目标:让学生熟悉一个复杂的技术问题,该问题将计算机系统的开发、操作和支持的许多方面联系在一起。

Задачи: 任务:

  1. Выбор технической проблемы для анализа.
    选择一个技术问题进行分析。

    Основной критерий выбора технической проблемы: знакомство с ней должно представлять практическую ценность для слушателей. Сделать их лучше как специалистов за счёт нового знания о том, как лучше организовывать рабочие процессы, какие методы и технологии применять. В качестве технической проблемы может выступить:
    选择技术问题的主要标准:熟悉它并对学生具有实用价值。 通过有关如何更好地组织工作流程、使用哪些方法和技术的新知识,使他们成为更好的专家。 技术问题可能包括:

    • Инцидент или postmortem, посвящённый неблагоприятному стечению обстоятельств, в рамках которого что-то случилось. К примеру:
      事件或事后分析,专门针对发生某事的不利环境组合。 例如:
      • спутник должен был сесть на поверхность Марса, но вместо этого впечатался в грунт на огромной скорости;
        卫星原本应该降落在火星表面,但却以极快的速度撞向地面;
      • “автопилот” автомобиля сбил человека насмерть;
        汽车的“自动驾驶仪”将一名男子撞死;
      • инженеры много лет назад приняли решение о том, как хранить строки или даты, последствия мы расхлебываем до сих пор;
        工程师多年前就决定了如何存储字符串或日期,我们仍在处理后果;
      • инженер обновил настройки магистрального маршрутизатора и целый регион испытывал серьезные проблемы с интернет-сервисами;
        工程师更新了骨干路由器的设置,整个地区的互联网服务出现了严重问题;
      • Meltdown и Spectre или “дооптимизировались”.
        崩溃和幽灵或“额外优化”。
    • Комплексная техническая проблема, имеющая несколько подходов к её решению, сменяющих друг-друга, вследствие изменения окружающего мира:
      一个复杂的技术问题,有多种解决方法,由于周围世界的变化而相互替换:
      • представление текстов в компьютере;
        在计算机上呈现文本;
      • устройство баз данных;
        数据库设备;
      • принципы построения распределённых систем.
        构建分布式系统的原则。
    • Глубокий анализ технического вопроса, имеющего множество подводных камней и неочевидных нюансов.
      对存在许多陷阱和不明显细微差别的技术问题进行深入分析。
  2. Согласование технической проблемы и содержания доклада.
    协调技术问题和报告内容。

    Согласование реализуется через бота в телеграмме. Обычно это занимает около недели (загрузка, ожидание ревью, получение замечаний, исправление, повтор). Вам будет необходимо загрузить в бота описание вашего доклада одним сообщением. Сообщение должно иметь следующий вид:
    协调是通过电报中的机器人实现的。 这通常需要一周左右的时间(上传、等待审核、接收评论、更正、重复)。 您需要在一条消息中将报告的描述上传到机器人。 该消息应如下所示:

     <Название доклада одной строкой> <一行报告标题>
    
     <Описание доклада> <报告说明>
    
     <Источники> <来源>
    
     <Вопрос> <问题>
    

    Требования: 要求:

    • Название доклада. Должно отражать конкретную тему, чтобы было видно если в группе намечается дубль.
      报告标题。 它应该反映一个特定的主题,以便可以看到小组中是否计划进行双打。
    • Описание доклада. Объём – 1-2 экрана телефона. Должно включать:
      报告描述。 体量——1-2个手机屏幕。 应包括:
      • Компактное описание того, о чём доклад в свободной форме. Один небольшой абзац.
        以自由形式对报告内容进行简洁描述。 一小段。
      • Класс технических проблем, которым посвящён доклад. Область применения знаний из вашего доклада. Один небольшой абзац.
        报告专门讨论的技术问题类别。 报告中知识的应用范围。 一小段。
      • Какие полезные знания даст ваш доклад (подходы к разработке, контролю качества, инструменты и методы, понимание уязвимостей). Рекомендуется оформить в виде конкретного списка.
        您的报告将提供哪些有用的知识(开发方法、质量控制、工具和方法、对漏洞的理解)。 建议将其格式化为特定列表的形式。
    • Список найденных источников / документов / публикаций по выбранному случаю.
      所选案例的已找到来源/文件/出版物列表。
    • Вопрос к экзамену по вашему докладу:
      根据您的报告提出的考试问题:
      • Знание ответа на ваш вопрос должно быть полезно для студента в современных реалиях.
        了解问题的答案对于现代现实中的学生应该很有用。
      • Ответ на вопрос должен занимать примерно пару минут содержательной речи.
        问题的答案应该需要几分钟的有意义的演讲。
      • Ответ на вопрос должен быть конкретным и обозримым, к примеру: “Расскажите о методах тестирования ПО?” позволяет дать практически любой ответ, в то же время: “Методы оценки качества тестового покрытия. Test coverage и другие метрики.” будет гораздо конкретнее.
        问题的答案应该具体且易于理解,例如:“请告诉我们有关软件测试方法的信息?” 允许您同时给出几​​乎任何答案:“评估测试覆盖率质量的方法。测试覆盖率和其他指标。” 将会更加具体。
      • Старайтесь задать вопрос так, чтобы было просто понять, что ожидается в ответ. К примеру:
        尝试以易于理解预期答复的方式提出问题。 例如:
        • “В чём заключается механизм ошибки ED-4312?” – кто помнит о том, что такое ED-4312 и с чем это связано? Лучше спросить: “Как работает механизм переполнения буфера в рамках ED-4312?”
          “ED-4312 错误的机制是什么?” ——谁还记得 ED-4312 是什么以及它与什么有关? 更好的问题是:“ED-4312 中的缓冲区溢出机制如何工作?”
        • “Перечислите все уязвимости проекта X.” Лучше: “В проекте X присутствовали следующие уязвимости: … Опишите механизм их использования для атаки?”
          “列出 Project X 的所有漏洞。” 更好:“X 项目中存在以下漏洞:…描述利用它们进行攻击的机制?”
      • Вопрос должен быть связан с тематикой дисциплины.
        问题必须与学科主题相关。
  3. Подготовка доклада. Артистичная и интерактивная форма доклада приветствуется. Он должен включать (конкретная структура – на ваше усмотрение):
    报告的准备。 鼓励艺术和互动的演示。 它应该包括(具体结构由你决定):

    • описание технической проблемы или инцидента, объяснение значимости;
      技术问题或事件的描述、意义的解释;
    • описание необходимых для понимания технических деталей, приветствуются диаграммы рассматриваемых систем и проблем;
      欢迎对理解所需的技术细节、系统图表和正在考虑的问题进行描述;
    • описание сути технической проблемы;
      技术问题本质的描述;
    • принятые меры в связи с инцидентом или доступные варианты решения технической проблемы, их сравнения;
      针对事件采取的措施或解决技术问题的可用选项及其比较;
    • мораль, сделанные индустрией выводы, и изменение практик инженерии компьютерных систем:
      计算机系统工程中的道德、行业发现和不断变化的实践:
      • самый важный элемент доклада, именно это знание должно стать полезным для слушателей;
        报告中最重要的要素,这些知识应该对听众有用;
      • следует ориентироваться на современное состояние вопроса, а не на времена инцидента (изобретение интеграционного тестирования сегодня выглядит странно);
        你应该关注问题的当前状态,而不是事件发生的时间(集成测试的发明在今天看起来很奇怪);
      • мораль и выводы должны выходить за пределы рассмотренного кейса (не будьте Капитаном Очевидностью);
        道德和结论应该超出所考虑的情况(不要成为显而易见的船长);
      • мораль может быть адресована: 道德可以解决:
        • разработчикам (чтобы буферы в ваших системах не переполнялись, достаточно отказаться от …);
          开发人员(为了防止系统中的缓冲区溢出,拒绝就足够了……);
        • пользователям (чтобы ваши файлы не зашифровали, достаточно только …);
          用户(为了防止您的文件被加密,您需要做的就是……);
        • администраторам и т.п. 管理员等
      • мораль не должна сводиться к “надо лучше стараться”, к примеру: “надо полностью протестировать X” – дежурная фраза, так как не отражает:
        道德不应该被简化为“你需要更加努力”,例如:“你需要充分测试X”——这是一个常用短语,因为它不反映:
        • Что значит “полностью протестировано”?
          “完全测试”是什么意思?
        • Возможно ли “достаточно протестировать”?
          是否可以“测试足够”?
        • Как оценить качество тестирования?
          如何评价测试质量?
        • Как построить тестирование так, чтобы это было эффективно?
          如何构建测试以使其有效?
        • Какие методы тестирования появились в рассматриваемой области с прошлого века?
          自上世纪以来,该领域出现了哪些测试方法?
        • И т.п. 等等
  4. Выступление в рамках лабораторного занятия в формате диалога с аудиторией (аудитория вправе остановить докладчика в любой момент и задать ему интересующий вопрос).
    在实验课的框架内以与观众对话的形式进行演讲(观众有权随时阻止演讲者并问他感兴趣的问题)。
  5. (опционально) Написание статьи по связанному с темой вашего доклада вопросу.
    (可选)就与您的报告主题相关的问题撰写一篇文章。

    По итогам доклада вами может быть написана небольшая детализированная статья по частному вопросу вашего доклада.
    根据报告的结果,您可以就报告中的特定问题撰写一篇简短而详细的文章。

    • Тема и акценты статьи должны быть согласованы с преподавателем [по лабораторным работам]. Процедура согласования:
      文章的主题和重点必须与[实验室工作]老师达成一致。 审批程序:
      • В ведомости найдите и откройте лист lab1-article-topics.
        在工作表中,找到并打开工作表“lab1-article-topics”。
      • Для свободной от текста и комментариев строки оставьте 4 комментария:
        对于没有文字和注释的行,请留下 4 条注释:
        • Группа
        • ФИО
        • Тема – акцент/комментарий
        • Фамилия преподавателя по лаб. 1
      • Тема должна быть конкретной и иметь практическую значимость для читателя.
        主题必须具体且对读者有实际意义。
      • Темы не должны повторяться.
    • Согласованная тема статьи вместе с именем студента вносится в README.md файл преподавателем с необходимыми комментариями. Структура разделов README документа поддерживается преподавателем. Примерный вид: - Механизмы защиты от переполнения буферов (Иванов Иван Иванович, P12345) -- акцент на средствах уровня компиляции.
    • После согласования и внесения темы README.md – можно приступать к написанию статьи.
    • Статья должна быть оформлена в виде документа в формате markdown в репозитории статей по лаб. 1 (ссылку см. выше).
    • Статья оформляется в виде Merge Request-а, в котором:
      • Файл статьи в виде: <year>/<topic-in-english.md>. Объём порядка 10-12k символов.
      • Картинки (при необходимости): <year>/<topic-in-english>/*.png. Размер файлов до 700kb каждый.
      • Добавление ссылки на статью в README файл вида: [Механизмы защиты от переполнения буферов (Иванов Иван Иванович, P12345)](RELATIVE_LINK).
      • CI должен проходить успешно.
      • Отсутствие merge conflict. Их устранение – задача студента.
      • Ревью статьи делается через MR. Следите за обновлениями.
      • Статья считается сданной после слияния с основной веткой.
    • Оценивание статей:
      • 0 баллов – MR не принят.
      • 5 баллов – ваша статья является законченной статьёй по заявленной теме. MR принят.
      • 6-10 баллов – вы написали отличную, интересную и полезную статью и у вас нет замечаний.

ВНИМАНИЕ: разобранные на лабораторных занятиях сценарии и технические решения будут включены в экзамен по предмету, поэтому:

  1. К подготовке статей необходимо относиться ответственно, так как именно ваши материалы будут предоставлены вам и вашим коллегам для подготовки. Если необходимо, вы всегда можете прикрепить ссылки на свои материалы в lab1-journal.md.
  2. Других докладчиков необходимо слушать внимательно и, если непонятно, спрашивать.
  3. Группы для лабораторных работ №1 могут отличаться от групп с точки зрения университета. Они не могут меняться в течение семестра. Экзамен необходимо сдавать с одногруппниками по лабораторной работе №1.

Лабораторная работа №2. Архитектурные принципы 实验室工作No.2 架构原则

Цель: ознакомить учащегося с принципами, связанными с архитектурой компьютерных систем, не вошедшими в лекционный курс, а также демонстрация того, насколько по-разному может быть воспринят материал разными людьми.
目的: 向学生介绍讲座课程中未涵盖的与计算机系统架构相关的原理,并演示不同的人如何以不同的方式感知这些材料。

Задачи (необходимо повторить для каждого предоставленного материала):
目标(必须针对提供的每种材料重复):

  1. Ознакомление с предоставленными материалами.
    熟悉所提供的材料。
  2. Написание эссе на тему прочитанного материала в свободной форме, которое должно включать:
    以自由阅读材料为主题写一篇文章,内容应包括:
    • основные мысли, высказанные автором/авторами материалов (с вашей точки зрения);
      材料作者表达的主要想法(从您的角度来看);
    • характеристику практической и научной значимости материала;
      材料的实际和科学意义的表征;
    • ваше рассуждение на тему, в котором вы можете согласиться с автором, не согласиться, дополнить или как-то иначе прокомментировать материал.
      您对某个主题的推理,您可以同意、不同意、补充或以其他方式评论该材料。
  3. Загрузка эссе в информационную систему.
    将论文上传至信息系统。
  4. Рецензирование эссе ваших коллег по данному материалу. Написание отзыва для автора. Double blind (рецензент не знает, кто автор эссе; автор не знает, кто его рецензирует).
    复习同事关于本材料的论文。 为作者写评论。 双盲(审稿人不知道论文的作者是谁;作者也不知道是谁在审稿)。

Примечание: 笔记:

Эссе 1 (2023)

Эссе 2 (2023)

Эссе 3 (2023)

Pool

Лабораторная работа №3. На кончиках пальцев Цель:

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

Данная лабораторная работа носит практический характер. Она включает разработку:

языка программирования и транслятора; системы команд; модели процессора; реализацию и тестирование работы алгоритмов.

Детали задания: Лабораторная работа №3. На кончиках пальцев Пример реализации транслятора и модели процессора: Brainfuck