Mike  Kozey

Mike Kozey

1651878900

Computer: A Lightweight Library for Concurrent Computations

Computer

Computer is a lightweight library for concurrent computations, which provides Flutter's compute like API.

Features

  • Easy to use API
  • No overhead on creating & releasing isolates for each task. Workers initialized on start and ready to solve your tasks
  • Strictly defined number of workers

Note

Computer.shared() is a singleton, use Computer.create() to create new instances

How to use

Computer provides just 3 methods

turnOn()

Before using the Computer you need to turnOn it. This will create workers and initialize them. Then you may use compute() method.

final computer = Computer.create(); //Or Computer.shared()

await computer.turnOn(
  workersCount: 4, // optional, default 2
  verbose: false, // optional, default false
);

compute()

compute will execute your function inside one of the workers. Function may be async. The callback argument must be a top-level or static method of a class.

final result = await computer.compute(
  fib,
  param: 45, // optional
);

turnOff()

If you don't need workers anymore, you can turnOff the Computer. It will destroy workers.

await computer.turnOff();

Errors

ComputerError the parent error for all errors/exceptions in this package

class ComputerError implements Exception {
  final String message;
}

RemoteExecutionError shows up when something goes wrong in task

class RemoteExecutionError extends ComputerError {
  final Capability taskCapability;
}

CancelExecutionError shows up when turnOff is called but task is processing

class CancelExecutionError extends ComputerError {
  final Capability taskCapability;
}

Use this package as a library

Depend on it

Run this command:

With Dart:

 $ dart pub add computer

With Flutter:

 $ flutter pub add computer

This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):

dependencies:
  computer: ^3.2.1

Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:computer/computer.dart';

example/lib/example.dart

import 'dart:async';

import 'package:computer/computer.dart';

Future<void> main() async {
  final computer = Computer.shared();

  await computer.turnOn(
    workersCount: 2,
    verbose: true,
  );
  try {
    final a = await computer.compute<int, int>(fib, param: null);
    print('Calculated a: $a');
  } catch (error) {
    print(error);
    print('Task a failed');
  }
  final b = await computer.compute<int, int>(asyncFib, param: 40);
  print('Calculated b: $b');
  final c = await computer.compute<int, int>(fib, param: 30);
  print('Calculated c: $c');

  await computer.turnOff();
}

int fib(int n) {
  if (n < 2) {
    return n;
  }
  return fib(n - 2) + fib(n - 1);
}

Future<int> asyncFib(int n) async {
  await Future<void>.delayed(const Duration(seconds: 2));

  if (n < 2) {
    return n;
  }
  return fib(n - 2) + fib(n - 1);
}

Author: 91team
Source Code: https://github.com/91team/computer 
License: MIT license

#flutter #dart #computer 

Computer: A Lightweight Library for Concurrent Computations
坂本  篤司

坂本 篤司

1650625920

FTPとは何ですか?ファイル転送プロトコルとFTPサーバーの意味

FTPはファイル転送プロトコルの略です。これは、TCP / IP(伝送制御プロトコル/インターネットプロトコル)ネットワークを介してコンピューター間でファイルを転送するためのネットワーク/通信プロトコルです。

TCP/IPネットワークの例は次のとおりです。

  • HTTP(ハイパーテキスト転送プロトコル)。
  • HTTPS(ハイパーテキスト転送プロトコルセキュア)。
  • FTP(ファイル転送プロトコル)。

ファイル転送プロトコルはどのように機能しますか?

FTPを使用してコンピューター間でファイルを転送するには、FTPサーバーにアクセスする必要があります(FTPサーバーについては以下で説明します)。  

アクセスするサーバーの種類によっては、サーバー内のファイルにアクセスするためにユーザー名とパスワードの入力が必要になる場合があります。ファイルにアクセスする前に認証を必要としないサーバー接続は、匿名FTPと呼ばれます。

ユーザーがFTPサーバーに正常にアクセス/ログインすると、サーバー上のファイルをダウンロードまたはアップロードできます。

FTPサーバーにアクセスする一般的な方法は2つあります。

  • Webブラウザを介して。これを行うには、ブラウザにサーバーのアドレスを入力します。このアドレスは次のようになります:ftp.myftpfiles.comまたはhttps://www.myftpfiles.com。サーバーにアクセスすると、所有者がサーバーにアップロードしたファイルを操作できます。
  • FTPクライアントを介して。次のセクションでは、FTPクライアントについて説明します。

FTPクライアントとは何ですか?

FTPクライアントは、アクセスを要求するコンピューターとファイルが保存されているサーバーとの間に接続を作成するソフトウェアです。

使用可能なFTPクライアントソフトウェアは多数あります。これらは、対話可能なグラフィカルユーザーインターフェイス(GUI)を提供します。

以下に、FTPクライアントがどのように見えるかとその使用方法を示します。FileZillaを利用します。

スクリーンショット--270--1

上の画像には、さまざまなテキストフィールドがあります。Hostテキストフィールドは、サーバーのアドレスが入力される場所です。

Usernameandテキストフィールドは、Passwordアクセスを許可する前に認証を必要とするサーバー用です。

テキストフィールドは通常21です。PortこれはFTP専用のポートです。

必要なテキストフィールドに入力したら、クリックQuickconnectしてサーバーに接続できます。

ソフトウェアの左側にはlocal site、既存のディレクトリのリストが表示された私のコンピュータがあります。

右側はRemote site、サーバー内のすべての情報とファイルが表示される場所です。

FTPサーバーとは何ですか?

FTPサーバーは基本的に、すべてのファイルが最初にアップロードされるコンピューターです。すべてのサーバーには、ユーザーがブラウザーまたはFTPクライアントを介してTCP/IP経由でアクセスできるFTPアドレスがあります。

サーバーにより、訪問者はファイルをダウンロードおよびアップロードできます。

FTPサーバーは安全ですか?

多くのFTPサーバーは認証を必要としますが、プロトコルに暗号化がないため、安全ではありません。これにより、FTPサーバーに保存されているファイルにサードパーティがアクセスする可能性が高くなります。

FTPに対して最も好ましく、より安全なプロトコルは、Secure FileTransferProtocolの略であるSFTPです。HTTPやHTTPSと同じように。

サーバーに保存されているデータが暗号化されているため、SFTPの方が安全です。

他の選択肢は次のとおりです。

  • FTPS(ファイル転送プロトコルセキュア)。
  • HTTPS(ハイパーテキスト転送プロトコルセキュア)。
  • AS2(適用性ステートメント2)。

FTPを使用する利点

FTPを使用する利点のいくつかを次に示します。

  • ファイルの高速転送。
  • 多数のホストによってサポートされています。
  • 大きなファイルの転送をサポートします。
  • 転送をスケジュールする機能。
  • 転送は中断されたときに再開できます。

FTPを使用するデメリット

FTPを使用することの欠点の いくつかを次に示します。

  • FTPサーバーにはセキュリティがありません。
  • ChromeやFirefoxなどの主要なブラウザはFTPをサポートしなくなりました。
  • ユーザーの資格情報とファイルは暗号化されていません。
  • 一部のサーバーには有害なファイルが含まれている可能性があります。

結論

この記事では、ネットワークを介してコンピューター間でファイルを転送できるようにするファイル転送プロトコルについて説明しました。

FTPクライアントとFTPサーバーが何であるかを見ました。また、FTPサーバーが安全でない理由や、他の安全な代替手段を利用できる理由についても話しました。

最後に、FTPを使用することの長所と短所を見ました。

読んでくれてありがとう!

ソース:https ://www.freecodecamp.org/news/what-is-ftp-file-transfer-protocol-and-ftp-server-meaning/

#ftp #file #computer #network 

FTPとは何ですか?ファイル転送プロトコルとFTPサーバーの意味

