私はCS部門で3番目に必要なイントロコースを教えています。私の宿題の1つは、前の課題のために書いたコードをスピードアップするように生徒に求めています。10倍のスピードアップは日常的なものです。100または1000の係数は前代未聞ではありません。(1000倍のスピードアップのために、malloc()で新人のミスを犯したに違いありません。)
プログラムは、小さな変更のシーケンスによって改善されます。それぞれの変更とその結果の改善を記録して説明するように生徒に依頼します。
あなたがプログラムを改善している間、それを壊すことも可能です。取り消すのはいいことではないでしょうか?
これで私がどこに向かっているのかがわかります。私の学生はバージョン管理から多大な恩恵を受けるでしょう。ただし、いくつかの注意点があります。
- 私たちのコンピューティング環境はロックダウンされています。中央リポジトリに依存するものはすべて疑わしいです。
- 私たちの学生は信じられないほど過負荷です。クラスだけでなく、仕事、スポーツ、音楽など、あなたはそれに名前を付けます。彼らが新しいツールを使用するには、それは信じられないほど簡単で、明らかな利点がなければなりません。
- 私たちの学生はほとんどの仕事をペアで行います。アカウント間でビットを行き来させるのは問題があります。この問題は、分散バージョン管理によっても解決できますか?
- 複雑さは敵です。CVSリポジトリの設定は非常に面倒です---私自身は年に1回しか実行しないため、まだ問題があります。SVNはさらに難しいと言われています。
既存のシステムに関する私のコメントは次のとおりです。
- 私たちの学生は、他の1人の学生と共有できるリポジトリを作成するために必要な管理者権限を持っていないため、中央バージョン管理(CVSまたはSVN)は除外されていると思います。(Unixファイルのパーミッションで立ち往生しています。)また、CVSまたはSVNでのセットアップは難しすぎます。
- darcsの設定は非常に簡単ですが、どのように共有するかは明らかではありません。darcs send(電子メールでパッチを送信する)は有望なようですが、設定方法が明確ではありません。
- gitの紹介ドキュメントは、初心者向けではありません。CVSのセットアップのように、それは私自身が問題を抱えているものです。
私は、初心者の学生にどのソース管理を使用するかについての提案を求めています。既存のシステムの上に薄いベニヤを置き、既存のドキュメントを簡素化するためのリソースを見つけることができると思います。おそらく、新しいドキュメントを作成するためのリソースがありません。
では、変更をセットアップ、コミット、元に戻し、パートナーと共有するのは本当に簡単ですが、簡単にマージしたり、大規模に作業したりする必要はありません。
重要な制約は、プログラミングペアは互いに、そして互いにのみ作業を共有できなければならず、ペアは毎週変更されるということです。私たちのインフラストラクチャは、Linux、Solaris、およびNetappファイラーを備えたWindowsです。私のITスタッフが、学生のペアごとにUnixグループを作成したいとは思わない。私が見落としていたより簡単な解決策はありますか?
( Git Magicへの優れた参照と有益なコメントにより、他の回答よりも優れた回答を受け入れてくれてありがとう。)