Hi. I'm John Regehr and I like to make software fail. This
June I'll be teaching CS258 which is a course on applied software testing.
What that means is, the focus of the course is going to be
on trying to make real software fail as opposed to learning software engineering
theory. The reason I wanted to create this course is because computer
science educators like me, often haven't done a very good job in teaching
tCS students to become really strong testers. And I'd like to help try
to fix that. One of the things that you'll do in this class
is participate in some tournaments that we have setup, where you are
going to to try to break software that other students and they are going
to break the software that you wrote. And I think this will be
really fun. I spent the last 12 years as a computer science researcher,
mainly working on ways to improve the quality of software, including reporting
about 450 bugs to people who develop C compilers. This class is for
you if you're interested in increasing the quality of software that you write
and then increasing the quality of
software that other people write. You're ready
for this class if you have a reasonable, working knowledge of
algorithms and data structures, and if you're an intermediate level Python
programmer who can put together the basic control flow constructs and
data types in order to solve small problems. See you in class.
私はジョン・レガー
ソフトウエアを失敗させるのが大好きです
6月に開講するCS258で
ソフトウエアのテストについて講義します
本コースではソフトウエア工学の
理論ではなく
ソフトウエアを失敗させる方法について話します
なぜこのような講義をするかというと
コンピュータ・サイエンスの分野において
ソフトウエアの
テストに関する教育が進んでいないからです
講義の中で皆さんには
トーナメントに参加してもらいます
生徒同士でお互いが書いたソフトウエアを
壊しあってもらうのです きっと面白いですよ
私はコンピュータ科学者として12年間にわたり
ソフトウエアの品質向上について研究し
Cコンパイラに関しては約450個のバグを見つけました
本コースは自分や他の人が書いたソフトウエアの
品質向上に
興味がある方のための講座です
受講に際してはアルゴリズムやデータ構造に加え
Python中級程度のプログラミングの知識が必要です
基本的な制御フロー構文とデータ型を用い
簡単な問題を解けるレベルの方を対象としています
안녕하세요 저는 존 로셔이고 저는 소프트웨어를 분해해 보고 싶어합니다. 이번 6월에
저는 CS258 강좌를 가르칠 것입니다. 이 강좌는 응용 소프트웨어 실험에 관한 것입니다.
저것이 의미하는 바는, 강좌의 초점이
진짜 소프트웨어 실패를 만들어내려고 시도하는 일이 될 것입니다. 소프트웨어 엔지니어링 이론을 배우는일과는
상반되죠. 내가 이 강좌를 만들기를 원했던 이유는 저같은
컴퓨터 과학을 가르치는 사람들이 종종 정말로 강력한 실험자가 되기 위해서 TCS를 학생들에게 가르치는데 아주
잘해 나가고 있지 않기 때문입니다. 그리고 나는 저것을 고치려고 시도함으로써 여러분을
돕고 싶습니다. 이 강좌에서 여러분이 할 것 가운데 한 가지는
우리가 설정한 어떤 토너먼트에 참여하는 것입니다. 이 지점에서 여러분은
소프트웨어를 분해하려고 시도할 것이며, 그러므로 다른 학생들과 그들이
여러분이 쓴 소프트웨어를 고장 낼 것입니다. 그리고 내 생각에 이것은
정말로 흥미롭습니다. 나는 지난 12년 동안 컴퓨터 과학 연구자로 살았습니다.
주로 소프트웨어의 질을 향상시키는 방식으로 연구를 하면서요. 여기에는
C 컴파일러를 개발하는 사람들에게 450개의 버그에 대해서 보고하는 일을 포함하였습니다. 이 강좌는
만약 여러분이 여러분이 쓴 소프트웨어의 품질을 향상시키는 데 여러분이 관심이 있다면
그리고 그 뒤에 다른 사람이 쓴 소프트웨어의 품질을 향상시키는 데 관심이 있다면 이
강좌는 여러분을 위한 강좌입니다.
알고리즘과 자료 구조에 관한 합리적이고 실용적인 지식을 가지고 있다면,
그리고 만약 작은 문제를 풀기 위해서 데이터의 유형과 기본적인 통제 흐름 구조를 함께 놓을 수 있는
중급 수준의 파이톤 프로그래머라면 이 강좌를 위해 여러분은 준비 된 사람입니다.
강좌에서 뵙겠습니다.
Oi. Meu nome é John Regehr e gosto de fazer softwares falharem.
Eu ensinarei CS258 que é um curso em teste de software aplicado.
O que isso significa, o foco deste curso é para tentar fazer softwares reais falharem,
ao contrário de aprender teoria de engenharia de software
A razão de querer criar este curso é porque os educadores de ciência computacional como eu,
muitas vezes, não têm feito um trabalho muito bom em ensinar os estudantes de TCS a
se tornarem testadores realmente fortes.
E eu quero ajudar a arrumar isso. Uma das coisas que você fará
é participar em alguns torneios que nós iniciaremos, onde você irá
tentar quebrar quebrar o software de outros estudantes e eles
irão destruir o software que você escreveu.
E acho que isso será realmente divertido. Eu gastei os últimos 12 anos como um pesquisador de ciência computacional,
principalmente trabalhando em maneiras de melhorar a qualidade de software,
incluindo relatórios de 450 bugs para as pessoas que desenvolvem compiladores C.
Esta classe é para você se você estiver interessado em aumentar a qualidade do software
que você escreveu e aumentar a qualidade de
software que as outras pessoas escreveram.
Você está pronto para esta classe se você tiver um conhecimento
razoável e prático de algorítimo, estrutura de dados e se você tem um nível intermediário de
programação em Python que pode unir as construções de fluxo de controle básico e
tipos de dados, para resolver problemas pequenos.