Protocolo De Transferencia De Archivos Y Significado Del Servidor FTP

 FTP significa Protocolo de transferencia de archivos. Este es un protocolo de red/comunicación para transferir archivos entre computadoras a través de una red TCP/IP (Protocolo de control de transmisión/Protocolo de Internet).

Ejemplos de redes TCP/IP son:

  • HTTP (Protocolo de transferencia de hipertexto).
  • HTTPS (Protocolo seguro de transferencia de hipertexto).
  • FTP (Protocolo de transferencia de archivos).

¿Cómo funciona el protocolo de transferencia de archivos?

Para transferir archivos entre computadoras usando FTP, debe visitar un servidor FTP (a continuación explicaré qué es un servidor FTP).  

Según el tipo de servidor que visite, es posible que deba ingresar un nombre de usuario y una contraseña para acceder a los archivos del servidor. Las conexiones del servidor que no requieren ningún tipo de autenticación antes de acceder a los archivos se conocen como FTP anónimo.

Cuando el usuario ha visitado o iniciado sesión con éxito en un servidor FTP, puede descargar o cargar archivos en el servidor.

Hay dos formas generales de obtener acceso a un servidor FTP:

  • A través de un navegador web. Puede hacerlo escribiendo la dirección del servidor en su navegador. Esta dirección podría verse así: ftp.myftpfiles.com o https://www.myftpfiles.com. Una vez que esté en el servidor, puede interactuar con los archivos cargados en el servidor por el propietario.
  • A través de un cliente FTP. Hablaremos de los clientes FTP en la siguiente sección.

¿Qué es un cliente FTP?

Un cliente FTP es un software que crea una conexión entre la computadora que solicita acceso y el servidor donde se almacenan los archivos.

Existen numerosos software de cliente FTP disponibles para su uso. Proporcionan una interfaz gráfica de usuario (GUI) con la que podemos interactuar.

A continuación, veremos cómo se ve un cliente FTP y cómo podemos usarlo. Estaremos haciendo uso de FileZilla .

Captura de pantalla--270--1

En la imagen de arriba, hay diferentes campos de texto. El Hostcampo de texto es donde se escribe la dirección del servidor.

Los campos de texto Usernamey Passwordson para servidores que requieren autenticación antes de otorgar acceso.

El Portcampo de texto suele ser 21. Este es un puerto dedicado para FTP.

Una vez que haya completado los campos de texto necesarios, puede hacer clic Quickconnectpara conectarse al servidor.

En el lado izquierdo del software está el local siteque es mi computadora con una lista de los directorios existentes.

A la derecha está el Remote siteque es donde se mostrará toda la información y archivos en un servidor.

¿Qué es un servidor FTP?

Un servidor FTP es básicamente la computadora donde todos los archivos se cargan inicialmente. Cada servidor tiene una dirección FTP que un usuario puede visitar a través de TCP/IP a través de un navegador o un cliente FTP.

El servidor permite al visitante descargar y cargar archivos.

¿Son seguros los servidores FTP?

Aunque muchos servidores FTP requieren autenticación, no son seguros ya que el protocolo carece de cifrado. Esto hace que sea más probable que un tercero no deseado pueda acceder a los archivos almacenados en un servidor FTP.

El protocolo preferido y más seguro para FTP es SFTP, que significa Protocolo seguro de transferencia de archivos. Al igual que HTTP y HTTPS.

SFTP es más seguro porque los datos almacenados en el servidor están encriptados.

Otras alternativas incluyen:

  • FTPS (Protocolo seguro de transferencia de archivos).
  • HTTPS (Protocolo seguro de transferencia de hipertexto).
  • AS2 (Declaración de aplicabilidad 2).

Ventajas de usar FTP

Estas son algunas de las ventajas de usar FTP:

  • Transferencia de archivos más rápida.
  • Apoyado por numerosos anfitriones.
  • Admite la transferencia de archivos grandes.
  • Posibilidad de programar traslados.
  • Las transferencias se pueden reanudar cuando se interrumpen.

Desventajas de usar FTP

Estas son algunas de las desventajas de usar FTP:

  • Los servidores FTP carecen de seguridad.
  • Los principales navegadores como Chrome y Firefox ya no admiten FTP.
  • Las credenciales de usuario y los archivos no están encriptados.
  • Algunos servidores pueden contener archivos dañinos.

Conclusión

En este artículo, hablamos sobre el Protocolo de transferencia de archivos que nos permite transferir archivos entre computadoras a través de una red.

Vimos qué son un cliente FTP y un servidor FTP. También hablamos sobre por qué los servidores FTP son inseguros y otras alternativas seguras que podemos utilizar.

Por último, vimos las ventajas y desventajas de usar FTP.

¡Gracias por leer!

Fuente: https://www.freecodecamp.org/news/what-is-ftp-file-transfer-protocol-and-ftp-server-meaning/ 

#ftp #file #computer #network 

 Protocolo De Transferencia De Archivos Y Significado Del Servidor FTP
曾 俊

曾 俊

1649299020

用了 N 年电脑都不知,瞬间让 U 盘速度暴增的秘籍!

  现在的 U 盘和移动硬盘容量越来越大,尽管 USB 接口的速度也已经远胜从前,但如果想要拷贝庞大的游戏电影,或者一些碎片文件,传输速度还是很难令人满意的。

  作为一名老司机,笔者在资源拷贝方面颇有心得,今天就来给大家分享两个能够让 U 盘、移动硬盘速度暴增的方法,希望对大家有用!

  开启高性能模式

  Windows 系统很多设置都非常人性化,但却不一定适合你。例如在 U 盘、移动硬盘的设置上,Windows 会优先确保数据的完好,然后才考虑性能。如果你确信 USB 连接足够可靠,其实可以通过以下方法,来让 U 盘、移动硬盘运行在速度更高的模式。

  首先,插入 U 盘、移动硬盘,然后在“我的电脑”中,对准相应的磁盘点击右键,进入到磁盘属性。

  接着,切换到“硬件”的选项卡,选择 U 盘、移动硬盘对应的设备,然后点击右下角的“属性”。

  之后,会弹出该设备的属性窗口,切换到“常规”一项,点击“改变设置”。

  接着在“策略”中,选择“更好的性能”即可。如此一来,U 盘和移动硬盘的写入速度,就会有所提升!

  当然,如此设置也是有副作用的。如果选择了“更好的性能”,那么就会使用 Windows 的写入缓存功能,如果意外断开连接,数据可能会仍停留在缓存中尚未写入,造成数据丢失。因此,启用该特性后,在拔出 U 盘、移动硬盘前,务必先手动点击 U 盘的通知图标,使用“安全删除硬件”的功能,确保连接安全断开。

  使用 FastCopy

  这是一款历史悠久的老软件,如果你是接触电脑比较久的用户,应该会有所耳闻。在磁盘性能拉垮的 Vista 时代,这就是拯救文件粘贴复制的上佳方案。直到现在,它也是可以为 U 盘、移动硬盘提升一定程度的读写速度的。

  FastCopy:https://fastcopy.jp/en/

  FastCopy 的使用很简单,安装后,开启软件就可以使用了,也可以直接通过右键点击文件来使用。设定好想要复制的路径后,点击“执行”,FastCopy 就开始工作。

  和 Windows 自带的复制粘贴相比,FastCopy 的速度是更快的。这主要得益于 FastCopy 并不使用操作系统的缓存来进行数据传输,这使得它的传输过程不容易受到其他正在运行的程序的影响。如果你用系统的复制粘贴,那么传输过程中可能会和系统抢缓存,速度就非常不稳定了。另外,FastCopy 还有多线程传输等技术,这都对提升文件传输速度大有裨益。

  有用户实测,使用 FastCopy 传输文件,综合速度甚至能提升 50%,非常惊人。

  而且,FastCopy 还可以实现更多功能,例如你可以自定义缓存大小,可以设置传输完成后校验文件、保证传输不出错等等。对于在局域网、USB 这样的复杂环境传输文件,FastCopy 在性能和可靠性方面的优势都很明显。

  总结

  复制粘贴文件是一个非常基础的系统功能,但 Windows 保守的传输策略,不一定都适合大家。如果你需要更快的 U 盘、移动硬盘传输速度,不妨试试上文的方法吧! 

