コンピューターサイエンスと留学、C++

アメリカ大学(コンピューターサイエンス専攻)に在学中の筆者がC++のサンプルプログラム、コンピューターサイエンス留学についての情報を発信しています!

アメリカ大学・CS専攻の1、2年次の授業(1)

f:id:beginner4869:20190301021633j:plain

今回はアメリカの大学の学生が1、2年次に履修することが多い授業の内容を紹介したいと思います。今回はCS専攻の学部生が履修する授業の内容についてになります。修士以上の授業内容については次回以降を是非ご覧ください。

続きを読む

コンピューターサイエンス 専攻の学生がアメリカの大学で選べる専門分野2

今回はコンピューターサイエンス 専攻の学生がアメリカの大学で学べる専門分野を紹介する記事の第2回目です。1回目の内容で紹介ができなかった専門分野の(5)のコンピューターサイエンス の専門分野セキュリティについて紹介したいと思います。

f:id:beginner4869:20181208151911j:plain

続きを読む

Python・2つの物体の間の重力を計算するプログラム

今回はPythonで2つの物体の間の重力を計算する簡単なコードを紹介したいと思います。最近Pythonを始めたという初心者の方に見てもらえると幸いです。
f:id:beginner4869:20180902205044j:plain

Gが万有引力定数である場合は、距離dだけ離れた質量m1およびm2を有する2つの物体間の重力引力は、以下の式によって求めることが可能です。

式に表すとそれぞれ以下のようになります。
f:id:beginner4869:20181209123234p:plain
f:id:beginner4869:20181209123224p:plain

あとはこの式をPythonのコードで実行していきます。
この関数はオブジェクト1、オブジェクト2、オブジェクト間の距離の入力をユーザーから受け取り、うえの式に当てはめて計算した結果を返します。

def get_gravitational_force(mass1, mass2, dist):
    force = 6.673 * pow(10,-8) * mass1 * mass2 / (dist * dist)
    return force

ここでは、上の関数に渡す入力をユーザーに聞いています。関数としては作っていませんがこの部分を関数した方がわかりやすいです。

mass1 = float(input("Mass of object1: "))
mass2 = float(input("Mass of object2: "))
dist = float(input("Distance between two objects: "))

最後にmain関数から1回目のの計算の結果を返すために関数を呼び出してreturnの値をプリントしています。choice以降の2行目は基本的に2回目以降のループの為のコードです。ユーザーがnを入力するまで、繰り返し計算が入力を聞いて、計算をし続けます。

#Function call
def main():
    print(get_gravitational_force(mass1, mass2, dist))
    choice = str(input("Do you want to perform another caluclation (y or n)? "))

    while(choice != "n"):
        mass1_1 = float(input("Mass of object1: "))
        mass2_2 = float(input("Mass of object2: "))
        dist2 = float(input("Distance between two objects: "))
        print(get_gravitational_force(mass1_1, mass2_2, dist2))
        choice = str(input("Do you want to perform another caluclation (y or n)? "))
main()

コンピューターサイエンス 専攻の学生がアメリカの大学で選べる専門分野

今回はアメリカの大学でコンピューターサイエンス 専攻の人たちが、アメリカの大学で選べるコンピューターサイエンス の専門分野に関する記事です。記事の内容は筆者の在学している大学の内容ですが、アメリカの殆どの大学では同じ種類のオプションもしくは今回紹介する内容以上の選択肢があります。
f:id:beginner4869:20181208151911j:plain

そもそもコンピューターサイエンス って何?

コンピューターサイエンス (computer science)は日本語では計算機科学といい、情報工学の一分野という位置付けになります。英語圏ではコンピューターサイエンス(computer science)を省略してCS(シーエス)と言われることが一般的です。日本の大学の学部の名前でコンピューターサイエンスという名称を使っている大学は殆どありませんが、日本の大学ではコンピューターサイエンスは工学部情報学科や工学部情報システム学科などの名称が多いです。

コンピューターサイエンス留学についてより詳しく知りたいという方はこちらの記事もあわせてご覧ください。
programming-computer-chinese.hatenablog.com

コンピューターサイエンス で学べる分野

コンピューターサイエンス で学べる分野の内容としては、数多くあります。筆者の在学している大学の学部課程では下記のような専門分野をコンピューターサイエンス の学位の中から選ぶことができます。いくつか翻訳がわからなかったので英語のままですみません。

  • (1) コンピューターシステム(Computer systems)
  • (3) Simulation and game programming
  • (4) Human computer interaction(ヒューマン・コンピュータ・インタラクション)
  • (7) Data science(データサイエンス)
  • (8) Robot Intelligence(ロボットインテリジェンス)
  • (9) Web and mobile development

コンピューターシステム専攻で学べる内容

