俺様のつぶやき
2017年5月16日火曜日
2016年11月8日火曜日
海外の無料オンライン学習サービス17選
私が渡米したのは留学がきっかけでしたが、時期が大学卒業と同時だったため、私は「就職できるスキルを身につけること」を留学の目的にしていました。でも、MBA
を取得すること、海外で人脈を作ること、英語力を高めることなど、留学の目的は人によってそれぞれ異なると思います。
その中で「専門知識を英語で身につけたい」という目的をお持ちの場合は、ちょっとお待ちを!
“MOOCs” をご存知ですか?
MOOCs とは
アメリカの名門大学が最近、インターネットを通じた無料のオンライン講座を競うように開講しています。こうした講座は MOOCs(ムークス)と呼ばれます。 Massive Open Online Courses の略で、日本語に訳せば「大規模公開オンライン講座」といったところでしょう。
もともとオンライン・コース自体はフェニックス大学などが1990年代に始めていたのですが、アトランティック誌の記事『College Is Going Online, Whether We
Like It Or Not(大学はいずれにせよオンライン化へと進む)』(2013年5月17日付)によると、ここ数年で人気が加速している背景には、アメリカの学生ローンの負債問題もあるそう。
- 今年の学生ローンの負債総額は1兆1千億ドル(約110兆円)を超える見通し。大学生のおよそ3分の2が学生ローンの負債を抱えて卒業すると言われている。
- 一人当たりの平均負債総額は2万7千ドル(約272万円)。これは2007年と比べると2倍、2004年と比べると3倍の額に相当する。
これらの事実からも、いかにハイペースで学生ローンの負債問題が深刻化しているかがわかります。
そこへ登場したオンライン学習サービスが、今アメリカの教育現場を大きく変革しようとしているのです。
今回は、アメリカに現在どのようなオンライン学習サービスがあるのかという紹介も兼ねて、自宅留学にもぴったりの無料オンライン学習サービスを17個ピックアップしてみました。
総合
カーン・アカデミー(Khan Academy)

いとこに「数学を教えて欲しい」と言われたサルマン・カーン氏が、YouTube にビデオをアップしたことがきっかけで始まった無料オンライン教育サービス。動画の数は4,100本以上に及び、数学、科学、経済、コンピュータ科学、人文学など、幅広いジャンルをカバーしています。英語の字幕も付けられます。iOS アプリとアンドロイドアプリもあり。
TED-Ed

“Ideas worth spreading(広める価値のあるアイデア)” がミッションの TED が運営するオンライン教育サービス。こちらのミッションは
“Lessons worth sharing(共有する価値のあるレッスン)” で、TED-Ed が制作したオリジナルのビデオはもちろん、ユーザが
“フリップ(Flip)” 機能を使ってカスタマイズしたオリジナルのレッスン動画も観られます。こちらも芸術やビジネス・経済、デザイン・技術、文学、哲学・宗教、心理学、数学など、さまざまなジャンルが揃っています。
saylor.org

哲学、心理学、数学、政治学、経済、コンピュータ科学などのコースが280本以上揃っています。コースなので一つ一つのボリュームはけっこうありますが、自分のペースで学習を進められるので勉強しやすいです。専門家が組んでいるコースなので、内容も充実しています。
Udemy

プログラミング、起業、写真、マーケティング、デザインなど、講義数1000本以上を誇る Udemy は、有料のコースがメインですが無料のコースもあります。Udemy
の良いところは、オフラインでも使える機能があるところ。飛行機に乗っている時間なども有効活用できます。スピード調整ができるのも地味に便利。iOS アプリもあります。
専門
Udacity

Google Glass の開発者リーダーで元スタンフォード大学教授のセバスチャン・スラン氏が中心となって新しく立ち上げたオンライン教育機関。コンピュータ科学や物理学、統計学など、理系分野が中心で、初歩から高度な内容まで無料で学習できます。
duolingo

フランス語、ドイツ語、スペイン語、ポルトガル語、イタリア語がゲーム感覚で勉強できる語学専門のオンライン学習サービス。リスニングもライティングもスピーキングも交えて学習できるので、本で勉強するより吸収が早いかもしれません。iOS アプリもあり。
W3Schools

