Software Construction in Java

بواسطة: edX

Overview

This computer science course is the first of a two-course sequence about writing good software using modern software engineering techniques.

In this course, you will learn what software engineers mean by "good" code -- safe from bugs, easy to understand, and ready for change. You will also learn ways to make your code better, including testing, specifications, code review, exceptions, immutability, abstract data types, and interfaces.

This is a challenging and rigorous course that will help you take the next step on your way to becoming a skilled software engineer.

Photo by Wizou on Flickr. (CC BY) 2.0

Taught by

Rob Miller

Software Construction in Java
الذهاب الي الدورة

Software Construction in Java

بواسطة: edX

  • edX
  • مجانية
  • الإنجليزية
  • متاح شهادة
  • أيام محددة
  • intermediate
  • English
8.1.2PHP Version264msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (167ms)
    • Application (96.7ms)
    • 1 x Booting (63.12%)
      166.63ms
      1 x Application (36.63%)
      96.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 ar/الدورات/{slug}
      middleware
      web, localize:ar
      controller
      App\Http\Controllers\CourseController@show
      as
      ar.courses.show
      namespace
      prefix
      /ar
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      7 statements were executed6.99ms
      • select * from `courses` where `slug_ar` = 'software-construction-in-java' limit 1
        5.37ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. software-construction-in-java
        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-17 02:14:00' where `id` = 1682
        780μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-04-17 02:14:00
        • 1. 1682
        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)
        150μ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 (3) and `institutions`.`deleted_at` is null
        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 * 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` = 1674 limit 1
        220μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 1674
        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
        uWR5pCd7zkizUgOqd8oPXmn67olCgaDLPIkADu8G
        locale
        ar
        _previous
        array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/softwa...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/software-construction-in-java
        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 => "3.15.31.36" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "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 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "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 => "9318680b5837c667-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" ] "x-forwarded-for" => array:1 [ 0 => "3.15.31.36" ] "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" => "3.15.31.36" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "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" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "9318680b5837c667-ORD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_X_FORWARDED_FOR" => "3.15.31.36" "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" => "47266" "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" => "/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/software-construction-in-java" "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" => 1744856040.4788 "REQUEST_TIME" => 1744856040 ]
        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 => "Thu, 17 Apr 2025 02:14:00 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImJIMThIUCt1WnoyaGo5NU9kUGZPckE9PSIsInZhbHVlIjoiQVZoV0dJeGk5MzYyN3JNeEhjUTJaTWZjR1FMN0w3S1ZSR3l5VEpxa2pYREVpQUVvd044WGFvUmZZV2RMa0IzNmgrVzNrbVdDUFNYWnoyOW9Hd2VyN3BLTU9USGRBN1IrWWNGNFU2N0tLMVlaM1lBYm5ZUTNXakFlZ2h3cFkyNi8iLCJtYWMiOiJjYjVmMzdiODBjNGIyZmUxZGIyY2Y0ZTFkYTE0YzBlNDJmY2ZlNzc4NjQ4MjVlNzZkNjMzNmEzOWJkOTNhMzgxIiwidGFnIjoiIn0%3D; expires=Thu, 17 Apr 2025 04:14:00 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6ImJIMThIUCt1WnoyaGo5NU9kUGZPckE9PSIsInZhbHVlIjoiQVZoV0dJeGk5MzYyN3JNeEhjUTJaTWZjR1FMN0w3S1ZSR3l5VEpxa2pYREVpQUVvd044WGFvUmZZV2RMa0IzNmgrVzNrb" 1 => "laravel_session=eyJpdiI6Inl3RGVSVmh6TzBQbHI5OXozZmJNdVE9PSIsInZhbHVlIjoicHFmbVJodi8za1dmWWcyUVlzREtFMzZVU2RwMzdzWlhoM1hEODEvU283emJYRm1JTkdhejArOXZHZms3c3RNcGxBRlZ5b0U1U0JVMzNiY0NsczdQR29rSGxTM0M5N0N1SXorMHk3bXpXK2hreFZJbFh1T2RCQjNPcHc0Sm9qWk0iLCJtYWMiOiJhMTU0YzAzNjIxMTA3ZmU3Y2NmYWZlODdmYWM5YzI0OTIwMWRkOTU4MDI2YTZhYjc2ODc1OGY1OGY2ZTQ1OGE3IiwidGFnIjoiIn0%3D; expires=Thu, 17 Apr 2025 04:14:00 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6Inl3RGVSVmh6TzBQbHI5OXozZmJNdVE9PSIsInZhbHVlIjoicHFmbVJodi8za1dmWWcyUVlzREtFMzZVU2RwMzdzWlhoM1hEODEvU283emJYRm1JTkdhejArOXZHZms3c3RNcGxB" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImJIMThIUCt1WnoyaGo5NU9kUGZPckE9PSIsInZhbHVlIjoiQVZoV0dJeGk5MzYyN3JNeEhjUTJaTWZjR1FMN0w3S1ZSR3l5VEpxa2pYREVpQUVvd044WGFvUmZZV2RMa0IzNmgrVzNrbVdDUFNYWnoyOW9Hd2VyN3BLTU9USGRBN1IrWWNGNFU2N0tLMVlaM1lBYm5ZUTNXakFlZ2h3cFkyNi8iLCJtYWMiOiJjYjVmMzdiODBjNGIyZmUxZGIyY2Y0ZTFkYTE0YzBlNDJmY2ZlNzc4NjQ4MjVlNzZkNjMzNmEzOWJkOTNhMzgxIiwidGFnIjoiIn0%3D; expires=Thu, 17-Apr-2025 04:14:00 GMT; path=/XSRF-TOKEN=eyJpdiI6ImJIMThIUCt1WnoyaGo5NU9kUGZPckE9PSIsInZhbHVlIjoiQVZoV0dJeGk5MzYyN3JNeEhjUTJaTWZjR1FMN0w3S1ZSR3l5VEpxa2pYREVpQUVvd044WGFvUmZZV2RMa0IzNmgrVzNrb" 1 => "laravel_session=eyJpdiI6Inl3RGVSVmh6TzBQbHI5OXozZmJNdVE9PSIsInZhbHVlIjoicHFmbVJodi8za1dmWWcyUVlzREtFMzZVU2RwMzdzWlhoM1hEODEvU283emJYRm1JTkdhejArOXZHZms3c3RNcGxBRlZ5b0U1U0JVMzNiY0NsczdQR29rSGxTM0M5N0N1SXorMHk3bXpXK2hreFZJbFh1T2RCQjNPcHc0Sm9qWk0iLCJtYWMiOiJhMTU0YzAzNjIxMTA3ZmU3Y2NmYWZlODdmYWM5YzI0OTIwMWRkOTU4MDI2YTZhYjc2ODc1OGY1OGY2ZTQ1OGE3IiwidGFnIjoiIn0%3D; expires=Thu, 17-Apr-2025 04:14:00 GMT; path=/; httponlylaravel_session=eyJpdiI6Inl3RGVSVmh6TzBQbHI5OXozZmJNdVE9PSIsInZhbHVlIjoicHFmbVJodi8za1dmWWcyUVlzREtFMzZVU2RwMzdzWlhoM1hEODEvU283emJYRm1JTkdhejArOXZHZms3c3RNcGxB" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "uWR5pCd7zkizUgOqd8oPXmn67olCgaDLPIkADu8G" "locale" => "ar" "_previous" => array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/software-construction-in-java" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]