#computer #fastcopy #windows 

用了 N 年电脑都不知,瞬间让 U 盘速度暴增的秘籍!
曾 俊

曾 俊

1649223060

C盘爆满怎么办?电脑上的这些文件随便删,释放更多硬盘空间

 C盘爆满了怎么办,经常看到系统盘爆红,剩下可怜的几百M,电脑慢的不得了!希望通过本视频的学习,可以简单快捷的把你的C盘空间恢复!!电脑上的这些文件随便删,释放更多硬盘空间







#c #computer 

C盘爆满怎么办?电脑上的这些文件随便删,释放更多硬盘空间

2022年に受講する10のベストコンピュータサイエンスコース

コンピュータサイエンスの最良の入門書をお探しですか?堅牢な方法論に従って、オンラインで利用できるトップコースをランク付けしました。そして、それらはすべて自由に監査できます。あなたはそれについて以下で読むことができます。

しかし、あなたが急いでいるなら、ここに私のトップピックがあります。いずれかをクリックして、コースの詳細にスキップします。

ランクとコースワークロード手紙で
1. CS50のコンピュータサイエンス入門(ハーバード)100〜200時間CSの包括的で超高品質な調査。
2.問題解決のための計算的思考(ペン)70時間問題解決の考え方と方法を取得します。
3. Python(MIT)を使用したコンピュータサイエンスとプログラミングの概要80〜140時間Pythonのレンズによる包括的なCS調査。
4.コンピューティングの原則(米)40時間確率などのCSファンダメンタルズの実践的な概要。
5.コンピュータサイエンス101(スタンフォード)36時間ネットワーキングを含む主要なCSトピックの調査。
6.Coursera(UoL)からのコンピューターのしくみ40時間コンピューターの機能の底面図。
7. CS50の理解技術(ハーバード)36時間メインのCS50の準備ができていない場合は、技術の基本。
8.理論計算機科学入門(Udacity)25時間複雑さと計算可能性理論。
9.コンピュータサイエンスのための数学(UoL)40時間CSの包括的な数学の概要。
10.コンピュータサイエンスの数学(ハル大学)9時間ゼロから始める場合は、すばらしい数学のイントロです。

コンピュータサイエンスとは何ですか?

コンピュータサイエンスの定義は、物理学の定義とほぼ同じです。したがって、コンピュータサイエンスがコンピュータの研究であり、コンピューティングの概念が物理学が自然とその現象の研究であると言うのと同じように「有用」であると言うことは。

代わりに、ほとんどの大学がシラバスに含めるコンピュータサイエンスの主要なサブフィールドについて説明します。

あなたは要点を理解します。これらの興味深い考えの1つが以前に頭に浮かんだことは確かです。幸いなことに、これらはコンピュータサイエンスが答えようとしている質問です。

コンピュータサイエンスを勉強することで、あなたはより良いプログラマーになることができます。獣医が平均的なペットの飼い主よりも動物をよく理解しているように、コンピューターサイエンスを研究することで、「コンピューター」と呼ばれるこれらの素晴らしいコード実行マシンの機能、能力、および制限をよりよく理解できます。

コースランキング方法論

私はこのランキングを構築するために3つのステップのプロセスに従いました:

まず、自己紹介をさせていただきます。私は、オンラインコースの主要な検索エンジンであるClassCentralの一員です。私(@elham)は、友人であり同僚である@manoelと共同でこのランキングを作成しました。これは、以前の最高のPythonコース最高の機械学習コースのランキングで成功を収めたのと同じアプローチです。この時点で、これはかなり堅牢な方法だと思います。

このランキングの作成は、 5万以上のオンラインコースのデータベースを確認することから始めました。評価、レビュー、コースのブックマークなどに興味がありました。これにより、最初の選択を行うことができました。したがって、このフェーズは純粋にデータ駆動型でした。

この暫定的な最初のステップは、そこにある最良のオプションのいくつかを明らかにするのにすぐに役立ちました。口コミはオンライン学習に非常に効果的です。良いコースが注目されます。そして、最高のものは多くの注目を集め、絶賛されています。

とはいえ、レビューが必ずしも全体像を伝えるとは限りません。実際、一部のコースは早い段階でスポットライトをつかむのが得意であるため、他の優れたリソースが見過ごされる可能性があります。したがって、次のステップは、オンライン教育に関する私たちの個人的な知識を組み合わせることでした。

次に、オンライン学習者としての経験を利用して、最初に選んだものをそれぞれ評価しました。

私たちはどちらもコンピュータサイエンスのバックグラウンドを持っており、オンラインで多くの学習者であり、私たちの間で約45のMOOCを完了しています。さらに、Manoelはコンピューターサイエンスのオンライン学士号を取得しており、現在、コンピューターサイエンスの基礎を修了しています。

あなたが現在読んでいる記事を私が書いている間に、マノエルはコースを集めました。このプロセス全体を通して、私たちはお互いにアイデアを跳ね返し、最終結果に満足するまでランキングを繰り返し改善しました。

第三に、私たちの研究中に、よくできていると感じたがあまり知られていないコースに出くわしました。純粋にデータ中心のアプローチを採用した場合、登録数と評価が少なかったという理由だけで、これらのコースをランキングから除外する必要があります。

しかし、違います。このランキングは、意図的に意見が分かれており、全体論的です。コースに含める価値があると確信したとき、コースのレビューが競合他社ほど多くない場合でも、私たちは内臓を持ってそれを含めました。

また、真の初心者でも、コンピュータサイエンスの基礎を持っている人でも、数学などの特定のトピックに興味がある人でも、さまざまな学習者に対応できるように、さまざまなコンピュータサイエンスコースを含めることでリストを盛り上げました。 。

Class Centralデータ、生涯学習者としての経験、および多くの編集を組み合わせたこのプロセスを経て、最終的なランキングに到達しました。これまでに10時間以上かけてこのランキングを作成してきましたが、今後も更新を続ける予定です。

コースランキング統計

ランキングに関するいくつかの集計統計は次のとおりです。

  • このランキングのコースは合計で500万人を超え、2つのコースはそれぞれ100万人を超えています。
  • リストで最も人気のあるコースには、350万人の登録があります。
  • このランキングのすべてのコースは、完全に無料であるか、無料で監査できます。
  • それぞれ4つのコースがあり、edXとCourseraは、このランキングで最も代表的なプロバイダーと結びついています。
  • ClassCentralで約48万人がコンピュータサイエンスコースを受講しています。

さらに面倒なことはせずに、トップピックを見ていきましょう。

1. CS50のコンピュータサイエンス入門(ハーバード大学)

バナー-2

コースインストラクターのマラン教授と学生

私が最初に選ぶのは、ハーバード大学がedXで提供しているCS50のコンピュータサイエンス入門です。2012年にedXで開始されたCS50は、インターネット上コンピュータサイエンスコースです。素晴らしい生産品質と毎年のカリキュラム更新で有名です。

それは、コンピュータサイエンスが何であるかについての簡潔であるが包括的な概要を提供します。「HelloWorld!」のことを聞いたことがない初心者でも、コンピューターについて1つか2つ知っているプログラマーでも、新しいことを学んだことでこのコースから抜け出すことができます。

注意すべき1つのこと

コースの演習には、簡単なものとやりがいのあるものの2つのバージョンがありますが、簡単な演習でも少し注意が必要な場合があります。プログラミングについて何も知らない場合は、このコースを一緒に勉強する人を見つけることをお勧めします。

