Principles of Computing (Part 1)

Brought by: Coursera

Overview

This two-part course builds upon the programming skills that you learned in our Introduction to Interactive Programming in Python course. We will augment those skills with both important programming practices and critical mathematical problem solving skills. These skills underlie larger scale computational problem solving and programming. The main focus of the class will be programming weekly mini-projects in Python that build upon the mathematical and programming principles that are taught in the class. To keep the class fun and engaging, many of the projects will involve working with strategy-based games.

In part 1 of this course, the programming aspect of the class will focus on coding standards and testing. The mathematical portion of the class will focus on probability, combinatorics, and counting with an eye towards practical applications of these concepts in Computer Science.

Recommended Background - Students should be comfortable writing small (100+ line) programs in Python using constructs such as lists, dictionaries and classes and also have a high-school math background that includes algebra and pre-calculus.

Syllabus

  • Required Python knowledge, coding standards, and machine grading
    • This week, we will introduce you to the structure and standards of the Principles of Computing courses.
  • Testing, plotting, and grids
    • This week, we will explain the importance of testing. We will also learn to solve problems with grids.
  • Probability, randomness, and objects/references
    • This we will learn how to use probability and randomness to solve problems.
  • Combinatorics, generators, and debugging
    • This week, we will learn how to use combinatorics to solve problems.
  • Counting, growth of functions, higher-order functions
    • This week, we will explain the importance of counting in solving complex problems.

Taught by

Scott Rixner, Joe Warren and Luay Nakhleh

Principles of Computing (Part 1)
Go to course

Principles of Computing (Part 1)

Brought by: Coursera

  • Coursera
  • Free
  • English
  • Certificate Available
  • Available at any time
  • intermediate
  • Arabic, French, Portuguese, Italian, German, Russian, English, Spanish, Thai, Indonesian, Kazakh, Hindi, Swedish, Korean, Greek, Chinese, Ukrainian, Japanese, Polish, Dutch, Turkish
