Compilers

Brought by: edX

Overview

The course lectures will be presented in short videos. To help you master the material, there will be in-lecture questions to answer, quizzes, and two exams: a midterm and a final. There will also be homework in the form of exercises that ask you to show a sequence of logical steps needed to derive a specific result, such as the sequence of steps a type checker would perform to type check a piece of code, or the sequence of steps a parser would perform to parse an input string. This checking technology is the result of ongoing research at Stanford into developing innovative tools for education, and we're excited to be the first course ever to make it available to students.

An optional course project is to write a complete compiler for COOL, the Classroom Object Oriented Language. COOL has the essential features of a realistic programming language, but is small and simple enough that it can be implemented in a few thousand lines of code. Students who choose to do the project can implement it in either C++ or Java.

I hope you enjoy the course!

Taught by

Alex Aiken

Compilers
Go to course

Compilers

Brought by: edX

  • edX
  • Free
  • English
  • Certificate Available
  • Certain days
  • beginner
  • English
8.1.2PHP Version302msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (194ms)
    • Application (108ms)
    • 1 x Booting (64.12%)
      193.83ms
      1 x Application (35.63%)
      107.70ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      7 statements were executed4.25ms
      • select * from `courses` where `slug_en` = 'compilers' limit 1
        2.93ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. compilers
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-04-12 15:17:07' where `id` = 135
        530μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-04-12 15:17:07
        • 1. 135
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (1)
        160μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        140μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `institutions` where `institutions`.`id` in (5) and `institutions`.`deleted_at` is null
        170μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (1) and `providers`.`deleted_at` is null
        150μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 135 limit 1
        170μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 135
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Institution
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        3MqdH2edtIUprxpxgodrLG0ojPgHi26SfCdhcfWP
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/compilers" ]
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/compilers
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "priority" => array:1 [ 0 => "u=0, i" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "3.144.23.154" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "x-forwarded-for" => array:1 [ 0 => "3.144.23.154" ] "cf-ray" => array:1 [ 0 => "92f3b04c5d4f7b21-ORD" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_PRIORITY" => "u=0, i" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "3.144.23.154" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_X_FORWARDED_FOR" => "3.144.23.154" "HTTP_CF_RAY" => "92f3b04c5d4f7b21-ORD" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "29870" "REMOTE_ADDR" => "172.69.17.60" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/en/courses/compilers" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1744471026.8752 "REQUEST_TIME" => 1744471026 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Sat, 12 Apr 2025 15:17:07 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IndQWGd0UlJCOUY0aVVGdm1waVE5UXc9PSIsInZhbHVlIjoiZnQ0Wm45bGlEYVd4V0V3STRtR1d4Z1d2akhCTkMyU0xRVFFnbXpPeUFSU2JpTDI0eWpkeHNReFlYSDhBNXJTdDZ1LzVZYlcvYm9PaWF0LzFubjUxZDlwMXRsMlJ2U1Q0eCtVV3ZlK0NlTkxPRFZIbmwzeFd2bUNxa05hQkFvZFIiLCJtYWMiOiIzNWRjNjEzYzZlNmIzN2ZiNmMxYmIzZjk5Y2NjNDc5Njc5M2U4MzhjNjliNjE0ZmU1MjUwMzIwYjc1ODMxN2QwIiwidGFnIjoiIn0%3D; expires=Sat, 12 Apr 2025 17:17:07 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IndQWGd0UlJCOUY0aVVGdm1waVE5UXc9PSIsInZhbHVlIjoiZnQ0Wm45bGlEYVd4V0V3STRtR1d4Z1d2akhCTkMyU0xRVFFnbXpPeUFSU2JpTDI0eWpkeHNReFlYSDhBNXJTdDZ1LzVZY" 1 => "laravel_session=eyJpdiI6InY1cUJxY3l1cnBuNlNuSkZVYUFXNmc9PSIsInZhbHVlIjoiZnNKWW15U3o1OHFyRENzSWpBRjgwWUlsOXA4dU5GZGNEVXFIektFZTVmTXBJWkcvMmZOQTFSdk5YbVNwK3R3YUlEZFk0WmtMODNlMmFEVGtQVFBXT21PQzVidkpyZUxwN2JNWFl2eEFEc2RsN2trdXdzNjRnNGY5S2NpcmJRdmciLCJtYWMiOiJlN2UzZjMxYzI2Zjc0NjE1ZGRlNzYwMDhmZDI4M2IwZjQwMjkwZjBkOTI4MjAwNDFkOGM3M2FmMzJjNDhiMTA1IiwidGFnIjoiIn0%3D; expires=Sat, 12 Apr 2025 17:17:07 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6InY1cUJxY3l1cnBuNlNuSkZVYUFXNmc9PSIsInZhbHVlIjoiZnNKWW15U3o1OHFyRENzSWpBRjgwWUlsOXA4dU5GZGNEVXFIektFZTVmTXBJWkcvMmZOQTFSdk5YbVNwK3R3YUlE" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IndQWGd0UlJCOUY0aVVGdm1waVE5UXc9PSIsInZhbHVlIjoiZnQ0Wm45bGlEYVd4V0V3STRtR1d4Z1d2akhCTkMyU0xRVFFnbXpPeUFSU2JpTDI0eWpkeHNReFlYSDhBNXJTdDZ1LzVZYlcvYm9PaWF0LzFubjUxZDlwMXRsMlJ2U1Q0eCtVV3ZlK0NlTkxPRFZIbmwzeFd2bUNxa05hQkFvZFIiLCJtYWMiOiIzNWRjNjEzYzZlNmIzN2ZiNmMxYmIzZjk5Y2NjNDc5Njc5M2U4MzhjNjliNjE0ZmU1MjUwMzIwYjc1ODMxN2QwIiwidGFnIjoiIn0%3D; expires=Sat, 12-Apr-2025 17:17:07 GMT; path=/XSRF-TOKEN=eyJpdiI6IndQWGd0UlJCOUY0aVVGdm1waVE5UXc9PSIsInZhbHVlIjoiZnQ0Wm45bGlEYVd4V0V3STRtR1d4Z1d2akhCTkMyU0xRVFFnbXpPeUFSU2JpTDI0eWpkeHNReFlYSDhBNXJTdDZ1LzVZY" 1 => "laravel_session=eyJpdiI6InY1cUJxY3l1cnBuNlNuSkZVYUFXNmc9PSIsInZhbHVlIjoiZnNKWW15U3o1OHFyRENzSWpBRjgwWUlsOXA4dU5GZGNEVXFIektFZTVmTXBJWkcvMmZOQTFSdk5YbVNwK3R3YUlEZFk0WmtMODNlMmFEVGtQVFBXT21PQzVidkpyZUxwN2JNWFl2eEFEc2RsN2trdXdzNjRnNGY5S2NpcmJRdmciLCJtYWMiOiJlN2UzZjMxYzI2Zjc0NjE1ZGRlNzYwMDhmZDI4M2IwZjQwMjkwZjBkOTI4MjAwNDFkOGM3M2FmMzJjNDhiMTA1IiwidGFnIjoiIn0%3D; expires=Sat, 12-Apr-2025 17:17:07 GMT; path=/; httponlylaravel_session=eyJpdiI6InY1cUJxY3l1cnBuNlNuSkZVYUFXNmc9PSIsInZhbHVlIjoiZnNKWW15U3o1OHFyRENzSWpBRjgwWUlsOXA4dU5GZGNEVXFIektFZTVmTXBJWkcvMmZOQTFSdk5YbVNwK3R3YUlE" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "3MqdH2edtIUprxpxgodrLG0ojPgHi26SfCdhcfWP" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/compilers" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]