幸い、CS50にはオンラインで最大かつ最も活発なコースコミュニティの1つがあります。Discordを確認してください

または、より短く、より実用的なコースを探している場合は、プログラミングの世界へのより穏やかなオンランプを含む、私のPythonランキングを確認することをお勧めします。

インストラクター

コースを教えているハーバード大学の教授であるDavidJ.Malanを育てずに、CS50について議論することはできません。インストラクターがコースの成功にこれほど貢献したことはめったにありません。

マラン教授は優れた教育者であるだけでなく、ほぼ完璧な配達を行う真のエンターテイナーです。また、完了するまでに数十時間かかる可能性のあるアカデミックコースに取り組む場合、学習者の注意を引くことができるインストラクターがいることは大きな違いになります。

ですから、真摯に学びたいという願望にもかかわらず、オンラインコースを受講しているときに眠りにつくことに気付いた場合、これはまさにあなたのためのコースかもしれません。マラン教授のエネルギーは伝染性です!

あなたが学ぶこと

このコースは、コンピュータサイエンスが本質的に問題解決であるという前提から始まります。コンピューターの基本言語であるバイナリーを紹介し、1と0のシーケンスがテキスト、画像、ビデオ、さらにはサウンドをどのように表現できるかを説明します。

アルゴリズムは、問題を解決するために設計された段階的な指示であることがわかります。コース全体で扱う最も一般的なタイプのアルゴリズムは、バブルソート、マージソート、バイナリ検索などのソート検索のアルゴリズムです。

「すべてが同じことをする場合、多くの異なるアルゴリズムを持つことの意味は何ですか?」と疑問に思うかもしれません。これは、 BigO表記を使用したアルゴリズムの効率の測定について学習するときです。

このコースで最初に教えるプログラミング言語は、初心者向けの言語Scratchです。ブロックベースのコーディングを通じて、Scratchを使用して、関数、条件ステートメント、ブール式、ループ、変数などの基本的なプログラミングの概念を説明します。

コースの後半では、これらの基本的な概念が何度も登場し続けることに気付くでしょう。CS50が教えるほとんどすべてのプログラミング言語でそれらを見つけることができるからです。

次に、このコースでは補助輪を外し、低レベルのプログラミング言語の奥深くに引きずり込みます。「低レベル」とは、「価値が低い」という意味ではありません。コンピュータサイエンスでは、低水準プログラミング言語は機械語に近い言語です。機械語に近いほど、「低く」なります。

アセンブリ言語はバイナリに近いものであり、コースでは簡単に説明します。しかし、従来のプログラミング(Scratchのようにカラフルなブロックを配置する代わりにコード行を書く)の最初の詳細は、メモリを手動で管理して最初のデータ構造を実装する低レベルのプログラミング言語であるCを使用することです。

コンピューターがデータをメモリ内の一連の場所に格納する方法と、コンピューターがアドレスとポインターを使用してデータを見つけてアクセスする方法について学習します。また、配列、リンクリスト、ツリーなど、値のリストを作成および保存するさまざまな方法についても学習します。

各データ構造の長所と短所を比較します。たとえば、ハッシュテーブルには一定時間でアクセスできますが、データの衝突のリスクを軽減する必要があります。

その後、「高水準」プログラミングに向けて表面に戻り、Pythonでの作業を開始するときに快適に呼吸し、トピックからトピックへとジャンプし続けることができます。

多くのデータベースのプログラミング言語であるSQLについて説明します。コースの最後の数週間は、HTML、CSS、JavaScript、およびFlaskと呼ばれるPythonフレームワークを使用してインタラクティブなWebサイトを構築および設計することで終わります。

学習方法

コースの長さは10週間で、それに加えて、さらに1週間かかる可能性のあるオープンエンドの最終プロジェクト(本当に野心的なものに取り組みたい場合はそれ以上)があります。

このコースは、次の春にオンラインで開始される前に、ハーバードのキャンパスで毎年記録されます。レコーディングの進行中は、他の100人の学習者とライブストリームで参加できる可能性があります。キャンパスの近くに住んでいる場合は、直接参加することもできます。ただし、パンデミックにより、当面はこれが不可能になる可能性があります。それ以外の場合は、edXまたはハーバードOCW経由でオンデマンドレコーディングにアクセスできます。

評価に関しては、10の問題セット、8つのラボ、および最終的なコース終了プロジェクトを完了します。これらのプロジェクトを設計して、自分自身またはチームで考え出す必要があります。便利なブラウザ内VSCodeベースのエディタを介して、これらをコーディングして送信できます。

機関ハーバード大学
プロバイダーedX
インストラクターデビッド・J・マラン、ブライアン・ユー
レベル初心者
ワークロード合計100〜200時間
登録3.4M
証明書無料および有料(以下を参照)

CS50ラインナップ

多くの人がCS50のコンピュータサイエンス入門について聞いたことがありますが、CS50ブランドの下に他に10のコースがあることに気付いている人は多くありません。言及する価値のあるいくつかのフォローアップコースは次のとおりです。

さらに良いこと:これらのコースの多くは無料の証明書を提供しています。CS50コースの詳細と、無料の証明書の取得方法については、ManoelのCS50ガイドをご覧ください

おもしろ情報

  • コースインストラクターのDavidJ.Malanは、CS50を15年間教えており、ハーバード大学で最初にキャンパス内で、2012年からedXで教えています。
  • CS50は約3万回ブックマークされており、ClassCentralで100件を超えるレビューがあります。
  • CS50は毎年、世界中の学習者と協力する機会を持つ、友好的な問題解決コンテストであるパズルデーを開催しています
  • CS50は、これまでで最も人気のあるコースのリストと、これまで最高の無料コースの両方のリストの一部です。
  • David J. Malanは、ハードドライブとメモリカードのデータ回復会社であるDiskasterの創設者兼会長でした。コースの演習の1つは、彼の前の仕事にうなずきます
  • CS50は、その包括性により、このランキングで最長のコースです。

このコースに興味がある場合は、コースの詳細と登録方法をここで見つけることができます。

2.問題解決のための計算的思考(ペンシルベニア大学)

バナー-7

コースインストラクター、スーザンデビッドソンとクリスマーフィー

私の2番目の選択は、ペンシルベニア大学のコースラにある問題解決のための計算的思考です。

このコースでは、コンピュータサイエンスの基礎となるスキル、つまりコンピュテーショナルシンキングに焦点を当てます。

コンピュテーショナルシンキングとは、問題を細かく分割し、コンピューターで実行できる解決方法を考え出すプロセスです。

コンピュテーショナルシンキングを採用すると、追加のコンピュータサイエンスコースに取り組むための正しい考え方になります。したがって、このコースは、基礎の前の基礎として見ることができます。とはいえ、CS全体ではなく、問題解決自体に関心がある場合は、このコースも最適です。

このコースを受講するのに、コンピュータサイエンスやプログラミングの経験は必要ありませんが、高校の基本的な数学が役立つでしょう。

あなたが学ぶこと

このコースでは、計算思考、アルゴリズム、コンピューターアーキテクチャ、Pythonの4つの主要トピックを扱います。

まず、このコースでは、コンピュテーショナルシンキングの4つの柱について概説します。分解から始めて、複雑な問題をより小さく、より単純な問題に分解します。次に、パターン認識を通じて、問題を以前に解決された他の同様の問題と比較します。

その後、データの表現と抽象化の際に、問題のどの特性が重要であるかを特定し、そうでない特性を除外することで、問題をさらに単純化します。

