Курс как экосистема: совмещая преподавание, исследование и практику

Материал из HNKN
Перейти к навигации Перейти к поиску

Д-р Эдвард Ф. Герингер, Государственный университет Северной Каролины

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

Аннотация[править | править код]

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

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

1. Понятие «экосистемы» курса[править | править код]

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

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

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

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

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

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

2. Практический пример: объектно-ориентированный дизайн и разработка[править | править код]

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

В годы после 2000 года движение с открытым исходным кодом, и институты компьютерных наук начали включать проекты программного обеспечения с открытым исходным кодом (open-source software OSS) в свои курсы. Открытый исходный код дал студентам возможность внести свой вклад, который будет использоваться далеко за пределами курса, для которого они были написаны. Зачастую такие проекты были достойны упоминания в резюме. В курсе автора больше внимания стало уделяться разработке. Учащиеся, которым раньше было позволено самостоятельно выбирать темы для проекта, теперь должны вносить свой вклад в проект с открытым исходным кодом, используя навыки, которые они приобретали на занятиях. Чтобы подсобить студентам, автор искал проекты с отрытым исходным кодом, которые искали студентов. Спонсоры, такие как JFreeChart, Sahana и OpenMRS, предоставили спецификации для студенческих проектов.

Никогда не удавалось привлечь столько спонсоров, чтобы каждый студент группы мог работать над их проектами. К 2011 году количество студентов в группе превысило 100 человек, что означало потребность в 30-35 внешних проектах. Спонсор обычно предоставлял только около трех проектов. Таким образом, недостаток пришлось компенсировать внутренними проектами. Несколько лет назад у нас была открытая система экспертной оценки Expertiza, и мы быстро добавляли новые возможности. Наша веб-система использовалась более чем в дюжине других учебных заведений, так что она давала студентам опыт написания программного обеспечения для реальных пользователей.

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

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

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

До сих пор мы описывали проекты, выполненные в рамках курса. Вначале эти проекты добавляли новые функции, но в последнее время проекты рефакторинга и тестирования стали более распространенными. Есть также проекты большего объема, выполненные для самостоятельных курсов или диссертаций. Они также приносят пользу курсу, потому что они улучшают программное обеспечение для взаимной оценки, используемое в курсе. Один независимый учебный проект позволил студентам формировать команды, приглашая других присоединиться к своей команде, а приглашенные затем принимали приглашение. Другой проект добавил представление с вкладками для создания заданий. Третий предоставил анонимное представление, чтобы мы могли использовать живые данные в демонстрациях без раскрытия имен учащихся. Четыре из этих проектов привели к докладам на конференциях, написанных студентами-независимыми студентами [1–4], а пять - к докладам на семинарах [5–9].

В первой магистерской диссертации были добавлены функции для поддержки рецензирования вкладов студентов в вики-учебники [10]. Это включало в себя упорядоченный обзор глав, чтобы предварительные главы были написаны и проверены до глав, от которых они зависели. Первый доктор философии. диссертация [11] включала использование обработки естественного языка для оценки характеристик обзоров [12], например их тона (положительного или отрицательного), были ли они, казалось, комментарии, относящиеся к работе, или они в основном просто говорили оценка работы была хорошей или плохой. Второй доктор философии. [13] рассмотрели такие аспекты экспертной оценки, как улучшение рубрик [14], разделение формирующих и итоговых рубрик [15] и использование показателей компетентности рецензента в качестве весовых коэффициентов при расчете оценок сверстников [16]. Третий доктор философии. сосредоточены на программно-инженерных аспектах работы [17], такие как анализ ошибок проектирования, которые студенты совершали в своих проектах [18], измерение влияния различных стратегий для разработки, основанной на тестировании [19], и использование ботов для формирования обратной связи с учащимися о своем коде перед отправкой проекта [20] . Действующий доктор философии. студент изучает подходы машинного обучения к измерению качества обзора [21]. Важно отметить, что ни один из этих проектов не мог бы состояться без использования системы взаимной оценки в моем курсе объектно-ориентированной разработки: у нас не было бы данных обзора для работы, и у нас не было бы студенческих проектов для измерения. . и использование ботов для формирования обратной связи с учащимися об их коде перед тем, как они представят свой проект [20]. Действующий доктор философии. студент изучает подходы машинного обучения к измерению качества обзора [21]. Важно отметить, что ни один из этих проектов не мог бы состояться без использования системы взаимной оценки в моем курсе объектно-ориентированной разработки: we would not have had review data to work with, and we would not have had student projects to measure.

