
C言語入門、東京大学情報科学科の場合 193
ストーリー by nabeshin
大学でこのぐらいはやってほしかった 部門より
大学でこのぐらいはやってほしかった 部門より
ultrageek 曰く、
C言語入門、書籍だろうが講議だろうが、この業界なら誰もが通る道ではあるが、 sumiiの日記経由で実に興味深いC言語入門を見付けた。 東京大学理学部情報科学科の学部2年生向けのアルゴリズムとデータ構造演習内でのC言語入門 なのだが、 C入門第1回では、シェルを実装、データを圧縮・解凍するプログラムを実装、スパムフィルタを実装というお題目が並んでいる。 これだけで一瞬ひるんでしまったが、解説PDFを見ると、 「最低でもジョブ管理、リダイレクト、(多段)パイプラインの機能は実装すること」などと書かれている。 UNIXへの理解がかなりないと難しい気がするのだが、これをくぐり抜けてくる学生はどれくらいいるのだろう?
その課題はやる必要がない (スコア:5, 参考になる)
こういうのを余裕で解いてくる奴は本当に力があるし、解けない奴は単なる勘違い野郎だからさっさと現実を見つめ直した方がいいというのがこういう問題を出す趣旨だね。現実は出来ないのに出来るという幻想ばかり持っていると、それが足枷となって伸び悩むからね。
# 内情を知り過ぎているのでACで。
# ちなみに、自分も『僕が一番プログラムをうまく書けるんだ!』と勘違いしておりました orz
Re:その課題はやる必要がない (スコア:1)
かわいいのが並んでる。
なお自分の学科ではプログラミング(Fortran)の第一回講義テーマが
「3x2配列として代入したデータを2x3配列として取り出す」でした。
なぜそこを突く? > 担当教官
AVG anti-virus data base out of date
Re:その課題はやる必要がない (スコア:1)
それに慣れさせるための課題かも(なぜ慣れる必要があるかは知らないけど)。
Re:その課題はやる必要がない (スコア:1, 興味深い)
その時に聞いた課題はたしか「ウィンドウシステムを作れ」だったかと。
#それを聞いて「そんなんできねーよ」とか「あっちはやっぱりスーパーハカーの棲家か」とか思ったヘタレなのでAC
Re:その課題はやる必要がない (スコア:1, 興味深い)
C/C++/Javaとかはやりのスクリプト系言語以外はプログラミング言語にあらずという若造が最近多い.
いにしえのスタティックなメモリアロケーションしか出来ないFortranから始まって,LISP,Pascalをはじめとする
ALGOL系(Wirth系)の言語,Smalltalkなんかの特徴と実装の違いなんかは基礎知識として習得して欲しいですね.
歴史的な経緯を知らずに,今現在の流行りの言語・開発環境がいかなる局面でも技術的にベストなものだと盲信してほしくない.
Re:その課題はやる必要がない (スコア:2, おもしろおかしい)
昔々、世の中に言語がひとつしかなかったころの話。
人は、傲慢にも、天まで届く高い塔を建てようと試みました。
鼻の数・・・ (スコア:1, 参考になる)
今のシラバスはこんな感じ [u-tokyo.ac.jp]みたいですね。
#10年以上前の卒業生なのでAC
Re:その課題はやる必要がない (スコア:1, 興味深い)
最初は研究所配属になる人の比率は多いかもしれないが、現場に近いところに配属になる人もいるし、研究所に配属になっても最後まで居れる人は稀です。
Re:その課題はやる必要がない (スコア:1, 興味深い)
#当然AC。
Re:その課題はやる必要がない (スコア:5, おもしろおかしい)
クローズドな環境ならいいですけど。
# ↑ボケてみたつもりです。…まさかそういうこと?
Re:そういう課題を考える奴と本当にやる奴は同じくらい馬鹿っぽい (スコア:1, すばらしい洞察)
Re:そういう課題を考える奴と本当にやる奴は同じくらい馬鹿っぽい (スコア:2)
本気で言っているとしたら、東大や東工大の情報系学科で何を教えているかを知らないか、プラグマティズムから生まれた学問に何の価値もないと思っているかなんでしょうか。
この手の大学でちゃんと教育を受けた方が『大学の専門学科としての情報学科は無くした方が良い』と主張するならまだ、聞く耳はあります。しかし、ちゃんとした教育を受けた方なら、このような論拠も論理も無く、ただ自己の主張だけがあるような意見を誰も相手にしてくれないと熟知していると思いますが?
まずは情報学科があることの弊害について論拠を示しながら述べてはいかがでしょうか?
日本のソフトウエア産業、衰退の真因 [nikkeibp.co.jp]
> 日本はどうであろう。ソフトウエアエンジニアリングを教えている大学の数はいまだに少ないし、
> 仮に教えてもらったとしても、学生が就職する企業側でそれを生かしていない。
この記事を見る限り、自分はソフトウェアエンジニアリングを教えるよう情報系学部学科を持つ大学を改造するべきだと思います。改造することでそれらの学部学科の重要性は更に増すことになるでしょう。
それってどこがC言語… (スコア:4, 興味深い)
内容的には是非やっていただきたい内容だと思いますが…最近の大学は
「キーボードを打った事がない」
というレベルの人はもういないと思って良いんでしょうか??
fjの教祖様
Re:それってどこがC言語… (スコア:5, すばらしい洞察)
# 「プログラミング/アルゴリズム入門」ではない。
Re:それってどこがC言語… (スコア:1)
Unix系OSの経験がほとんどないので、シェルって何ですか、というレベルなのですが。そんな奴は受ける資格がないのかなあ
Re:それってどこがC言語… (スコア:1)
# しかもその授業を担当していたのは著者様…
自己解決能力 (スコア:3, すばらしい洞察)
自由課題の難しさだけクローズアップされてるけど
”こういうことをちゃんと教えてる”ってのも結構重要な気がする
#とりあえず自分が提出するなら2-A
Re:自己解決能力 (スコア:1, おもしろおかしい)
Re:自己解決能力 (スコア:1, 興味深い)
課題を出されたことがあったな。そんなもん、調べても
中々出てないんで参った。考えたアルゴリズムに対して
無い知恵絞って計算量を見積もってレポートしたっけ……
# 疎な非負整数列を仮定して 1を探して、2を探して…… という
# レポートを返却した記憶がある。
Re:自己解決能力 (スコア:2, 参考になる)
与えられた数列(大きさ n)を適当に並べたものを1つの文字列とみなします。
数列の並べ方は n! 通りあるので、全並べ方を考えると n! 個の文字列ができます。
この n! 個の文字列を辞書式順でソート(*)すると、先頭に来た文字列は
元の数列のソートされたものになっているので、これを出力します。
(*)の部分は挿入ソートを使うことにすると、計算時間は O((n!)^2) となります。
さらに(*)の部分にこのソート法を使う(n! 個の文字列を並べたもの1つの文字列とみなして、
(n!)! 通りの並べ方を考える)と、O(((n!)!)^2) になります。
さらに同様のことを繰り返すと、いくらでも遅いアルゴリズムが作れます。
数学科では「TeXを拡張する」授業 (スコア:3, 興味深い)
> 日本語の組版処理をサポートした日本語版TeX (アスキー日本語TeX、pTeX)に、TeXの拡張版としての機能を備える
> e-TeXをマージした「e-pTeX」が公開された。
> 東京大学の北川弘典氏が、同大理学部数学科の授業内プロジェクトとしてスタート、変更を加えた部分を
> 拡張BSDライセンスのもとpTeXのパッチとして公開したもの。
北川さんは3年生で、『東京大学理学部数学科3年対象の授業「計算数学II」』の課題としてこのプロジェクトを
おこなっている。
Your 金銭的 potential. Our passion - Micro$oft
Tsukitomo(月友)
そんなことより (スコア:3, 興味深い)
H.19専攻内予算配分.xls とか置いてあるけど良いのか?
環境はどうなんだろ (スコア:2, おもしろおかしい)
(学生時代は机上の講義での成績上位○○名のみ計算機使用化&パンチカード以外使用禁止だったのでAC)
期待されていそうなので、ツッコミ (スコア:3, おもしろおかしい)
# 学生の頃はVOS3 TSSでふぉーとらんらんらん。混んでくると遅いの。
圧縮解凍できた (スコア:2, おもしろおかしい)
char str[1024] = "gzip ";
for(int i=1;iargc;i++)strcat(strcat(str,argv[i]), " "));
system(str);
return 0;
}
この人たちは (スコア:2, 興味深い)
ベンダー系のプログラマなら専門学校レベルでも十分そうだし
ハッカーならわざわざ大学行くまでもなさそうだし。
で、こういう演習が将来、どの程度役に立つのかと。
素朴な疑問ですが。
Re:この人たちは (スコア:2, おもしろおかしい)
・Googleからのお誘いメールを受け取る
・ベンチャーでエンジェルから金を引っ張るか、未踏で国から金を引っ張る
・さらに上に進み、旧帝早慶その他のアカポスを占領
Re:この人たちは (スコア:1)
「実際に作ってみる」体験の意味も含んでいます。
こうした演習を(特に有名大学で)受けた人たちが、必ずしも仕事として「プログラムを書く」とは
限らないでしょう。ただ、上流工程をやる場合でも「プログラミングの本質を理解している」ことは
極めて重要だと思いますよ。
Re:この人たちは (スコア:1)
というのが、これまた素朴な疑問です。
Re:この人たちは (スコア:1, 興味深い)
★この授業は特別な授業 (スコア:2, 参考になる)
つまり、行われているのが本郷か駒場かを問わず、専門の授業です。
こういう授業は、どの学科でもその学科に進学する人を対象にした、駒場生への リクルート授業といいますか、学科の宣伝をかねた授業です。
だから、対象はただの駒場二年生ではなく、情報工学に進学を考えている、すでに UNIXや計算機に知識のある学生です。どの学科でもこういう駒場に出ばった宣伝授業では、 その学科の特色をいかした、かなり専門的な"さわり"をやります。
ということでした。ちゃんちゃん。
Re:★この授業は特別な授業 (スコア:2, すばらしい洞察)
このレベルに見合った新しい課題を考えよう (スコア:1)
・ftpの実装
・えせインタプリタの作成
とかですかね
以下、どーぞ↓
Re:このレベルに見合った新しい課題を考えよう (スコア:4, すばらしい洞察)
課題の作業時間(納期)を見積もれ。
根拠も併せて書くこと。
Re:このレベルに見合った新しい課題を考えよう (スコア:3, すばらしい洞察)
その前に (スコア:1)
Re:このレベルに見合った新しい課題を考えよう (スコア:2, 興味深い)
年によって変わりますが,東工大情報工学科の場合.
・N-Queen問題の解探索
・Image Quilting [google.co.jp]
・正規表現検索
学部2年前期のプログラミング第一の大課題です.
某大学の一年目の課題 (スコア:1)
Schemeで人工無能
流石に最初の課題ではなくて2ヶ月後の課題ですが。
どっと込むバブルの頃は「お金になるからパソコン触ったことないけどCS専攻します」って一年生がポロポロふるい落とされてました。
署名スパムがウザい?アカウント作って非表示に設定すればスッキリさ。
2年生ならそれで普通 (スコア:1, フレームのもと)
東大でなくても、それぐらいの課題を出しているところは多い。WWWで調べれば良いだけなので、
楽だし。
もちろん、学生のレベルに合わせて授業のレベルを下げているところも多いと思うけど。
Re:2年生ならそれで普通 (スコア:5, 興味深い)
単位取得だけなら、A課題の回答は不要みたいですね。A課題は経験者向けではないかと思います。
情報工学系の学生になるような人なら、入学以前からこのくらいの課題はこなせそうな人もいるでしょう。
そういう人にとってはB課題は簡単すぎるので、退屈させないようにA課題があるのだと思います。
# でも、最近は趣味でC言語やっている高校生は少なくなっているんじゃないかな、とは思ったり。
Re:2年生ならそれで普通 (スコア:5, すばらしい洞察)
B課題は、ある動作を目指した、「動作のはっきりと決まっている」問題です。完成したらおしまい。
対してA課題は、工夫によっていくらでも課題の内容が膨らんでいく問題です。こちらは終わりはありません。
spamフィルタやデータ圧縮はよりよいアルゴリズム、シェルも使いやすさやスクリプト言語の強力さを追求しだすときりがない。
B課題を軽く解いてしまう経験者といえども、その能力にはかなりの幅があるでしょう。そういった能力に幅のある学生を全員、講義の期間中ずっと退屈させずに作業させ続けるためには、こういった「終わりのない」課題が必要なのです。
Re:2年生ならそれで普通 (スコア:1, 参考になる)
Re:2年生ならそれで普通 (スコア:1)
けないけどこういう問題なら実際調べたらやれるでしょうし、やれなくて
もそれくらい調べてやれるようになれよというメッセージは十分伝わる。
教養の算数や物理とかを考えたら、そんなもんじゃない?
#学部1年でやったF77の授業の期末テストで暗黙の型宣言を悪用した
#問題がいっぱいでて以来Fortranが嫌い。
こういうの無駄じゃない? (スコア:1)
将来理系エリート、特に技術官僚や技術経営において主導的な立場となることが
期待されている東京大学のにこういう、ソフトウェア技術的なところで
頑張らせちゃっても、その後の進路を考えた場合、あまり多くの付加価値を
生み出すことはできないんじゃないかなあ?
こういう技術的な勉強に学部の学生の時間を使わせるよりも、
文科系の研究会やインカレサークル、体育会系の部活などに参加させることを奨励して
コミュニケーション力やリーダシップなど人間的な魅力を磨くために時間を使わせたり、
法学、経済学のような他分野の知識を得る機会、それに国家公務員試験などの資格試験
のために勉強させるってことを意識したほうがいいんじゃないかと思う。
東京大学で学んでいる人たちがどういう人なのか全然わからないけど、
少なくとも技術バカや研究バカ、をやるのは、そういうことしかできない人に任せて、
学部のうちからより高度な社会的能力を得させるほうがいいと思う。
ごめんなさい。
Re:こういうの無駄じゃない? (スコア:3, すばらしい洞察)
アジアでトップクラスの研究が出来ると認められている大学がどこか知っていますか?
それを鑑みれば、東大を官僚養成コースとするのはあまりにももったいない。
そうは思いませんか?
> 将来理系エリート、特に技術官僚や技術経営において主導的な立場となることが
「技術経営」と言っちゃってるところが勘違いです。
多くの東大生はリスクを好まないのです。
何でわざわざ他の人が遊んでいる時間に勉強し、きつい受験勉強を突破して、他の一般人と同じリスクが高い勝負をしないといけないのでしょう?
一般人よりも低いリスクで生きられないと、馬鹿らしくてやってられないと思いますよ。
> 学部のうちからより高度な社会的能力を得させるほうがいいと思う。
そういうのこそ、そういうのしかできない社交馬鹿に任せましょう。
一般人が出来ることと同じ事を彼らにやらせたのではもったいないです。
Re:こういうの無駄じゃない? (スコア:2, すばらしい洞察)
体育会系(笑)
コミュニケーション力(笑)
リーダシップ(笑)
人間的な魅力(笑)
Re:「入門C言語」だっけ (スコア:1, 参考になる)
評判が良かったのは同じアスキーから出てた『C言語入門』の方。
Re:東工大の場合 (スコア:2, 参考になる)
1年でアセンブラをやらされてたので「ポインタとはアドレスのこと」という説明を特に苦にせずに鵜呑みにしてましたが。
多分今はそこまでスパルタ式ではなくなってしまってると思う。
Re:東工大の場合 (スコア:1)
専門に進んでからはC言語がメインだったけど、どれも言語そのものについては教えてもらった覚えがないなぁ。
ていうか、アルゴリズムだのなんだのといった理論的なところについての座学が多くて、実習はあんまりやらなかったかな。基礎工の情報は実習系の科目が多いのがうらやましかった…
#大阪大学には「工学部」と「基礎工学部」という二つの似たような学部があって、内容がすごくかぶってたんです…
#今は情報系学科については、独立した「情報科学研究科」 [osaka-u.ac.jp]ってのに統合したようですが…
#
Re:東大はレベル高め (スコア:1, おもしろおかしい)
そんな難しい式なんて実は必要ないんじゃないの?