ウェブ言語からウェブ制作まで、ウェブに関する内容を網羅した世界最大のオンライン学習サービス。初級者から上級者まで対応していて、自分で実際に手を動かしながら知識を身につけていくことができます。
Codecademy

HTML/CSS、JavaScript、PHP、Ruby など、コンピュータ言語専門のオンライン学習サービス。こちらも実際に手を動かしながら、ゲーム感覚で楽しく学べます。自分でコースを作って教えることもできます。
大学
Coursera

スタンフォード大学の教授が昨年始めた無料のオンライン教育サービス。スタンフォード大学やプリンストン大学など、一流大学の講義と同じ内容がオンラインで学べます。コース形式になっていて、受講期間も決まっていますが、動画は10〜20分単位に分割されているので、隙間時間を活用した学習にもぴったり。授業内容をしっかり身につけるための小テストや課題、授業内容に関するディスカッション・フォーラムなども充実しています。英語字幕やスピード調整にも対応しています。
edX

ハーバード大学とマサチューセッツ工科大学(MIT)が昨年共同で立ち上げた、無料オンライン教育サービス。両校の他に、カリフォルニア大学バークレー校やトロント大学など、さまざまな大学が参加しています。こちらもコース形式で受講期間が決まっていて、知識を定着させるための小テストなどが充実しています。
5月21日には、京都大学が日本の大学で初めて edX への参加を発表しました!
Class Central

Academic Earth

イェール大学、スタンフォード大学、MIT、オックスフォード大学など、一流大学の授業の動画が無料で閲覧できるオンライン教育サービス。ビジネス、コンピュータ科学、数学、工学、人文学、芸術・デザインなど、ジャンルは多岐に及んでいます。大学によって動画の質は異なります。
iTunes U

Appleが提供している、教育コンテンツ配信サービス。大学の授業や専門家の講義などが、ポッドキャストやビデオ形式で手軽に視聴できます。日本の大学もあります。もちろん iOS アプリも。
Stanford University Venture Lab

スタンフォード大学が提供するオンライン教育サービス。一方的に授業を受けるだけでなく、世界中から参加している他の生徒ともディスカッションやアクティビティを通じて交流しながら理解を深める仕組みになっています。コースは通常10週間で、ファイナンスから企業家向けの内容までいろいろあります。
MIT Open Courseware

マサチューセッツ工科大学(MIT)が2001年に世界で初めてスタートしたオープンコースウェア。公開している講義数は2000本以上に及びます。
ちなみに、オープンコースウェアとは、大学などで正規に提供された講義や関連情報をインターネット上で無償公開したもの。
OCWで提供している講義情報には、シラバス、カレンダー、講義ノートなどがあります。これらが基本的な情報ですが、実際に講義で提供された課題や定期試験とその回答などを公開している講義もあります。
また、講義ビデオ(pod-castingを含む)を提供している例も増えています。via OCWとは | OCW
世界中の大学に広がっていて、日本でもたくさんの大学がオープンコースウェアを公開しています!
演説・公開イベント
オンライン教育サービスとは少し異なるかもしれませんが、一流の専門家たちによる講義や講演も、とても勉強になります。
TED Talks

おなじみ、さまざまな分野の最先端で活躍する専門家たちによるプレゼン・シリーズ。専門分野の知識はもちろん、プレゼンテーションの勉強にもなります。日本語の字幕も設定できます。iOS アプリとアンドロイドアプリもあり。
FORA.tv