2.1 Managing independent-study projects related to the course[править | править код]

Independent-study projects have been essential to sustaining this ecosystem. Some software features are too involved to be implemented in a four-week course project. Some projects, such as those involving machine learning, are not really related to the course material. Also, in such a short timeframe, a student does not have time to do an experiment, get results, and write a paper, even if there are other co-authors. So longer projects are needed. For projects that are related to the course material, having students in a course and seeing how they do on course projects is an ideal way to vet applicants for a longer project. Conversely, for the students, participating in course projects is an excellent way for them to see what the work entails, and what they might be interested in continuing. Among the longer projects, thesis projects are ideal. Working on a masters thesis gives a student the opportunity to spend multiple semesters on a project. The contributions are in larger chunks than a single-semester independent study, which means that the instructor has less of a need to coordinate work between different individuals, and the project team has less work to merge the projects. Experience has shown that design is critical to an effective project. The student prepares a proposal, which usually involves two or three rounds of review with the faculty member. Often, a timeline is included, although timelines at the proposal stage have proven to be mostly aspirational, and impossible to adhere to in practice. Students and faculty members meet weekly. Minutes of all meetings are kept in a cloud-based document, such as a Google doc. All artifacts, documentation, and reports are linked to this document. Not only does this serve as a good record of progress, it is also available to students in later semesters to get up to speed on what has already been accomplished. The design of code is reviewed frequently, as it is very easy for students to design their portion in a way that is incompatible with the design of the project as a whole. When more than one student is interested in a project, it is useful to have students work in groups. That allows students to help each other over rough spots, and cuts the time that the instructor spends in meetings. Whenever possible, it is helpful to let a Ph.D. student direct the group, though the instructor should still exercise oversight of the design and methodology. Projects fall into several areas. Software development is the most obvious one. New features are added to the peer-assessment system. Tools for managing projects are improved, such as the bots that give feedback to students on the quality of their code. Dev ops is another important kind of project. The project needs a test server to test new features and find bugs. It should be running an up-to-date database. Ideally, new implementations should be rolled out to a portion of the user community so that they can be fully vetted before being deployed to all users. A second kind of project is mentoring. Students who have done well on their projects in the course are recruited to help students in the next semester. They do a little bit of code development to become familiar with a piece of the project (e.g., the student user interface). Then they participate in writing specifications for student projects. When those projects are assigned to project teams, they meet with those teams weekly, discussing the design, reviewing the code, and overseeing the interface with the rest of the software application. A third kind of project is to have students develop active-learning exercises for the course [22]. These are not related to the software application per se, but they are very important to the course. Students have developed an average of three or four exercises for each course session. Sometimes they are little programming snippets that have to be finished by the student during class. When they are structured as fill-in-the-blank exercises, they can be autograded by Google forms quizzes during class, allowing students to see when they have found the right answer, and allowing the instructor to display a summary of progress on the monitor in the classroom. We have also adapted industrial training exercises, and development games [23], to be used during class. The final kind of projects are those related to research. An example is the work mentioned above to use machine learning to recognize a good review. Nearly two dozen students have tried different approaches, such as support vector machines, convolutional neural networks, and bidirectional LSTM. At least half of them have been co-authors on a paper. Others are working on exporting data from the peer-assessment system to facilitate data mining studies or assessment research.