コンピュテーションシンキングの最後の柱であるアルゴリズムは、コースの2番目のセクションを形成します。このコースでは、アルゴリズムを、問題を解決するための一連の段階的な指示として定義します。アルゴリズムを使用すると、問題を正確に伝えることなく、問題を解決する方法をコンピューターに教えることができます。代わりに、いくつかの前提条件を満たしている限り、アルゴリズムはさまざまなケースを処理できます。

線形検索や二分探索など、さまざまなアルゴリズムについて説明します。フローチャートでアルゴリズムを表現する方法、アルゴリズムの複雑さを分析する方法(Big O)、および最適化問題の可能な解決策の数を計算する方法を学習します。最後に、問題解決への一般的なアルゴリズムアプローチの利点と制限を比較します。

コースの第3部では、現代のコンピューターで使用されているコンピューターアーキテクチャーであるフォンノイマンアーキテクチャーに落ち着く前に、コンピューターの簡単な歴史を説明します。 

これは、メモリ、CPU、およびI/Oの3つの基本ユニットで構成されています。データと命令がビットとバイトとしてコンピューターに格納およびアクセスされる方法、およびコードの実行がメモリ内のデータの断片を移動してCPUで操作する方法を学習します。

4番目の最後のセクションでは、このコースでPythonプログラミングの基本について説明します。反復、クラス、およびデバッグについて説明します。そして、独自のPythonプログラムをコーディングしてコースを終了します。ここで、以前に学習したアルゴリズムをコードに実装できます。

学習方法

コースの長さは4週間で、毎週約18時間のコース教材があります。あなたは主にビデオ講義から学びます、そして各ビデオの後にあなたの想起をテストするための短いクイズがあります。数学の能力にそれほど自信がない人のために、数学で利用できる補足資料があります。

毎週の終わりに、実際の問題を解決するために使用される計算的思考の例を見るケーススタディが提示されます。その後、学んだことを応用するプロジェクトを完了します。このコースの評価は、検証済みの学習者を対象としていることに注意してください。

機関ペンシルバニア大学
プロバイダーコーセラ
インストラクタースーザン・デイビッドソンとクリス・マーフィー
レベル初心者
ワークロード合計70時間
登録74K
評価4.7 / 5.0(1K)
証明書有料

おもしろ情報

このコースに興味がある場合は、コースの詳細と登録方法をここで見つけることができます。

3. Pythonを使用したコンピュータサイエンスとプログラミングの概要(マサチューセッツ工科大学)

バナー-8

エリック・グリムソン教授、コースインストラクター

最高のコンピュータサイエンスコースの私の3番目の選択は、edXでMITが提供するPythonを使用したコンピュータサイエンスとプログラミングの概要です。

このコースは、Pythonを介したコンピュータサイエンスとプログラミングの分野にアプローチします。このコースは、深さではなく幅に焦点を当てており、学生に計算の多数のアプリケーションに関する背景知識を提供します。

したがって、このコースは、調査コースであるという点で最初の選択に似ています。多くのことをカバーしていますが、詳細は説明していません。ただし、ハーバードのコースには複数の言語が含まれているのに対し、Pythonという1つのプログラミング言語に完全に焦点を当てているという点で異なります。

目標に応じて、Pythonへのこの焦点はポジティブまたはネガティブと見なされる可能性があります。その価値については、Pythonは優れた最初のプログラミング言語であると私は信じています。

注意喚起!このコースは、MITのキャンパス内での経験を反映しようとしているため、簡単なものになるとは思わないでください。コンピュータサイエンスやプログラミングの経験は必要ありませんが、高校の数学のバックグラウンドが必要です。

あなたが学ぶこと

このコースで探求する主なトピックは、計算思考、データ構造、反復と再帰、分解、抽象化、およびアルゴリズムと複雑さです。

計算と計算思考について簡単に紹介します。コンピューターとは何か、コンピューターがどのように機能するか、そしてコンピューターの制限は何かを学びます。

コンピューターはあなたが言うこと(そしてあなたが言うことから何を推測できるか)しか知らないことを理解することで、コンピューターがタスクを実行するためには、一連の指示を含む「レシピ」が必要であることがわかります。従う必要があります。これは、コンピューター科学者がアルゴリズムと呼んでいるものです。

プログラミングの旅は、Pythonとその基本的な構文を学ぶことから始まります。Pythonを使用すると、ほとんどのプログラミング言語に共通する概念を探求できます。これらには、変数、条件ステートメント、および制御フローが含まれます。

さらに、コンピュータサイエンスの問題解決の基本となる概念である、分解、抽象化、再帰で機能とその役割を紹介します。

それまでに、推測とチェックの方法で難しい数学方程式の近似解を考え出すことができる簡単なプログラムをコーディングできるようになるはずです。

最後に、データ構造と呼ばれる、Pythonで情報を表現するさまざまな方法について学習します。リスト、タプル、および辞書を操作し、あるデータ構造を別のデータ構造に対していつ使用するかを理解します。

学習方法

コースの長さは9週間で、予想されるワークロードは毎週14〜16時間です。学習の主なモードはビデオ講義であり、コースにはあなたの苦労して得たスキルを実践するためのたくさんの活動が含まれています。また、他の学習者と話し合うことができる学習者フォーラムにアクセスすることもできます。

知識を固めるのに役立つ、やりがいのあるコーディング演習を含む3つの問題セットがあります。確認済みの学習者の場合、証明書を受け取るには、時間指定の中間試験と最終試験を完了する必要があります。

機関マサチューセッツ工科大学
プロバイダーedX
インストラクタージョン・ガットタグ、エリック・グリムソン、アナ・ベル
レベル中級
ワークロード合計80〜140時間
登録1.5M
証明書有料

おもしろ情報

このコースに興味がある場合は、コースの詳細と登録方法をここで見つけることができます。

4.コンピューティングの原則(パート1)(ライス大学)

バナー-4

スコット・リックスナー教授、コースインストラクター

ライス大学のCourseraによる「コンピューティングの原則(パート1)」は、コンピュータサイエンスを紹介するための4番目の選択肢です。このコースでは、見るよりも行うことに重点を置いており、多くのコーディングの割り当てを完了する必要があります。

このコースは、コンピュータサイエンスの基礎となる計算問題解決を教えることで、プログラミングスキルを向上させることを目的としています。これは、2番目の選択の焦点でもあります。これには、重要なプログラミング手法を学び、問題解決のための数学的基礎を開発することが含まれます。

このコースを受講するには、Pythonで小さな(100行以上)プログラムを書くことに慣れている必要があります。また、高校の数学のバックグラウンドも必要です。したがって、これはゼロから開始するのではなく、したがって、いくつかの基本的な知識も持っている学習者を対象としています。

前提条件が少ない問題解決コースをお探しの場合は、2番目の選択肢をご覧ください。

あなたが学ぶこと

このコースには、Python、コードテスト、確率とランダム性、組み合わせ論、および関数の成長に関する復習が含まれています。

Pythonを簡単に復習した後、このコースでは、テストを作成する方法と、Pythonプログラムのテストが役立つ理由を説明します。

多くのプログラマーは、コードのテストを書くことを嫌うか、単にわざわざ書くことはしませんが、インストラクターの1人が説明するように、プログラミングプロセスの不可欠な部分として扱う価値のあるベストプラクティスです。

テストを書くことはあなたが時間と労力を節約するのを助け、あなたのプログラムが実際にそれがすることになっていることをすることの再利用可能な健全性チェックとして役立ちます。最初のミニプロジェクトでは、有名なゲーム2048をPythonで再現します。

次に、コースはコンピュータサイエンスにおける確率とランダム性の役割に移ります。複数の結果の期待値を計算するとともに、確率で不合理な結果を特定する方法を学習します。

たとえば、サイコロが10回の投げのうち7回の6を振る可能性はどのくらいありますか?そして、それが起こった場合、ダイスが重くされている、つまり、ロールが不公平であるとどの程度結論付けることができますか?

