マガジンのカバー画像

CS50 - 2023

13
ハーバード大学コンピュータサイエンス入門コースの準備、受講から合格まで
運営しているクリエイター

#CS50

CS50 2023 - はじめに

私は長年にわたりIT業界でプロジェクトマネージャーとして活動してきました。特にWeb関連のプロジェクトでは、多数のサイト作成に関わり、様々なコードに触れる経験を得てきました。 しかし、私自身が直接コードを書くということはありませんでした。 コーディングは常にプログラマーに依存していました。 細かな修正が必要になった際には、都度インターネットで情報を調べて対応していましたが、一からコードを書いた経験はありませんでした。 リスキリングが注目を浴びる昨今、私も自身の学び直しの必

CS50 2023 - 基本情報と準備

各Weekの詳細に進む前に、CS50x(以下、CS50)の基本情報と開始前の準備について説明します。 基本情報CS50 CS50は、コンピューターサイエンス(Computer Science)の入門コースです。 コースはWeek0からWeek10までの11週間構成です。 毎週の課題提出は必須ではなく、自分のペースで学習できます。 講師はハーバード大学のDavid J. Malan氏です。 講義の長さは約2時間。長いのは2時間半ほどありますが、David氏の巧みな話術

CS50 2023 - Week0 Scratch

概要Week0では、コンピューターの基礎を学びます。 講義の主な内容は、バイナリー、アルゴリズム、擬似コード、そしてScratchについてです。 Scratch Scratchとは、マサチューセッツ工科大学で開発されたプログラミング学習用のツールです。 コードを書く代わりに、特定の役割を持ったブロックをドラッグ&ドロップで組み合わせることで、プログラムを作成できます。 LabWeek0にはLabはありません。 Problem Set 0Scratch 課題条件 Sc

CS50 2023 - Week1 C

概要Week1では、C言語の基礎を学びます。 講義の主な内容は、ソースコード、コンパイラ、Visual Studios、エスケープシーケンス、ヘッダーファイル、ライブラリ、条件分岐、変数、ループ、定数、コメント、擬似コードについてです。 基本的には、これまでにScratchでやってきたことを、今度はC言語を用いてコードで実行していくというイメージです。 Lab 1Population C言語を用いて、ラマの人口増加を予測するプログラムを作成します。 以下は、実際に私が

CS50 2023 - Week2 Arrays

概要Week2では、C言語の基礎をさらに深掘りします。 講義の主な内容は、プリプロセッシング、コンパイリング、アセンブリング、リンキング、デバッグ、配列、文字列、コマンドライン引数、そして暗号技術についてです。 Arraysは配列を意味します。 配列は、同じ型のデータをひとつの変数名でまとめて格納するデータ構造です。各データは、インデックスによって個別にアクセスできます。 例えば、C言語で整数の配列を宣言する場合、次のようになります。 int numbers[5] =

CS50 2023 - Week3 Algorithms

概要Week3では、アルゴリズムを学びます。 講義の主な内容は、リニアサーチ(線形探索)、バイナリーサーチ(二分探索)、バブルソート、セレクションソート(選択ソート)、マージソート、漸近記法、再帰です。 Lab 3Sort sort1、sort2、sort3という3つのバイナリファイルが用意されています。これに加え、様々な順序や行数の数字リストも提供されています。 sortファイルのソースコードを直接確認することはできませんが、数字リストをソートする速度を基に、それぞ

CS50 2023 - Week4 Memory

概要Week4では、メモリについて学びます。 講義の主な内容は、ポインター、セグメンテーション、動的メモリ割り当て、スタック、ヒープ、バッファオーバーフロー、ファイルI/O、画像です。 Lab 4 Week4のLabでは、以下の2つの中から1つを選んで提出します。 Smiley Volume どちらも難易度は同じです。 本ページでは、Smileyを取り上げます。 Smiley この課題では、画像の仕組みについて学びます。 helpers.c内にあるcoloriz

CS50 2023 - Week5 Data Structures

概要Week5では、データ構造について学びます。 講義の主な内容は、抽象データ型、キュー、スタック、連結リスト、ツリー、バイナリーサーチツリー(二分探索木)、ハッシュテーブルです。 Lab 5Inheritance 血液型の継承をシミュレートするプログラムを作成します。 人間の血液型は2つの対立遺伝子によって決定されます。対立遺伝子はA、B、Oの3つがあり、子供は親からランダムに対立遺伝子の1つを受け継ぎます。この遺伝をシミュレートして、3世代の家族の血液型を表示する

CS50 2023 - Week6 Python

概要Week6では、Pythonについて学びます。 講義の主な内容は、関数、引数、戻り値、変数、ブール式、条件分岐、ループ、モジュール、そしてパッケージです。 5週にわたり学び続けたC言語を離れ、Pythonの学習が始まります。 しかし、それに伴いWeek6はProblem Setの数が増えているため、本ページではこれまで以上にコード例に焦点を絞って記していきます。 Lab 6World Cup ワールドカップでどの国が勝利するかを予測するシミュレーションプログラムを

CS50 2023 - Week7 SQL

概要Week7では、SQLについて学びます。 講義の主な内容は、テーブル、データ型、ステートメント、制約、インデックス、キーワード、関数、トランザクション、レースコンディション、SQLインジェクション攻撃です。 Lab 7Songs Spotifyのデータベースから、曲に関する様々な質問に回答するSQLクエリを作成します。 以下は、実際に私が提出したコードです。 1.sql SELECT name FROM songs; 2.sql SELECT name F

CS50 2023 - Week8 HTML, CSS, JavaScript

概要Week8では、HTML、CSS、JavaScriptについて学びます。 講義の主な内容は下記です。 インターネット関連:ルーター、TCP/IP、DNS HTTP関連:URL、GET、POST HTML関連:タグ、属性、サーバー CSS関連:プロパティ、セレクタ、フレームワーク JavaScript関連:変数、条件分岐、ループ、イベント Lab 8Trivia ユーザーが出題された質問(トリビア)に回答するWebページを作成します。このLabもWalkt

CS50 2023 - Week9 Flask

概要Week9では、Flaskについて学びます。 講義の主な内容は、Flaskの基礎、ルート、デコレータ、リクエストとレスポンスの処理、セッション、クッキーです。 なお、FlaskはPythonのWebアプリケーションプラットフォームです。 Lab 9Birthday ユーザーが誕生日を登録し、確認できるアプリケーションを作成します。 以下は実際に私が提出したコードです。 app.py import osfrom cs50 import SQLfrom fla

CS50 2023 - Week10 Emoji

概要Week10では、絵文字とその背景にある技術について学びます。 講義の主な内容は、精度の重要性、Unicodeにおける絵文字、コードポイント、そしてZWJ(ゼロ幅結合子)に関する詳細です。 今回の講義は課題と直接の関連はありませんが、非常に興味深い内容となっています。 LabWeek10にはLabはありません。 Final ProjectFinal Projectはその名の通り、CS50最後のプロジェクトです。 課題の内容は、オリジナルのプログラムを開発することで