Students are recruited for these projects as follows. About the time that registration starts for the next semester, the instructor prepares a list of possible topics for independent study or thesis research. There are usually 15 to 20 projects in this list. Students are invited to use a Google form to indicate their interest in each project. The instructor looks at the distribution of interest in different projects, and the performance of each student in the course, and makes recommendations to each student on what project might be of mutual interest. A student can accept the recommendation or request a different topic. Of course, many students drop out after indicating interest on the form. The instructor works with the remaining students on proposals for independent study or thesis research. The students register at the beginning of the following semester. Often other students who have not taken the course approach the instructor with interest in one of these projects. They can be assigned projects, such as AI-related projects, that do not rely upon knowing the course material.

2.2 Differentiating roles[править | править код]

Independent-study students can assist TAs, but they should not do the work that the TAs are paid for doing. In particular, they do not need access to student grades, except for the projects that they mentor. In the author’s course, projects are graded in a group meeting with TAs and mentors present. The projects are discussed one by one, taking into account the code changes in the repository, the peer reviews done by other students, and the documentation. The mentor for the project (either an independent-study mentor, a TA, or the instructor) is asked to propose a grade for the project. Anyone else can comment on the proposed grade. About half the time, this results in assigning a different grade than originally proposed. The course has become very successful. It is offered every semester and attracts 150 to 200 students a year, very unusual for a course that is not required for any degree program. It is frequently cited by students as instrumental in helping them land a job. The research that it supports led to a multi-campus NSF grant of nearly $2 million.

3. Using the ecosystem approach in other courses[править | править код]

The ecosystem approach should be usable in many other courses. The key is looking beyond compartmentalization. Don’t ever think that the TA support you are given is the only help you can get with your course. And don’t assume that your research assistants are the only students who can help with your research. Many areas of software engineering and computer science should be amenable to this approach. Directly related to software engineering would be applications for code review and collecting software metrics. If your research involves learning technologies, you might ask students to develop components for Canvas, an open-source LMS. Research on tools for video and class management, like Echo360 [24], would also be relevant. Another example is creating exercises and visualizations for an online textbook, like those written for zyBooks [25]. You might get involved with the Quizi.us project [26] for having students create exam questions through peer review and machine learning. If your area is intelligent tutoring, you could lead students in working on intelligent tutors for topics that you teach.

Other opportunities are related to research areas that do not involve course tools. One idea is collecting data for educational data-mining experiments, especially when software needs to be modified to enable data collection. If you are teaching computer architecture, you could have students develop simulations for homework, and then offer independent-study projects to enhance the simulation environment. The author spoke with one instructor who has funding from the US Forest Service for work on forest ecology. He recently earned a Ph.D. after a 25- year career developing software in that field. While he was working on his Ph.D., he had students write software for his research experiments. He has continued this practice, and now has funding from the Forest Service, which has enabled him to hire 30 of his students as interns for about twelve weeks during the summer. The author talked with an engineering teacher who has implemented this concept in high-school classes. He has students propose physical projects around his lab. They come up with ideas to improve the utilization of tools and equipment. He has them identify a need, for example, developing systems and devices to safely secure tools and machinery when not in use, or organization schemes and structures to improve the lab environment, and then propose a project to deal with it. The students use their knowledge of the engineering design process to plan, design, and execute their projects, and each project concludes with a final professional presentation to the class. These examples illustrate that courses of many sizes and levels can be structured to incorporate student projects that improve the experience for all students. Table 1 summarizes ideas that may be useful for new engineering faculty. Often, projects can produce research that results in publications or funding. In the case of software projects, designing and managing them helps the instructor keep up his/her skills as a practitioner. There is great synergy to be had from treating a course as an ecosystem of teaching, research, and practice.

Table 1. Checklist for Constructing a Course Ecosystem[править | править код]

Research[править | править код]

  • Can students do projects that will reinforce principles taught in the course and benefit the instructor’s research?
  • Can these projects be divided into pieces, so each student or student team works on a different part of the project?
  • Can performance on these projects be used to vet students as candidates for working in the instructor’s lab?
  • Can data be gathered from student projects or student teams to support experiments in software engineering?
  • Can students perform a literature review that will benefit an upcoming paper or research proposal?