また、Pythonを使用して、統計モデリングで使用される貴重なツールである結果の確率をシミュレートする方法についても説明します。そして、2番目のミニプロジェクトでは、確率を使用して、Tic-Tac-Toeのゲームで直面できる対戦相手を作成します。

このコースでは、列挙、順列、および組み合わせを扱う組み合わせ論についても触れます。イベントを実行できる方法の総数を計算する方法を理解します。

これは、アルゴリズムが実行するステップ数の計算に大いに役立ちます。これにより、アルゴリズムの実行時間を見積もり、アルゴリズムを実装する価値があるかどうかを判断できます。組み合わせ論がパスワードとコンピューターのセキュリティで主要な役割を果たす理由がわかります。3番目のミニプロジェクトでは、おなじみのダイスゲームYahtzeeをコーディングします。

コースの最後の部分では、複雑な問題を解決する上で数えることの重要性を学びます。カウントは、タスクが与えられた場合にアルゴリズムの実行にかかる時間の問題に答えます。あなたがよりよく知っているかもしれない数えるための別の名前は「時間計算量」です。

また、Pythonの高階関数、つまり関数のように他の関数をアルゴリズムとして使用する関数についても学習しmapます。前回のミニプロジェクトでは、これらの概念を使用して、独自のバージョンのCookieClickerを作成します。

学習方法

コースは5週間に分かれており、毎週7〜10時間の学習が含まれます。コースでは、さらに読んだり練習したりするための補足的なメモやアクティビティを提供していますが、主にビデオ講義と段階的な課題を通じて学習します。

コンパニオンウェブサイトCodeSkulptorで宿題とミニプロジェクトをコーディングして送信し、ローカルコーディング環境をセットアップする必要をなくすブラウザ内コードエディタを作成します。

機関ライス大学
プロバイダーコーセラ
インストラクタースコット・リックスナー、ジョー・ウォーレン、ルアイ・ナクレ
レベル中級
ワークロード合計40時間
登録30K
評価4.7 / 5.0(600)
証明書有料

おもしろ情報

  • このコースには、ClassCentralに約15,000のブッ​​クマークがあります。
  • このコースは、コンピューティングスペシャライゼーションの基礎を構成する7つのコースの3番目です。スペシャライゼーション証明書を受け取ると、キャップストーンプロジェクトを含む20以上のプロジェクトが完了します。
  • このコースの後に完全な専門分野を受講することに興味がないが、コース名が示すように、コースのトピックについて詳しく知りたい場合は、フォローアップコースがあります:コンピューティングの原則(パート2)
  • コースインストラクターのScottRixner教授は、ライス大学の2つのオンライン学位プログラムのファカルティディレクターです。したがって、彼のオンライン教育への献身は、彼自身のMOOCの範囲を超えています。

このコースに興味がある場合は、コースの詳細と登録方法をここで見つけることができます。

5.コンピュータサイエンス101(スタンフォード大学)

バナー-5

ニック・パーランテ教授、コースインストラクター

Computer Science 101は、いくつかの比較的単純なパターンに従ってコンピューターが機能することを実証することにより、コンピューターの魔法をわかりやすく説明することを目的としています。

このコースは、これらのパターンに慣れるために役立ちます。それはコンピュータがどのように機能するか、そしてそれらの制限が何であるかについての洞察を与えるでしょう。

さらに、このコースでは、CS内のネットワーキングおよびその他の主要なトピックについて詳しく説明します。コンピュータサイエンスの予備知識は必要ありません!

あなたが学ぶこと

このコースは、コンピューターの基本的な方程式から始まります。コンピューター=強力+愚かです。コンピューターは、1秒間に数十億の操作を実行できるため、強力です。しかし、彼らは彼らに何をすべきかを教える誰かが必要なので、彼らは愚かです。ここでプログラマーが活躍します。

このコースでは、JavaScriptの小さなスニペットを使用して、プログラミングやその他のコンピューターサイエンスの概念を紹介します。変数、ループと反復、条件文などのプログラミングの概念を理解できます。このコースでは、後で低水準言語と高水準言語、およびコンパイラとインタプリタについて説明します。

コンピューターはツールであり、プログラマーはツールを使用します。したがって、効率的にプログラミングするには、ツールがどのように機能するかを理解することが重要です。このコースでは、ハードウェアを含む、前述のツールの多くの側面について説明します。コンピューターを構成する部分について学び、コンピューターがさまざまな情報形式をどのように表現できるかを見ていきます。

使用する主な形式は画像です。実行することの1つは、「グリーンスクリーン」画像と、個々のピクセルレベルで操作することによってカラー画像をグレースケールに変換することです。

このコースで取り上げるもう1つのトピックは、コンピューターネットワークです。これは、コンピューターが相互に通信する方法です。さまざまな種類のネットワークについて学習します。

IPアドレスとは何か、そしてそれらがどのようにコンピューターがお互いを見つけることができるかを研究します。このコースでは、コンピューターがデータパケットを介して情報を送信する方法と、インターネットが実行される通信プロトコル(TCP / IP)について説明します。

このコースでは、データベースとスプレッドシート、コンピューターのセキュリティ、アナログデータとデジタルデータなど、他のさまざまなトピックについても簡単に説明します。

学習方法

コースの長さは6週間で、毎週4〜6時間で完了します。レッスンはビデオ講義を通じて提供され、メモと評価が補足されます。ただし、評価にアクセスするには、検証済みの学習者である必要があります。

機関スタンフォード大学
プロバイダーedX
インストラクター話すニック
レベル初心者
ワークロード合計36時間
登録100K
証明書有料

おもしろ情報

  • インストラクターは、クラスの作成に関する初期の調査をサポートしてくれたGoogleに感謝します。これは私たち全員に当てはまると思います!
  • このコースには、ClassCentralに3kのブックマークがあります。
  • コースインストラクターのNickParlanteの現在の関心は、実験的なオンラインコード練習ツールであるCodingBatJavaにあります。

このコースに興味がある場合は、コースの詳細と登録方法をここで見つけることができます。

6.コンピューターのしくみ(ロンドン大学)

バナー-6

マルコ・ギリーズ博士、コースインストラクター

ロンドン大学がCourseraで教えているこの簡潔なコースは、コンピュータサイエンスのいくつかの重要なトピックに触れていますが、ハードウェアの基礎的な理解を深めるのに役立つことに主に関心があります。それは本当にタイトルにあります:コースの終わりまでに、あなたはコンピュータがどのように働くかを知るでしょう。

そして、その理解を通じて、日常の問題を解決するためにコンピューターをどのように活用できるかについて、より明確な図を形成することもできます。

このコースは、コンピュータの仕組みに興味があり、CSの重要なトピックを探求したいが、必ずしも深く掘り下げたくない人と同様に、CSでさらに研究するための強固な基盤を構築したい人にも適しています。

このコースを受講するのに、コンピュータサイエンスの予備知識は必要ありません。

あなたが学ぶこと

このコースでは、コンピューターハードウェア、抽象化、モジュール性、コンピューターネットワーク、および通信について説明します。

コースは抽象化から始まります—ノイズを除去しながら重要な詳細に注意を引く技術です。多くの分野は抽象化に依存しており、コンピュータサイエンスは、ハードウェアレベルとソフトウェアレベルの両方で抽象化に大きく依存しています。

この概念は、コースがメモリ、CPU、その他のデバイスなどのコンピュータハードウェアについて説明し始めるときに明らかになります。これらの抽象化をキャプチャする手段として、概念的なマシンを使用します。

その後、別の重要なアイデア、つまり状態とモジュール性に移ります。これは、「コンピュータの電源をオフにしてからオンにすると、ほとんどの問題が解決するのはなぜですか」という質問に答えるのに役立ちます。

