コンピューターサイエンス教育では、 C も Java も教えないよ。 C なり Java なりを道具にして、アルゴリズムの設計と実装という、 500 年後にも意味のある (と期待される) 概念を教えるんだよ。
もちろん、コンピューターサイエンスの中でも専門とする内容によっては Linux カーネルを改造することが必要になったり Haskell コンパイラーを書くことが必要になったりするから、そういう人は必要な技術を学ぶけれど、「コンピューターサイエンス学科の卒業生なんだから C 言語でプログラムが書けるはず」みたいな先入観はやめた方がいいと思う。
コンピューターサイエンスの何たるか (スコア:5, 興味深い)
コンピューターサイエンス教育では、 C も Java も教えないよ。 C なり Java なりを道具にして、アルゴリズムの設計と実装という、 500 年後にも意味のある (と期待される) 概念を教えるんだよ。
もちろん、コンピューターサイエンスの中でも専門とする内容によっては Linux カーネルを改造することが必要になったり Haskell コンパイラーを書くことが必要になったりするから、そういう人は必要な技術を学ぶけれど、「コンピューターサイエンス学科の卒業生なんだから C 言語でプログラムが書けるはず」みたいな先入観はやめた方がいいと思う。
Re: (スコア:2)
そのような技術者の需要は日本では極めて少ない。CなりJavaなりが自由に書けるようになってからにしてほしい。
日本の情報産業は日本語や日本の商習慣の壁に守られているから存在している、農業より世界に輸出できていない産業ということを自覚するべき。
Re:コンピューターサイエンスの何たるか (スコア:2)
いや、だから「コンピューターサイエンス学科の卒業生ならソフトウェア技術者として必要な知識や技術を持っている」という先入観をやめた方がいいと思うんだ。大学は専門学校じゃない。
Re:コンピューターサイエンスの何たるか (スコア:2)
需要がないものを生み出してどうします。まして、学生はそれを知っているですか?
「いまから勉強することは、日本の情報産業とは関係がないサイエンスです」ときちんと説明していますか。
説明しているならば学生の自己責任ともいえますが、そうでなければ学生に対する詐欺ですよ。
Re:コンピューターサイエンスの何たるか (スコア:3)
vaxさんの記述には様々な点で問題があります。
第一に、fcp氏の記述では「コンピューターサイエンス学科の卒業生」に対してvax氏は「そのような技術者」と言っていますが、fcp氏は「卒業生=技術者」とは言っていません。従って、「そのような技術者」という記述には仮定の誤りがあります。
第二に、たしかにそのような卒業生「の需要は日本では極めて少ない」かもしれませんが、
需要があるかどうかと本当に必要なのかどうかは別の話です。
企業がそういう「技術」面の必要性しか認識していないだけかもしれません。
そもそも、大学で行うことは「まだ広くその需要すら知られていない最先端の研究内容」を行う可能性があります。
例えば一昔前、一般に知られる以前の画像認識やニューラルネットはそういう扱いだったでしょう。
第三に、『「いまから勉強することは、日本の情報産業とは関係がないサイエンスです」ときちんと説明』すべきという主張について、それを説明するのならば『今から勉強することは、真に大規模かつ困難な問題を解くために必要不可欠な手段であって、この内容を学ぶことはあなたに他の学部では得られない真の専門性を与える』ということも同時に説明すべきです。fcp氏の言うとおり、この種の知識は500年経っても使える知識であり、と同時に日本だけにとどまらず世界のどの地域でも有効な知識です。そして、そういった「他の方法では得られない技術的な強み」こそが大学で得るべきものです。
メモリ管理は、もしそれが本当の問題なのなら、在野のあまたのCプログラマから引っ張ってくればよい。凄腕Cプログラマなら、多大な工数をかけて、既存のGCより効率的にメモリを管理するコードを書けるかもしれません。しかし、Cが将来長きにわたって常に有効なプログラミング言語かどうかはわかりません。メモリ管理自体についても、近年のCコンパイラvs手書きアセンブラのように、何らかのブレークスルーによってGCが人間の手作業malloc/freeに対してほとんど常に上回る事になるかもしれません。どちらの場合も、その知識への需要が長続きしないことを意味します。
一方、いくら優秀なCプログラマでも、「アルゴリズム的に開放できない必要なメモリ」は解放できません。そして、どうやればその「真に必要なメモリ=空間計算量」を減らせるかという問題は、計算機科学のバックグラウンドがなくては解決できません。
確かに、日本の企業が常に「計算機科学的に最先端の」研究を行っているとは言えません。
webサービスを作る程度の技術力しか必要がない企業では、計算機科学の知見は必要ないでしょう
(それらが使っているコンパイラには計算機科学がふんだんに使われていますが)。
しかし、そのことと、「では日本の計算機科学科で今教えられていることは不必要か」という話は別です。
重要な点は、計算機科学の知見は「汎用」ですから、「未知の問題」に対しても適用できるということです。
日本の情報産業の未来は、もしかしたら大量生産のようにしょうもないwebサイトを作ることにしかないのかもしれませんが、もし情報産業が新たなサービスや技術を目指すべきだと考えるなら、現在大学で教えられていることには十分に意義があるでしょう。
長文失礼。アセンブリ言語で書いてみる経験は必要だと思います :b
新人。プログラマレベルをポケモンで言うと、コラッタぐらい
Re:コンピューターサイエンスの何たるか (スコア:3, すばらしい洞察)
卒業生をみれば、大半が情報系の技術者か情報システムの管理技術社をやっているのではないでしょうか。
会社も基礎研究をしている余裕はなくなって来ていますし。(大半でもイコールでないから論理としておかしいと言いたいのでしょうけれど。)
ビッグデータで機械学習は博士課程の学生でも需要が出てきています。DeepNetでニューラルネットワークは復権中です。
画像処理系は昔から博士の学生に需要はあります。
ただ、大学院しかないところの画像処理の先生が、情報工学科の先生に「画像処理は情報工学ではない」と言われたと言って怒っていました。
情報工学科の先生はなんか了見がが狭いように思います。
500年先のことを教えることも良いですが、現在のことを教えるべきと思います。
博士課程で深く勉強することはかまいませんが、学部の情報工学科を出たならば、malloc()やfree()ぐらい知っていて欲しいです。
また、エイトクイーン、クイックソート、ヒープソートぐらいは自分でプログラミングできるようにして欲しいと思います。
(単なるちゃちゃですが、500年先も必要ということは、500年経っても人工知能はできないということですね。情報系の人間としては安心しました。)
画像処理とか、メモリーの利用が最初から計算できて。まとめて使ってすぐにフリーするような場合は、最初にmalloc()で大きく確保してから、
自分で割り当てとフリーしたほうが速い場合もあります。その場合は、アラインメントについては知っているだけで良いので知ってて欲しいです。
最先端の技術を大学院で教えることは問題ないと思いますが、学部とは分けて考えて欲しいと思います。
Re:コンピューターサイエンスの何たるか (スコア:3)
> 500年先のことを教えることも良いですが、現在のことを教えるべきと思います。
いえ、そこの論理がおかしくて。
500年先も使えるんですから、今も使えるでしょう。
で、それを活かせるような職を選ばなかったのは、その学生が戦略的な失敗を犯しているだけです。
ちゃちゃについてですが、500年後には人工知能はできているかもしれません。
量子コンピュータができればNP-complete以上の問題が簡単に解けるようになっているかもしれませんし、
PSPACE-hardも解けるかもしれません。
しかしそのかわり、そのころには既に人工知能以上に困難な問題が生まれているかもしれません。
malloc/freeという固有名詞自体についてはどうかと思いますが、そういうメモリ管理が行われているということについては知るべきだと思います。
> 最初にmalloc()で大きく確保してから、自分で割り当てとフリーしたほうが速い
それはGC付きの言語でも同じです。ヒープの確保は高コスト、ということがmalloc/freeを習う上で理解されていればよいわけですから、同じく配列生成時に気を使えば良いということが理解されればよいと思います。
> 情報工学科の先生に「画像処理は情報工学ではない」
情報工学と計算機科学というのもまた微妙な問題ですね、同じではない気がします。はっきりとどう違うかわかりませんが。
画像認識には困難さがありますが、画像処理というのはどうなんでしょうね?
絵の画素を加工するぐらいのことであったら、計算量的困難さは無いはずです。
この点はどこまで賢い加工を行うかにもよると思います。
画像圧縮アルゴリズムとかになれば計算機科学でしょう。
新人。プログラマレベルをポケモンで言うと、コラッタぐらい
Re: (スコア:0)
アセンブリ言語でいえば、CASLとかよかったな。
CASLの仕様というよりも、資格を取るというモチベーションで学べるw
そのうえでハードウェア寄りの部分の扱い方も学べたらgood
Re: (スコア:0)
CAP-X より素直でよかったですね。
ちょうどCAP-XからCASLへの切り替えの頃に受けることになって、「次まで待てばCASLだから」と一回見送った思い出があります。
Re:コンピューターサイエンスの何たるか (スコア:2, すばらしい洞察)
>> 需要がないものを生み出してどうします。
それはネットでよく見かける
「企業が本当に必要としているような能力を持った人材を日本の大学は輩出してくれない」
vs
「米国では博士号を持っているような人材がどんどん有効活用されているのに,そういう人材を使いこなせず,採用すらしない日本企業の能力の問題」
の押し問答ですよ.
#少なくともCS分野では米国と日本にこれだけ技術力でもビジネスでも差が付いているわけで,上記のどちらの言い分の方が筋が通ってるかは明らかだとは思いますし,本当にそういう目先の即戦力が重要ならば,国を挙げて専門学校にもっと注力するべきだと思いますけどね.
Re: (スコア:0)
社会が本当に必要としているような能力を持った人材を日本の大学はしかるべきポストに就けないというのが問題でしょ。
何の役に立つのか見当もつかないような研究をしてる、もしくはそもそも研究をしてない奴らがどれだけ大学にいると思ってるのか。
そしてそれは本当に大学の問題なのか?
Re: (スコア:0)
米国ではSunやGoogle等、大学の研究からのスピンオフも多いですよね?
日本でも在るんでしょうが、それが大企業にまで成長したというのは思い浮かびません。
日本企業のせいにしないで、そんなに優秀な人材、独創的な成果があるなら、起業すればいいんじゃないですか?
Re:コンピューターサイエンスの何たるか (スコア:1)
私は大学でコンピュータサイエンスが副専攻でしたが、
大学で学ぶのは当然サイエンスだと思っていました。
情報産業に就職して役にたつような訓練がしたければ、職業訓練校にでもいけばいいんじゃないですかね。
大学は学問の場であって、少なくとも「就職して役にたつようなことを学ぶため」のところではありません。
企業が大学で学んだ学問や教養を期待して学生を採用するのは勝手ですが、
学生や大学が「企業で役に立つかどうか」を考えるのは本末転倒です。
>需要がないものを生み出してどうします。まして、学生はそれを知っているですか?
需要がないかどうか決めるのは、たかだか一産業じゃないですよ。
私の同期は金融機関とメーカーの研究所が多かったです。
Re: (スコア:0)
大学で実学を教えたっていいと思うけどね。
例えば大学医学部って、ほぼ医者の職業訓練校じゃないの?もちろん研究する人もいるけどさ。
機械工学に相当する計算機分野は計算機工学(CE)?
計算機科学か工学、どっちを自分がやりたいかわからん子も多いだろうから、
入学してから専攻が選べるようになってればいいんじゃない?
Re: (スコア:0)
私は大学でコンピュータサイエンスが副専攻でしたが、大学で学ぶのは当然サイエンスだと思っていました。
情報産業に就職して役にたつような訓練がしたければ、職業訓練校にでもいけばいいんじゃないですかね。
大学は学問の場であって、少なくとも「就職して役にたつようなことを学ぶため」のところではありません。
その通りだと思います。
一流どころのCS卒業生ならCやJavaぐらい使いこなせると思いますが、そのような
優秀な人材に外注で片づけられるような作業を割り当てようという企業がおかしい。
CS卒業生にやらせるべきは、ソフトやシステムの設計や改良等であって、内製にしろ
外注にしろ、プログラミングはほかの人がやればよろしい。そうなっていない企業は、
事業規模が適正でないか、企業構造がおかしいかどちらかです。
Re: (スコア:0)
に
>その通りだと思います。
と同意するなら
>CS卒業生にやらせるべきは、ソフトやシステムの設計や改良等であって、
なんでそこで急に実業の話になる?
CS卒業生にやらせるべきは、純然たる研究職じゃないのか?
Re: (スコア:0)
企業就職なんだから、実業に結びつくのは当たり前。実業と直結しない研究させてくれる企業なんて一握りの大企業研究所だけでしょ。
で、先に書いちゃったけど、企業にも研究所や開発部門がある。
大学との違いは、数年後の実用化を目指したものか、基礎や遠い将来の実用化を目指したものか。
後者を企業でやらないとは言わないけど、大抵は前者だよね。
最初がCSだったから、それに合うような具体的な話になったけど、本質は
「有能な学部卒業生に単純作業をさせて、その効率がそれだけを専門に
処理する職人的人材に劣るのは何事か?」という的外れな指摘でしょう。
Re: (スコア:0)
科学と、工学もしくは技術とを混同しているというのが大きいのではないでしょうか。
Cでの実務者が欲しかったら、サイエンティストじゃなくてエンジニアを募集すべき。
"コンピューターサイエンス学部"で、技術者も育てることも含まれるのかどうかは知らないけど。
参考 [mojix.org]
Re: (スコア:0)
コンピューターサイエンスの学科にきてるということはサイエンスを学ぶ気があるとみなしていいんじゃない
Re:コンピューターサイエンスの何たるか (スコア:2)
情報工学科もDept. of Computer Scienceと訳す場合も多いですし、その学科がコンピュータサイエンス系かどうか分かりにくいと思います。
工学が付くような名前ならば、学生は日本の情報産業と関係ない(少なくとも教員がそう思っている)ことを教わるとは知らない場合が多いと思います。
緊急に誤解をなくすまたはカリキュラムを変更することが必要と思います。
また、多数の学生が日本の情報産業の就職のためにその学科に入ってきていると教員が自覚しているならば、
そのコンピュータサイエンス系の学科は詐欺師の集まりということになります。
「パンフレットに情報産業で活躍できる」ということを謳っているようならば、それにそってカリキュラムを考えるべきです。
Re:コンピューターサイエンスの何たるか (スコア:1)
情報工学はInformation Engineeringですから、Computer Scienceはむしろ誤訳ではありませんか。
#うちの大学は両方あるのできちんと区別しています
Re:コンピューターサイエンスの何たるか (スコア:1)
>「パンフレットに情報産業で活躍できる」ということを謳っているようならば、それにそってカリキュラムを考えるべきです。
私大学の案内は見ましたが、そんなうたい文句見たことないですが。
http://www.sci.kyoto-u.ac.jp/modules/tinycontent1/index.php?id=2 [kyoto-u.ac.jp]
とか。
Re: (スコア:0)
こっちでしょ?
http://www.t.kyoto-u.ac.jp/ja/divisions/undergraduate/sim [kyoto-u.ac.jp]
こんなこと書いてあるし
Re: (スコア:0)
日本の高等教育は、技能教育について冷淡ですよね
大学は教養を身に着ける場であるから、職業教育みたいな下賤なものは余所でやってくれみたいな感じで…
Re: (スコア:0)
教員が技能を持ってないからな
Re: (スコア:0)
教員がプログラムできないのは当たり前。情報系の学科にいながら最新技術に疎いのも多い。
そして「お前の最近やってる研究はどう役に立つんだ、具体的に説明してみろ」というと
顔を真っ青にするか真っ赤にしてよく分からないことを言い始める。そういうのが本当に多い。
Re: (スコア:0)
単位を取れなかったからって逆恨みの書き込みをするのは良くないね。
Re: (スコア:0)
科学者は世の中で役に立つ技術を研究しているという先入観をやめた方がいいと思うんだ。大学は専門学校じゃない。