Teaching[править | править код]

  • Can students to research topics that the instructor might want to cover in a later offering of the course?
  • Can students create active-learning exercises over the course material, ideally, for each class session?
  • Can student projects be used to enhance the laboratory or software infrastructure?
  • Can former students mentor, perhaps for independent-study credit, projects being done by current students?
  • Can students write software that will be useful in managing some aspect of the course? A module for an LMS? Adapt a metric to be applied to course projects?

Practice[править | править код]

  • In managing student projects, can the instructor practice skills that (s)he can teach to students?
  • Can student projects help develop relationships with industry that can lead to joint research or development projects?
  • Can the instructor’s experience in industry develop internship or funding opportunities for students?

Acknowledgments[править | править код]

The author acknowledges the help of Dale Hamilton, from Northwest Nazarene University, and William Wahby, of North Gwinnett High School, who contributed information on how they use this approach in their courses

  1. Edward F. Gehringer, Maria Droujkova, Abhishek Gummadi, and Maveeth Nallapeta., “Game mechanics and social networking for co-production of course materials,” Frontiers in Education 2009, paper 2009-1426.
  2. Edward F. Gehringer, Abhishek Gummadi, Reejesh Kadanjoth, and Yvonne Marie Andrés, “Motivating effective peer review with extra credit and leaderboards,” ASEE Annual Conference and Exposition, American Society for Engineering Education, Louisville, KY, June 20–23, 2010, paper #2010-1154
  3. Edward Gehringer, Ferry Pramudianto, Abhinav Medhekar, Chandrasekar Rajasekar, and Zhongcan Xiao, "Applications of Artificial Intelligence in Peer Assessment," 2018 ASEE Annual Conference and Exposition, Salt Lake City, June 25, 2018.
  4. Sudipto Biswas, Edward F. Gehringer, Dipansha Gupta, Sanket Sahane, and Shriya Sharma, "A Data-Mining Approach to Detecting Plagiarism in Online Exams," EDM 2018: the 11th International Conference on Educational Data Mining, Buffalo, NY, July 15-18, 2018, pp. 504-507.
  5. Edward F. Gehringer, Karishma Navalakha, and Reejesh Kadanjoth, “A student-written wiki textbook supplement for a parallel-architecture course,” Proc. Workshop on Computer Architecture Education, associated with HPCA-17, High-Performance Computer Architecture, San Antonio, TX, Feb. 13, 2011.
  6. Edward F. Gehringer, Kai Ma, and Van Duong, "What peer-review systems can learn from online rating sites," PRASAE 2015, 2nd Workshop on Peer Assessment and SelfAssessment in Education, associated with International Conference on Smart Learning Environments, Sinaia, Romania, Sept. 23–25, 2015, in New Horizons in Web-Based Learning, Springer.
  7. Ferry Pramudianto, Tarun Chhabra, Edward F. Gehringer and Christopher Maynard, "Assessing the quality of automatic summarization for peer review in education," Second Workshop on Computer-Supported Peer Review in Education, associated with Educational Data Mining 2016, Raleigh, NC, June 29, 2016
  8. Da Young Le, Ferry Pramudianto and Edward F. Gehringer, "Prediction of grades for reviewing with automated peer-review and reputation metrics," Second Workshop on Computer-Supported Peer Review in Education, associated with Educational Data Mining 2016, Raleigh, NC, June 29, 2016.
  9. Zhongcan Xiao, Chandrasekar Rajasekar, Ferry Pramudianto, Edward Gehringer, Vishal Chittoor, and Abhinav Medhekar, "Application of neural-network models to labeling educational peer reviews", CSEDM 2018: Educational Data Mining in Computer Science Education Workshop, Buffalo, NY, July 15, 2018
  10. Reejesh Kadanjoth, “Workflow Management and Administrative Support for Large Collaborative Projects,” masters thesis, North Carolina State University, July 2010.
  11. Ramachandran, Lakshmi, “Automated Assessment of Reviews,” Ph. D. dissertation, North Carolina State University, May 2013.
  12. Lakshmi Ramachandran, Edward F. Gehringer, and Ravi Yadav, "Automated assessment of the quality of peer reviews using natural language processing techniques," International Journal of Artificial Intelligence in Education, January 2017, pp. 1-48
  13. Yang Song, “Data Sharing in Peer-Assessment Systems for Education,” Ph. D. dissertation,, North Carolina State University, July 2017.
  14. Yang Song, Zhewei Hu, and Edward F. Gehringer, "Closing the circle: use of students' responses for peer-assessment rubric improvement," Proc. ICWL 2015, 14th Int'l. Conference on Web-Based Learning, Guangzhou, China, Nov. 5–8, 2015.
  15. Yang Song, Zhewei Hu and Yifan Guo, and Ed Gehringer, "An experiment with separate formative and summative rubrics in educational peer assessment", Proc. Frontiers in Education 2016, 46th Annual Conference, Erie, PA, October 12–15, 2016.
  16. Yang Song, Zhewei Hu, Edward F. Gehringer, Julia Morris, Jennifer Kidd, and Stacie Ringleb, "Toward better training in peer assessment: Does calibration help?" Second Workshop on Computer-Supported Peer Review in Education, associated with Educational Data Mining 2016, Raleigh, NC, June 29, 2016.
  17. . Zhewei Hu, “Helping Students Make Better Contributions to Open-Source Software Projects,” Ph. D. dissertation,, North Carolina State University, May 2019.
  18. Zhewei Hu, Yang Song, and Edward F. Gehringer, Open-source software in class: students' common mistakes," Proceedings of the 40th International Conference on Software Engineering: Software Engineering Education and Training, Goteborg, Sweden, May-June 2018.
  19. . Zhewei Hu, Yang Song, and Edward F. Gehringer, “A Test-Driven Approach to Improving Student Contributions to Open-Source Projects,” Frontiers in Education 2019, 49th Annual Conference, Covington, KY, October 16–19, 2019.
  20. Zhewei Hu and Edward F. Gehringer, “Improving Feedback on GitHub Pull Requests: A Bots Approach,” Frontiers in Education 2019, 49th Annual Conference, Covington, KY, October 16–19, 2019.
  21. Gabriel Zingle, Balaji Radhakrishnan, Yunkai Xiao, Edward Gehringer, Zhongcan Xiao, Ferry Pramudianto, Gauraang Khurana, and Ayush Arnav, "Detecting suggestions in peer assessments," EDM 2019: 12th International Conference on Educational Data Mining, Montreal, July 2019, pp. 474-479.
  22. Edward F. Gehringer and Carolyn S. Miller, “Student-generated active-learning exercises,” Proc. SIGCSE 2009, Fortieth Technical Symposium on Computer Science Education, Chattanooga, Mar. 4-7, 2009, pp. 81–85.
  23. AgileSparks, “Agile games and exercises list,” https://www.agilesparks.com/resources/topicsubject-reading-lists/agile-games-andexercises-list/ (Accessed Feb. 2, 2020)
  24. Mark, Kai-Pan, Douglas R. Vogel, and Eva YW Wong. "Developing Learning System Continuance with Teachers and Students: Case Study of the Echo360 Lecture Capturing System." In PACIS, p. 170. 2010
  25. Edgcomb, Alex, Frank Vahid, Roman Lysecky, and Susan Lysecky. "Getting students to earnestly do reading, studying, and homework in an introductory programming class." In Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education, pp. 171-176. 2017.
  26. Saarinen, Sam, Shriram Krishnamurthi, Kathi Fisler, and Preston Tunnell Wilson. "Harnessing the Wisdom of the Classes: Classsourcing and Machine Learning for Assessment Instrument Generation." In Proceedings of the 50th ACM Technical Symposium on Computer Science Education, pp. 606-612. 2019.