8.1.2PHP Version818msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (516ms)
    • Application (300ms)
    • 1 x Booting (63.06%)
      515.72ms
      1 x Application (36.68%)
      300.02ms
      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 executed7.51ms
      • select * from `courses` where `slug_en` = 'principles-of-computing-(part-1)' limit 1
        5.39ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. principles-of-computing-(part-1)
        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-06-16 09:33:10' where `id` = 19
        980μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-06-16 09:33:10
        • 1. 19
        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 (6)
        230μ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)
        200μ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 (12) and `institutions`.`deleted_at` is null
        250μ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 (2) and `providers`.`deleted_at` is null
        220μ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` = 19 limit 1
        240μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 19
        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
        IpxH742U1m7wXZnjN3nDu8SoIxNQhGq3gUEQzsHj
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/principles-of-computing-%28part-1%29" ]
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/principles-of-computing-%28part-1%29
        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 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "216.73.216.148" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.148" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "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" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "95094dd5584010b2-ORD" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "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_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "216.73.216.148" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.148" "HTTP_SEC_FETCH_SITE" => "none" "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_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "95094dd5584010b2-ORD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "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" => "64490" "REMOTE_ADDR" => "172.69.58.15" "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/principles-of-computing-%28part-1%29" "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" => 1750066389.608 "REQUEST_TIME" => 1750066389 ]
        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 => "Mon, 16 Jun 2025 09:33:10 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6InUxalZXTHE5RFExUlJBQ0VmZTQ1eVE9PSIsInZhbHVlIjoiQjRhZDR2TGZTQzEwSThJb2lKVWV3ejYvY2N0cEV1cmpHR3JFL2xHOW9BK21ubUpoZ0t1dWxiZzBjR29GT2pKZTY1YlNsNklySVN4WlNpS3AycCtTd0tLejV4ck9xeXJma1lYNDh6QXB4Q2JBYlRoVTcycGtEaXllRDlQTFZXQ0EiLCJtYWMiOiJkODhmZjc4ZjczNmE1MjQwZDhmMDExNTAzZjRiZDBlZjRjYzY2MmFiNzRlYzRiZDU4MTA2YmRjMjJmZTQ4NDNiIiwidGFnIjoiIn0%3D; expires=Mon, 16 Jun 2025 11:33:10 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6InUxalZXTHE5RFExUlJBQ0VmZTQ1eVE9PSIsInZhbHVlIjoiQjRhZDR2TGZTQzEwSThJb2lKVWV3ejYvY2N0cEV1cmpHR3JFL2xHOW9BK21ubUpoZ0t1dWxiZzBjR29GT2pKZTY1YlNsN" 1 => "laravel_session=eyJpdiI6IkRvTjNDbHV1SWtJY0JuZzZtRmZWZVE9PSIsInZhbHVlIjoiOVgrdnpSeDJrYUhtdDJnTzBJRlJ0VUVCcE1XMXM0VG5RQnV5OHVYc3Vrb2ZDTk95c08yZUJtZWpaRHBDL3B0SHpIdmExb2Z4RDE1czBGaEkyYmwzRWZBM1JOMnNTb2xvQXB0R2tTWmczTXEyUFZBZEIzbWxyNUtzbnpHdE5kWVAiLCJtYWMiOiJhYmYzYjEyYWI1NGZmN2Y5N2U2YzA3NWI4MjZiYjZiN2YzZmQ4NTdjMzJiZTIxNmY2ZjE5Y2RiNWE3YjEzMWQ2IiwidGFnIjoiIn0%3D; expires=Mon, 16 Jun 2025 11:33:10 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IkRvTjNDbHV1SWtJY0JuZzZtRmZWZVE9PSIsInZhbHVlIjoiOVgrdnpSeDJrYUhtdDJnTzBJRlJ0VUVCcE1XMXM0VG5RQnV5OHVYc3Vrb2ZDTk95c08yZUJtZWpaRHBDL3B0SHpI" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6InUxalZXTHE5RFExUlJBQ0VmZTQ1eVE9PSIsInZhbHVlIjoiQjRhZDR2TGZTQzEwSThJb2lKVWV3ejYvY2N0cEV1cmpHR3JFL2xHOW9BK21ubUpoZ0t1dWxiZzBjR29GT2pKZTY1YlNsNklySVN4WlNpS3AycCtTd0tLejV4ck9xeXJma1lYNDh6QXB4Q2JBYlRoVTcycGtEaXllRDlQTFZXQ0EiLCJtYWMiOiJkODhmZjc4ZjczNmE1MjQwZDhmMDExNTAzZjRiZDBlZjRjYzY2MmFiNzRlYzRiZDU4MTA2YmRjMjJmZTQ4NDNiIiwidGFnIjoiIn0%3D; expires=Mon, 16-Jun-2025 11:33:10 GMT; path=/XSRF-TOKEN=eyJpdiI6InUxalZXTHE5RFExUlJBQ0VmZTQ1eVE9PSIsInZhbHVlIjoiQjRhZDR2TGZTQzEwSThJb2lKVWV3ejYvY2N0cEV1cmpHR3JFL2xHOW9BK21ubUpoZ0t1dWxiZzBjR29GT2pKZTY1YlNsN" 1 => "laravel_session=eyJpdiI6IkRvTjNDbHV1SWtJY0JuZzZtRmZWZVE9PSIsInZhbHVlIjoiOVgrdnpSeDJrYUhtdDJnTzBJRlJ0VUVCcE1XMXM0VG5RQnV5OHVYc3Vrb2ZDTk95c08yZUJtZWpaRHBDL3B0SHpIdmExb2Z4RDE1czBGaEkyYmwzRWZBM1JOMnNTb2xvQXB0R2tTWmczTXEyUFZBZEIzbWxyNUtzbnpHdE5kWVAiLCJtYWMiOiJhYmYzYjEyYWI1NGZmN2Y5N2U2YzA3NWI4MjZiYjZiN2YzZmQ4NTdjMzJiZTIxNmY2ZjE5Y2RiNWE3YjEzMWQ2IiwidGFnIjoiIn0%3D; expires=Mon, 16-Jun-2025 11:33:10 GMT; path=/; httponlylaravel_session=eyJpdiI6IkRvTjNDbHV1SWtJY0JuZzZtRmZWZVE9PSIsInZhbHVlIjoiOVgrdnpSeDJrYUhtdDJnTzBJRlJ0VUVCcE1XMXM0VG5RQnV5OHVYc3Vrb2ZDTk95c08yZUJtZWpaRHBDL3B0SHpI" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "IpxH742U1m7wXZnjN3nDu8SoIxNQhGq3gUEQzsHj" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/principles-of-computing-%28part-1%29" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]