このオプションではコンピューターダードウェアについて他のオプションよりも詳しく学ぶことができます。

生命情報科学(Bioinformatics)

一般的にはBiology(生物学)とコンピューターサイエンスの繋がりをイメージしたことがない人が殆どだと思いますが、近年では、コンピューターサイエンスが他の分野においても大量のデータへのアクセスを可能にすることで大きな進歩をもたらしています。

今日では、コンピューターサイエンスが生物情報科学の分野での生物情報を分析し、統計をとる為のスピードをあげるのに貢献しています。それに加えて、2003年に完成したヒトゲノム計画(ヒトのゲノムの全塩基配列を解析するプロジェクト)では、コンピューターが大量の遺伝的データを解析する過程なしには達成することは不可能だったとも言われています。

このように生物科学とコンピュータサイエンスの融合した分野はbioinformatics(バイオインフォマティクス)またはcomputational biology(計算生物学)と呼ばれています。

生命情報科学を専門にする学生が履修することが可能な授業(英語)

CS 434 (Machine Learning & Data Mining)
CS 440 (Database Management Systems)
CS 453 (Scientific Visualization) or CS 458 (Introduction to Information Visualization)
BI 212 and BI 213 (Principles of Biology)

この他に選択可能な授業としては、生物学の授業などがあります。

Simulation and game programming

この分野では、おもに将来ゲームを開発するエンジニアとして仕事がしたいという方を対象にしています。この分野ではコンピュータグラフィックス、数学、物理学、ニューメデイアなど複数の分野への理解が求められることが一般的です。

Human computer interaction(ヒューマン・コンピュータ・インタラクション)

この分野ではおもに人間とコンピューターの関わりについての内容を学べます。人間がどのようにコンピュータの使い勝手を高めるための技法を開発し、その運用法を考えるための研究を行う分野です。この分野ではコンピュータサイエンスのみならず、心理学、社会学など多方面の分野が交錯した分野の内容を取り扱います。

この分野を選択した学生は、将来User Experience(UX)やインタラクションデザインといった分野に従事することが多いです。主な仕事内容としてはグラフィックユーザーインターフェースのデザイン、開発。フロントエンドに関わる内容などを扱います。

それに加えて、Webデザイナーとして働きたい人もこの分野を専攻する人は多いです。

この分野を選択した学生がおもに履修する授業(英語)

CS 419 (HCI Research Methods) or CS 468 (Inclusive Design)
CS 453 (Scientific Visualization) or CS 458 (Introduction to Information Visualization)
CS 464 (Open Source Software)
CS 496 (Mobile & Cloud Software Development - no longer offered on campus)
CS 492 (Mobile Software Development)
PSY 340 (Cognition)

この他に選択可能な分野として下記のような心理学の授業を履修することなども可能です。

PSY 350 (Human Lifespan Development)
PSY 360 (Social Psychology)
PSY 370 (Personality)
PSY 426 (Psychology of Gender)
PSY 434 (Brain and Behavior Methods)
PSY 440 (Cognition Research)
PSY 442 (Perception)
PSY 444 (Learning and Memory)
PSY 454 (Cognitive Development)
PSY 456 (Social Development)
PSY 464 (Social Cognition)
PSY 494 (Engineering Psychology)

今回は長くなってしまったので、(5)から(9)についてはつぎの記事で紹介したいと思います。

C言語・二次元動的配列を作成しランダムな数字を代入するプログラム

f:id:beginner4869:20180902094721j:plain
今回はC言語で二次元動的配列を作成し、配列にランダムな数字を代入するプログラムです。

続きを読む

Python・四則演算・二進数計算をするプログラム(初心者向け)

f:id:beginner4869:20180831141550j:plain
今回はpythonで四則演算ができる計算機のプログラムを紹介したいと思います。四則演算だけでは普通のプログラムすぎるので今回はそれに加えて10進数から2進数へ変換する機能も追加した計算機にしたいと思います。ユーザーに四則演算、もしくは二進数への変換をする計算機のどちらを使いたいかを最初に尋ねます。それぞれの細かい部分までを全て関数にしています。

続きを読む

Python 初心者向け・入力された数字から最大値を見つけるプログラム

f:id:beginner4869:20180902205044j:plain
今回はpythonのプログラムで入力された数字から最大値を見つけるプログラムを紹介したいと思います。
構成としては

  1. ユーザーから入力を受け取り
  2. 入力された数字を比べ
  3. 表示するパート

という構成になります。

続きを読む

c++ Big three(デストラクタ・コピーコンストラクタ・コピー代入演算子)・shallowコピーとdeepコピー

f:id:beginner4869:20181027054113p:plain
今回はBig Threeの一つであるコピーコンストラクタについての解説です。shallow copy(浅いコピー)とdeep copy(深いコピー)についての

続きを読む