概念的なマシンを使用して、さまざまな状態を遷移することによってコンピューターアプリケーションがどのように機能するか、およびモジュール性によって他のアプリケーションと対話する方法について説明します。非常に便利なスキルであるものをデバッグする方法を学びます。

次に、ネットワークと通信プロトコルを介してインターネットを介してコンピューターが相互に通信する方法を学習します。また、コンピューター(およびユーザー)が直面するセキュリティの脅威の種類と、悪意のある攻撃者から身を守る方法についても学びます。

最後に、基本的なWeb開発について説明します。抽象化、状態、およびモジュール性に関する新たに発見した知識を適用することにより、Webサイトがどのように機能するかを明確に理解できるようになります。

学習方法

コースは4週間で、1週間に10時間分の教材があります。それは、資料の知識をテストするためのビデオ講義とクイズで構成されています。ディスカッションプロンプトで自分の考えを共有する機会があります。

機関ロンドン大学
プロバイダーコーセラ
インストラクターマルコ・ギリーズ
レベル初心者
ワークロード合計40時間
登録25K
評価4.6 / 5.0(440)
証明書有料

おもしろ情報

このコースに興味がある場合は、コースの詳細と登録方法をここで見つけることができます。

7. CS50の理解技術(ハーバード大学)

バナー-1-1

マラン教授(再び!)、コースインストラクター

これはCS50ファミリーの別のコースです。しかし、メインのCS50コースである最初の選択とは異なり、このコースは、テクノロジーを日常的に使用しているが、すべてが内部でどのように機能するか、または問題が発生した場合に問題を解決する方法を理解していない人を対象としています。また、テクノロジーを(まだ)使用していない人(特にコンピューター)も対象ですが、それでもその機能を理解したいと考えています。

このコースは、ハードウェア、インターネット、マルチメディア、プログラミング、およびWeb開発に関する知識のギャップを埋め、今日と明日のテクノロジーに備えることを目的としています。

このコースには前提条件はありません。

あなたが学ぶこと

このコースは、コンピューターの言語であるバイナリーの紹介から始まります。コンピュータがバイナリを使用してテキストやその他の情報を表す方法について説明します。次に、コンピュータのハードウェア(CPU、RAM、メインメモリ)に移動します。これらの各コンポーネントの機能について学習します。

このコースでは、インターネットとマルチメディア、およびそれらを支えるテクノロジーについて説明します。それは、コンピュータがどのようにお互いを見つけて話すことができるかをあなたに教えます。一般的なインターネットプロトコルTCP/IPなどについて学習します。

オーディオ、画像、ビデオなど、マルチメディアのさまざまなデータ表現について学習します。多くのファイル形式と圧縮技術があります-コースはあなたに主要なもののいくつかの概要を与えます。

次に、インターネット上で安全を保つ方法を学びます。データとプライバシーを保護するためのいくつかの方法を発見します。このセクションには、Cookie、パスワード、2要素認証、暗号化などに関するレッスンが含まれます。

Web開発の基本を続けます。WebブラウザがHTTPリクエストを使用してWebにアクセスする方法を学習します。Webページにアクセスしようとしたときに404または500エラーが発生したことがありますか?あなたはおそらく持っています。このコースでは、これらのエラーの意味を学習します。Webページ(HTMLおよびCSS)の作成とスタイル設定を可能にする言語の概要を説明します。

最後に、プログラミングの基本を学びます。主にブロックベースの言語Scratchを使用して、変数、式、ループなど、ほとんどすべてのプログラミング言語に共通する概念を調べます。

さらに、アルゴリズムが何であるか(より具体的には分割統治パラダイム)を示すために、インストラクターが電話帳を半分に分割するのを見るでしょう…それは非常に有益で記憶に残るので、私はこれに言及しなければなりませんでした!

学習方法

コースの長さは6週間で、コンテンツについての事前の知識に応じて、毎週2〜6時間かかります。毎週少なくとも1時間の講義が含まれています。

評価に関しては、証明書を取得するために、コースで提示された6つのトピックのそれぞれの割り当てを完了する必要があります。

機関ハーバード大学
プロバイダーedX
インストラクターデビッド・J・マラン
レベル初心者
ワークロード合計36時間
登録100K
証明書無料および有料(以下を参照)

おもしろ情報

このコースに興味がある場合は、コースの詳細と登録方法をここで見つけることができます。

8.理論計算機科学入門(Udacity)

バナー-2-1

コースのスクリーンショット

プログラミングとアルゴリズムにある程度精通していて、コンピュータサイエンスの問題解決についてさらに理解を深めたい人にとって、この厳密で洞察に満ちたコースは、あなたが探しているものかもしれません。

Udacityが提供する理論計算機科学入門では、コンピューターの場合でも、問題の解決が「困難」になる原因を探ります。次に、これらの「難しい」問題を削減および単純化して、計算による解決を容易にする方法を示します。

あなたが学ぶこと

このコースは、理論計算機科学の2つの主要な領域である複雑性理論と計算可能性をカバーしています。

複雑さの理論は、時間やメモリなど、コンピュータが問題を解決するために必要なリソースの量を尋ねます。一方、計算可能性は、より多くの時間とメモリが与えられた場合でも、コンピュータが問題を解決できるかどうかを尋ねます。

このコースでは、電気通信、バイオインフォマティクス、金融など、さまざまな現実の問題を紹介します。問題を困難にするものと、そのような問題を認識することの価値を認識します。これにより、NP完全性とは何かを理解するための準備が整います。次に、問題を「解決するのが難しい」理由を理解し、それを証明できるようになります。

コースの残りの部分では、問題が難しい(または解決できない)ことが証明されたら、問題をどうするかについて説明します。

この障害を克服する方法の1つは、効率的でインテリジェントなアルゴリズムを採用することです。別の方法は、問題が完全に解決できない可能性があることを受け入れ、代わりに近似的な解決策を見つけることです。そして、さらに別の方法は、ランダム性と確率を使用して、周りを調べて解決策を見つけることです。

これらのテクニックを実際の状況で説明して使用できるようになります。このコースでは理論について説明しますが、実践的なものでもあります。

最後に、理論的にはコンピュータでは解決できない問題に移ります。決定不能性について学び、計算可能性の限界を認識します。

学習方法

コースは8週間で、合計14時間のビデオ講義があります。一部の動画には、学んだことを思い出す練習に役立つクイズがあります。7つの章があり、各章の終わりに、新しく見つけたスキルを有効に活用するための問題セットを完成させます。

最後に、コースの最後に総合試験があります。

プロバイダーUdacity
インストラクターセバスチャン・ウェルニケ、ショーン・ベネット、サラ・ノレル
レベル中級
ワークロード25時間
証明書なし

おもしろ情報

  • このコースには、ClassCentralに2.2kのブックマークがあります。
  • コースインストラクターの1人であるSebastianWernickeは、TEDで何度も話をしました
  • このコースに取り組むには、最初にアルゴリズムについて学びたいと思うかもしれません。インストラクターは、復習としてアルゴリズムに関する別のUdacityコースを推奨しています。さらに、優れた数学の基礎も役立ちます。必要に応じて、以下のおすすめを確認してください。

このコースに興味がある場合は、コースの詳細と登録方法をここで見つけることができます。

9.コンピュータサイエンスの数学(ロンドン大学)

バナー-3

サラ・サントス博士、コース共同インストラクター

ロンドン大学が提供するこのコースでは、コンピューター科学者が仕事で使用する数学と数学的思考を紹介します。このコースを他の数学コースと区別するのは、楽しくインタラクティブな演習を備えた遊び心です。

具体的には、このコースでは、代数、分析、幾何学の要素を組み合わせています。これらのトピックは、コンピュータサイエンス教育のバックボーンとして機能するように慎重に選択されています。

