オペレーティングシステム、コンパイラ、組み込みハードウェアを動かす言語
C言語は過去の遺物ではありません。Linux、SQLiteデータベースエンジン、CPythonインタプリタ、そして今日出荷されるほぼすべてのマイクロコントローラファームウェアの下地となっている言語です。C言語を理解することは、メモリがどのように実装されているのか、プロセッサがどのように命令を実行しているのか、そしてなぜすべての高級言語がそのようなトレードオフを行っているのかを理解することです。このトラックは、最初のprintfからメモリアロケータ、ハッシュテーブル、リンクリスト、そして動作するインタプリタの実装まで、C言語をカバーしています。
学習内容
演算子、制御フロー、フォーマット化されたI/O、型キャストから始まり、標準ライブラリ— math.h、string.h、ctype.h —とenumerations、コマンドライン引数、ストレージクラス、プリプロセッサマクロなどのC言語固有のトピックに進みます。中級セクションでは、ポインタと動的メモリ管理、関数ポインタとコールバック、可変長引数関数、モジュール化されたマルチファイルプロジェクトをカバーします。コアデータ構造をスクラッチから実装します:リンクリスト、二分木、ハッシュテーブル、動的配列。上級コースでは、マルチスレッドと並行処理、ソケットプログラミング、プロセス間通信、Valgrindでのメモリデバッグ、epollを使用したネットワークプログラミングをカバーします。
学習パス
39コースがA1からC1まで広がっています。A1およびA2コースは、構文、再帰、標準ライブラリを確立します。11のB1コースは実践的なスキルを構築します— ファイルハンドリング、ビット操作、構造体と共用体、プリプロセッサ。10のB2コースはより深く掘り下げます:動的メモリ、ソートアルゴリズム、ハッシュテーブル、そしてC Building a Memory Allocatorで終わります。7つのC1コースはシステムレベルの作業でトラックを完了します:Multithreading and Concurrency、C Socket Programming、C Memory Debugging with Valgrind、C Writing a Simple Interpreter、そしてC Network Programming with epoll。
仕組み
各コースは短くて焦点を絞ったレッスンに分かれており、組み込みコードエディタで実装して、出力について実時間フィードバックを受けます。segfault、リンカエラー、またはポインタ演算のオフバイワンエラーで立ち往生したときはいつでも、AIチューターが利用できます。進行状況はレッスンごとに追跡されるため、セッション間で一時停止と再開でき、位置を失うことはありません。