http://fora.tv/ margin-bottom: 30px; margin-top: -30px; padding: 0px 0px 0px 25px;
position: relative; vertical-align: baseline; word-break: break-all;">
http://fora.tv/
さまざまなイベントやフォーラムの様子が閲覧できるサービス。ビジネスや環境、政治、科学、技術など、各分野における最新の情報や議論が観られます。有料プログラムもありますが、無料プログラムも充実しています。
まとめ
インタラクティブに学習できるサービスが多いので、試してみると結構楽しいです。無料だと、難しそうな分野に気兼ねなく挑戦できるのも良いところ。有料のオンライン教育サービスも含めるともっとたくさんありますが、まずは無料のサービスを試してみて、それから有料サービスをチェックするのも悪くないと思います。
多くのオンライン講座は修了しても学位につながらないのが難点ですが、少しずつその取組みも進んでいるので、今後が楽しみです。
留学に興味はあるけど時間的・金銭的な余裕がない人はもちろん、今後留学する予定のある人や英語力を試してみたい人などもぜひチェックしてみてください!
2016年9月16日金曜日
2016年8月22日月曜日
エディットグラフ
エディットグラフを理解するのに、まずその目的を知る必要がある。エデットグラフは、2つのドキュメントがどの程度相違しているかを調べる際に、比較過程を落としたグラフのことである。この文書比較(diff)は、2つの文書A,Bの最長共通部分(LCS Longuest Common Subsequence)、または最小編集距離(SED Shotest Edit Distance)を求める問題と同じ問題として認識できる。編集距離は、2つの文字列が相違している度合い(相違度)を示す尺度とも言える。
エディットグラフの具体的なやり方は、このようになっている。文書A、Bの各要素(A1 A2 ... AM, B1 B2 ... BN)をX軸Y軸上に並べ、それらの交点を縦横の辺で結合し、Aのx番目の要素とBのy番目の要素が等しい場合のみ (x-1, y-1) から (x, y) を結合したものである。
エディットグラフの具体的なやり方は、このようになっている。文書A、Bの各要素(A1 A2 ... AM, B1 B2 ... BN)をX軸Y軸上に並べ、それらの交点を縦横の辺で結合し、Aのx番目の要素とBのy番目の要素が等しい場合のみ (x-1, y-1) から (x, y) を結合したものである。
2016年8月19日金曜日
基数変換プログラム
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
char RadixConversion(void){
char num1[10]={0};
int num2[10]={0};
int size=0;
int w=0;
int w2=0;
int rdx1=0;
int rdx2=0;
int quo=0;
int rem=0;
double base=0;
int i=0;
double j=0;
char ans='N';
while(ans=='N'){
printf("Enter a number:");
scanf("%s",num1);
printf("Enter the radix:");
scanf("%d",&rdx1);
size=strlen(num1);
if(rdx1==2){
j=0;
w=0;
for(i=size-1;i>=0;i--){
num2[i]=num1[i]-0x30;
base=pow(2,j);
w=num2[i]*base+w;
j++;
}
}else if(rdx1==8){
j=0;
w=0;
for(i=size-1;i>=0;i--){
num2[i]=num1[i]-0x30;
base=pow(8,j);
w=num2[i]*base+w;
j++;
}
}else if(rdx1==10){
j=0;
w=0;
for(i=size-1;i>=0;i--){
num2[i]=num1[i]-0x30;
base=pow(10,j);
w=num2[i]*base+w;
j++;
}
}else if(rdx1==16){
j=0;
w=0;
for(i=size-1;i>=0;i--){
if(num1[i]>0x2f&&num1[i]<0x3a){
num2[i]=num1[i]-0x30;
}else if(num1[i]>0x40&&num1[i]<0x46){
num2[i]=num1[i]-0x37;
}else if(num1[i]>0x60&&num1[i]<0x67){
num2[i]=num1[i]-0x57;
}
base=pow(16,j);
w=num2[i]*base+w;
j++;
}
}
w2=w;
//入力データが2進数の場合
if(rdx1==2){
//8進
i=0;
size=0;
while(w!=0){
num2[i] = w % 8;
w = w / 8;
i++;
size++;
}
printf("Octal:");
for(i=size-1;i>=0;i--){
printf("%d",num2[i]);
}
printf("\t");
//10進
printf("Decimal:%d\t",w2);
//16進
w=w2;
i=0;
size=0;
while(w!=0){
num2[i] = w % 16;
w = w / 16;
i++;
size++;
}
printf("Hexadecimal:");
for(i=size-1;i>=0;i--){
if(num2[i]==10){
printf("A");
}else if(num2[i]==11){
printf("B");
}else if(num2[i]==12){
printf("C");
}else if(num2[i]==13){
printf("D");
}else if(num2[i]==14){
printf("E");
}else if(num2[i]==15){
printf("F");
}else{
printf("%d",num2[i]);
}
}
}
//入力データが8進数の場合
if(rdx1==8){
//2進
i=0;
size=0;
while(w!=0){
num2[i] = w % 2;
w = w / 2;
i++;
size++;
}
printf("Binary:");
for(i=size-1;i>=0;i--){
printf("%d",num2[i]);
}
printf("\t");
//10進
printf("Decimal:%d\t",w2);
//16進
w=w2;
i=0;
size=0;
while(w!=0){
num2[i] = w % 16;
w = w / 16;
i++;
size++;
}
printf("Hexadecimal:");
for(i=size-1;i>=0;i--){
if(num2[i]==10){
printf("A");
}else if(num2[i]==11){
printf("B");
}else if(num2[i]==12){
printf("C");
}else if(num2[i]==13){
printf("D");
}else if(num2[i]==14){
printf("E");
}else if(num2[i]==15){
printf("F");
}else{
printf("%d",num2[i]);
}
}
}
//入力データが10進数の場合
if(rdx1==10){
//2進
i=0;
size=0;
while(w!=0){
num2[i] = w % 2;
w = w / 2;
i++;
size++;
}
printf("Binary:");
for(i=size-1;i>=0;i--){
printf("%d",num2[i]);
}
printf("\t");
//8進
w=w2;
i=0;
size=0;
while(w!=0){
num2[i] = w % 8;
w = w / 8;
i++;
size++;
}
printf("Octal:");
for(i=size-1;i>=0;i--){
printf("%d",num2[i]);
}
printf("\t");
//16進
w=w2;
i=0;
size=0;
while(w!=0){
num2[i] = w % 16;
w = w / 16;
i++;
size++;
}
printf("Hexadecimal:");
for(i=size-1;i>=0;i--){
if(num2[i]==10){
printf("A");
}else if(num2[i]==11){
printf("B");
}else if(num2[i]==12){
printf("C");
}else if(num2[i]==13){
printf("D");
}else if(num2[i]==14){
printf("E");
}else if(num2[i]==15){
printf("F");
}else{
printf("%d",num2[i]);
}
}
}
//入力したデータが16進数の場合
if(rdx1==16){
//2進
i=0;
size=0;
while(w!=0){
num2[i] = w % 2;
w = w / 2;
i++;
size++;
}
printf("Binary:");
for(i=size-1;i>=0;i--){
printf("%d",num2[i]);
}
printf("\t");
//8進
w=w2;
i=0;
size=0;
while(w!=0){
num2[i] = w % 8;
w = w / 8;
i++;
size++;
}
printf("Octal:");
for(i=size-1;i>=0;i--){
printf("%d",num2[i]);
}
printf("\t");
}
printf("\nDo you want to end?(Y/N)");
scanf("%s",&ans);
}
//10進
printf("Decimal:%d\t",w2);
return 0;
}
int main(void){
RadixConversion();
return 0;
}
#include <string.h>
#include <math.h>
#include <stdlib.h>
char RadixConversion(void){
char num1[10]={0};
int num2[10]={0};
int size=0;
int w=0;
int w2=0;
int rdx1=0;
int rdx2=0;
int quo=0;
int rem=0;
double base=0;
int i=0;
double j=0;
char ans='N';
while(ans=='N'){
printf("Enter a number:");
scanf("%s",num1);
printf("Enter the radix:");
scanf("%d",&rdx1);
size=strlen(num1);
if(rdx1==2){
j=0;
w=0;
for(i=size-1;i>=0;i--){
num2[i]=num1[i]-0x30;
base=pow(2,j);
w=num2[i]*base+w;
j++;
}
}else if(rdx1==8){
j=0;
w=0;
for(i=size-1;i>=0;i--){
num2[i]=num1[i]-0x30;
base=pow(8,j);
w=num2[i]*base+w;
j++;
}
}else if(rdx1==10){
j=0;
w=0;
for(i=size-1;i>=0;i--){
num2[i]=num1[i]-0x30;
base=pow(10,j);
w=num2[i]*base+w;
j++;
}
}else if(rdx1==16){
j=0;
w=0;
for(i=size-1;i>=0;i--){
if(num1[i]>0x2f&&num1[i]<0x3a){
num2[i]=num1[i]-0x30;
}else if(num1[i]>0x40&&num1[i]<0x46){
num2[i]=num1[i]-0x37;
}else if(num1[i]>0x60&&num1[i]<0x67){
num2[i]=num1[i]-0x57;
}
base=pow(16,j);
w=num2[i]*base+w;
j++;
}
}
w2=w;
//入力データが2進数の場合
if(rdx1==2){
//8進
i=0;
size=0;
while(w!=0){
num2[i] = w % 8;
w = w / 8;
i++;
size++;
}
printf("Octal:");
for(i=size-1;i>=0;i--){
printf("%d",num2[i]);
}
printf("\t");
//10進
printf("Decimal:%d\t",w2);
//16進
w=w2;
i=0;
size=0;
while(w!=0){
num2[i] = w % 16;
w = w / 16;
i++;
size++;
}
printf("Hexadecimal:");
for(i=size-1;i>=0;i--){
if(num2[i]==10){
printf("A");
}else if(num2[i]==11){
printf("B");
}else if(num2[i]==12){
printf("C");
}else if(num2[i]==13){
printf("D");
}else if(num2[i]==14){
printf("E");
}else if(num2[i]==15){
printf("F");
}else{
printf("%d",num2[i]);
}
}
}
//入力データが8進数の場合
if(rdx1==8){
//2進
i=0;
size=0;
while(w!=0){
num2[i] = w % 2;
w = w / 2;
i++;
size++;
}
printf("Binary:");
for(i=size-1;i>=0;i--){
printf("%d",num2[i]);
}
printf("\t");
//10進
printf("Decimal:%d\t",w2);
//16進
w=w2;
i=0;
size=0;
while(w!=0){
num2[i] = w % 16;
w = w / 16;
i++;
size++;
}
printf("Hexadecimal:");
for(i=size-1;i>=0;i--){
if(num2[i]==10){
printf("A");
}else if(num2[i]==11){
printf("B");
}else if(num2[i]==12){
printf("C");
}else if(num2[i]==13){
printf("D");
}else if(num2[i]==14){
printf("E");
}else if(num2[i]==15){
printf("F");
}else{
printf("%d",num2[i]);
}
}
}
//入力データが10進数の場合
if(rdx1==10){
//2進
i=0;
size=0;
while(w!=0){
num2[i] = w % 2;
w = w / 2;
i++;
size++;
}
printf("Binary:");
for(i=size-1;i>=0;i--){
printf("%d",num2[i]);
}
printf("\t");
//8進
w=w2;
i=0;
size=0;
while(w!=0){
num2[i] = w % 8;
w = w / 8;
i++;
size++;
}
printf("Octal:");
for(i=size-1;i>=0;i--){
printf("%d",num2[i]);
}
printf("\t");
//16進
w=w2;
i=0;
size=0;
while(w!=0){
num2[i] = w % 16;
w = w / 16;
i++;
size++;
}
printf("Hexadecimal:");
for(i=size-1;i>=0;i--){
if(num2[i]==10){
printf("A");
}else if(num2[i]==11){
printf("B");
}else if(num2[i]==12){
printf("C");
}else if(num2[i]==13){
printf("D");
}else if(num2[i]==14){
printf("E");
}else if(num2[i]==15){
printf("F");
}else{
printf("%d",num2[i]);
}
}
}
//入力したデータが16進数の場合
if(rdx1==16){
//2進
i=0;
size=0;
while(w!=0){
num2[i] = w % 2;
w = w / 2;
i++;
size++;
}
printf("Binary:");
for(i=size-1;i>=0;i--){
printf("%d",num2[i]);
}
printf("\t");
//8進
w=w2;
i=0;
size=0;
while(w!=0){
num2[i] = w % 8;
w = w / 8;
i++;
size++;
}
printf("Octal:");
for(i=size-1;i>=0;i--){
printf("%d",num2[i]);
}
printf("\t");
}
printf("\nDo you want to end?(Y/N)");
scanf("%s",&ans);
}
//10進
printf("Decimal:%d\t",w2);
return 0;
}
int main(void){
RadixConversion();
return 0;
}
2016年8月17日水曜日
登録:
コメント (Atom)