このコースでは、特に、基数、2進数を理解するための重要なトピック、および2進数と16進数などの他の基数との間の変換について説明します。よく知られているフィボナッチ数列のように、数値の進行を調べます。そして、それは幾何学と関数グラフに触れます。

コースの終わりまでに、他のコンピュータサイエンスコースを支える数学を理解するために必要な基礎を習得し、より高度な数学のトピックに取り組む準備が整います。

このコースは、高校の数学と基本的なPythonプログラミングを知っていることを前提としています。

あなたが学ぶこと

このコースでは、基数、モジュラー算術、シーケンス、級数、グラフの概形、運動学の5つの主要なトピックを調査します。

コースは基数の研究から始まります。バイナリがコンピュータで使用される数値ベースであることをご存知かもしれません。しかし、コンピューター科学者も16進数を使用していることをご存知ですか?

2進数、16進数、10進数の間の変換、およびそれらの加算、減算、乗算を含む、場所の値と数値システムの主要な概念について説明します。ああ、コースがあなたに教えるクールなことは、画像にメッセージを隠す芸術であるステガノグラフィーです!

次に、モジュラー演算について説明します。「モジュロ7」が何を意味するのか疑問に思ったことはありますか?コンピュータサイエンスにおける合同およびモジュラー算術演算の有用性について学習します(psst、暗号化に使用できます)。

数のシーケンスとそれらの合計を識別、説明、および計算します。算術および等比数列で構成される、進行と呼ばれるシーケンスの特別なファミリを学習します。シーケンスを使用して乱数を生成する方法を学習します。さらに、シリーズが収束する(ある点で会う)か、発散する(無限に近づく)かを知ることができます。

最後に、このコースでは、座標とグラフを使用して空間を数値で表現および説明する方法について説明します。グラフが、直線、二次方程式、三次関数、逆数などの関数を視覚化および変換するのにどのように役立つかがわかります。モーションのモデリングの例を示します。運動学と呼ばれる数学の分野です。

学習方法

コースは6週間で、約40時間分の教材があります。毎週1つ以上のクイズが出題され、実践して学ぶことができます。ただし、回答をマークするには、コースオートグレーダーの証明書の料金を支払う必要があります。

機関ロンドン大学
プロバイダーコーセラ
インストラクターマシュー・イー・キングとサラ・サントス
レベル初心者
ワークロード合計40時間
登録22K
評価4.1 / 5.0(200)
証明書有料

おもしろ情報

このコースに興味がある場合は、コースの詳細と登録方法をここで見つけることができます。

10.コンピュータサイエンスの数学:必須スキル(ハル大学)

バナー-9

Laura Broddle、コースインストラクター、ベン図を教える

前の2つのコースを確認したが、それらを受講するための数学的基礎がまだない場合は、このコースが基本を支援します。

このコースは、ハル大学がFutureLearnで提供する、コンピューターサイエンスの数学スキルに関する短期コースです。

このコースは、大学レベルでコンピュータサイエンスの学習を開始または検討している学習者を対象としており、ベン図と集合論、代数手法、ベクトルと行列など、コンピュータサイエンスに遍在するすべての基本概念をカバーしています。

このコースは、数学の予備知識がないことを前提としています。あなたはゼロから始めています。

あなたが学ぶこと

ベン図と集合論から始めて、「集合」(必要に応じてオブジェクトのバッグ)を形式化して操作する方法を学習します。計算と計算の対象について推論する方法を学びます。ベン図は、このタイプの推論を視覚化するのに役立ちます。

次に、代数とその手法に進みます。代数(明示的な数値の代わりに変数を使用して数学を行うと説明できる)の概要と、アルゴリズムおよび科学計算でのその使用について説明します。このコースでは、代数を使用して一次方程式と二次方程式を解く方法を学びます。

コースは、ベクトルと行列の概要で終わります。ベクトルとは何か、そしてなぜそれらがグラフィックプログラミングで特に重要なのかを学びます。ベクトルを行列として表す方法と、複雑な問題を解決するために行列を変更、変換、および反転する方法を学習します。

学習方法

このコースの長さは3週間で、1週間に約3時間の教材があります。仲間の学習者と問題について話し合うことができるディスカッションフォーラムがありますが、主にビデオ資料を通じて学習します。

毎週の終わりに、数学の概念とアプリケーションの理解を深めるのに役立つクイズがあります。

機関ハル大学
プロバイダーFutureLearn
インストラクターローラ・ブロドル
レベル初心者
ワークロード合計9時間
登録1.2K
証明書有料

おもしろ情報

  • コースインストラクターのLauraBroddleは、2015年に基礎数学教育フェローとしてハル大学に加わりました。
  • 彼女はまた、ウガンダの姉妹校を訪​​問し、2013年にOfstedによって優秀な教師と評価されました。 

出典:https://www.freecodecamp.org/news/best-computer-science-courses/

#computer  #course 

2022年に受講する10のベストコンピュータサイエンスコース

Lecture: Searching and Sorting

Introduction to Computer Science and Programming in Python, Searching and Sorting

In this lecture, Prof. Grimson explains basic search and sort algorithms, including linear search, bisection search, bubble sort, selection sort, and merge sort.

Instructor: Prof. Eric Grimson

#python #computer #machinelearning 

Lecture: Searching and Sorting

Lecture: Understanding Program Efficiency - Part 2

Introduction to Computer Science and Programming in Python, Understanding Program Efficiency, Part 2

In this lecture, Prof. Grimson continues discussing different classes of algorithmic complexity, including logarithmic complexity, polynomial complexity, and exponential complexity.

Instructor: Prof. Eric Grimson

#python #computer #machinelearning 

Lecture: Understanding Program Efficiency - Part 2

Lecture: Understanding Program Efficiency - Part 1

Introduction to Computer Science and Programming in Python, Understanding Program Efficiency - Part 1

In this lecture, Prof. Grimson introduces algorithmic complexity, a rough measure of the efficiency of a program. He then discusses Big "Oh" notation and different complexity classes.

Instructor: Prof. Eric Grimson

#python #computer #machinelearning 

Lecture: Understanding Program Efficiency - Part 1

Introduction to Computer Science & Programming in Python: Subclass

Introduction to Computer Science and Programming in Python, Subclass

This in-class question demonstrates how subclasses are constructed in Python.

Instructor: Dr. Ana Bell

#python #computer #machinelearning 

Introduction to Computer Science & Programming in Python: Subclass

Lecture: Getters and Setters

Introduction to Computer Science and Programming in Python, Getters and Setters

This in-class question explains how & why class attribute getters and setters are important in Python.

Instructor: Dr. Ana Bell

#python #computer #machinelearning 

Lecture: Getters and Setters

Lecture: Python Classes and Inheritance

Introduction to Computer Science and Programming in Python, Python Classes and Inheritance

In this lecture, Dr. Bell continues the discussion of Object Oriented Programming in Python, with an emphasis on data control, inheritance, and subclasses.

Instructor: Dr. Ana Bell

#python #computer #machinelearning 

Lecture: Python Classes and Inheritance

Lecture: Special Methods

Introduction to Computer Science and Programming in Python, Special Methods

This in-class question demonstrates how a custom class method can be constructed in Python.

Instructor: Dr. Ana Bell

#python #computer #machinelearning 

Lecture: Special Methods

Introduction to Computer Science & Programming in Python: Method Call

Introduction to Computer Science and Programming in Python, 
Instructor: Dr. Ana Bell

This question explains the how a class method changes a attribute is altered in Python.

#python #computer #machinelearning 

Introduction to Computer Science & Programming in Python: Method Call

Introduction to Computer Science and Programming in Python: Methods

Introduction to Computer Science and Programming in Python, Methods
Instructor: Dr. Ana Bell

This in-class exercise demonstrates class method construction in Python.

#python #computer #machinelearning 

Introduction to Computer Science and Programming in Python: Methods