From 4ad9e6e0224363e464dd225fa66125f850959415 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 12 Sep 2024 16:35:29 -0400 Subject: [PATCH 01/16] Update dependency pytest to v8 (#1548) --- poetry.lock | 28 ++++++++++++++-------------- profiles/permissions_test.py | 11 +++++------ pyproject.toml | 4 ++-- 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/poetry.lock b/poetry.lock index a375a0e2f4..da61f5a439 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3165,23 +3165,23 @@ files = [ [[package]] name = "pytest" -version = "7.4.4" +version = "8.3.3" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, - {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, + {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, + {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, ] [package.dependencies] colorama = {version = "*", markers = "sys_platform == \"win32\""} iniconfig = "*" packaging = "*" -pluggy = ">=0.12,<2.0" +pluggy = ">=1.5,<2" [package.extras] -testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-cov" @@ -3252,18 +3252,18 @@ freezegun = ">0.3" pytest = ">=3.0.0" [[package]] -name = "pytest-lazy-fixture" -version = "0.6.3" -description = "It helps to use fixtures in pytest.mark.parametrize" +name = "pytest-lazy-fixtures" +version = "1.1.1" +description = "Allows you to use fixtures in @pytest.mark.parametrize." optional = false -python-versions = "*" +python-versions = "<4.0,>=3.8" files = [ - {file = "pytest-lazy-fixture-0.6.3.tar.gz", hash = "sha256:0e7d0c7f74ba33e6e80905e9bfd81f9d15ef9a790de97993e34213deb5ad10ac"}, - {file = "pytest_lazy_fixture-0.6.3-py3-none-any.whl", hash = "sha256:e0b379f38299ff27a653f03eaa69b08a6fd4484e46fd1c9907d984b9f9daeda6"}, + {file = "pytest_lazy_fixtures-1.1.1-py3-none-any.whl", hash = "sha256:a4b396a361faf56c6305535fd0175ce82902ca7cf668c4d812a25ed2bcde8183"}, + {file = "pytest_lazy_fixtures-1.1.1.tar.gz", hash = "sha256:0c561f0d29eea5b55cf29b9264a3241999ffdb74c6b6e8c4ccc0bd2c934d01ed"}, ] [package.dependencies] -pytest = ">=3.2.5" +pytest = ">=7" [[package]] name = "pytest-mock" @@ -4856,4 +4856,4 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] [metadata] lock-version = "2.0" python-versions = "3.12.5" -content-hash = "6685a9c05a978eb97ae40e72b0589d48390aedb8892d5d84954088477da35259" +content-hash = "b2aaf45d8fad5d99a21e05b0db7a7d0a651f9e31dc6c8cfa9bb9a7b3cb92f6ad" diff --git a/profiles/permissions_test.py b/profiles/permissions_test.py index 5174be5cf7..4863a3c573 100644 --- a/profiles/permissions_test.py +++ b/profiles/permissions_test.py @@ -2,6 +2,7 @@ """Tests for profile permissions""" import pytest +from pytest_lazy_fixtures import lf from main.factories import UserFactory from profiles.permissions import ( @@ -10,8 +11,6 @@ is_owner_or_privileged_user, ) -lazy = pytest.lazy_fixture - @pytest.fixture def user1(): @@ -28,10 +27,10 @@ def user2(): @pytest.mark.parametrize( ("object_user", "request_user", "is_super", "is_staff", "exp_result"), [ - (lazy("user1"), lazy("user2"), False, False, False), - (lazy("user1"), lazy("user1"), False, False, True), - (lazy("user1"), lazy("user2"), True, False, True), - (lazy("user1"), lazy("user2"), False, True, True), + (lf("user1"), lf("user2"), False, False, False), + (lf("user1"), lf("user1"), False, False, True), + (lf("user1"), lf("user2"), True, False, True), + (lf("user1"), lf("user2"), False, True, True), ], ) def test_is_owner_or_privileged_user( # noqa: PLR0913 diff --git a/pyproject.toml b/pyproject.toml index c74605b74b..4dbce214bb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -80,6 +80,7 @@ posthog = "^3.5.0" ruff = "0.6.4" dateparser = "^1.2.0" uwsgitop = "^0.12" +pytest-lazy-fixtures = "^1.1.1" [tool.poetry.group.dev.dependencies] @@ -92,12 +93,11 @@ ipdb = "^0.13.13" moto = "^4.1.12" nplusone = "^1.0.0" pdbpp = "^0.10.3" -pytest = "^7.3.1" +pytest = "^8.0.0" pytest-cov = "^5.0.0" pytest-django = "^4.5.2" pytest-env = "^1.0.0" pytest-freezegun = "^0.4.2" -pytest-lazy-fixture = "^0.6.3" pytest-mock = "^3.10.0" responses = "^0.25.0" ruff = "^0.6.0" From 8afadb30038643ca8c39334a5295eea5684a6e96 Mon Sep 17 00:00:00 2001 From: Carey P Gumaer Date: Fri, 13 Sep 2024 15:01:24 -0400 Subject: [PATCH 02/16] input / search input styling updates (#1545) * move SearchInput to ol-components * full height / uniform width adornment buttons on Input * use SearchInput component on SearchPage * remove extra placeholder setting * set ChannelSearch to use the SearchInput component * remove extraneous SearchInput component from page-components * input text color should always be darkGray2 * Update sizes based on Figma * fix padding * fix css selector * fix icon sizes and mobile styles * wrap channel search in a container * hero sized search input on desktop gets 8px border radius * remove ts-expect-error * per feedback, make size based styling functional * make SearchInput responsive --- .../SearchDisplay/SearchInput.test.tsx | 79 ------- .../SearchDisplay/SearchInput.tsx | 162 -------------- .../src/pages/ChannelPage/ChannelSearch.tsx | 45 ++-- .../src/pages/HomePage/HeroSearch.tsx | 11 +- .../src/pages/SearchPage/SearchPage.tsx | 60 ++--- .../src/components/Input/Input.stories.tsx | 15 +- .../src/components/Input/Input.tsx | 210 ++++++++++-------- .../SearchInput}/SearchInput.test.tsx | 3 +- .../components/SearchInput}/SearchInput.tsx | 49 ++-- .../components/SelectField/SelectField.tsx | 3 - frontends/ol-components/src/index.ts | 2 + frontends/ol-components/src/types/theme.d.ts | 2 +- 12 files changed, 205 insertions(+), 436 deletions(-) delete mode 100644 frontends/mit-learn/src/page-components/SearchDisplay/SearchInput.test.tsx delete mode 100644 frontends/mit-learn/src/page-components/SearchDisplay/SearchInput.tsx rename frontends/{mit-learn/src/pages/HomePage => ol-components/src/components/SearchInput}/SearchInput.test.tsx (96%) rename frontends/{mit-learn/src/pages/HomePage => ol-components/src/components/SearchInput}/SearchInput.tsx (72%) diff --git a/frontends/mit-learn/src/page-components/SearchDisplay/SearchInput.test.tsx b/frontends/mit-learn/src/page-components/SearchDisplay/SearchInput.test.tsx deleted file mode 100644 index 19c16f95f5..0000000000 --- a/frontends/mit-learn/src/page-components/SearchDisplay/SearchInput.test.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import React from "react" -import { render, screen } from "@testing-library/react" -import userEvent from "@testing-library/user-event" -import { SearchInput } from "./SearchInput" -import type { SearchInputProps } from "./SearchInput" -import invariant from "tiny-invariant" -import { ThemeProvider } from "ol-components" - -const getSearchInput = () => { - const element = screen.getByLabelText("Search for") - invariant(element instanceof HTMLInputElement) - return element -} - -const getSearchButton = (): HTMLButtonElement => { - const button = screen.getByLabelText("Search") - invariant(button instanceof HTMLButtonElement) - return button -} - -/** - * This actually returns an icon (inside a button) - */ -const getClearButton = (): HTMLButtonElement => { - const button = screen.getByLabelText("Clear search text") - invariant(button instanceof HTMLButtonElement) - return button -} - -const searchEvent = (value: string) => - expect.objectContaining({ target: { value } }) - -describe("SearchInput", () => { - const renderSearchInput = (props: Partial = {}) => { - const { value = "", ...otherProps } = props - const onSubmit = jest.fn() - const onChange = jest.fn((e) => e.persist()) - const onClear = jest.fn() - render( - , - { wrapper: ThemeProvider }, - ) - const user = userEvent.setup() - const spies = { onClear, onChange, onSubmit } - return { user, spies } - } - - it("Renders the given value in input", () => { - renderSearchInput({ value: "math" }) - expect(getSearchInput().value).toBe("math") - }) - - it("Calls onChange when text is typed", async () => { - const { user, spies } = renderSearchInput({ value: "math" }) - const input = getSearchInput() - await user.type(getSearchInput(), "s") - expect(spies.onChange).toHaveBeenCalledWith( - expect.objectContaining({ target: input }), - ) - }) - - it("Calls onSubmit when search is clicked", async () => { - const { user, spies } = renderSearchInput({ value: "chemistry" }) - await user.click(getSearchButton()) - expect(spies.onSubmit).toHaveBeenCalledWith(searchEvent("chemistry")) - }) - - it("Calls onClear clear is clicked", async () => { - const { user, spies } = renderSearchInput({ value: "biology" }) - await user.click(getClearButton()) - expect(spies.onClear).toHaveBeenCalled() - }) -}) diff --git a/frontends/mit-learn/src/page-components/SearchDisplay/SearchInput.tsx b/frontends/mit-learn/src/page-components/SearchDisplay/SearchInput.tsx deleted file mode 100644 index 27fcdce3a3..0000000000 --- a/frontends/mit-learn/src/page-components/SearchDisplay/SearchInput.tsx +++ /dev/null @@ -1,162 +0,0 @@ -import React, { useCallback } from "react" - -import { - Input, - AdornmentButton, - FormGroup, - Button, - styled, - css, -} from "ol-components" -import type { InputProps } from "ol-components" -import { RiSearch2Line, RiCloseLine } from "@remixicon/react" - -export interface SearchSubmissionEvent { - target: { - value: string - } - /** - * Deprecated. course-search-utils calls unnecessarily. - */ - preventDefault: () => void -} - -const StyledInput = styled(Input)` - border-radius: 0; - border-top-left-radius: 8px; - border-bottom-left-radius: 8px; - width: 556px; - border-right: none; - height: 48px; - - &.Mui-focused { - border-color: ${({ theme }) => theme.custom.colors.darkGray2}; - color: ${({ theme }) => theme.custom.colors.darkGray2}; - } - - ${({ theme }) => theme.breakpoints.down("md")} { - height: 37px; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; - width: 80%; - } -` - -const StyledButton = styled(Button)` - border-top-left-radius: 0; - border-bottom-left-radius: 0; - - ${({ theme }) => theme.breakpoints.up("md")} { - ${({ theme }) => css({ ...theme.typography.body2 })}; - min-width: 64px; - height: 48px; - padding: 8px 16px; - border-top-right-radius: 8px; - border-bottom-right-radius: 8px; - - svg { - height: 1.5em; - width: 1.5em; - } - } - - ${({ theme }) => theme.breakpoints.down("md")} { - ${({ theme }) => css({ ...theme.typography.body4 })}; - height: 37px; - width: 40px; - min-width: 40px; - padding: 0; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - - svg { - height: 1em; - width: 1em; - font-size: 18px; - } - } -` - -const StyledFormGroup = styled(FormGroup)` - width: 100%; -` - -type SearchSubmitHandler = (event: SearchSubmissionEvent) => void - -interface SearchInputProps { - className?: string - classNameInput?: string - - classNameClear?: string - classNameSearch?: string - value: string - placeholder?: string - autoFocus?: boolean - onChange: React.ChangeEventHandler - onClear: React.MouseEventHandler - onSubmit: SearchSubmitHandler - size?: InputProps["size"] - fullWidth?: boolean -} - -const muiInputProps = { "aria-label": "Search for" } - -const SearchInput: React.FC = (props) => { - const { onSubmit, value } = props - const handleSubmit = useCallback(() => { - const event = { - target: { value }, - preventDefault: () => null, - } - onSubmit(event) - }, [onSubmit, value]) - const onInputKeyDown: React.KeyboardEventHandler = - useCallback( - (e) => { - if (e.key !== "Enter") return - handleSubmit() - }, - [handleSubmit], - ) - - return ( - - - - - ) - } - /> - - - - - ) -} - -export { SearchInput } -export type { SearchInputProps } diff --git a/frontends/mit-learn/src/pages/ChannelPage/ChannelSearch.tsx b/frontends/mit-learn/src/pages/ChannelPage/ChannelSearch.tsx index 30fec19a8c..3e77db3e06 100644 --- a/frontends/mit-learn/src/pages/ChannelPage/ChannelSearch.tsx +++ b/frontends/mit-learn/src/pages/ChannelPage/ChannelSearch.tsx @@ -14,36 +14,25 @@ import type { } from "@mitodl/course-search-utils" import { useSearchParams } from "@mitodl/course-search-utils/react-router" import SearchDisplay from "@/page-components/SearchDisplay/SearchDisplay" -import { SearchInput } from "@/page-components/SearchDisplay/SearchInput" +import { Container, SearchInput, styled, VisuallyHidden } from "ol-components" import { getFacetManifest } from "@/pages/SearchPage/SearchPage" import _ from "lodash" -import { styled, VisuallyHidden } from "ol-components" - -const SearchInputContainer = styled.div` - padding-bottom: 40px; - - ${({ theme }) => theme.breakpoints.down("md")} { - padding-bottom: 35px; - } -` - -const StyledSearchInput = styled(SearchInput)` - justify-content: center; - ${({ theme }) => theme.breakpoints.up("md")} { - .input-field { - height: 40px; - width: 450px; - } - - .button-field { - height: 40px; - padding: 12px 16px 12px 12px; - width: 20px; - } - } -` + +const SearchInputContainer = styled(Container)(({ theme }) => ({ + width: "100%", + display: "flex", + justifyContent: "center", + paddingBottom: "40px", + [theme.breakpoints.down("md")]: { + paddingBottom: "35px", + }, +})) + +const StyledSearchInput = styled(SearchInput)({ + width: "624px", +}) const FACETS_BY_CHANNEL_TYPE: Record = { [ChannelTypeEnum.Topic]: [ @@ -185,6 +174,7 @@ const ChannelSearch: React.FC = ({ setCurrentText(e.target.value)} onSubmit={(e) => { setCurrentTextAndQuery(e.target.value) @@ -192,9 +182,6 @@ const ChannelSearch: React.FC = ({ onClear={() => { setCurrentTextAndQuery("") }} - classNameInput="input-field" - classNameSearch="button-field" - placeholder="Search for courses, programs, and learning materials..." /> diff --git a/frontends/mit-learn/src/pages/HomePage/HeroSearch.tsx b/frontends/mit-learn/src/pages/HomePage/HeroSearch.tsx index 83befc5eda..efe922953b 100644 --- a/frontends/mit-learn/src/pages/HomePage/HeroSearch.tsx +++ b/frontends/mit-learn/src/pages/HomePage/HeroSearch.tsx @@ -1,8 +1,14 @@ import React, { useState, useCallback } from "react" import { useNavigate } from "react-router" -import { Typography, styled, ChipLink, Link } from "ol-components" +import { + Typography, + styled, + ChipLink, + Link, + SearchInput, + SearchInputProps, +} from "ol-components" import type { ChipLinkProps } from "ol-components" -import { SearchInput, SearchInputProps } from "./SearchInput" import { ABOUT, SEARCH_CERTIFICATE, @@ -231,7 +237,6 @@ const HeroSearch: React.FC = () => { theme.breakpoints.up("md")} { - width: 680px; - min-width: 680px; - } -` +const SearchFieldContainer = styled(Container)({ + display: "flex", + justifyContent: "center", +}) + +const SearchField = styled(SearchInput)(({ theme }) => ({ + [theme.breakpoints.down("sm")]: { + width: "100%", + }, + [theme.breakpoints.up("sm")]: { + width: "570px", + }, +})) const LEARNING_MATERIAL = "learning_material" @@ -216,24 +227,19 @@ const SearchPage: React.FC = () => {

Search

- - - - - setCurrentText(e.target.value)} - onSubmit={(e) => { - onSearchTermSubmit(e.target.value) - }} - onClear={() => { - onSearchTermSubmit("") - }} - placeholder="What do you want to learn?" - /> - - - + + setCurrentText(e.target.value)} + onSubmit={(e) => { + onSearchTermSubmit(e.target.value) + }} + onClear={() => { + onSearchTermSubmit("") + }} + /> +
{ return ( - + + + ) @@ -104,11 +111,11 @@ export const Adornments: Story = { }, ] return ( - + {Object.values(adornments).flatMap((props, i) => SIZES.map((size) => { return ( - + ) diff --git a/frontends/ol-components/src/components/Input/Input.tsx b/frontends/ol-components/src/components/Input/Input.tsx index cf03ade4f7..86d7c2f844 100644 --- a/frontends/ol-components/src/components/Input/Input.tsx +++ b/frontends/ol-components/src/components/Input/Input.tsx @@ -1,30 +1,106 @@ import React from "react" import styled from "@emotion/styled" -import { pxToRem } from "../ThemeProvider/typography" import InputBase from "@mui/material/InputBase" import type { InputBaseProps } from "@mui/material/InputBase" import type { Theme } from "@mui/material/styles" +type Size = NonNullable + const defaultProps = { size: "medium", multiline: false, +} as const + +const responsiveSize: Record = { + small: "small", + medium: "small", + large: "medium", + hero: "large", } -const buttonPadding = { - medium: 4, - hero: 6, - heroMobile: 4, +type SizeStyleProps = { + size: Size + theme: Theme + multiline?: boolean } +const sizeStyles = ({ size, theme, multiline }: SizeStyleProps) => [ + (size === "small" || size === "medium") && { + ...theme.typography.body2, + }, + (size === "large" || size === "hero") && { + ".remixicon": { + width: "24px", + height: "24px", + }, + ...theme.typography.body1, + }, + size === "medium" && { + paddingLeft: "12px", + paddingRight: "12px", + }, + size === "small" && + !multiline && { + height: "32px", + }, + size === "medium" && + !multiline && { + height: "40px", + }, + size === "large" && + !multiline && { + height: "48px", + }, + size === "hero" && + !multiline && { + height: "72px", + }, + size === "small" && { + padding: "0 8px", + ".Mit-AdornmentButton": { + width: "32px", + ".remixicon": { + width: "16px", + height: "16px", + }, + }, + }, + size === "medium" && { + padding: "0 12px", + ".Mit-AdornmentButton": { + width: "40px", + ".remixicon": { + width: "20px", + height: "20px", + }, + }, + }, + size === "large" && { + padding: "0 16px", + ".Mit-AdornmentButton": { + width: "48px", + }, + }, + size === "hero" && { + padding: "0 24px", + ".Mit-AdornmentButton": { + width: "72px", + }, + }, +] /** * Base styles for Input and Select components. Includes border, color, hover effects. */ const baseInputStyles = (theme: Theme) => ({ backgroundColor: "white", - color: theme.custom.colors.silverGrayDark, + color: theme.custom.colors.darkGray2, borderColor: theme.custom.colors.silverGrayLight, borderWidth: "1px", borderStyle: "solid", + borderRadius: "4px", + ".MuiInputBase-input": { + padding: "0", + }, "&.Mui-disabled": { backgroundColor: theme.custom.colors.lightGray1, }, @@ -59,69 +135,47 @@ const baseInputStyles = (theme: Theme) => ({ paddingTop: "6px", paddingBottom: "7px", }, + "&.MuiInputBase-adornedStart": { + paddingLeft: "0", + input: { + paddingLeft: "8px", + }, + }, + "&.MuiInputBase-adornedEnd": { + paddingRight: "0", + input: { + paddingRight: "8px", + }, + }, }) /** * A styled input that supports start and end adornments. In most cases, the * higher-level TextField component should be used instead of this component. */ -const Input = styled(InputBase)(({ +type CustomInputProps = { responsive?: true } +const noForward = Object.keys({ + responsive: true, +} satisfies { [key in keyof CustomInputProps]: boolean }) + +const Input = styled(InputBase, { + shouldForwardProp: (prop) => !noForward.includes(prop), +})(({ theme, size = defaultProps.size, multiline, + responsive, }) => { return [ baseInputStyles(theme), - size === "medium" && { - "& .MuiInputBase-input": { - ...theme.typography.body2, - }, - paddingLeft: "12px", - paddingRight: "12px", - borderRadius: "4px", - "&.MuiInputBase-adornedStart": { - paddingLeft: `${12 - buttonPadding.medium}px`, - }, - "&.MuiInputBase-adornedEnd": { - paddingRight: `${12 - buttonPadding.medium}px`, - }, - }, - size === "medium" && - !multiline && { - height: "40px", - }, - size === "hero" && { - "& .MuiInputBase-input": { - ...theme.typography.body1, - }, - paddingLeft: "16px", - paddingRight: "16px", - borderRadius: "8px", - "&.MuiInputBase-adornedStart": { - paddingLeft: `${16 - buttonPadding.hero}px`, - }, - "&.MuiInputBase-adornedEnd": { - paddingRight: `${16 - buttonPadding.hero}px`, - }, - [theme.breakpoints.down("sm")]: { - "& .MuiInputBase-input": { - ...theme.typography.body3, - }, - "&.MuiInputBase-adornedStart": { - paddingLeft: `${12 - buttonPadding.heroMobile}px`, - }, - "&.MuiInputBase-adornedEnd": { - paddingRight: `${12 - buttonPadding.heroMobile}px`, - }, - }, + ...sizeStyles({ size, theme, multiline }), + responsive && { + [theme.breakpoints.down("sm")]: sizeStyles({ + size: responsiveSize[size], + theme, + multiline, + }), }, - size === "hero" && - !multiline && { - height: "56px", - [theme.breakpoints.down("sm")]: { - height: "37px", - }, - }, ] }) @@ -130,6 +184,7 @@ const AdornmentButtonStyled = styled("button")(({ theme }) => ({ ...theme.typography.button, // display display: "flex", + flexShrink: 0, justifyContent: "center", alignItems: "center", // background and border @@ -144,40 +199,7 @@ const AdornmentButtonStyled = styled("button")(({ theme }) => ({ ":hover": { background: "rgba(0, 0, 0, 0.06)", }, - ".MuiInputBase-root &": { - // Extra padding to make button easier to click - width: pxToRem(20 + 2 * buttonPadding.medium), - height: pxToRem(20 + 2 * buttonPadding.medium), - ".MuiSvgIcon-root": { - fontSize: pxToRem(20), - }, - }, - ".MuiInputBase-sizeHero &": { - // Extra padding to make button easier to click - width: pxToRem(24 + 2 * buttonPadding.hero), - height: pxToRem(24 + 2 * buttonPadding.hero), - ".MuiSvgIcon-root": { - fontSize: pxToRem(24), - }, - [theme.breakpoints.down("sm")]: { - width: pxToRem(16 + 2 * buttonPadding.heroMobile), - height: pxToRem(16 + 2 * buttonPadding.heroMobile), - ".MuiSvgIcon-root": { - fontSize: pxToRem(16), - }, - }, - }, - - color: theme.custom.colors.silverGray, - ".MuiInputBase-root:hover &": { - color: "inherit", - }, - ".MuiInputBase-root.Mui-focused &": { - color: "inherit", - }, - ".MuiInputBase-root.Mui-disabled &": { - color: "inherit", - }, + height: "100%", })) const noFocus: React.MouseEventHandler = (e) => e.preventDefault() @@ -189,9 +211,9 @@ type AdornmentButtonProps = React.ComponentProps * styling concerns. * * NOTES: - * - It is generally expected that the content of the AdornmentButton is an - * Mui Icon component. https://mui.com/material-ui/material-icons/ - * - By defualt, the AdornmentButton calls `preventDefault` on `mouseDown` + * - It is generally expected that the content of the AdornmentButton is a + * Remix Icon component. https://remixicon.com/ + * - By default, the AdornmentButton calls `preventDefault` on `mouseDown` * events. This prevents the button from stealing focus from the input on * click. The button is still focusable via keyboard events. You can override * this behavior by passing your own `onMouseDown` handler. @@ -209,7 +231,7 @@ const AdornmentButton: React.FC = (props) => { ) } -type InputProps = Omit +type InputProps = Omit & CustomInputProps export { AdornmentButton, Input, baseInputStyles } export type { InputProps, AdornmentButtonProps } diff --git a/frontends/mit-learn/src/pages/HomePage/SearchInput.test.tsx b/frontends/ol-components/src/components/SearchInput/SearchInput.test.tsx similarity index 96% rename from frontends/mit-learn/src/pages/HomePage/SearchInput.test.tsx rename to frontends/ol-components/src/components/SearchInput/SearchInput.test.tsx index 7d8b757ab0..bac9a47464 100644 --- a/frontends/mit-learn/src/pages/HomePage/SearchInput.test.tsx +++ b/frontends/ol-components/src/components/SearchInput/SearchInput.test.tsx @@ -1,8 +1,7 @@ import React from "react" import { render, screen } from "@testing-library/react" import userEvent from "@testing-library/user-event" -import { SearchInput } from "./SearchInput" -import type { SearchInputProps } from "./SearchInput" +import { SearchInput, type SearchInputProps } from "./SearchInput" import invariant from "tiny-invariant" import { ThemeProvider } from "ol-components" const getSearchInput = () => { diff --git a/frontends/mit-learn/src/pages/HomePage/SearchInput.tsx b/frontends/ol-components/src/components/SearchInput/SearchInput.tsx similarity index 72% rename from frontends/mit-learn/src/pages/HomePage/SearchInput.tsx rename to frontends/ol-components/src/components/SearchInput/SearchInput.tsx index 07ba11403c..58c6c0935a 100644 --- a/frontends/mit-learn/src/pages/HomePage/SearchInput.tsx +++ b/frontends/ol-components/src/components/SearchInput/SearchInput.tsx @@ -1,44 +1,25 @@ import React, { useCallback } from "react" import { RiSearch2Line, RiCloseLine } from "@remixicon/react" -import { Input, AdornmentButton, styled, pxToRem } from "ol-components" -import type { InputProps } from "ol-components" +import { Input, AdornmentButton } from "../Input/Input" +import type { InputProps } from "../Input/Input" +import styled from "@emotion/styled" const StyledInput = styled(Input)(({ theme }) => ({ - height: "72px", boxShadow: "0px 8px 20px 0px rgba(120, 147, 172, 0.10)", - "&.MuiInputBase-adornedEnd": { - paddingRight: "0 !important", - }, [theme.breakpoints.down("sm")]: { - height: "56px", gap: "8px", }, -})) - -const StyledAdornmentButton = styled(AdornmentButton)(({ theme }) => ({ - ".MuiInputBase-sizeHero &": { - width: "72px", - height: "100%", - flexShrink: 0, - ".MuiSvgIcon-root": { - fontSize: pxToRem(24), - }, - [theme.breakpoints.down("sm")]: { - width: "56px", - height: "100%", - ".MuiSvgIcon-root": { - fontSize: pxToRem(16), - }, + [theme.breakpoints.up("sm")]: { + "&.MuiInputBase-sizeHero": { + borderRadius: "8px !important", }, }, })) -const StyledClearButton = styled(StyledAdornmentButton)({ - ".MuiInputBase-sizeHero &": { - width: "32px", - ["&:hover"]: { - backgroundColor: "transparent", - }, +const StyledClearButton = styled(AdornmentButton)({ + width: "32px !important", + ["&:hover"]: { + backgroundColor: "transparent", }, }) @@ -97,7 +78,10 @@ const SearchInput: React.FC = (props) => { // eslint-disable-next-line jsx-a11y/no-autofocus autoFocus={props.autoFocus} className={props.className} - placeholder={props.placeholder} + placeholder={ + props.placeholder ?? + "Search for courses, programs, and learning materials..." + } value={props.value} onChange={props.onChange} onKeyDown={onInputKeyDown} @@ -112,15 +96,16 @@ const SearchInput: React.FC = (props) => { )} - - + } + responsive /> ) } diff --git a/frontends/ol-components/src/components/SelectField/SelectField.tsx b/frontends/ol-components/src/components/SelectField/SelectField.tsx index 2c74906538..055d9167a7 100644 --- a/frontends/ol-components/src/components/SelectField/SelectField.tsx +++ b/frontends/ol-components/src/components/SelectField/SelectField.tsx @@ -109,9 +109,6 @@ function Select({ size, ...props }: SelectProps) { } diff --git a/frontends/ol-components/src/index.ts b/frontends/ol-components/src/index.ts index 7c04f30eec..9c988a0768 100644 --- a/frontends/ol-components/src/index.ts +++ b/frontends/ol-components/src/index.ts @@ -199,6 +199,8 @@ export * from "./constants/imgConfigs" export { Input, AdornmentButton } from "./components/Input/Input" export type { InputProps, AdornmentButtonProps } from "./components/Input/Input" +export { SearchInput } from "./components/SearchInput/SearchInput" +export type { SearchInputProps } from "./components/SearchInput/SearchInput" export { TextField } from "./components/TextField/TextField" export { SimpleSelect, diff --git a/frontends/ol-components/src/types/theme.d.ts b/frontends/ol-components/src/types/theme.d.ts index ed1f53457f..e971ffe9af 100644 --- a/frontends/ol-components/src/types/theme.d.ts +++ b/frontends/ol-components/src/types/theme.d.ts @@ -71,7 +71,7 @@ declare module "@mui/material/Button" { declare module "@mui/material/InputBase" { interface InputBasePropsSizeOverrides { hero: true - small: false + large: true } } From dea71b6ee100cc6b237b601d2be81b9c83109e3e Mon Sep 17 00:00:00 2001 From: Matt Bertrand Date: Fri, 13 Sep 2024 15:56:36 -0400 Subject: [PATCH 03/16] updated OLL csv file (#1557) --- learning_resources/data/oll_metadata.csv | 542 ++++------------------- 1 file changed, 75 insertions(+), 467 deletions(-) diff --git a/learning_resources/data/oll_metadata.csv b/learning_resources/data/oll_metadata.csv index aa572e53a6..80119b7ca4 100644 --- a/learning_resources/data/oll_metadata.csv +++ b/learning_resources/data/oll_metadata.csv @@ -1,470 +1,78 @@ -OLL Course,edX Subject 1,edX Subject 2,edX Subject 3,MITxO Primary Parent,MITxO Primary Child,MITxO Adopted Secondary Child ,OCW Pointer Page Topic 1,OCW Pointer Page Topic 2,Instructor 1,Instructor 2,Instructor 3,Instructor 4,Instructor 5,Instructor 6,,Level,Offered by,Language,readable_id,title,url,description,published,License CC,Duration,Student Effort,Course Image URL,Course Image URL Flat -18.031,,,,Science & Math,Mathematics,Algorithms and Data Structures,,,Philip Pearce,,,,,,,Undergraduate,OCW,English,OCW+18.031+2019_Spring,System Functions and the Laplace Transform,https://openlearninglibrary.mit.edu/courses/course-v1:OCW+18.031+2019_Spring/about,"This half-semester course studies basic continuous control theory as well as representation of functions in the complex frequency domain. It covers generalized functions, unit impulse response, and convolution. Also covered are the Laplace transform, system (or transfer) functions, and the pole diagram. Examples from mechanical and electrical engineering are provided.",YES,YES,13,6,https://openlearninglibrary.mit.edu/asset-v1:OCW+18.031+2019_Spring+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:OCW+18.031+2019_Spring+type@asset+block@course_image.jpg -18.05,,,,Science & Math,Mathematics,Data Science,,,Jeremy Orloff,Jennifer French Kamrin,,,,,,Undergraduate,OCW,English,MITx+18.05r_10+2022_Summer,Introduction to Probability and Statistics,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.05r_10+2022_Summer/about,"This half-semester course studies basic continuous control theory as well as representation of functions in the complex frequency domain. It covers generalized functions, unit impulse response, and convolution. Also covered are the Laplace transform, system (or transfer) functions, and the pole diagram. Examples from mechanical and electrical engineering are provided.",YES,YES,14,14,https://openlearninglibrary.mit.edu/asset-v1:MITx+18.05r_10+2022_Summer+type@asset+block@mit18_05_s22_chp.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+18.05r_10+2022_Summer+type@asset+block@mit18_05_s22_chp.jpg -0.501x,Education & Teacher Training,,,Education & Teaching,Pedagogy and Curriculum,Digital Learning,,,Justin Reich,Elizabeth Huttner-Loan,Alyssa Napier,,,,,Graduate,MITx,English,MITx+0.501x+2T2019,Envisioning the Graduate of the Future,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+0.501x+2T2019/about,"Communities have always wrestled with the multiple purposes of education: to train young people for careers, vocations, and college; to prepare them for their roles as citizens; to develop habits of reflective, ethical adults; and to create a common experience in a pluralistic society while meeting the needs of individual learners. As the world changes and grows more complex, returning to these important questions of purpose can help guide schools in their growth and strategic change. To ensure our schools are effective, we need to routinely reimagine what the high school graduate of the future will need to know and be able to do. The artifact that communicates these ideas is called a graduate profile. Making explicit the capabilities, competencies, knowledge, and attitudes for secondary school graduates, and inviting key stakeholders like students and community members to be engaged in the process, can help you and your school to focus your vision of success and drive school innovation efforts. - -Instructor Justin Reich and the course team from the MIT Teaching Systems Lab look forward to guiding teachers, administrators, community members, and others passionate about improving secondary school in the process of designing a graduate profile. Over four weeks, you will reflect on the purpose and goals of secondary school, as well as desirable characteristics for graduates. You’ll learn how schools have benefited from a graduate profile development process and begin the process yourself. You’ll learn more about your own context, its values and beliefs. You’ll leave the course with a shareable artifact that communicates a vision of a multi-faceted secondary school graduate. - -This course has been authored by one or more members of the Faculty of the Massachusetts Institute of Technology. Its educational objectives, methods, assessments, and the selection and presentation of its content are solely the responsibility of MIT.",YES,YES,4,4,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.501x+2T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.501x+2T2019+type@asset+block@course_image.jpg -0.502x,Education & Teacher Training,,,Education & Teaching,Educational Policy,Digital Learning,,,Justin Reich,Elizabeth Huttner-Loan,,,,,,Undergraduate,MITx,English,MITx+0.502x+1T2019,Competency-Based Education,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+0.502x+1T2019/about,"Many schools across the country are exploring competency-based education (CBE) as a pathway for transforming the school experience. In this course, instructor Justin Reich and the MIT Teaching Systems Lab team will help you develop an understanding of the characteristic elements of CBE and how schools are implementing it. - -You will learn why so many educators are excited about CBE and its potential for closing opportunity gaps, as well as challenges and concerns. You will get a closer look at what the implementation of CBE looks and feels like for students, teachers, administrators, families, and community members. You will consider the kinds of system-wide shifts necessary to support this innovation in education. - -By looking at research and hearing from experts and voices in schools, you will leave the course equipped to start or continue conversations about whether CBE is a good fit in your context.",YES,YES,6,,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.502x+1T2019+type@asset+block@course_image.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.502x+1T2019+type@asset+block@course_image.png -0.503x,Education & Teacher Training,,,Education & Teaching,Pedagogy and Curriculum,Digital Learning,,,Justin Reich,H. Richard Milner IV,,,,,,Undergraduate,MITx,English,MITx+0.503x+T2020,Becoming a More Equitable Educator,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+0.503x+T2020/about,"Every day, teachers make thousands of decisions: what content to teach, what activities to assign, who to call on, how to respond to a student question, how to react to student behavior. These day-to-day decisions can have an enormous effect on the lives of young people, for good and ill. They can open new doors or cause lasting harm; they can make students feel seen and valued, or dampen their interest in school. In this course, we will investigate these interactions, rehearse responding to difficult scenarios, and develop a set of equity teaching mindsets and practices to support all of our learners, especially underserved students. - -With colleagues from your school or organization and online learners around the world, you will participate in four cycles of inquiry, practice, and action, and then complete a final action project. In each cycle of inquiry, you will examine and re-examine dimensions of inequality through educator mindsets, imagine community change through documentary case studies, rehearse taking action in thorny situations through digital practice spaces, and begin to lead change through action-oriented assignments. Our early investigations will focus on relationships and interactions with individual students, and pan out to examine the effects of bias on classrooms, schools, and communities. As you complete activities with peers online, you will develop a rich set of resources and exercises to use with your students and colleagues in your local context. - -At the end of the course, you will have a better understanding of yourself and your students, new resources to draw on for helping all students thrive, and a plan to work with your school community to advance the lifelong work of equitable teaching. - -We believe that the most rich and rewarding experience in this course is to take it with colleagues, and we encourage you to reach out to a small group who might be interested in taking this course with you. These fellow-learners will understand your context, the students that are in your school, and the culture of the place that you're working with. Even one or two peers can be the start of an equity change cohort in your school or organization.",YES,YES,15,4,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.503x+T2020+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.503x+T2020+type@asset+block@course_image.jpg -0.504x,Education & Teacher Training,,,Education & Teaching,Pedagogy and Curriculum,Digital Learning,,,Justin Reich,Sam Wineburg,,,,,,Undergraduate,MITx,English,MITx+0.504x+3T2020,Sorting Truth From Fiction: Civic Online Reasoning,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+0.504x+3T2020/about,"Fake news and misinformation pose an urgent challenge to citizens across the globe. Multiple studies have shined a light on people’s difficulty in distinguishing truth from fiction, reliable information from sham. As we approach the November 2020 election, we can expect our screens to be flooded, even more so, with digital content that plays fast and loose with the truth. - -With educators from around the world and faculty from MIT and Stanford University, you will learn quick and effective practices for evaluating online information that you can bring back to your classroom. The Stanford History Education Group has distilled these practices from observations with professional fact-checkers from the nation’s most prestigious media outlets from across the political spectrum. Using a combination of readings, classroom practice lessons, and assignments, you will learn how to teach the critical thinking skills needed for making wise judgments about web sources. - -At the end of the course, you will be better able to help students find reliable sources at a time when we need it most.",YES,,8.7,4,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.504x+3T2020+type@asset+block@course_image.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.504x+3T2020+type@asset+block@course_image.png -0.SolveX,Business & Management,,,Business & Management,Entrepreneurship,Digital Learning ,,,Anjali Sastry,,,,,,,Undergraduate,MITx,English,MITx+0.SolveX+2T2021,Business and Impact Planning for Social Enterprises,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+0.SolveX+2T2021/about,"People in every corner of the world are innovating to solve social and environmental problems in their communities. In the past decade, new programs like MIT Solve have emerged to support those social entrepreneurs and drive partnerships to accelerate their impact. However, many startups find it difficult to develop business plans that clearly communicate their work and impact — vital factors in securing funding and other growth opportunities. - -This six-week course helps early-stage social impact startups define three key aspects of their business: - -Impact Opportunity: What is the scale of the problem you are working on? How many people are impacted? and What impact might you make? -Customer Discovery: What specific group will your solution serve, and how will it impact their lives? How can you better understand this group? -Theory of Change: How can you be sure that your work addresses the problem you’re solving? How is your approach unique? -Strategy for Scale: How can you reach more people to scale your positive impact? Where will you gain the funding needed to expand? -Each week, you will dive into case studies from leading social entrepreneurs and both nonprofit and for-profit enterprises around the world. Building off these studies, we will help you think through your own social business model and impact plan. Upon completing this course, you will have thought about your responses to five core business model and impact questions. These answers can be used to scale your impact moving forward and to submit an application to MIT Solve’s open innovation platform. - -You may be a good candidate for this course if any of the following criteria apply to you: - -You are considering applying to one of Solve’s Challenges or to another social impact innovation program and are seeking advice to create and complete the application. -You are solving an important social or environmental problem and need help to describe and develop your work. -You are starting on an idea or solution to a social or environmental problem and need training or skills development to design and share your goals. -What is Solve? - -Solve is an initiative of the Massachusetts Institute of Technology (MIT) with a mission to solve world challenges. Solve is a marketplace for social impact innovation. Through open innovation Challenges, Solve finds incredible tech-based social entrepreneurs all around the world. Solve then brings together MIT’s innovation ecosystem and a community of Members to fund and support these entrepreneurs to help them drive lasting, transformational impact. Join Solve on this journey at solve.mit.edu. - -",YES,,6.4,4,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.SolveX+2T2021+type@asset+block@course_image.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.SolveX+2T2021+type@asset+block@course_image.png -11.154x,Education & Teacher Training,,,Education & Teaching,Faculty Leadership,Educational Technology,,,Justin Reich,Peter Senge,,,,,,Graduate,MITx,English,MITx+11.154x+3T2018,Launching Innovation in Schools,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+11.154x+3T2018/about,"Every great teacher and every great school constantly work towards creating better learning conditions for students. Just as we hope our students become lifelong learners, we as educators should be constantly learning and improving. This education course is for school leaders of all kinds (from teacher-leaders to principals to superintendents) who are launching innovation in schools—starting new efforts to work together to improve teaching and learning. - -You will complete a cycle of study, experimentation, and reflection to gain confidence and skills to lead instructional improvement efforts. Through experiential activities and assignments, you will begin working with colleagues to envision the next level of work for your team or organization, to launch a new initiative, and to measure your progress along the way. Based on the work of Justin Reich (Teaching Systems Lab, MIT) and Peter Senge (MIT Sloan), this course will focus on visioning and capacity-building, with an emphasis on collaboration and building partnerships with stakeholders at multiple levels. - -At the end of the course, you will have started the process of launching an instructional improvement initiative in your school or learning environment, and you will better understand yourself as a leader and change agent. You will have made connections with peers who are also undertaking this important work. - -This course has been funded by Microsoft and is part of the Microsoft K-12 Education Leadership initiative developed to provide resources to K-12 school leaders around the world as they address the unique needs of their schools in a changing educational and technology landscape. -",YES,,13,2,https://openlearninglibrary.mit.edu/asset-v1:MITx+11.154x+3T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+11.154x+3T2018+type@asset+block@course_image.jpg -11.155x,Education & Teacher Training,,,Education & Teaching,Educational Policy,Systems Thinking,,,Justin Reich,Elizabeth Huttner-Loan,Alyssa Napier,,,,,Graduate,MITx,English,MITx+11.155x+1T2019,Design Thinking for Leading and Learning,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+11.155x+1T2019/about,"How do we prepare K-12 students and learning communities to be as successful as possible? If future jobs require creativity, problem-solving, and communication, how do we teach these skills in meaningful ways? How do we bring together passionate school leaders to create systemic solutions to educational challenges? Come explore these questions and more in Design Thinking for Leading and Learning. - -The course is organized into three sections that combine design thinking content with real-world education examples, as well as opportunities for learners to apply concepts in their own setting. - -Unit 1: Meet Design Thinking. An introduction to design thinking through the perspective of designers at MIT. For the first assignment, learners will take on the role of a designer and complete a small design project. This unit serves as a foundation for upcoming work in Units 2 and 3. - -Unit 2: Design Thinking for Students. Examples of how and why PK-12 educators use the design thinking process to enhance student learning in their classrooms. Learners will develop a hands-on design challenge to experiment with the process in their own classrooms or workplaces. - -Unit 3: Design Thinking for Schools. Examples of how and why PK-12 institutions and their partners use design thinking to address systemic change. Learners will develop an action plan to experiment using the design process to address a problem in their own school communities. - -This course has been funded by Microsoft and is part of the Microsoft K-12 Education Leadership initiative developed to provide resources to K-12 school leaders around the world as they address the unique needs of their schools in a changing educational and technology landscape.",YES,,6,5,https://openlearninglibrary.mit.edu/asset-v1:MITx+11.155x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+11.155x+1T2019+type@asset+block@course_image.jpg -11.405x,Business & Management,,,Social Sciences,Economics,Urban Studies,,,J. Phillip Thompson,Katrin Kaeufer,Lily Steponaitis,Calvin Thompson,,,,Undergraduate,MITx,English,MITx+11.405x+2T2020,Just Money: Banking as if Society Mattered,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+11.405x+2T2020/about,"Do you know what your bank does with your money? What is the role of a bank in producing societal well-being? - -This course looks into banks that operate differently, namely, “just banks"" that use capital and finance as a tool to address social and ecological challenges. - -This course is for anyone who wants to understand the unique role banks play as intermediaries in our economy and how they can leverage that position to produce positive social, environmental, and economic change. - -The instructors of this course have worked for over 15 years with just banks from around the world, as well as in the fields of community development, economic democracy, and social change. - -No previous knowledge of finance or banking is needed to take this course.",YES,,25.3,3.5,https://openlearninglibrary.mit.edu/asset-v1:MITx+11.405x+2T2020+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+11.405x+2T2020+type@asset+block@course_image.jpg -11.550x,Engineering,,,Engineering ,Systems Engineering,Urban Studies,,,Chris Zegras,Robin Chase,"Natalia Barbour,",,,,,Undergraduate,MITx,English,MITx+11.550x+1T2021,Leveraging Urban Mobility Disruptions to Create Better Cities,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+11.550x+1T2021/about,"Over the next 8 sessions, this course will explore a wide variety of topics that relate to emerging new mobility systems and learn how new mobility can be leveraged to address and promote equity, improve health outcomes, and increase accessibility. The course material is designed to have a global impact by taking advantage of an established network of academic partners and practitioners, each bringing relevant expertise and representing distinct empirical settings. The international nature of this course will allow you to gain multiple social perspectives and familiarity with transportation challenges and solutions from different parts of the world. - -Guided by the Shared Mobility Principles for Livable Cities and taught by transportation professors from Europe, Asia, Latin America, Africa, and the United States, the course provides insights into urban mobility challenges and opportunities and how the emerging new mobility paradigm can be effectively leveraged to create better, more equitable cities. The course is led by a team including Chris Zegras (MIT), Jinhua Zhao (MIT), Carlos Pardo (NUMO), and mobility entrepreneur Robin Chase, and features interviews with preeminent entrepreneurs, city planners, community development experts, and mobility justice advocates. - -Topics will include land use and urban form, new mobility business models, pricing, policy, technology, and data. We will likewise reflect on the importance of designing new mobility systems for equity, health, and the environment. Additionally, this second edition of the course will also address questions of racial justice within the transportation field. - -This course is recommended to professionals, government officials, and anyone else currently in the field of transportation or urban planning, but also is open to those interested in learning more about this topic. - -",YES,,10.1,6,https://openlearninglibrary.mit.edu/asset-v1:MITx+11.550x+1T2021+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+11.550x+1T2021+type@asset+block@course_image.jpg -12.340x,Energy & Earth Sciences,,,Science & Math,Earth Science,Climate Science ,,,Kerry Emanuel,Dan Cziczo,David McGee,,,,,Undergraduate,MITx,English,MITx+12.340x+1T2020,Global Warming Science,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+12.340x+1T2020/about,"12.340x introduces the basic science underpinning our knowledge of the climate system, how climate has changed in the past, and how it may change in the future. The course focuses on the fundamental energy balance in the climate system, between incoming solar radiation and outgoing infrared radiation, and how this balance is affected by greenhouse gases. We will also discuss physical processes that shape the climate, such as atmospheric and oceanic convection and large-scale circulation, solar variability, orbital mechanics, and aerosols, as well as the evidence for past and present climate change. We will discuss climate models of varying degrees of complexity, and you will be able to run a model of a single column of the Earth's atmosphere, which includes many of the important elements of simulating climate change. Together, this range of topics forms the scientific basis for our understanding of anthropogenic (human-influenced) climate change. - -We will not cover issues regarding policy responses to climate change. Rather, Global Warming Science is designed to be a strictly scientific introduction to this important topic. - -12.340x is geared toward students with some mathematical and scientific background, but does not require any prior knowledge of climate or atmospheric science. See the prerequisites section for more details. - -Course Structure -The course will be divided into weekly sections which will be released sequentially. Each section will include a set of lecture videos and practice exercises that students will be expected to work through. Additional background readings may be assigned, all of which will be sourced from material freely available online. The course will be graded based on weekly online problem sets, as well as an online final exam. -",YES,,13.3,10,https://openlearninglibrary.mit.edu/asset-v1:MITx+12.340x+1T2020+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+12.340x+1T2020+type@asset+block@course_image.jpg -15.053x,Math,,,Science & Math,Mathematics,Operations,,,James Orlin,Khizar Qureshi,,,,,,Undergraduate,MITx,English,MITx+15.053x+3T2016,Optimization Methods in Business Analytics,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+15.053x+3T2016/about,"Optimization is the search for the best and most effective solution. In this mathematics course, we will examine optimization through a Business Analytics lens. You will be introduced to the to the theory, algorithms, and applications of optimization. Linear and integer programming will be taught both algebraically and geometrically, and then applied to problems involving data. Students will develop an understanding of algebraic formulations, and use Julia/JuMP for computation. Theoretical components of the course are made approachable, and require no formal background in linear algebra or calculus. - -The recommended audience for this course is undergraduates, as well as professionals interested in using optimization software. The content in this course has applications in logistics, marketing, project management, finance, statistics and machine learning. - -Most of the course material will be covered in lecture and recitation videos, and only an optional textbook, available at no cost, will be used. - -Students interested in the material prior to deciding on course enrollment can visit the MIT Open Courseware version of 15.053 Spring 2013. The topics of the 2013 subject were optimization modeling, algorithms, and theory. As a six week subject, 15.053x covers about half of the material of the 2013 subject. The primary focus of 15.053x is optimization modeling.",YES,,6.4,10,https://openlearninglibrary.mit.edu/asset-v1:MITx+15.053x+3T2016+type@asset+block@15.053xCourseImage_copy.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+15.053x+3T2016+type@asset+block@15.053xCourseImage_copy.png -15.480x,Biology & Life Sciences,Business & Management,Economics & Finance,Science & Math,Biology,Finance & Accounting,,,Andrew W. Lo,Harvey F. Lodish,Zied Ben Chaouch,,,,,Undergraduate,MITx,English,MITx+15.480x+3T2021,The Science and Business of Biotechnology,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+15.480x+3T2021/about,"This course focuses on early-stage biotechnology companies, with particular emphasis on understanding the underlying science, technology, and disease targets—together with the application of novel business structures and financing methods—to facilitate drug discovery, clinical development, and greater patient access to new therapies. - -Current research is enhancing our understanding of the genetic, molecular, and cellular bases of many human diseases, and is leading to many new types of biotherapeutics that we will cover in this course, including recombinant therapeutic proteins; monoclonal antibodies and antibody drug conjugates; cancer immunotherapies, replacement cells and genetically engineered cells; and nucleic acid and gene therapies. Translating these discoveries into drugs and diagnostics increasingly requires the establishment of for-profit companies, but funding for early-stage development of novel therapies is becoming scarcer, especially for therapeutics for “rare” diseases that affect small populations. The dearth of funding for early-stage biotherapeutics companies in the so-called “Valley of Death” can be attributed to several factors, but a common thread is increasing financial risks in the biopharma industry and greater uncertainty surrounding the scientific, medical, economic, political, and academic environments within the biomedical ecosystem. Increasing risk and uncertainty inevitably leads to an outflow of capital as investors and other stakeholders seek more attractive opportunities in other industries. - -By applying financial techniques such as portfolio theory, securitization, and derivative securities to biomedical contexts, more efficient business and funding structures can be developed to reduce financial risks, lower the cost of capital, and bring more life-saving therapies to patients faster. Thus this course will also cover basic financial analysis for the life-sciences professional; the historical financial risks and returns of the biotech and pharmaceutical industries; the evaluation of the science and business potential as well as the mechanics of financing biotech startups; capital budgeting for biopharmaceutical companies; and applications of financial engineering in drug royalty investment companies, biomedical megafunds, drug approval swaps, and life sciences investment banking. - -",YES,,50.1,6,https://openlearninglibrary.mit.edu/asset-v1:MITx+15.480x+3T2021+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+15.480x+3T2021+type@asset+block@course_image.jpg -15.481x,Economics & Finance,Health & Safety,,Business & Management,Organizations & Leadership,Finance & Accounting,,,Andrew W. Lo,Zied Ben Chaouch,,,,,,Graduate,MITx,English,MITx+15.481x+1T2021,Adaptive Markets: Financial Market Dynamics and Human Behavior,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+15.481x+1T2021/about,"This course focuses on early-stage biotechnology companies, with particular emphasis on understanding the underlying science, technology, and disease targets—together with the application of novel business structures and financing methods—to facilitate drug discovery, clinical development, and greater patient access to new therapies. - -Current research is enhancing our understanding of the genetic, molecular, and cellular bases of many human diseases, and is leading to many new types of biotherapeutics that we will cover in this course, including recombinant therapeutic proteins; monoclonal antibodies and antibody drug conjugates; cancer immunotherapies, replacement cells and genetically engineered cells; and nucleic acid and gene therapies. Translating these discoveries into drugs and diagnostics increasingly requires the establishment of for-profit companies, but funding for early-stage development of novel therapies is becoming scarcer, especially for therapeutics for “rare” diseases that affect small populations. The dearth of funding for early-stage biotherapeutics companies in the so-called “Valley of Death” can be attributed to several factors, but a common thread is increasing financial risks in the biopharma industry and greater uncertainty surrounding the scientific, medical, economic, political, and academic environments within the biomedical ecosystem. Increasing risk and uncertainty inevitably leads to an outflow of capital as investors and other stakeholders seek more attractive opportunities in other industries. - -By applying financial techniques such as portfolio theory, securitization, and derivative securities to biomedical contexts, more efficient business and funding structures can be developed to reduce financial risks, lower the cost of capital, and bring more life-saving therapies to patients faster. Thus this course will also cover basic financial analysis for the life-sciences professional; the historical financial risks and returns of the biotech and pharmaceutical industries; the evaluation of the science and business potential as well as the mechanics of financing biotech startups; capital budgeting for biopharmaceutical companies; and applications of financial engineering in drug royalty investment companies, biomedical megafunds, drug approval swaps, and life sciences investment banking. -",YES,,52.3,8,https://openlearninglibrary.mit.edu/asset-v1:MITx+15.481x+1T2021+type@asset+block@course_image.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+15.481x+1T2021+type@asset+block@course_image.png -15.482x,Biology & Life Sciences,Business & Management,Economics & Finance,Science & Math,Biology,Finance & Accounting,,,Andrew W. Lo,Shomesh Chaudhuri,Zied Ben Chaouch,,,,,Undergraduate,MITx,English,MITx+15.482x+1T2019,Healthcare Finance,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+15.482x+1T2019/about,"Funding for fundamental science and early-stage translational medicine is becoming scarcer, and at the worst possible time—when we now have the scientific and engineering expertise to make major breakthroughs in our understanding of the molecular basis of many deadly diseases and how to treat or prevent them. The dearth of funding for translational medicine in the so-called “Valley of Death” can be attributed to several factors, but a common thread among them is increasing financial risks in the biopharma industry and greater uncertainty surrounding the economic, regulatory, and political environments within the biomedical ecosystem. Increasing risk and uncertainty inevitably leads to an outflow of capital as investors and other stakeholders seek more attractive opportunities in other industries. - -By applying financial techniques such as portfolio theory, securitization, and option pricing to biomedical contexts, more efficient funding structures can be developed to reduce financial risks, lower the cost of capital, and bring more life-saving therapies to patients faster. By taking this course, students will gain the background, resources, and framework to influence the healthcare industry.",YES,,13,6,https://openlearninglibrary.mit.edu/asset-v1:MITx+15.482x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+15.482x+1T2019+type@asset+block@course_image.jpg +OLL Course,edX Subject 1,edX Subject 2,edX Subject 3,MITxO Primary Parent,MITxO Primary Child,MITxO Adopted Secondary Child ,OCW Pointer Page Topic 1,OCW Pointer Page Topic 2,Instructor 1,Instructor 2,Instructor 3,Instructor 4,Instructor 5,Instructor 6,,Level,Offered by,Language,readable_id,title,url,description,published,License CC,Duration,Student Effort,Course Image URL,Course Image URL Flat +18.031,,,,Science & Math,Mathematics,Algorithms and Data Structures,,,Philip Pearce,,,,,,,Undergraduate,OCW,English,OCW+18.031+2019_Spring,System Functions and the Laplace Transform,https://openlearninglibrary.mit.edu/courses/course-v1:OCW+18.031+2019_Spring/about,Scientists and engineers understand the world through differential equations. You can too.,YES,YES,13,6,https://openlearninglibrary.mit.edu/asset-v1:OCW+18.031+2019_Spring+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:OCW+18.031+2019_Spring+type@asset+block@course_image.jpg +18.05,,,,Science & Math,Mathematics,Data Science,,,Jeremy Orloff,Jennifer French Kamrin,,,,,,Undergraduate,OCW,English,MITx+18.05r_10+2022_Summer,Introduction to Probability and Statistics,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.05r_10+2022_Summer/about,"This course provides an elementary introduction to probability and statistics with applications. Topics include basic combinatorics, random variables, probability distributions, Bayesian inference, hypothesis testing, confidence intervals, and linear regression. + +These same course materials, including interactive components (online reading questions and problem checkers) are available on MIT's Open Learning Library, which is free to use. You have the option to enroll and track your progress, or you can view and use the materials without enrolling.",YES,YES,14,14,https://openlearninglibrary.mit.edu/asset-v1:MITx+18.05r_10+2022_Summer+type@asset+block@mit18_05_s22_chp.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+18.05r_10+2022_Summer+type@asset+block@mit18_05_s22_chp.jpg +0.501x,Education & Teacher Training,,,Education & Teaching,Pedagogy and Curriculum,Digital Learning,,,Justin Reich,Elizabeth Huttner-Loan,Alyssa Napier,,,,,Graduate,MITx,English,MITx+0.501x+2T2019,Envisioning the Graduate of the Future,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+0.501x+2T2019/about,Embark on a collaborative and exploratory design process to reflect on the purpose of secondary school. Create a shareable artifact that conveys what you and your community believe a secondary school graduate should know and be able to do.,YES,YES,4,4,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.501x+2T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.501x+2T2019+type@asset+block@course_image.jpg +0.502x,Education & Teacher Training,,,Education & Teaching,Educational Policy,Digital Learning,,,Justin Reich,Elizabeth Huttner-Loan,,,,,,Undergraduate,MITx,English,MITx+0.502x+1T2019,Competency-Based Education,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+0.502x+1T2019/about,"An overview of competency-based education in schools, presenting ideas, inspiration, strategies, and challenges. ",YES,YES,6,,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.502x+1T2019+type@asset+block@course_image.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.502x+1T2019+type@asset+block@course_image.png +0.503x,Education & Teacher Training,,,Education & Teaching,Pedagogy and Curriculum,Digital Learning,,,Justin Reich,H. Richard Milner IV,,,,,,Undergraduate,MITx,English,MITx+0.503x+T2020,Becoming a More Equitable Educator,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+0.503x+T2020/about,"Explore mindsets and practices that help all students, especially underserved students, to thrive and feel valued.",YES,YES,15,4,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.503x+T2020+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.503x+T2020+type@asset+block@course_image.jpg +0.504x,Education & Teacher Training,,,Education & Teaching,Pedagogy and Curriculum,Digital Learning,,,Justin Reich,Sam Wineburg,,,,,,Undergraduate,MITx,English,MITx+0.504x+3T2020,Sorting Truth From Fiction: Civic Online Reasoning,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+0.504x+3T2020/about,"Learn teaching practices that help students become savvy consumers of digital information. + +Online misinformation is an urgent challenge faced by every country around the globe. Multiple studies have shined a light on people's difficulty in distinguishing truth from fiction, reliable information from sham. As we approach the November 2020 election, we can expect our screens to be flooded, even more so, with digital content that plays fast and loose with the truth. + +With educators from around the world and faculty from MIT and Stanford University, you will learn quick and effective practices for evaluating information online that you can bring back to your classroom. These practices have been distilled from observations with professional fact-checkers from the nation's most prestigious media outlets from across the political spectrum. Through reading activities, classroom practice lessons and assignments, you will learn how to teach the skills needed for making thoughtful judgments about online content. + +At the end of the course, you will have a better understanding of strategies to enhance your students' ability to evaluate information and to avoid common pitfalls of misinformation at a time when we need it most.",YES,,8.7,4,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.504x+3T2020+type@asset+block@course_image.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.504x+3T2020+type@asset+block@course_image.png +0.SolveX,Business & Management,,,Business & Management,Entrepreneurship,Digital Learning ,,,Anjali Sastry,,,,,,,Undergraduate,MITx,English,MITx+0.SolveX+2T2021,Business and Impact Planning for Social Enterprises,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+0.SolveX+2T2021/about,"Are you a social entrepreneur? Learn how to describe and share your potential impact, theory of change, plans to scale with a global community. This course is run by Solve, an initiative of MIT that advances social entrepreneurs and early-stage startups solving the world?s most pressing challenges.",YES,,6.4,4,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.SolveX+2T2021+type@asset+block@course_image.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+0.SolveX+2T2021+type@asset+block@course_image.png +11.154x,Education & Teacher Training,,,Education & Teaching,Faculty Leadership,Educational Technology,,,Justin Reich,Peter Senge,,,,,,Graduate,MITx,English,MITx+11.154x+3T2018,Launching Innovation in Schools,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+11.154x+3T2018/about,Become a change leader and take the first step towards launching initiatives to improve teaching and learning.,YES,,13,2,https://openlearninglibrary.mit.edu/asset-v1:MITx+11.154x+3T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+11.154x+3T2018+type@asset+block@course_image.jpg +11.155x,Education & Teacher Training,,,Education & Teaching,Educational Policy,Systems Thinking,,,Justin Reich,Elizabeth Huttner-Loan,Alyssa Napier,,,,,Graduate,MITx,English,MITx+11.155x+1T2019,Design Thinking for Leading and Learning,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+11.155x+1T2019/about,A hands-on course for education leaders to learn about design thinking and explore how it can transform classroom learning and school communities.,YES,,6,5,https://openlearninglibrary.mit.edu/asset-v1:MITx+11.155x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+11.155x+1T2019+type@asset+block@course_image.jpg +11.405x,Business & Management,,,Social Sciences,Economics,Urban Studies,,,J. Phillip Thompson,Katrin Kaeufer,Lily Steponaitis,Calvin Thompson,,,,Undergraduate,MITx,English,MITx+11.405x+2T2020,Just Money: Banking as if Society Mattered,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+11.405x+2T2020/about,Learn how banks can use capital as a tool to promote social and environmental wellbeing.,YES,,25.3,3.5,https://openlearninglibrary.mit.edu/asset-v1:MITx+11.405x+2T2020+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+11.405x+2T2020+type@asset+block@course_image.jpg +11.550x,Engineering,,,Engineering ,Systems Engineering,Urban Studies,,,Chris Zegras,Robin Chase,"Natalia Barbour,",,,,,Undergraduate,MITx,English,MITx+11.550x+1T2021,Leveraging Urban Mobility Disruptions to Create Better Cities,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+11.550x+1T2021/about,"This course aims to bridge the knowledge gap between academically oriented content, practice, and entrepreneurship and teach urban mobility through the lens of dynamic reality on-the-ground.",YES,,10.1,6,https://openlearninglibrary.mit.edu/asset-v1:MITx+11.550x+1T2021+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+11.550x+1T2021+type@asset+block@course_image.jpg +12.340x,Energy & Earth Sciences,,,Science & Math,Earth Science,Climate Science ,,,Kerry Emanuel,Dan Cziczo,David McGee,,,,,Undergraduate,MITx,English,MITx+12.340x+1T2020,Global Warming Science,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+12.340x+1T2020/about,"Learn about the physics, chemistry, biology, and geology of the earth's climate system.",YES,,13.3,10,https://openlearninglibrary.mit.edu/asset-v1:MITx+12.340x+1T2020+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+12.340x+1T2020+type@asset+block@course_image.jpg +15.053x,Math,,,Science & Math,Mathematics,Operations,,,James Orlin,Khizar Qureshi,,,,,,Undergraduate,MITx,English,MITx+15.053x+3T2016,Optimization Methods in Business Analytics,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+15.053x+3T2016/about,Learn how to use optimization methodologies and modeling approaches to effectively analyze data.,YES,,6.4,10,https://openlearninglibrary.mit.edu/asset-v1:MITx+15.053x+3T2016+type@asset+block@15.053xCourseImage_copy.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+15.053x+3T2016+type@asset+block@15.053xCourseImage_copy.png +15.480x,Biology & Life Sciences,Business & Management,Economics & Finance,Science & Math,Biology,Finance & Accounting,,,Andrew W. Lo,Harvey F. Lodish,Zied Ben Chaouch,,,,,Undergraduate,MITx,English,MITx+15.480x+3T2021,The Science and Business of Biotechnology,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+15.480x+3T2021/about,"This course focuses on early-stage biotechnology companies, with particular emphasis on understanding the underlying science, technology, and disease targets'together with the application of novel business structures and financing methods'to facilitate drug discovery, clinical development, and greater patient access to new but potentially high-cost therapies.",YES,,50.1,6,https://openlearninglibrary.mit.edu/asset-v1:MITx+15.480x+3T2021+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+15.480x+3T2021+type@asset+block@course_image.jpg +15.481x,Economics & Finance,Health & Safety,,Business & Management,Organizations & Leadership,Finance & Accounting,,,Andrew W. Lo,Zied Ben Chaouch,,,,,,Graduate,MITx,English,MITx+15.481x+1T2021,Adaptive Markets: Financial Market Dynamics and Human Behavior,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+15.481x+1T2021/about,"A completely new way of thinking about financial markets, institutions, and innovation that reconciles human behavior with market efficiency using concepts from evolutionary biology, cognitive neuroscience, and artificial intelligence.",YES,,52.3,8,https://openlearninglibrary.mit.edu/asset-v1:MITx+15.481x+1T2021+type@asset+block@course_image.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+15.481x+1T2021+type@asset+block@course_image.png +15.482x,Biology & Life Sciences,Business & Management,Economics & Finance,Science & Math,Biology,Finance & Accounting,,,Andrew W. Lo,Shomesh Chaudhuri,Zied Ben Chaouch,,,,,Undergraduate,MITx,English,MITx+15.482x+1T2019,Healthcare Finance,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+15.482x+1T2019/about,"This course covers the role of finance in the healthcare industry, with particular emphasis on the application of novel financing methods to facilitate drug discovery, clinical development, and greater patient access to high-cost therapies.",YES,,13,6,https://openlearninglibrary.mit.edu/asset-v1:MITx+15.482x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+15.482x+1T2019+type@asset+block@course_image.jpg 16.00x,Engineering,,,Engineering ,Aerospace Engineering,"Mechanical Engineering -",,,Jeffrey Hoffman,,,,,,,Undergraduate,MITx,English,MITx+16.00x+2T2019,Introduction to Aerospace Engineering: Astronautics and Human Spaceflight,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+16.00x+2T2019/about,"Spaceflight is exciting, and you don’t have to be a “Rocket Scientist” to share in the excitement! 16.00x makes the basics of spaceflight accessible to everyone. Join MIT Professor Jeffrey Hoffman, a former NASA astronaut who made five spaceflights and was the first astronaut to log 1000 hours on the Space Shuttle, as he teaches you the core principles behind space travel and exploration. The course will cover how rockets work, how spacecraft move in orbit, how we create artificial environments inside spacecraft to keep astronauts alive and healthy, what it’s like living in a world without gravity, how the human body adapts to space, and how spacewalks happen, plus more. Many lessons will be illustrated with Professor Hoffman’s own experiences in space. -",YES,,8,3,https://openlearninglibrary.mit.edu/asset-v1:MITx+16.00x+2T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+16.00x+2T2019+type@asset+block@course_image.jpg -16.885x,Engineering,,,Engineering ,Aerospace Engineering,Systems Engineering,,,Jeffrey Hoffman,Aaron Cohen,,,,,,Graduate,MITx,English,MITx+16.885x+3T2019,Engineering the Space Shuttle,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+16.885x+3T2019/about,"For 30 years the Space Shuttle enabled human spaceflight in the United States and partner nations. Learn all about the Shuttle with this unique course, which also serves as a unique historical record. Since the lecturers are the same people who designed, built and operated the Shuttle, this is a first-hand testimonial to the world’s first reusable spacecraft. - -This course examines how the Space Shuttle was designed and how its design was influenced by economics and politics. The course goes into detail on many of the Shuttle’s subsystems (e.g. rocket engines, thermal protection, aerodynamics, environmental control and life support, communications, etc.) and explains how the Shuttle was operated (launch, mission control, payloads, etc.). The course also uses the Space Shuttle to present the fundamentals of Systems Engineering. - -Students will gain a systems perspective on the complexities of Shuttle development and its operations. It explores both the Shuttle’s successes and its shortcomings and has valuable object lessons for future space initiatives. The Shuttle is a valuable case study in the advantages and difficulties involved in reusable space systems - particularly relevant today as reusability is a key requirement of many rockets and spacecraft currently under development. - -In addition, understanding how the Shuttle was first conceived and how it achieved governmental approval is relevant for understanding how politics and economics interact with technology on all large public programs. - -The lectures are organized in three fundamental sections: history and policy, technical design of Shuttle systems, and how the Shuttle was operated. Although the sections relate to one another, students can benefit from any of the sections independently. - -This course does not require advanced mathematics. It is targeted to students with a variety of interests including the history of human spaceflight, space policy, the design of human spaceflight systems, the operation of complex space systems, and principles of systems engineering.",YES,,12,5,https://openlearninglibrary.mit.edu/asset-v1:MITx+16.885x+3T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+16.885x+3T2019+type@asset+block@course_image.jpg -18.01.1x,Math,,,Science & Math,Mathematics,Algorithms and Data Structures,,,David Jerison,Gigliola Staffilani,Jennifer French Kamrin,Stephen Wang,,,,High School,MITx,English,MITx+18.01.1x+2T2019,Calculus 1A: Differentiation,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.1x+2T2019/about,"How does the final velocity on a zip line change when the starting point is raised or lowered by a matter of centimeters? What is the accuracy of a GPS position measurement? How fast should an airplane travel to minimize fuel consumption? The answers to all of these questions involve the derivative. - -But what is the derivative? You will learn its mathematical notation, physical meaning, geometric interpretation, and be able to move fluently between these representations of the derivative. You will discover how to differentiate any function you can think up, and develop a powerful intuition to be able to sketch the graph of many functions. You will make linear and quadratic approximations of functions to simplify computations and gain intuition for system behavior. You will learn to maximize and minimize functions to optimize properties like cost, efficiency, energy, and power. - -This course, in combination with Part 1, covers the AP* Calculus AB curriculum. - -This course, in combination with Parts 1 and 3, covers the AP* Calculus BC curriculum. - -Learn more about our High School and AP* Exam Preparation Courses - -This course was funded in part by the Wertheimer Fund. - -*Advanced Placement and AP are registered trademarks of the College Board, which was not involved in the production of, and does not endorse, these offerings. -",YES,,12,8,https://openlearninglibrary.mit.edu/asset-v1:MITx+18.01.1x+2T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+18.01.1x+2T2019+type@asset+block@course_image.jpg -18.01.2x,Math,,,Science & Math,Mathematics,Algorithms and Data Structures,,,David Jerison,Gigliola Staffilani,Jennifer French Kamrin,Karene Chu,,,,High School,MITx,English,MITx+18.01.2x+3T2019,Calculus 1B: Integration,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.2x+3T2019/about,"How long should the handle of your spoon be so that your fingers do not burn while mixing chocolate fondue? Can you find a shape that has finite volume, but infinite surface area? How does the weight of the rider change the trajectory of a zip line ride? These and many other questions can be answered by harnessing the power of the integral. - -But what is an integral? You will learn to interpret it geometrically as an area under a graph, and discover its connection to the derivative. You will encounter functions that you cannot integrate without a computer and develop a big bag of tricks to attack the functions that you can integrate by hand. The integral is vital in engineering design, scientific analysis, probability and statistics. You will use integrals to find centers of mass, the stress on a beam during construction, the power exerted by a motor, and the distance traveled by a rocket. - -This course, in combination with Part 1, covers the AP* Calculus AB curriculum. - -This course, in combination with Parts 1 and 3, covers the AP* Calculus BC curriculum. - -Learn more about our High School and AP* Exam Preparation Courses - -This course was funded in part by the Wertheimer Fund. - -*Advanced Placement and AP are registered trademarks of the College Board, which was not involved in the production of, and does not endorse, these offerings.",YES,,16,8,https://openlearninglibrary.mit.edu/asset-v1:MITx+18.01.2x+3T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+18.01.2x+3T2019+type@asset+block@course_image.jpg -18.01.3x,Math,,,Science & Math,Mathematics,Algorithms and Data Structures,,,David Jerison,Gigliola Staffilani,Jennifer French Kamrin,Karene Chu,,,,Undergraduate,MITx,English,MITx+18.01.3x+1T2020,Calculus 1C: Coordinate Systems & Infinite Series,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.3x+1T2020/about,"How did Newton describe the orbits of the planets? To do this, he created calculus. But he used a different coordinate system more appropriate for planetary motion. We will learn to shift our perspective to do calculus with parameterized curves and polar coordinates. And then we will dive deep into exploring the infinite to gain a deeper understanding and powerful descriptions of functions. - -How does a computer make accurate computations? Absolute precision does not exist in the real world, and computers cannot handle infinitesimals or infinity. Fortunately, just as we approximate numbers using the decimal system, we can approximate functions using series of much simpler functions. These approximations provide a powerful framework for scientific computing and still give highly accurate results. They allow us to solve all sorts of engineering problems based on models of our world represented in the language of calculus. - -Changing Perspectives -Parametric Equations -Polar Coordinates -Series and Polynomial Approximations -Series and Convergence -Taylor Series and Power Series -The three modules in this series are being offered as an XSeries on edX. Please visit Single Variable Calculus XSeries Program Page to learn more and to enroll in the modules. - -This course, in combination with Parts 1 and 2, covers the AP* Calculus BC curriculum. - -Learn more about our High School and AP* Exam Preparation Courses - -This course was funded in part by the Wertheimer Fund. - -*Advanced Placement and AP are registered trademarks of the College Board, which was not involved in the production of, and does not endorse, these offerings. - -",YES,,13,8,https://openlearninglibrary.mit.edu/asset-v1:MITx+18.01.3x+1T2020+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+18.01.3x+1T2020+type@asset+block@course_image.jpg -18.06SC,,,,Science & Math,Mathematics,Algorithms and Data Structures ,Science & Math,Mathematics,Gilbert Strang,,,,,,,Undergraduate,OCW,English,OCW+18.06SC+2T2019,Linear Algebra,https://openlearninglibrary.mit.edu/courses/course-v1:OCW+18.06SC+2T2019/about,"This course covers matrix theory and linear algebra, emphasizing topics useful in other disciplines. Linear algebra is a branch of mathematics that studies systems of linear equations and the properties of matrices. The concepts of linear algebra are extremely useful in physics, economics and social sciences, natural sciences, and engineering. Due to its broad range of applications, linear algebra is one of the most widely taught subjects in college-level mathematics (and increasingly in high school). - -",YES,YES,13,,https://openlearninglibrary.mit.edu/asset-v1:OCW+18.06SC+2T2019+type@asset+block@LinearAlgebra18.06.jpg,https://openlearninglibrary.mit.edu/asset-v1:OCW+18.06SC+2T2019+type@asset+block@LinearAlgebra18.06.jpg -22.011x,Energy & Earth Sciences,Engineering,Science,Science & Math,Earth Science,Nuclear Engineering,,,Jacopo Buongiorno,Anne White,Michael Short,John Parsons,,,,Undergraduate,MITx,English,MITx+22.011x+3T2018,"Nuclear Energy: Science, Systems and Society",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+22.011x+3T2018/about,"Nuclear Energy: Science, Systems and Society offers an introduction to the basic physics of nuclear energy and radiation, with an emphasis on the unique attributes and challenges of nuclear energy as a low-carbon solution. Peaceful applications of ionizing radiation to help mankind, such as reactors for materials science research, nuclear medicine, and security initiatives, will be introduced. - -The course will explore fission energy, establishing the scientific, engineering, and economic basis for fission reactors, and will describe the state of the art in nuclear reactor technology. - -We will also learn about magnetic fusion energy research, with lectures covering the scientific and engineering basis of tokamaks, the state of the art in world fusion experiments, and the MIT vision for high-magnetic field fusion reactor. - -In addition, the course also includes an optional hands-on section, where you will be able to acquire radiation detectors and use them to explore radiation in the world around them, using guided exercises available on-line.",YES,,9,10,https://openlearninglibrary.mit.edu/asset-v1:MITx+22.011x+3T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+22.011x+3T2018+type@asset+block@course_image.jpg +",,,Jeffrey Hoffman,,,,,,,Undergraduate,MITx,English,MITx+16.00x+2T2019,Introduction to Aerospace Engineering: Astronautics and Human Spaceflight,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+16.00x+2T2019/about,"Spaceflight is exciting, and you don?t have to be a ?Rocket Scientist? to share in the excitement! 16.00x makes the basics of spaceflight accessible to everyone.",YES,,8,3,https://openlearninglibrary.mit.edu/asset-v1:MITx+16.00x+2T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+16.00x+2T2019+type@asset+block@course_image.jpg +16.885x,Engineering,,,Engineering ,Aerospace Engineering,Systems Engineering,,,Jeffrey Hoffman,Aaron Cohen,,,,,,Graduate,MITx,English,MITx+16.885x+3T2019,Engineering the Space Shuttle,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+16.885x+3T2019/about,"This is a course about the Space Shuttle and about Systems Engineering, taught by the people who designed, built and operated the Shuttle, the world?s first reusable spacecraft, which for 30 years enabled human space flight in the United States.",YES,,12,5,https://openlearninglibrary.mit.edu/asset-v1:MITx+16.885x+3T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+16.885x+3T2019+type@asset+block@course_image.jpg +18.01.1x,Math,,,Science & Math,Mathematics,Algorithms and Data Structures,,,David Jerison,Gigliola Staffilani,Jennifer French Kamrin,Stephen Wang,,,,High School,MITx,English,MITx+18.01.1x+2T2019,Calculus 1A: Differentiation,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.1x+2T2019/about,"Discover the derivative---what it is, how to compute it, and when to apply it in solving real world problems. Part 1 of 3.",YES,,12,8,https://openlearninglibrary.mit.edu/asset-v1:MITx+18.01.1x+2T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+18.01.1x+2T2019+type@asset+block@course_image.jpg +18.01.2x,Math,,,Science & Math,Mathematics,Algorithms and Data Structures,,,David Jerison,Gigliola Staffilani,Jennifer French Kamrin,Karene Chu,,,,High School,MITx,English,MITx+18.01.2x+3T2019,Calculus 1B: Integration,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.2x+3T2019/about,Discover the integral - what it is and how to compute it. See how to use calculus to model real world phenomena. Part 2 of 3.,YES,,16,8,https://openlearninglibrary.mit.edu/asset-v1:MITx+18.01.2x+3T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+18.01.2x+3T2019+type@asset+block@course_image.jpg +18.01.3x,Math,,,Science & Math,Mathematics,Algorithms and Data Structures,,,David Jerison,Gigliola Staffilani,Jennifer French Kamrin,Karene Chu,,,,Undergraduate,MITx,English,MITx+18.01.3x+1T2020,Calculus 1C: Coordinate Systems & Infinite Series,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+18.01.3x+1T2020/about,Master the calculus of curves and coordinate systems; approximate functions with polynomials and infinite series. Part 3 of 3.,YES,,13,8,https://openlearninglibrary.mit.edu/asset-v1:MITx+18.01.3x+1T2020+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+18.01.3x+1T2020+type@asset+block@course_image.jpg +18.06SC,,,,Science & Math,Mathematics,Algorithms and Data Structures ,Science & Math,Mathematics,Gilbert Strang,,,,,,,Undergraduate,OCW,English,OCW+18.06SC+2T2019,Linear Algebra,https://openlearninglibrary.mit.edu/courses/course-v1:OCW+18.06SC+2T2019/about,"This course covers matrix theory and linear algebra, emphasizing topics useful in other disciplines such as physics, economics and social sciences, natural sciences, and engineering. It parallels the combination of theory and applications in Professor Strang's textbook Introduction to Linear Algebra.",YES,YES,13,,https://openlearninglibrary.mit.edu/asset-v1:OCW+18.06SC+2T2019+type@asset+block@LinearAlgebra18.06.jpg,https://openlearninglibrary.mit.edu/asset-v1:OCW+18.06SC+2T2019+type@asset+block@LinearAlgebra18.06.jpg +22.011x,Energy & Earth Sciences,Engineering,Science,Science & Math,Earth Science,Nuclear Engineering,,,Jacopo Buongiorno,Anne White,Michael Short,John Parsons,,,,Undergraduate,MITx,English,MITx+22.011x+3T2018,"Nuclear Energy: Science, Systems and Society",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+22.011x+3T2018/about,"Learn how a nuclear reactor works, what the future of nuclear fusion looks like, and the numerous useful applications of nuclear radiation in four easy-to-follow modules, complemented with a chance to explore background radiation in your backyard.",YES,,9,10,https://openlearninglibrary.mit.edu/asset-v1:MITx+22.011x+3T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+22.011x+3T2018+type@asset+block@course_image.jpg 24.02x,Philosophy & Ethics,,,Humanities,Philosophy,Cognitive Science,,,Caspar Hare,Tamar Schapiro,Kieran Setiya,Cosmo Grant,David Balcarras,,,High School,MITx,English,MITx+24.02x+2T2020,Introduction to Ethics: Moral Problems and the Good Life,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+24.02x+2T2020/about,"This course has two goals. The first goal is to introduce you to key questions in ethics. -What makes your life go better or worse for you? -Can ethics be objective? -What are the main historical approaches in ethics? -What do you owe to others? -The second goal is to get you thinking rigorously about ethical questions yourself. This will help you develop your critical reasoning and argumentative skills more generally. - -Studying philosophy is valuable in itself, but it’s also excellent preparation for a wide variety of other fields. Philosophy majors do exceptionally well in the GRE, GMAT and LSAT, for example. -",YES,,11.3,7,https://openlearninglibrary.mit.edu/asset-v1:MITx+24.02x+2T2020+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+24.02x+2T2020+type@asset+block@course_image.jpg -24.09x,Philosophy & Ethics,,,Humanities,Philosophy,Cognitive Science,,,Alex Byrne,Cosmo Grant,,,,,,Undergraduate,MITx,English,MITx+24.09x+3T2019,Minds and Machines,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+24.09x+3T2019/about,"What is the relationship between the mind and the body? Can computers think? Do we perceive reality as it is? Can there be a science of consciousness? - -This course explores these questions and others. It is a thorough, rigorous introduction to contemporary philosophy of mind. - -According to many scientists and philosophers, explaining the nature of consciousness is the deepest intellectual challenge of all. If you find consciousness at all puzzling, this is a great place to start learning more. - -",YES,,12.6,4,https://openlearninglibrary.mit.edu/asset-v1:MITx+24.09x+3T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+24.09x+3T2019+type@asset+block@course_image.jpg -24.118x,Philosophy & Ethics,,,Humanities,Philosophy,Cognitive Science,,,Agustín Rayo,David Balcarras,Cosmo Grant,,,,,Undergraduate,MITx,English,MITx+24.118x+2T2020,Paradox and Infinity,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+24.118x+2T2020/about,"In Paradox and Infinity, you will be introduced to highlights from the intersection of philosophy and mathematics. - -The class is divided into three modules: - -Infinity: Learn about how some infinities are bigger than others, and explore the mind-boggling hierarchy of bigger and bigger infinities. -Time Travel and Free Will : Learn about whether time travel is logically possible, and whether it is compatible with free will. -Computability and Gödel's Theorem : Learn about how some mathematical functions are so complex, that no computer could possibly compute them. Use this result to prove Gödel's famous Incompleteness Theorem. -Paradox and Infinity is a math-heavy class, which presupposes that you feel comfortable with college-level mathematics and that you are familiar with mathematical proofs. - -Learners who display exceptional performance in the class are eligible to win the MITx Philosophy Award. High School students are eligible for that award and, in addition, the MITx High School Philosophy award. Please see the FAQ section below for additional information. - -Note: learners who do well in Paradox will have typically taken at least a couple of college-level classes in mathematics or computer science. On the other hand, Paradox does not presuppose familiarity with any particular branch of mathematics or computer science. You just need to feel comfortable in a mathematical setting.",YES,,11.1,5,https://openlearninglibrary.mit.edu/asset-v1:MITx+24.118x+2T2020+type@asset+block@course_image.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+24.118x+2T2020+type@asset+block@course_image.png -3.012S.1x,Chemistry,Engineering,Science,Science & Math,Chemistry,Materials Science and Engineering,,,Silvija Gradečak,,,,,,,Undergraduate,MITx,English,MITx+3.012S.1x+1T2019,"Structure of Materials, Part 1: Fundamentals of Materials Structure",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+3.012S.1x+1T2019/about,"Structure – or the arrangement of materials’ internal components – determines virtually everything about a material: its properties, its potential applications, and its performance within those applications. This course is the first in a three-part series from MIT’s Department of Materials Science and Engineering that explores the structure of a wide variety of materials with current-day engineering applications. Taken together, these three courses provide similar content to MIT’s sophomore-level materials structure curriculum. - -Part 1 begins with an introduction to amorphous materials. We explore glasses and polymers, learn about the factors that influence their structure, and learn how materials scientists measure and describe the structure of these materials. Then we begin a discussion of the crystalline state, exploring what it means for a material to be crystalline, how we describe periodic arrangement of atoms in a crystal, and how we can determine the structure of crystals through x-ray diffraction. - -If you would like to explore the structure of materials further, we encourage you to enroll in Part 2 and Part 3 of the course.",YES,,6,7,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.012S.1x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.012S.1x+1T2019+type@asset+block@course_image.jpg -3.012S.2x,Chemistry,Engineering,Science,Science & Math,Chemistry,Materials Science and Engineering,,,Silvija Gradečak,,,,,,,Undergraduate,MITx,English,MITx+3.012S.2x+1T2019,"Structure of Materials, Part 2: The Crystalline State",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+3.012S.2x+1T2019/about,"Structure – or the arrangement of materials’ internal components – determines virtually everything about a material: its properties, its potential applications, and its performance within those applications. This course is the first in a three-part series from MIT’s Department of Materials Science and Engineering that explores the structure of a wide variety of materials with current-day engineering applications. Taken together, these three courses provide similar content to MIT’s sophomore-level materials structure curriculum. - -Part 1 begins with an introduction to amorphous materials. We explore glasses and polymers, learn about the factors that influence their structure, and learn how materials scientists measure and describe the structure of these materials. Then we begin a discussion of the crystalline state, exploring what it means for a material to be crystalline, how we describe periodic arrangement of atoms in a crystal, and how we can determine the structure of crystals through x-ray diffraction. - -If you would like to explore the structure of materials further, we encourage you to enroll in Part 2 and Part 3 of the course.",YES,,5,9,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.012S.2x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.012S.2x+1T2019+type@asset+block@course_image.jpg -3.012S.3x,Chemistry,Engineering,Science,Science & Math,Chemistry,Materials Science and Engineering,,,Silvija Gradečak,,,,,,,Undergraduate,MITx,English,MITx+3.012S.3x+1T2019,"Structure of Materials, Part 3: Liquid Crystals, Defects, and Diffusion",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+3.012S.3x+1T2019/about,"Structure determines so much about a material: its properties, its potential applications, and its performance within those applications. This course is the finale in a three-part series from MIT’s Department of Materials Science and Engineering that explores the structure of a wide variety of materials with current-day engineering applications. Taken together, these three courses provide similar content to MIT’s sophomore-level materials structure curriculum. - -Part 3 begins with an exploration of quasi-, plastic, and liquid crystals. Next, we will learn how properties of materials are influenced and can be modified by structural defects. We will show that point defects are present in all crystals at finite temperatures and how their presence governs diffusion in materials. Next, we will explore dislocations in materials. We will introduce the descriptors that are used to describe dislocations, we will learn about dislocation motion and consider how dislocations dramatically affect the strength of materials. Finally, we will explore how defects can be used to strengthen materials, and we will learn about the properties of other structural defects such as stacking faults and grain boundaries. -",YES,,6,7,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.012S.3x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.012S.3x+1T2019+type@asset+block@course_image.jpg -3.15.1x,Engineering,,,Engineering,Materials Science and Engineering,Electrical Engineering,,,Caroline Ross,,,,,,,Undergraduate,MITx,English,MITX+3.15.1x+2T2017,Electronic Materials and Devices,https://openlearninglibrary.mit.edu/courses/course-v1:MITX+3.15.1x+2T2017/about,"In this engineering course, you will learn about diodes, bipolar junction transistors, MOSFETs and semiconductor properties. - -This course is part 1 of a series that explain the basis of the electrical, optical, and magnetic properties of materials including semiconductors, metals, organics, and insulators. You will learn how devices are built to take advantage of these properties. This is illustrated with a wide range of devices, placing a strong emphasis on new and emerging technologies.",YES,,5,10,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.15.2x+2T2017+type@asset+block@315Thumbnail.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.15.2x+2T2017+type@asset+block@315Thumbnail.png -3.15.2x,Engineering,,,Engineering,Materials Science and Engineering,Electrical Engineering,,,Caroline Ross,,,,,,,Undergraduate,MITx,English,MITx+3.15.2x+2T2017,Optical Materials and Devices,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+3.15.2x+2T2017/about,"In this engineering course, you will learn about photodetectors, solar cells (photovoltaics), displays, light emitting diodes, lasers, optical fibers, optical communications, and photonic devices. - -This course is part of a three-part series, which explains the basis of the electrical, optical, and magnetic properties of materials including semiconductors, metals, organics, and insulators. We will show how devices are built to take advantage of these properties. This is illustrated with a wide range of devices, placing a strong emphasis on new and emerging technologies.",YES,,6,10,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.15.2x+2T2017+type@asset+block@315Thumbnail.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.15.2x+2T2017+type@asset+block@315Thumbnail.png -3.15.3x,Engineering,,,Engineering,Materials Science and Engineering,Electrical Engineering,,,Caroline Ross,,,,,,,Undergraduate,MITx,English,MITx+3.15.3x+2T2017,Magnetic Materials and Devices,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+3.15.3x+2T2017/about,"In this engineering course, you will learn about magnetic materials and devices. Applications presented include magnetic data storage, motors, transformers, and spintronics. - -This course is part of a three-part series, which explains the basis of electrical, optical, and magnetic properties of materials including semiconductors, metals, organics, and insulators. We will show how devices are built to take advantage of these properties. This is illustrated with a wide range of devices, placing a strong emphasis on new and emerging technologies.",YES,,5,10,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.15.3x+2T2017+type@asset+block@315Thumbnail.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.15.3x+2T2017+type@asset+block@315Thumbnail.png -6.005.1x,Computer Science,,,"Data Science, Analytics & Computer Technology",Software Design and Engineering,Programming & Coding,,,Rob Miller,,,,,,,Undergraduate,MITx,English,MITx+6.005.1x+3T2016,Software Construction in Java,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+6.005.1x+3T2016/about,"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.",YES,YES,12,15,https://openlearninglibrary.mit.edu/asset-v1:MITx+6.005.1x+3T2016+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+6.005.1x+3T2016+type@asset+block@course_image.jpg -6.005.2x,Computer Science,,,"Data Science, Analytics & Computer Technology",Software Design and Engineering,Programming & Coding,,,Rob Miller,,,,,,,Undergraduate,MITx,English,MITx+6.005.2x+1T2017,Advanced Software Construction in Java,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+6.005.2x+1T2017/about,"This computer science course is the second of a two-course sequence on how to write good software using modern software engineering techniques. - -This course will dig deeper into what makes for ""good"" code -- safe from bugs, easy to understand, and ready for change. We will explore two paradigms for modern programming: (1) grammars, parsing, and recursive datatypes; and (2) concurrent programming with threads. - -This is a challenging and rigorous course that will help you take the next step on your way to becoming a skilled software engineer. - -",YES,YES,10,15,https://openlearninglibrary.mit.edu/asset-v1:MITx+6.005.2x+1T2017+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+6.005.2x+1T2017+type@asset+block@course_image.jpg -6.036x,Computer Science,,,"Data Science, Analytics & Computer Technology",Machine Learning,Algorithms and Data Structures ,,,Leslie Kaelbling,Tomás Lozano-Pérez,Isaac Chuang,Duane Boning,,,,Undergraduate,MITx,English,MITx+6.036+1T2019,Introduction to Machine Learning,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+6.036+1T2019/about,"This course introduces principles, algorithms, and applications of machine learning from the point of view of modeling and prediction. It includes formulation of learning problems and concepts of representation, over-fitting, and generalization. These concepts are exercised in supervised learning and reinforcement learning, with applications to images and to temporal sequences. - -",YES,,6,11,https://openlearninglibrary.mit.edu/asset-v1:MITx+6.036+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+6.036+1T2019+type@asset+block@course_image.jpg -6.042J,,,,"Data Science, Analytics & Computer Technology",Computer Science,Mathematics,"Data Science, Analytics & Computer Technology",Computer,Albert Meyer,Adam Chlipala,,,,,,Undergraduate,OCW,English,OCW+6.042J+2T2019,Mathematics for Computer Science,https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about,"This subject offers an interactive introduction to discrete mathematics oriented toward computer science and engineering. The subject coverage divides roughly into thirds: - -Fundamental concepts of mathematics: Definitions, proofs, sets, functions, relations. -Discrete structures: graphs, state machines, modular arithmetic, counting. -Discrete probability theory. -On completion of 6.042J, students will be able to explain and apply the basic methods of discrete (noncontinuous) mathematics in computer science. They will be able to use these methods in subsequent courses in the design and analysis of algorithms, computability theory, software engineering, and computer systems.",YES,YES,9,,https://openlearninglibrary.mit.edu/asset-v1:OCW+6.042J+2T2019+type@asset+block@6.042J_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:OCW+6.042J+2T2019+type@asset+block@6.042J_image.jpg -7.InTr_1,,,,Education & Teaching,Pedagogy and Curriculum,Educational Technology,Education & Teaching,Pedagogy and Curriculum,,,,,,,,Undergraduate,OCW,English,MITx+7.InT+2021_Fall,Inclusive Teaching Module,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+7.InT+2021_Fall/about,"Welcome to the Inclusive Teaching Module! We are so glad you are joining us. The Inclusive Teaching Module is both a standalone online resource for those looking to explore materials related to inclusive teaching as well as an integral part of a blended workshop available to use at your own institution. If you are looking to facilitate a blended workshop using this material, please navigate to the Facilitation Guide and Appendix section from the course outline to get started!",YES,YES,2,,https://openlearninglibrary.mit.edu/asset-v1:MITx+7.InT+2021_Fall+type@asset+block@7.InT_course_image-03.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+7.InT+2021_Fall+type@asset+block@7.InT_course_image-03.png -8.01.1x,Physics,Science,,Science & Math,Physics,Machine Learning,,,Peter Dourmashkin,Deepto Charkrabarty,Michelle Tomasik,Analia Barrantes,George Stephans,Anna Frebel,,Undergraduate,MITx,English,MITx+8.01.1x+3T2018,Mechanics: Kinematics and Dynamics,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.01.1x+3T2018/about,"Mechanics is the study of the physics of motion and how it relates to applied forces. It lays the foundation of understanding the world around us through the how and why of motion. This physics course is the first in a series of modules that covers calculus-based mechanics. This module reviews kinematics (the geometrical description of motion) in the context of one-dimensional, multi-dimensional, and circular motion. It also reviews Newton’s laws of motion and examines their application to a wide variety of cases.",YES,,6,11,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.01.1x+3T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.01.1x+3T2018+type@asset+block@course_image.jpg -8.01.2x,Physics,Science,,Science & Math,Physics,Machine Learning,,,Peter Dourmashkin,Deepto Charkrabarty,Michelle Tomasik,Analia Barrantes,George Stephans,Anna Frebel,,Undergraduate,MITx,English,MITx+8.01.2x+3T2018,Mechanics: Momentum and Energy,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.01.2x+3T2018/about,"This course is the second of a series of modules that cover calculus-based mechanics. You will learn about the concepts of momentum, impulse, energy, and work, as well as the powerful idea of conservation laws. You will apply these concepts to solve interesting mechanics problems such as collisions and rockets.",YES,,9,11,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.01.2x+3T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.01.2x+3T2018+type@asset+block@course_image.jpg -8.01.3x,Physics,Science,,Science & Math,Physics,Machine Learning,,,Peter Dourmashkin,Deepto Charkrabarty,Michelle Tomasik,Analia Barrantes,George Stephans,Anna Frebel,,Undergraduate,MITx,English,MITx+8.01.3x+1T2019,Mechanics: Rotational Dynamics,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.01.3x+1T2019/about,"This course is the third of a series of modules that cover calculus-based mechanics. You will explore rotational motion and learn about the concepts of torque and angular momentum. You will learn about the conservation of angular momentum, and use it with other conservation laws to solve complex problems in rotational dynamics. - -",YES,,6,11,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.01.3x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.01.3x+1T2019+type@asset+block@course_image.jpg -8.01.4x,Physics,Science,,Science & Math,Physics,Machine Learning,,,Peter Dourmashkin,Deepto Charkrabarty,Michelle Tomasik,Analia Barrantes,Aidan MacDonagh,,,Undergraduate,MITx,English,MITx+8.01.4x+1T2019,Mechanics: Simple Harmonic Motion,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.01.4x+1T2019/about,This is the fourth of a series of modules that cover calculus-based mechanics. You will explore simple harmonic motion through springs and pendulums. This short course will culminate in the ability to use the Taylor Formula to approximate a variety of other situations as simple harmonic motion.,YES,,4,11,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.01.4x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.01.4x+1T2019+type@asset+block@course_image.jpg -8.02.1x,Physics,Science,,Science & Math,Physics,Machine Learning,,,Peter Dourmashkin,Deepto Charkrabarty,Michelle Tomasik,Robert Redwine,Krishna Rajagopal,Kerstin Perez,,Undergraduate,MITx,English,MITx+8.02.1x+1T2019,Electricity and Magnetism: Electrostatics,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.02.1x+1T2019/about,"Electricity and Magnetism dominate much of the world around us – from the most fundamental processes in nature to cutting edge electronic devices. Electric and magnet fields arise from charged particles. Charged particles also feel forces in electric and magnetic fields. Maxwell’s equations, in addition to describing this behavior, also describe electromagnetic radiation. In this course, we focus on Electrostatics. We examine the forces between charges, electric fields, and electric potential, looking at different ways of calculating each. We also look at dipoles and the difference between conductors and insulators. The course ends by explaining capacitors and dielectrics.",YES,,7.1,12,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.02.1x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.02.1x+1T2019+type@asset+block@course_image.jpg -8.02.2x,Physics,Science,,Science & Math,Physics,Machine Learning,,,Peter Dourmashkin,Krishna Rajagopal,Kerstin Perez,Analia Barrantes,Michelle Tomasik,Robert Redwin,,Undergraduate,MITx,English,MITx+8.02.2x+2T2018,Electricity and Magnetism: Magnetic Fields and Forces,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.02.2x+2T2018/about,"Electricity and Magnetism dominate much of the world around us – from the most fundamental processes in nature to cutting edge electronic devices. Electric and magnet fields arise from charged particles. Charged particles also feel forces in electric and magnetic fields. Maxwell’s equations, in addition to describing this behavior, also describes electromagnetic radiation. - -In this course, we focus on magnetic fields and forces on charged particles in magnetic fields. We examine different ways of calculating the magnetic field, as well as introducing the ideas of current, resistance and simple direct current (DC) circuits. - -This is the second module in a series of three that are based on the MIT course: 8.02, Electricity and Magnetism, a required introductory physics class for all MIT undergraduates, which is being offered as an XSeries. Please visit to learn Introductory Electricity and Magnetism XSeries Program Page for more information and to enroll in all three modules. This introductory Electromagnetism physics course will require the use of calculus. -",YES,,6,12,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.02.2x+2T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.02.2x+2T2018+type@asset+block@course_image.jpg -8.02.3x,Physics,Science,,Science & Math,Physics,Machine Learning,,,Peter Dourmashkin,Krishna Rajagopal,Kerstin Perez,Analia Barrantes,Michelle Tomasik,Robert Redwin,,Undergraduate,MITx,English,MITx+8.02.3x+1T2019,Electricity and Magnetism: Maxwell’s Equations,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.02.3x+1T2019/about,"Electricity and Magnetism dominate much of the world around us – from the most fundamental processes in nature to cutting edge electronic devices. Electric and Magnet fields arise from charged particles. Charged particles also feel forces in electric and magnetic fields. Maxwell’s equations, in addition to describing this behavior, also describe electromagnetic radiation. - -In this course, we finish up this introduction to Electricity and Magnetism. We begin by thinking about magnetic fields that change in time, working through Faraday’s Law and Inductors in Circuits. With the addition of Displacement Current, we complete Maxwell’s Equations. We finish the course by exploring the solution to Maxwell’s equations in free space – electromagnetic radiation. -",YES,,7,12,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.02.3x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.02.3x+1T2019+type@asset+block@course_image.jpg -8.03x,Physics,Science,,Science & Math,Physics,Machine Learning,,,Yen-Jie Lee,Alex Shvonski,Michelle Tomasik,,,,,Undergraduate,MITx,English,MITx+8.03x+1T2020,Vibrations and WavesInstructors Yen-Jie LeeAlex ShvonskiMichelle Tomasik,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.03x+1T2020/about,"A foundational study of waves and vibrations will prepare learners for advanced courses in physics and related fields of engineering. The skills utilized in analyzing these phenomena are applicable to many different systems because vibrations and waves are so ubiquitous. For instance, learners will understand how the “resonant” modes of a tall building are analogous to simple systems of coupled oscillators. Moreover, learners will come to appreciate that the concept of “resonance” applies not only to systems of masses on springs, but to sound waves, 2D surfaces, atoms, and a wide range of other systems. This course explores many properties that are universal to all wave systems as well as many particular cases. - -This course will prepare learners to analyze problems that involve mechanical vibrations and waves with such topics as simple harmonic motion, superposition, damping, forced vibrations and resonance, coupled oscillations, normal modes, continuous systems, reflection and refraction, and phase and group velocities. The course also explores electromagnetic waves and various associated properties like polarization, Snell’s law, Huygens’s principle, interference and diffraction. It ends by giving learners a taste of Quantum Mechanics. - -",YES,,18,14,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.03x+1T2020+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.03x+1T2020+type@asset+block@course_image.jpg -8.370.1x,Computer Science,,,"Data Science, Analytics & Computer Technology",Computer Science,Mathematics,,,Isaac Chuang,Peter Shor,,,,,,Graduate,MITx,English,MITx+8.370.1x+1T2018,"Quantum Information Science I, Part 1",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.370.1x+1T2018/about,"This course is part of a three-course series that provides an introduction to the theory and practice of quantum computation. We cover: -the physics of information processing -quantum logic -quantum algorithms including Shor's factoring algorithm and Grover's search algorithm -quantum error correction -quantum communication and key distribution -This course will help you establish a foundation of knowledge for understanding what quantum computers can do, how they work, and how you can contribute to discovering new things and solving problems in quantum information science and engineering. - -The three-course series comprises: -8.370.1x: Foundations of quantum and classical computing – quantum mechanics, reversible computation, and quantum measurement -8.370.2x: Simple quantum protocols and algorithms – teleportation and superdense coding, the Deutsch-Jozsa and Simon’s algorithm, Grover’s quantum search algorithm, and Shor’s quantum factoring algorithm -8.370.3x: Foundations of quantum communication – noise and quantum channels, and quantum key distribution -Prior knowledge of quantum mechanics is helpful but not required. It is best if you know some linear algebra. - -This course has been authored by one or more members of the Faculty of the Massachusetts Institute of Technology. Its educational objectives, methods, assessments, and the selection and presentation of its content are solely the responsibility of MIT. MIT gratefully acknowledges major support for this course, provided by IBM Research. This course on quantum information science is a collective effort to further advance knowledge and understanding in quantum information and quantum computing. - -For more information about MIT’s Quantum Curriculum, visit quantumcurriculum.mit.edu.",YES,,4.6,12,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.370.1x+1T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.370.1x+1T2018+type@asset+block@course_image.jpg -8.370.2x,Physics,,,Science & Math,Physics,Mathematics,,,Isaac Chuang,Peter Shor,,,,,,Graduate,MITx,English,MITx+8.370.2x+1T2018,"Quantum Information Science I, Part 2",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.370.2x+1T2018/about,"This course is part of a three-course series that provides an introduction to the theory and practice of quantum computation. This second course builds on the foundational introduction provided in the first course, 8.370.1x, and explores simple quantum protocols and algorithms, including: - -Quantum teleportation and superdense coding -The Deutsch-Jozsa and Simon's algorithms -Grover's quantum search algorithm -Shor's quantum factoring algorithm -This course will help you understand what quantum computers can do and how they work. You'll learn how you can contribute to discovering new things and solving problems in quantum information science and engineering. - -The complete three-course series includes: - -8.370.1x: Foundations of quantum and classical computing – quantum mechanics, reversible computation, and quantum measurement -8.370.2x: Simple quantum protocols and algorithms – teleportation and superdense coding, the Deutsch-Jozsa and Simon’s algorithm, Grover’s quantum search algorithm, and Shor’s quantum factoring algorithm -8.370.3x: Foundations of quantum communication – noise and quantum channels, and quantum key distribution -This course has been authored by one or more members of the Faculty of the Massachusetts Institute of Technology. Its educational objectives, methods, assessments, and the selection and presentation of its content are solely the responsibility of MIT. MIT gratefully acknowledges major support for this course, provided by IBM Research. This course on quantum information science is a collective effort to further advance knowledge and understanding in quantum information and quantum computing. - -For more information about MIT’s Quantum Curriculum, visit quantumcurriculum.mit.edu.",YES,,4.6,10,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.370.2x+1T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.370.2x+1T2018+type@asset+block@course_image.jpg -8.370.3x,Computer Science,,,"Data Science, Analytics & Computer Technology",Computer Science,Mathematics,,,Isaac Chuang,Peter Shor,,,,,,Graduate,MITx,English,MITx+8.370.3x+1T2018,"Quantum Information Science I, Part 3",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.370.3x+1T2018/about,"This course is the final part of a three-course series that provides an introduction to the theory and practice of quantum computation. This third course builds on the foundational introduction provided in the first course, and the simple quantum protocols provided in the second course, and explores quantum communication, including: -Models of quantum noise and quantum channels -Quantum error correction -Quantum key distribution -Distributed quantum protocols -This course will help you establish a foundation of knowledge for understanding what quantum computers can do, how they work, and how you can contribute to discovering new things and solving problems in quantum information science and engineering. - -The three-course series comprise: -8.370.1x: Foundations of quantum and classical computing – quantum mechanics, reversible computation, and quantum measurement -8.370.2x: Simple quantum protocols and algorithms – teleportation and superdense coding, the Deutsch-Jozsa and Simon’s algorithm, Grover’s quantum search algorithm, and Shor’s quantum factoring algorithm -8.370.3x: Foundations of quantum communication – noise and quantum channels, and quantum key distribution -Prior knowledge of quantum mechanics is helpful but not required. It is best if you know some linear algebra. - -This course has been authored by one or more members of the Faculty of the Massachusetts Institute of Technology. Its educational objectives, methods, assessments, and the selection and presentation of its content are solely the responsibility of MIT. MIT gratefully acknowledges major support for this course, provided by IBM Research. This course on quantum information science is a collective effort to further advance knowledge and understanding in quantum information and quantum computing. - -For more information about MIT’s Quantum Curriculum, visit quantumcurriculum.mit.edu.",YES,,4.6,10,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.370.3x+1T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.370.3x+1T2018+type@asset+block@course_image.jpg -8.371.1x,Physics,,,Science & Math,Physics,Mathematics,,,Isaac Chuang,Aram Harrow,,,,,,Graduate,MITx,English,MITx+8.371.1x+2T2018,"Quantum Information Science II, Part 1",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.371.1x+2T2018/about,"This three-module sequence of courses covers advanced topics in quantum computation and quantum information, including quantum error correction code techniques; efficient quantum computation principles, including fault-tolerance; and quantum complexity theory and quantum information theory. Prior knowledge of quantum circuits and elementary quantum algorithms is assumed. These courses are the second part in a sequence of two quantum information science subjects at MIT. - -The three modules comprise: -8.371.1x: Quantum states, noise and error correction -8.371.2x: Efficient quantum computing - fault tolerance and algorithms -8.371.3x: Quantum complexity theory and information theory -This first 8.371.1x course module will cover in depth density matrices and noisy quantum operations, and advanced quantum error correction codes. - -A prior course (or strong background) in quantum mechanics is required. Knowledge of linear algebra is also strongly recommended, and other helpful math topics to know include probability and finite fields. - -This course has been authored by one or more members of the Faculty of the Massachusetts Institute of Technology. Its educational objectives, methods, assessments, and the selection and presentation of its content are solely the responsibility of MIT. - -For more information about MIT’s Quantum Curriculum, visit quantumcurriculum.mit.edu.",YES,,3.6,12,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.371.1x+2T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.371.1x+2T2018+type@asset+block@course_image.jpg -8.371.2x,Physics,,,Science & Math,Physics,Mathematics,,,Isaac Chuang,Aram Harrow,,,,,,Graduate,MITx,English,MITx+8.371.2x+2T2018,"Quantum Information Science II, Part 2",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.371.2x+2T2018/about,"This three-module sequence of courses covers advanced topics in quantum computation and quantum information, including quantum error correction code techniques; efficient quantum computation principles, including fault-tolerance; and quantum complexity theory and quantum information theory. Prior knowledge of quantum circuits and elementary quantum algorithms is assumed. These courses are the second part in a sequence of two quantum information science subjects at MIT. - -The three modules comprise: -8.371.1x: Quantum states, noise and error correction -8.371.2x: Efficient quantum computing - fault tolerance and complexity -8.371.3x: Advanced quantum algorithms and information theory -This second 8.371.2x course module will cover in depth the methods of fault-tolerant quantum computation; the concept of quantum supremacy, and quantum algorithms at scale. - -A prior course (or strong background) in quantum mechanics is required. Knowledge of linear algebra is also strongly recommended, and other helpful math topics to know include probability and finite fields. - -This course has been authored by one or more members of the Faculty of the Massachusetts Institute of Technology. Its educational objectives, methods, assessments, and the selection and presentation of its content are solely the responsibility of MIT. - -For more information about MIT’s Quantum Curriculum, visit quantumcurriculum.mit.edu.",YES,,3.6,12,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.371.2x+2T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.371.2x+2T2018+type@asset+block@course_image.jpg -8.371.3x,Physics,,,Science & Math,Physics,Mathematics,,,Isaac Chuang,Aram Harrow,,,,,,Graduate,MITx,English,MITx+8.371.3x+2T2018,"Quantum Information Science II, Part 3",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.371.3x+2T2018/about,"This three-module sequence of courses covers advanced topics in quantum computation and quantum information, including quantum error correction code techniques; efficient quantum computation principles, including fault-tolerance; and quantum complexity theory and quantum information theory. Prior knowledge of quantum circuits and elementary quantum algorithms is assumed. These courses are the second part in a sequence of two quantum information science subjects at MIT. - -The three modules comprise: -8.371.1x: Quantum states, noise and error correction -8.371.2x: Efficient quantum computing - fault tolerance and complexity -8.371.3x: Advanced quantum algorithms and information theory -This third 8.371.3x course module draws upon quantum complexity and quantum information theory, to cover in depth advanced quantum algorithms and communication protocols, including Hamiltonian simulation, the hidden subgroup problem, linear systems, and noisy quantum channels. - -A prior course (or strong background) in quantum mechanics is required. Knowledge of linear algebra is also strongly recommended, and other helpful math topics to know include probability and finite fields. - -This course has been authored by one or more members of the Faculty of the Massachusetts Institute of Technology. Its educational objectives, methods, assessments, and the selection and presentation of its content are solely the responsibility of MIT. - -For more information about MIT’s Quantum Curriculum, visit quantumcurriculum.mit.edu.",YES,,3.6,12,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.371.3x+2T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.371.3x+2T2018+type@asset+block@course_image.jpg -CITE 101x,Social Sciences,,,Social Sciences,Economics,Pedagogy and Curriculum,,,Jarrod Goentzel,Daniel Frey,Bishwapriya Sanyal,Jennifer Green,,,,Undergraduate,MITx,English,MITx+CITE101x+2T2017,Technology Evaluation for Global Development,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+CITE101x+2T2017/about,"When a person lives on less than $2 a day — as some 2.7 billion people around the world do — there isn’t room for a product like a solar lantern or a water filter to fail. Investment in failing products undermines future innovation by reducing confidence and depleting scarce resources. - -It’s a challenge faced every day by development agencies, nongovernmental organizations (NGOs), and consumers themselves. With so many products on the market, how do you choose the right one? - -This course, developed by MIT’s Comprehensive Initiative on Technology Evaluation (CITE) will explore the fundamentals of technology evaluation for global development. It includes a deep dive into CITE’s 3S methodology, looking at products from three angles: - -Suitability—does a product perform its intended purpose? -Scalability—can the supply chain effectively reach consumers? -Sustainability—is it a product that can be used correctly, consistently, and continuously over time? -This course is designed for academics and global development practitioners; those interested in conducting their own technology evaluations to promote data-driven decisions through research or development practice. - -",YES,,8.6,3,https://openlearninglibrary.mit.edu/asset-v1:MITx+CITE101x+2T2017+type@asset+block@CITE101x_SP17_dashboard.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+CITE101x+2T2017+type@asset+block@CITE101x_SP17_dashboard.jpg -EC.745x,Social Sciences,,,Social Sciences,Economics,Pedagogy and Curriculum,,,Elizabeth Hoffecker,Zoe Dibb,,,,,,Undergraduate,MITx,English,MITx+EC.745X+1T2019,Lean Research Skills for Conducting Interviewing,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+EC.745X+1T2019/about,"Interviews are one of the most common and powerful field research methods, used across a wide variety of disciplines and topics. Whether conducting a research study, an evaluation of an existing product or service, or gathering insights for a business plan, or a design process, interviews are often the method of choice for gaining insights directly from people. The quality of that information, however, depends to a large degree on the skill of the interviewer. - -This course introduces effective techniques for conducting interviews and is designed to help you develop and strengthen your skills as an interviewer. It does not assume any existing experience conducting interviews, but will quickly take you past the basics and into best practices that incorporate the Lean Research principles of rigor, relevance, respect, and right-size. The course focuses specifically on conducting interviews in “the field” - contexts in which we may be in an unfamiliar setting or culture, such as when traveling abroad or conducting research in a place we haven’t been before.",YES,,8,3,https://openlearninglibrary.mit.edu/asset-v1:MITx+EC.745X+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+EC.745X+1T2019+type@asset+block@course_image.jpg -HST.936x,Computer Science,,,"Data Science, Analytics & Computer Technology",Computer Science,Health Care Management ,,,Leo Anthony Celi,Kenneth Eugene Paik,Alon Dagan,Rodrigo Deliberato,,,,Undergraduate,MITx,English,MITx+HST.936x+1T2019,Global Health Informatics to Improve Quality of Care,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+HST.936x+1T2019/about,"Disease has no respect for country borders and increased global travel has fueled the spread of infectious disease, as evidenced by the Ebola virus epidemic. Chronic diseases such as diabetes and heart disease, initially confined to the developed world, now exist side by side with malnutrition in low- and middle-income countries (LMIC). Global warming is widening the endemicity of vector-borne diseases. - -In this course, we will explore ways to leverage information technology to combat disease and promote health, especially in resource-constrained settings. Technology is a driving force that sweeps across nations even faster than disease and with the spread of mobile phones, which bring computational power and data to our fingertips, new paradigms in tracking and battling disease have been discovered. - -This course will explore innovations in information systems in developing countries, and focus not only on the importance of technology, but also on broader issues necessary for its success, such as quality improvement, project management, and leadership skills. Ultimately, health care delivery systems require fundamental and sound operations, such as physical infrastructure and supply-chain management, to deliver high-quality care. Technology is simply a tool to help facilitate this process. - -The quality of care theme is critical to this course. The first step stakeholders in health systems should focus on prior to introducing an innovation is to establish a culture of quality improvement and patient safety. An information system can then play a facilitative role by enabling care coordination, tracking processes and outcomes, informing decision making, and fostering learning through data analysis. - -An information system without an accompanying organizational transformation risks reinforcing the same failed processes. Using technology to improve access to care without any other quality improvement elements will yield the same and not necessarily better results, but more of them. Innovations need to address gaps in quality and demonstrate improvement in health outcomes, otherwise they won’t sustain or scale. - -Lastly, we will discuss our attempts to leverage troves of data to define best practice and how we must keep the patient perspective and health at the center of everything we do. - -This course is targeted toward individuals interested in designing or implementing a health information and communication technology (ICT) solution in the developing world. Implementing a health information technology project requires multidisciplinary teams. Thus, with this course, we hope to bring together individuals from a variety of disciplines—computer science, medicine, engineering, public health, policy, and business. -",YES,,13,3,https://openlearninglibrary.mit.edu/asset-v1:MITx+HST.936x+1T2019+type@asset+block@course_image.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+HST.936x+1T2019+type@asset+block@course_image.png -HST.953x,Data Analysis & Statistics,Medicine,,"Data Science, Analytics & Computer Technology",Data Science,Health Care Management ,,,Louis Agha-Mir-Salim,Leo Anthony Celi,Marie-Laure Charpignon,,,,,Graduate,MITx,English,MITx+HST.953x+3T2020,Collaborative Data Science for Healthcare,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+HST.953x+3T2020/about,"Research has been traditionally viewed as a purely academic undertaking, especially in limited-resource healthcare systems. Clinical trials, the hallmark of medical research, are expensive to perform, and take place primarily in countries which can afford them. Around the world, the blood pressure thresholds for hypertension, or the blood sugar targets for patients with diabetes, are established based on research performed in a handful of countries. There is an implicit assumption that the findings and validity of studies carried out in the US and other Western countries generalize to patients around the world. - -This course was created by members of MIT Critical Data, a global consortium that consists of healthcare practitioners, computer scientists, and engineers from academia, industry, and government, that seeks to place data and research at the front and center of healthcare operations. - -Big data is proliferating in diverse forms within the healthcare field, not only because of the adoption of electronic health records, but also because of the growing use of wireless technologies for ambulatory monitoring. The world is abuzz with applications of data science in almost every field – commerce, transportation, banking, and more recently, healthcare. These breakthroughs are due to rediscovered algorithms, powerful computers to run them, and most importantly, the availability of bigger and better data to train the algorithms. This course provides an introductory survey of data science tools in healthcare through several hands-on workshops and exercises. - -Who this course is aimed at - -The most daunting global health issues right now are the result of interconnected crises. In this course, we highlight the importance of a multidisciplinary approach to health data science. It is intended for front-line clinicians and public health practitioners, as well as computer scientists, engineers and social scientists, whose goal is to understand health and disease better using digital data captured in the process of care. - -We highly recommend that this course be taken as part of a team consisting of clinicians and computer scientists or engineers. Learners from the healthcare sector are likely to have difficulties with the programming aspect while the computer scientists and engineers will not be familiar with the clinical context of the exercises and workshops. - -The MIT Critical Data team would like to acknowledge the contribution of the following members: Aldo Arevalo, Alistair Johnson, Alon Dagan, Amber Nigam, Amelie Mathusek, Andre Silva, Chaitanya Shivade, Christopher Cosgriff, Christina Chen, Daniel Ebner, Daniel Gruhl, Eric Yamga, Grigorich Schleifer, Haroun Chahed, Jesse Raffa, Jonathan Riesner, Joy Tzung-yu Wu, Kimiko Huang, Lawerence Baker, Marta Fernandes, Mathew Samuel, Philipp Klocke, Pragati Jaiswal, Ryan Kindle, Shrey Lakhotia, Tom Pollard, Yueh-Hsun Chuang, Ziyi Hou. -",YES,,11.9,,https://openlearninglibrary.mit.edu/asset-v1:MITx+HST.953x+3T2020+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+HST.953x+3T2020+type@asset+block@course_image.jpg -INNOMITv2,Education & Teacher Training,,,Education & Teaching,Faculty Leadership,Innovation Process ,,,Justin Reich,Peter Senge,,,,,,Graduate,MITx,Spanish,Varkey+INNOMITv2+2020_T1,Cómo Introducir la Innovación en las Escuelas,https://openlearninglibrary.mit.edu/courses/course-v1:Varkey+INNOMITv2+2020_T1/about,"Cada gran maestro y cada gran escuela trabajan permanentemente para mejorar el proceso de aprendizaje de sus estudiantes. Al igual que esperamos que nuestros estudiantes se conviertan en aprendices de por vida, nosotros, como educadores, debemos aprender y mejorar de modo constante. Este curso está destinado a líderes escolares de todo tipo (maestros, preceptores, directores, entre otros) que están impulsando procesos de innovación en sus escuelas. - -A través de este curso, recorrerás un ciclo de estudio, experimentación y reflexión para ganar confianza y enriquecer tus habilidades para liderar los esfuerzos de mejora del aprendizaje de tu escuela. A través de actividades basadas en la reflexión y el hacer, comenzarás a trabajar con otros colegas con el objetivo de impulsar una nueva iniciativa en tu escuela y medir su progreso en el camino. Basado en el trabajo de Justin Reich (Teaching Systems Lab, MIT) y Peter Senge (MIT Sloan), este curso se enfocará en la visión y el desarrollo de competencias, con énfasis en la colaboración y la creación de vínculos con partes interesadas. - -Al finalizar este curso, iniciarás el proceso de implementación de una iniciativa de mejora de la enseñanza y el aprendizaje en tu escuela, identificándote como líder y agente de transformación de tu establecimiento. Asimismo, estrecharás vínculos con colegas de otras instituciones que están liderando esta misma tarea. - -Este curso ha sido financiado por Microsoft y es parte de la iniciativa de Liderazgo en Educación de K-12 de Microsoft, desarrollada para brindar herramientas a los líderes escolares del nivel primario y secundario en todo el mundo, mientras abordan las necesidades particulares de sus escuelas en un entorno educativo y tecnológico cambiante.",YES,YES,13,2,https://openlearninglibrary.mit.edu/asset-v1:Varkey+INNOMITv2+2020_T1+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:Varkey+INNOMITv2+2020_T1+type@asset+block@course_image.jpg -JPAL350x,Social Sciences,Health & Safety,,Social Sciences,Policy and Administration,Economics,,,Dr. Vandana Sharma,,,,,,,Undergraduate,MITx,English,MITx+JPAL350x+3T2020,Measuring Health Outcomes in Field Surveys,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+JPAL350x+3T2020/about,"Travel with our team to India and Kenya to see first-hand how rigorous health research is conducted in the field. This course will focus on the fundamentals of field-based health research with an emphasis on measuring health outcomes in low-resource settings. The course includes real-world examples from J-PAL research studies in India and Kenya, combined with exercises to provide practical insights about study design, measurement of health outcomes and data collection, as well as the common challenges and constraints in implementing health surveys. Through a series of integrated learning modules, the course covers topics such as: - -Measuring individual and population health -Selecting health indicators -Measurement tools and selection -Questionnaire development -Ethical issues -JPAL350x is designed for people from a variety of backgrounds including those who are new to health research as well as managers and researchers from international development organizations, foundations, governments and non-governmental organizations from around the world. - -As a self-paced course, learners can access materials at any time. Please note that no certificates can be earned for courses on Open Learning Library. -",YES,,11.1,5,https://openlearninglibrary.mit.edu/asset-v1:MITx+JPAL350x+3T2020+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+JPAL350x+3T2020+type@asset+block@course_image.jpg -Pre_7.01r,,,,Science & Math,Biology,Cognitive Science,Science & Math,Biology,Hazel Sive,Diviya Ray,,,,,,Undergraduate,OCW,English,OCW+Pre-7.01+1T2020,Getting up to Speed in Biology,https://openlearninglibrary.mit.edu/courses/course-v1:OCW+Pre-7.01+1T2020/about,This self-paced course was originally designed to help prepare incoming MIT students for their first Introductory Biology course (known at MIT as 7.01). It will also be useful for anyone preparing to take an equivalent college-level introductory biology class elsewhere.,YES,YES,3,,https://openlearninglibrary.mit.edu/asset-v1:OCW+Pre-7.01+1T2020+type@asset+block@Picture1.png,https://openlearninglibrary.mit.edu/asset-v1:OCW+Pre-7.01+1T2020+type@asset+block@Picture1.png -VJx,Art & Culture,History,,"Art, Design & Architecture",Art History,Media Studies,,,John W. Dower,Andrew Gordon,Shigeru Miyagawa,Gennifer Weisenfeld,,,,Undergraduate,MITx,English,MITx+VJx+3T2018,"Visualizing Japan (1850s-1930s): Westernization, Protest, Modernity",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+VJx+3T2018/about,"This MITx course was developed in collaboration with HarvardX and is co-taught by MIT, Harvard, and Duke historians. You will examine Japanese history in a new way—through the images created by those who were there—and the skills and questions involved in reading history through images in the digital format. The introductory module considers methodologies historians use to “visualize” the past, followed by three modules that explore the themes of Westernization, in Commodore Perry’s 1853-54 expedition to Japan; social protest, in Tokyo’s 1905 Hibiya Riot; and modernity, as seen in the archives of the major Japanese cosmetics company, Shiseido. - -VJx will cover the following topics in four modules: -Module 0: Introduction: New Historical Sources for a Digital Age (Professors Dower, Gordon, Miyagawa). Digitization has dramatically altered historians' access to primary sources, making large databases of the visual record readily accessible. How is historical methodology changing in response to this seismic shift? How can scholars, students, and the general public make optimal use of these new digital resources? -Module 1: Black Ships & Samurai (Professor Dower). Commodore Matthew Perry's 1853-54 expedition to force Japan to open its doors to the outside world is an extraordinary moment to look at by examining and comparing the visual representations left to us by both the American and Japanese sides of this encounter. This module also addresses the rapid Westernization undertaken by Japan in the half century following the Perry mission. -Module 2: Social Protest in Imperial Japan: The Hibiya Riot of 1905 (Professor Gordon). The dramatic daily reports from participants in the massive ""Hibiya Riot"" in 1905, the first major social protest in the age of ""imperial democracy"" in Japan, offer a vivid and fresh perspective on the contentious domestic politics of an emerging imperial power. -Module 3: Modernity in Interwar Japan: Shiseido & Consumer Culture (Professors Dower, Gordon, Weisenfeld). Exploring the vast archives of the Shiseido cosmetics company opens a fascinating window on the emergence of consumer culture, modern roles for women, and global cosmopolitanism from the 'teens through the 1920s and even into the era of Japanese militarism and aggression in the 1930s. This module will also tap other Visualizing Cultures units on modernization and modernity. -",YES,,51.3,4,https://openlearninglibrary.mit.edu/asset-v1:MITx+VJx+3T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+VJx+3T2018+type@asset+block@course_image.jpg -VPx,History,,,Humanities,History,Media Studies,,,Christopher Capozzola,John W. Dower,Ellen Sebring,,,,,Undergraduate,MITx,English,MITx+VPx+1T2019,"Visualizing Imperialism & the Philippines, 1898-1913",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+VPx+1T2019/about,"In this course we use visual records as a way of understanding history at the turn of the 20th century. Learners will learn how to navigate visual primary sources and use them to investigate: - -the historical debates that emerged in political cartoons; -issues of race and prejudice in both cartooning and photography; -photography as a tool of power in conquest and colonization; -the often forgotten Philippine-American war; -ethnographic photography; -how the theme of civilization and barbarism appeared to justify imperial wars; -early use of cross-cultural photography in mass media. -The roundtable discussion format of the course will set up a discursive and exploratory style of learning. Learners will be exposed to multiple points of view as the teaching team brings together scholars who have studied the topics from different disciplines. Learners will also learn how to work with visual evidence as primary sources to assemble arguments. - -For teachers, the course presents a number of units developed for the MIT Visualizing Cultures (VC) project. The instructors are the authors who created the VC resource, and the course provides a pathway into the VC website content. The VC website is widely taught in both secondary and college courses, and is the primary resource for this course. Educators can selectively pick modules that target needs in their classrooms; the course can be used in a “flipped” classroom where students are assigned modules as homework. - -",YES,,28.3,,https://openlearninglibrary.mit.edu/asset-v1:MITx+VPx+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+VPx+1T2019+type@asset+block@course_image.jpg -VTx,Art & Culture,History,Language,"Art, Design & Architecture",Art History,Media Studies,,,Shigeru Miyagawa,John W. Dower,James T. Ulak,,,,,Undergraduate,MITx,English,MITx+VTx+1T2019,Visualizing the Birth of Modern Tokyo,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+VTx+1T2019/about,"This course shows the emergence of modern Tokyo through artist renderings of its neighborhoods, daily life and nightlife, nested between its recurring destruction by natural disasters and war. Students will learn about the tradition of the “100 views,” and through these composite depictions of the city, will witness the excitement and loss of change. Kiyochika Kobayashi’s woodblock prints of Tokyo in the late 1870s convey a moody view on the cusp of change as the new capital, formerly Edo, begins modernization with Western influences. Koizumi Kishio’s depictions of the “Imperial Capital” in the 1930s show the lively cosmopolitanism and move toward ultranationalism that placed the emperor at its center. - -Learners will navigate visual primary sources and use them to investigate: -Tokyo, through the many locations depicted at different points in time, especially helpful if they would like visit these sites today; -the Meiji restoration and how Tokyo emerged from the earlier city of Edo to become Japan’s capital; -cultural and political interactions between east and west; -how Tokyo was rebuilt from various forms of destruction; -methods used by scholars and curators of the Visualizing Cultures project and Smithsonian Institution to develop online content and exhibitions; -the ability of visual motifs to capture tangible and intangible qualities of time and place; -how to read image sets, especially useful in the large digital archives of today; -woodblock print series, distribution, and competition from other media. -The format of roundtable discussions between art historian, historians, and media specialists sets up a discursive and exploratory style of learning. Learners will be exposed to multiple points of view as the teaching team brings together scholars who have studied the topics from different disciplines. Learners will engage with visual evidence as primary sources to assemble arguments. - -For teachers, the course presents a number of units from the online resource, MIT Visualizing Cultures (VC). The course instructors are the authors of VC units, and guide students into the rich content on the site. The VC website, widely taught in both secondary and college courses, is the primary resource for this course. Educators can selectively pick modules that target needs in their classrooms; the course can be used in a “flipped” classroom where students are assigned modules as homework. - -Other Visualizing Cultures courses you may be interested in: Visualizing Japan (1850s-1930s): Westernization, Protest, Modernity (VJx)",YES,,9.3,3,https://openlearninglibrary.mit.edu/asset-v1:MITx+VTx+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+VTx+1T2019+type@asset+block@course_image.jpg +• What makes your life go better or worse for you? +• Can ethics be objective? +• What are the main historical approaches in ethics? +• What do you owe to others + +The second goal is to get you thinking rigorously about ethical questions yourself. This will help you develop your critical reasoning and argumentative skills more generally.",YES,,11.3,7,https://openlearninglibrary.mit.edu/asset-v1:MITx+24.02x+2T2020+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+24.02x+2T2020+type@asset+block@course_image.jpg +24.09x,Philosophy & Ethics,,,Humanities,Philosophy,Cognitive Science,,,Alex Byrne,Cosmo Grant,,,,,,Undergraduate,MITx,English,MITx+24.09x+3T2019,Minds and Machines,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+24.09x+3T2019/about,"An introduction to philosophy of mind, exploring consciousness, reality, AI, and more. The most in-depth philosophy course available online.",YES,,12.6,4,https://openlearninglibrary.mit.edu/asset-v1:MITx+24.09x+3T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+24.09x+3T2019+type@asset+block@course_image.jpg +24.118x,Philosophy & Ethics,,,Humanities,Philosophy,Cognitive Science,,,Agustín Rayo,David Balcarras,Cosmo Grant,,,,,Undergraduate,MITx,English,MITx+24.118x+2T2020,Paradox and Infinity,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+24.118x+2T2020/about,This is a class about awe-inspiring issues at the intersection between philosophy and mathematics.,YES,,11.1,5,https://openlearninglibrary.mit.edu/asset-v1:MITx+24.118x+2T2020+type@asset+block@course_image.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+24.118x+2T2020+type@asset+block@course_image.png +3.012S.1x,Chemistry,Engineering,Science,Science & Math,Chemistry,Materials Science and Engineering,,,Silvija Gradečak,,,,,,,Undergraduate,MITx,English,MITx+3.012S.1x+1T2019,"Structure of Materials, Part 1: Fundamentals of Materials Structure",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+3.012S.1x+1T2019/about,"Discover the structure of the materials that make up our modern world and learn how this underlying structure influences the properties, performance and applications of these materials.",YES,,6,7,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.012S.1x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.012S.1x+1T2019+type@asset+block@course_image.jpg +3.012S.2x,Chemistry,Engineering,Science,Science & Math,Chemistry,Materials Science and Engineering,,,Silvija Gradečak,,,,,,,Undergraduate,MITx,English,MITx+3.012S.2x+1T2019,"Structure of Materials, Part 2: The Crystalline State",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+3.012S.2x+1T2019/about,Discover the structure of the materials that make up our modern world and learn how this underlying structure influences the properties and performance of these materials.,YES,,5,9,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.012S.2x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.012S.2x+1T2019+type@asset+block@course_image.jpg +3.012S.3x,Chemistry,Engineering,Science,Science & Math,Chemistry,Materials Science and Engineering,,,Silvija Gradečak,,,,,,,Undergraduate,MITx,English,MITx+3.012S.3x+1T2019,"Structure of Materials, Part 3: Liquid Crystals, Defects, and Diffusion",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+3.012S.3x+1T2019/about,Discover the structure of the materials that make up our modern world and learn how this underlying structure influences the properties and performance of these materials.,YES,,6,7,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.012S.3x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.012S.3x+1T2019+type@asset+block@course_image.jpg +3.15.1x,Engineering,,,Engineering,Materials Science and Engineering,Electrical Engineering,,,Caroline Ross,,,,,,,Undergraduate,MITx,English,MITX+3.15.1x+2T2017,Electronic Materials and Devices,https://openlearninglibrary.mit.edu/courses/course-v1:MITX+3.15.1x+2T2017/about,"Learn how magnetic devices, such as hard drives and magneto-optical disks, are designed to exploit the magnetic properties of materials.",YES,,5,10,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.15.2x+2T2017+type@asset+block@315Thumbnail.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.15.2x+2T2017+type@asset+block@315Thumbnail.png +3.15.2x,Engineering,,,Engineering,Materials Science and Engineering,Electrical Engineering,,,Caroline Ross,,,,,,,Undergraduate,MITx,English,MITx+3.15.2x+2T2017,Optical Materials and Devices,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+3.15.2x+2T2017/about,"Learn about the optical properties of materials, including how LEDs, lasers, and solar cell devices are designed.",YES,,6,10,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.15.2x+2T2017+type@asset+block@315Thumbnail.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.15.2x+2T2017+type@asset+block@315Thumbnail.png +3.15.3x,Engineering,,,Engineering,Materials Science and Engineering,Electrical Engineering,,,Caroline Ross,,,,,,,Undergraduate,MITx,English,MITx+3.15.3x+2T2017,Magnetic Materials and Devices,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+3.15.3x+2T2017/about,"Learn how electronic devices, such as diodes and transistors, are designed to exploit the electrical properties of materials.",YES,,5,10,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.15.3x+2T2017+type@asset+block@315Thumbnail.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+3.15.3x+2T2017+type@asset+block@315Thumbnail.png +6.005.1x,Computer Science,,,"Data Science, Analytics & Computer Technology",Software Design and Engineering,Programming & Coding,,,Rob Miller,,,,,,,Undergraduate,MITx,English,MITx+6.005.1x+3T2016,Software Construction in Java,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+6.005.1x+3T2016/about,"Learn how to write programs that are safe from bugs, easy to understand, and ready for change.",YES,YES,12,15,https://openlearninglibrary.mit.edu/asset-v1:MITx+6.005.1x+3T2016+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+6.005.1x+3T2016+type@asset+block@course_image.jpg +6.005.2x,Computer Science,,,"Data Science, Analytics & Computer Technology",Software Design and Engineering,Programming & Coding,,,Rob Miller,,,,,,,Undergraduate,MITx,English,MITx+6.005.2x+1T2017,Advanced Software Construction in Java,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+6.005.2x+1T2017/about,"Learn how to write programs that are safe from bugs, easy to understand, and ready for change.",YES,YES,10,15,https://openlearninglibrary.mit.edu/asset-v1:MITx+6.005.2x+1T2017+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+6.005.2x+1T2017+type@asset+block@course_image.jpg +6.036x,Computer Science,,,"Data Science, Analytics & Computer Technology",Machine Learning,Algorithms and Data Structures ,,,Leslie Kaelbling,Tomás Lozano-Pérez,Isaac Chuang,Duane Boning,,,,Undergraduate,MITx,English,MITx+6.036+1T2019,Introduction to Machine Learning,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+6.036+1T2019/about,"Machine learning methods are commonly used across engineering and sciences, from computer systems to physics. Moreover, commercial sites such as search engines, recommender systems (e.g., Netflix, Amazon), advertisers, and financial institutions employ machine learning algorithms for content recommendation, predicting customer behavior, compliance, or risk. As a discipline, machine learning tries to design and understand computer programs that learn from experience for the purpose of prediction or control. In this course, you will learn about principles and algorithms for turning training data into effective automated predictions. We will cover concepts such as representation, over-fitting, regularization, and generalization; topics such as clustering, classification, recommender problems, probabilistic modeling, reinforcement learning; and methods such as on-line algorithms, support vector machines, neural networks/deep learning, hidden Markov models, and Bayesian networks.",YES,,6,11,https://openlearninglibrary.mit.edu/asset-v1:MITx+6.036+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+6.036+1T2019+type@asset+block@course_image.jpg +6.042J,,,,"Data Science, Analytics & Computer Technology",Computer Science,Mathematics,"Data Science, Analytics & Computer Technology",Computer,Albert Meyer,Adam Chlipala,,,,,,Undergraduate,OCW,English,OCW+6.042J+2T2019,Mathematics for Computer Science,https://openlearninglibrary.mit.edu/courses/course-v1:OCW+6.042J+2T2019/about,"This course covers elementary discrete mathematics for computer science and engineering. It emphasizes mathematical definitions and proofs as well as applicable methods. Topics include formal logic notation, proof methods; induction, well-ordering; sets, relations; elementary graph theory; integer congruences; asymptotic notation and growth of functions; permutations and combinations, counting principles; discrete probability. Further selected topics may also be covered, such as recursive definition and structural induction; state machines and invariants; recurrences; generating functions.",YES,YES,9,,https://openlearninglibrary.mit.edu/asset-v1:OCW+6.042J+2T2019+type@asset+block@6.042J_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:OCW+6.042J+2T2019+type@asset+block@6.042J_image.jpg +7.InTr_1,,,,Education & Teaching,Pedagogy and Curriculum,Educational Technology,Education & Teaching,Pedagogy and Curriculum,,,,,,,,Undergraduate,OCW,English,MITx+7.InT+2021_Fall,Inclusive Teaching Module,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+7.InT+2021_Fall/about,"Welcome to the Inclusive Teaching Module! We are so glad you are joining us. The Inclusive Teaching Module is both a standalone online resource for those looking to explore materials related to inclusive teaching as well as an integral part of a blended workshop available to use at your own institution. If you are looking to facilitate a blended workshop using this material, please navigate to the Facilitation Guide and Appendix section from the course outline to get started!",YES,YES,2,,https://openlearninglibrary.mit.edu/asset-v1:MITx+7.InT+2021_Fall+type@asset+block@7.InT_course_image-03.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+7.InT+2021_Fall+type@asset+block@7.InT_course_image-03.png +8.01.1x,Physics,Science,,Science & Math,Physics,Machine Learning,,,Peter Dourmashkin,Deepto Charkrabarty,Michelle Tomasik,Analia Barrantes,George Stephans,Anna Frebel,,Undergraduate,MITx,English,MITx+8.01.1x+3T2018,Mechanics: Kinematics and Dynamics,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.01.1x+3T2018/about,Learn about kinematics and dynamics in this calculus-based physics course.,YES,,6,11,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.01.1x+3T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.01.1x+3T2018+type@asset+block@course_image.jpg +8.01.2x,Physics,Science,,Science & Math,Physics,Machine Learning,,,Peter Dourmashkin,Deepto Charkrabarty,Michelle Tomasik,Analia Barrantes,George Stephans,Anna Frebel,,Undergraduate,MITx,English,MITx+8.01.2x+3T2018,Mechanics: Momentum and Energy,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.01.2x+3T2018/about,Learn about momentum and energy in this calculus-based physics course.,YES,,9,11,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.01.2x+3T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.01.2x+3T2018+type@asset+block@course_image.jpg +8.01.3x,Physics,Science,,Science & Math,Physics,Machine Learning,,,Peter Dourmashkin,Deepto Charkrabarty,Michelle Tomasik,Analia Barrantes,George Stephans,Anna Frebel,,Undergraduate,MITx,English,MITx+8.01.3x+1T2019,Mechanics: Rotational Dynamics,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.01.3x+1T2019/about,"Learn about rotational dynamics, rigid bodies and moment of inertia in this calculus-based physics course.",YES,,6,11,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.01.3x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.01.3x+1T2019+type@asset+block@course_image.jpg +8.01.4x,Physics,Science,,Science & Math,Physics,Machine Learning,,,Peter Dourmashkin,Deepto Charkrabarty,Michelle Tomasik,Analia Barrantes,Aidan MacDonagh,,,Undergraduate,MITx,English,MITx+8.01.4x+1T2019,Mechanics: Simple Harmonic Motion,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.01.4x+1T2019/about,Learn how to solve and understand simple harmonic motion in this calculus-based physics class.,YES,,4,11,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.01.4x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.01.4x+1T2019+type@asset+block@course_image.jpg +8.02.1x,Physics,Science,,Science & Math,Physics,Machine Learning,,,Peter Dourmashkin,Deepto Charkrabarty,Michelle Tomasik,Robert Redwine,Krishna Rajagopal,Kerstin Perez,,Undergraduate,MITx,English,MITx+8.02.1x+1T2019,Electricity and Magnetism: Electrostatics,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.02.1x+1T2019/about,Learn how charges create and move in magnetic fields and how to analyze simple DC circuits in this introductory-level physics course.,YES,,7.1,12,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.02.1x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.02.1x+1T2019+type@asset+block@course_image.jpg +8.02.2x,Physics,Science,,Science & Math,Physics,Machine Learning,,,Peter Dourmashkin,Krishna Rajagopal,Kerstin Perez,Analia Barrantes,Michelle Tomasik,Robert Redwin,,Undergraduate,MITx,English,MITx+8.02.2x+2T2018,Electricity and Magnetism: Magnetic Fields and Forces,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.02.2x+2T2018/about,Learn how charges interact with each other and create electric fields and electric potential landscapes in this introductory-level physics course.,YES,,6,12,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.02.2x+2T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.02.2x+2T2018+type@asset+block@course_image.jpg +8.02.3x,Physics,Science,,Science & Math,Physics,Machine Learning,,,Peter Dourmashkin,Krishna Rajagopal,Kerstin Perez,Analia Barrantes,Michelle Tomasik,Robert Redwin,,Undergraduate,MITx,English,MITx+8.02.3x+1T2019,Electricity and Magnetism: Maxwell’s Equations,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.02.3x+1T2019/about,"In this final part of 8.02, we will cover Faraday's Law, Circuits with Inductors, Maxwell's equations, and electromagnetic radiation. This introductory Electromagnetism physics course will require the use of calculus.",YES,,7,12,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.02.3x+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.02.3x+1T2019+type@asset+block@course_image.jpg +8.03x,Physics,Science,,Science & Math,Physics,Machine Learning,,,Yen-Jie Lee,Alex Shvonski,Michelle Tomasik,,,,,Undergraduate,MITx,English,MITx+8.03x+1T2020,Vibrations and WavesInstructors Yen-Jie LeeAlex ShvonskiMichelle Tomasik,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.03x+1T2020/about,"Vibrations and Waves appear in many parts of physics, ranging from simple mechanical systems, to the light that we see, and even to the quantum realm. In this course we develop a fundamental grounding in this important topic, beginning with oscillations of simple systems of discrete masses, continuing with waves in continuous systems (like air and water), and exploring the wave behavior of light. We end with the uncertainty principle and the wave equation of quantum mechanics.",YES,,18,14,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.03x+1T2020+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.03x+1T2020+type@asset+block@course_image.jpg +8.370.1x,Computer Science,,,"Data Science, Analytics & Computer Technology",Computer Science,Mathematics,,,Isaac Chuang,Peter Shor,,,,,,Graduate,MITx,English,MITx+8.370.1x+1T2018,"Quantum Information Science I, Part 1",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.370.1x+1T2018/about,"Want to learn about quantum bits, quantum logic gates, quantum algorithms, and quantum communications, and know some linear algebra but haven't yet learned much about quantum mechanics? This is the course for you!",YES,,4.6,12,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.370.1x+1T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.370.1x+1T2018+type@asset+block@course_image.jpg +8.370.2x,Physics,,,Science & Math,Physics,Mathematics,,,Isaac Chuang,Peter Shor,,,,,,Graduate,MITx,English,MITx+8.370.2x+1T2018,"Quantum Information Science I, Part 2",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.370.2x+1T2018/about,Have you already taken a foundational introduction to quantum computing course and want to continue with simple quantum protocols and quantum algorithms? This is the course for you!,YES,,4.6,10,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.370.2x+1T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.370.2x+1T2018+type@asset+block@course_image.jpg +8.370.3x,Computer Science,,,"Data Science, Analytics & Computer Technology",Computer Science,Mathematics,,,Isaac Chuang,Peter Shor,,,,,,Graduate,MITx,English,MITx+8.370.3x+1T2018,"Quantum Information Science I, Part 3",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.370.3x+1T2018/about,"Want to learn about the foundations of quantum communication, including quantum channels and quantum key distribution? This is the course for you!",YES,,4.6,10,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.370.3x+1T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.370.3x+1T2018+type@asset+block@course_image.jpg +8.371.1x,Physics,,,Science & Math,Physics,Mathematics,,,Isaac Chuang,Aram Harrow,,,,,,Graduate,MITx,English,MITx+8.371.1x+2T2018,"Quantum Information Science II, Part 1",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.371.1x+2T2018/about,"Already know something about quantum mechanics, quantum bits and quantum logic gates, but want to design new quantum algorithms, and explore multi-party quantum protocols? This is the course for you!",YES,,3.6,12,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.371.1x+2T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.371.1x+2T2018+type@asset+block@course_image.jpg +8.371.2x,Physics,,,Science & Math,Physics,Mathematics,,,Isaac Chuang,Aram Harrow,,,,,,Graduate,MITx,English,MITx+8.371.2x+2T2018,"Quantum Information Science II, Part 2",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.371.2x+2T2018/about,"Interested in how quantum computing at scale may be achieved, and already know something about quantum circuits and quantum error correction? This is the course for you!",YES,,3.6,12,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.371.2x+2T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.371.2x+2T2018+type@asset+block@course_image.jpg +8.371.3x,Physics,,,Science & Math,Physics,Mathematics,,,Isaac Chuang,Aram Harrow,,,,,,Graduate,MITx,English,MITx+8.371.3x+2T2018,"Quantum Information Science II, Part 3",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+8.371.3x+2T2018/about,Learn how quantum algorithms and communication protocols apply in complex and advanced scenarios.,YES,,3.6,12,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.371.3x+2T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+8.371.3x+2T2018+type@asset+block@course_image.jpg +CITE 101x,Social Sciences,,,Social Sciences,Economics,Pedagogy and Curriculum,,,Jarrod Goentzel,Daniel Frey,Bishwapriya Sanyal,Jennifer Green,,,,Undergraduate,MITx,English,MITx+CITE101x+2T2017,Technology Evaluation for Global Development,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+CITE101x+2T2017/about,"Learn how to evaluate technologies within a global development context from the perspective of suitability, scalability and sustainability.",YES,,8.6,3,https://openlearninglibrary.mit.edu/asset-v1:MITx+CITE101x+2T2017+type@asset+block@CITE101x_SP17_dashboard.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+CITE101x+2T2017+type@asset+block@CITE101x_SP17_dashboard.jpg +EC.745x,Social Sciences,,,Social Sciences,Economics,Pedagogy and Curriculum,,,Elizabeth Hoffecker,Zoe Dibb,,,,,,Undergraduate,MITx,English,MITx+EC.745X+1T2019,Lean Research Skills for Conducting Interviewing,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+EC.745X+1T2019/about,Learn to gather information from people using interviewing techniques that are effective and respectful. ,YES,,8,3,https://openlearninglibrary.mit.edu/asset-v1:MITx+EC.745X+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+EC.745X+1T2019+type@asset+block@course_image.jpg +HST.936x,Computer Science,,,"Data Science, Analytics & Computer Technology",Computer Science,Health Care Management ,,,Leo Anthony Celi,Kenneth Eugene Paik,Alon Dagan,Rodrigo Deliberato,,,,Undergraduate,MITx,English,MITx+HST.936x+1T2019,Global Health Informatics to Improve Quality of Care,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+HST.936x+1T2019/about,Learn how to design health information and communication technology (ICT) solutions for the developing world.,YES,,13,3,https://openlearninglibrary.mit.edu/asset-v1:MITx+HST.936x+1T2019+type@asset+block@course_image.png,https://openlearninglibrary.mit.edu/asset-v1:MITx+HST.936x+1T2019+type@asset+block@course_image.png +HST.953x,Data Analysis & Statistics,Medicine,,"Data Science, Analytics & Computer Technology",Data Science,Health Care Management ,,,Louis Agha-Mir-Salim,Leo Anthony Celi,Marie-Laure Charpignon,,,,,Graduate,MITx,English,MITx+HST.953x+3T2020,Collaborative Data Science for Healthcare,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+HST.953x+3T2020/about,"Data and learning should be at the front and center of healthcare. In this course, we bring together computer scientists, health providers and social scientists collaborating to derive knowledge from data routinely collected in the process of care.",YES,,11.9,,https://openlearninglibrary.mit.edu/asset-v1:MITx+HST.953x+3T2020+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+HST.953x+3T2020+type@asset+block@course_image.jpg +INNOMITv2,Education & Teacher Training,,,Education & Teaching,Faculty Leadership,Innovation Process ,,,Justin Reich,Peter Senge,,,,,,Graduate,MITx,Spanish,Varkey+INNOMITv2+2020_T1,Cómo Introducir la Innovación en las Escuelas,https://openlearninglibrary.mit.edu/courses/course-v1:Varkey+INNOMITv2+2020_T1/about,"Cada gran maestro y cada gran escuela trabajan permanentemente para mejorar el proceso de aprendizaje de sus estudiantes. Al igual que esperamos que nuestros estudiantes se conviertan en aprendices de por vida, nosotros, como educadores, debemos aprender y mejorar de modo constante. Este curso est' destinado a l'deres escolares de todo tipo (maestros, preceptores, directores, entre otros) que est'n impulsando procesos de innovaci'n en sus escuelas.",YES,YES,13,2,https://openlearninglibrary.mit.edu/asset-v1:Varkey+INNOMITv2+2020_T1+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:Varkey+INNOMITv2+2020_T1+type@asset+block@course_image.jpg +JPAL350x,Social Sciences,Health & Safety,,Social Sciences,Policy and Administration,Economics,,,Dr. Vandana Sharma,,,,,,,Undergraduate,MITx,English,MITx+JPAL350x+3T2020,Measuring Health Outcomes in Field Surveys,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+JPAL350x+3T2020/about,"Vibrations and Waves appear in many parts of physics, ranging from simple mechanical systems, to the light that we see, and even to the quantum realm. In this course we develop a fundamental grounding in this important topic, beginning with oscillations ",YES,,11.1,5,https://openlearninglibrary.mit.edu/asset-v1:MITx+JPAL350x+3T2020+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+JPAL350x+3T2020+type@asset+block@course_image.jpg +Pre_7.01r,,,,Science & Math,Biology,Cognitive Science,Science & Math,Biology,Hazel Sive,Diviya Ray,,,,,,Undergraduate,OCW,English,OCW+Pre-7.01+1T2020,Getting up to Speed in Biology,https://openlearninglibrary.mit.edu/courses/course-v1:OCW+Pre-7.01+1T2020/about,This self-paced course was originally designed to help prepare incoming MIT students for their first Introductory Biology course (known at MIT as 7.01). It will also be useful for anyone preparing to take an equivalent college-level introductory biology class elsewhere,YES,YES,3,,https://openlearninglibrary.mit.edu/asset-v1:OCW+Pre-7.01+1T2020+type@asset+block@Picture1.png,https://openlearninglibrary.mit.edu/asset-v1:OCW+Pre-7.01+1T2020+type@asset+block@Picture1.png +VJx,Art & Culture,History,,"Art, Design & Architecture",Art History,Media Studies,,,John W. Dower,Andrew Gordon,Shigeru Miyagawa,Gennifer Weisenfeld,,,,Undergraduate,MITx,English,MITx+VJx+3T2018,"Visualizing Japan (1850s-1930s): Westernization, Protest, Modernity",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+VJx+3T2018/about,"A MITx/HarvardX collaboration, this course explores Japan?s transition into the modern world through the historical visual record.",YES,,51.3,4,https://openlearninglibrary.mit.edu/asset-v1:MITx+VJx+3T2018+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+VJx+3T2018+type@asset+block@course_image.jpg +VPx,History,,,Humanities,History,Media Studies,,,Christopher Capozzola,John W. Dower,Ellen Sebring,,,,,Undergraduate,MITx,English,MITx+VPx+1T2019,"Visualizing Imperialism & the Philippines, 1898-1913",https://openlearninglibrary.mit.edu/courses/course-v1:MITx+VPx+1T2019/about,Remarkable political cartoons and photography at the turn of the 20th century reveal debates over US entry into global imperialism through the conquest and occupation of the Philippines. Historians tour this rich content drawn from MIT Visualizing Cultures.,YES,,28.3,,https://openlearninglibrary.mit.edu/asset-v1:MITx+VPx+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+VPx+1T2019+type@asset+block@course_image.jpg +VTx,Art & Culture,History,Language,"Art, Design & Architecture",Art History,Media Studies,,,Shigeru Miyagawa,John W. Dower,James T. Ulak,,,,,Undergraduate,MITx,English,MITx+VTx+1T2019,Visualizing the Birth of Modern Tokyo,https://openlearninglibrary.mit.edu/courses/course-v1:MITx+VTx+1T2019/about,"See Tokyo in the tradition of the '100 views': 1870s, Kiyochika's gaslit scenes of the new capital, loss amidst modernization; and 1930s, Koizumi's syncopated scenes of the 'Imperial Capital.' From MIT Visualizing Cultures, with the Smithsonian Institution.",YES,,9.3,3,https://openlearninglibrary.mit.edu/asset-v1:MITx+VTx+1T2019+type@asset+block@course_image.jpg,https://openlearninglibrary.mit.edu/asset-v1:MITx+VTx+1T2019+type@asset+block@course_image.jpg From a587423f981589d8d0a47c0db4b5cd83627377a1 Mon Sep 17 00:00:00 2001 From: Anastasia Beglova Date: Mon, 16 Sep 2024 09:22:44 -0400 Subject: [PATCH 04/16] always use dfs_query_then_fetch (#1558) --- frontends/api/src/generated/v1/api.ts | 101 ------------------ .../SearchDisplay/SearchDisplay.tsx | 1 - learning_resources_search/api.py | 7 +- learning_resources_search/api_test.py | 4 + learning_resources_search/serializers.py | 9 -- learning_resources_search/serializers_test.py | 3 - openapi/specs/v1.yaml | 46 -------- 7 files changed, 6 insertions(+), 165 deletions(-) diff --git a/frontends/api/src/generated/v1/api.ts b/frontends/api/src/generated/v1/api.ts index 6c13703ea6..baae59bae7 100644 --- a/frontends/api/src/generated/v1/api.ts +++ b/frontends/api/src/generated/v1/api.ts @@ -3622,12 +3622,6 @@ export interface PercolateQuerySubscriptionRequestRequest { * @memberof PercolateQuerySubscriptionRequestRequest */ dev_mode?: boolean | null - /** - * If true sets search_type=dfs_query_then_fetch which makes Opensearchmake an extra pre-query to calculate term frequencies accross indexes - * @type {boolean} - * @memberof PercolateQuerySubscriptionRequestRequest - */ - use_dfs_query_then_fetch?: boolean | null /** * The id value for the learning resource * @type {Array} @@ -7144,7 +7138,6 @@ export const ContentFileSearchApiAxiosParamCreator = function ( * @param {Array} [run_id] The id value of the run that the content file belongs to * @param {ContentFileSearchRetrieveSortbyEnum} [sortby] if the parameter starts with \'-\' the sort is in descending order * `id` - id * `-id` - -id * `resource_readable_id` - resource_readable_id * `-resource_readable_id` - -resource_readable_id * @param {Array} [topic] The topic name. To see a list of options go to api/v1/topics/ - * @param {boolean | null} [use_dfs_query_then_fetch] If true sets search_type=dfs_query_then_fetch which makes Opensearchmake an extra pre-query to calculate term frequencies accross indexes * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -7162,7 +7155,6 @@ export const ContentFileSearchApiAxiosParamCreator = function ( run_id?: Array, sortby?: ContentFileSearchRetrieveSortbyEnum, topic?: Array, - use_dfs_query_then_fetch?: boolean | null, options: RawAxiosRequestConfig = {}, ): Promise => { const localVarPath = `/api/v1/content_file_search/` @@ -7233,11 +7225,6 @@ export const ContentFileSearchApiAxiosParamCreator = function ( localVarQueryParameter["topic"] = topic } - if (use_dfs_query_then_fetch !== undefined) { - localVarQueryParameter["use_dfs_query_then_fetch"] = - use_dfs_query_then_fetch - } - setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} @@ -7279,7 +7266,6 @@ export const ContentFileSearchApiFp = function (configuration?: Configuration) { * @param {Array} [run_id] The id value of the run that the content file belongs to * @param {ContentFileSearchRetrieveSortbyEnum} [sortby] if the parameter starts with \'-\' the sort is in descending order * `id` - id * `-id` - -id * `resource_readable_id` - resource_readable_id * `-resource_readable_id` - -resource_readable_id * @param {Array} [topic] The topic name. To see a list of options go to api/v1/topics/ - * @param {boolean | null} [use_dfs_query_then_fetch] If true sets search_type=dfs_query_then_fetch which makes Opensearchmake an extra pre-query to calculate term frequencies accross indexes * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -7297,7 +7283,6 @@ export const ContentFileSearchApiFp = function (configuration?: Configuration) { run_id?: Array, sortby?: ContentFileSearchRetrieveSortbyEnum, topic?: Array, - use_dfs_query_then_fetch?: boolean | null, options?: RawAxiosRequestConfig, ): Promise< ( @@ -7320,7 +7305,6 @@ export const ContentFileSearchApiFp = function (configuration?: Configuration) { run_id, sortby, topic, - use_dfs_query_then_fetch, options, ) const index = configuration?.serverIndex ?? 0 @@ -7376,7 +7360,6 @@ export const ContentFileSearchApiFactory = function ( requestParameters.run_id, requestParameters.sortby, requestParameters.topic, - requestParameters.use_dfs_query_then_fetch, options, ) .then((request) => request(axios, basePath)) @@ -7480,13 +7463,6 @@ export interface ContentFileSearchApiContentFileSearchRetrieveRequest { * @memberof ContentFileSearchApiContentFileSearchRetrieve */ readonly topic?: Array - - /** - * If true sets search_type=dfs_query_then_fetch which makes Opensearchmake an extra pre-query to calculate term frequencies accross indexes - * @type {boolean} - * @memberof ContentFileSearchApiContentFileSearchRetrieve - */ - readonly use_dfs_query_then_fetch?: boolean | null } /** @@ -7523,7 +7499,6 @@ export class ContentFileSearchApi extends BaseAPI { requestParameters.run_id, requestParameters.sortby, requestParameters.topic, - requestParameters.use_dfs_query_then_fetch, options, ) .then((request) => request(this.axios, this.basePath)) @@ -12650,7 +12625,6 @@ export const LearningResourcesSearchApiAxiosParamCreator = function ( * @param {number | null} [slop] Allowed distance for phrase search * @param {LearningResourcesSearchRetrieveSortbyEnum} [sortby] If the parameter starts with \'-\' the sort is in descending order * `featured` - Featured * `id` - Object ID ascending * `-id` - Object ID descending * `readable_id` - Readable ID ascending * `-readable_id` - Readable ID descending * `last_modified` - Last Modified Date ascending * `-last_modified` - Last Modified Date descending * `new` - Newest resources first * `start_date` - Start Date ascending * `-start_date` - Start Date descending * `mitcoursenumber` - MIT course number ascending * `-mitcoursenumber` - MIT course number descending * `views` - Popularity ascending * `-views` - Popularity descending * `upcoming` - Next start date ascending * @param {Array} [topic] The topic name. To see a list of options go to api/v1/topics/ - * @param {boolean | null} [use_dfs_query_then_fetch] If true sets search_type=dfs_query_then_fetch which makes Opensearchmake an extra pre-query to calculate term frequencies accross indexes * @param {number | null} [yearly_decay_percent] Relevance score penalty percent per year for for resources without upcoming runs. Only affects results if there is a search term. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -12681,7 +12655,6 @@ export const LearningResourcesSearchApiAxiosParamCreator = function ( slop?: number | null, sortby?: LearningResourcesSearchRetrieveSortbyEnum, topic?: Array, - use_dfs_query_then_fetch?: boolean | null, yearly_decay_percent?: number | null, options: RawAxiosRequestConfig = {}, ): Promise => { @@ -12802,11 +12775,6 @@ export const LearningResourcesSearchApiAxiosParamCreator = function ( localVarQueryParameter["topic"] = topic } - if (use_dfs_query_then_fetch !== undefined) { - localVarQueryParameter["use_dfs_query_then_fetch"] = - use_dfs_query_then_fetch - } - if (yearly_decay_percent !== undefined) { localVarQueryParameter["yearly_decay_percent"] = yearly_decay_percent } @@ -12866,7 +12834,6 @@ export const LearningResourcesSearchApiFp = function ( * @param {number | null} [slop] Allowed distance for phrase search * @param {LearningResourcesSearchRetrieveSortbyEnum} [sortby] If the parameter starts with \'-\' the sort is in descending order * `featured` - Featured * `id` - Object ID ascending * `-id` - Object ID descending * `readable_id` - Readable ID ascending * `-readable_id` - Readable ID descending * `last_modified` - Last Modified Date ascending * `-last_modified` - Last Modified Date descending * `new` - Newest resources first * `start_date` - Start Date ascending * `-start_date` - Start Date descending * `mitcoursenumber` - MIT course number ascending * `-mitcoursenumber` - MIT course number descending * `views` - Popularity ascending * `-views` - Popularity descending * `upcoming` - Next start date ascending * @param {Array} [topic] The topic name. To see a list of options go to api/v1/topics/ - * @param {boolean | null} [use_dfs_query_then_fetch] If true sets search_type=dfs_query_then_fetch which makes Opensearchmake an extra pre-query to calculate term frequencies accross indexes * @param {number | null} [yearly_decay_percent] Relevance score penalty percent per year for for resources without upcoming runs. Only affects results if there is a search term. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -12897,7 +12864,6 @@ export const LearningResourcesSearchApiFp = function ( slop?: number | null, sortby?: LearningResourcesSearchRetrieveSortbyEnum, topic?: Array, - use_dfs_query_then_fetch?: boolean | null, yearly_decay_percent?: number | null, options?: RawAxiosRequestConfig, ): Promise< @@ -12933,7 +12899,6 @@ export const LearningResourcesSearchApiFp = function ( slop, sortby, topic, - use_dfs_query_then_fetch, yearly_decay_percent, options, ) @@ -13002,7 +12967,6 @@ export const LearningResourcesSearchApiFactory = function ( requestParameters.slop, requestParameters.sortby, requestParameters.topic, - requestParameters.use_dfs_query_then_fetch, requestParameters.yearly_decay_percent, options, ) @@ -13192,13 +13156,6 @@ export interface LearningResourcesSearchApiLearningResourcesSearchRetrieveReques */ readonly topic?: Array - /** - * If true sets search_type=dfs_query_then_fetch which makes Opensearchmake an extra pre-query to calculate term frequencies accross indexes - * @type {boolean} - * @memberof LearningResourcesSearchApiLearningResourcesSearchRetrieve - */ - readonly use_dfs_query_then_fetch?: boolean | null - /** * Relevance score penalty percent per year for for resources without upcoming runs. Only affects results if there is a search term. * @type {number} @@ -13253,7 +13210,6 @@ export class LearningResourcesSearchApi extends BaseAPI { requestParameters.slop, requestParameters.sortby, requestParameters.topic, - requestParameters.use_dfs_query_then_fetch, requestParameters.yearly_decay_percent, options, ) @@ -13504,7 +13460,6 @@ export const LearningResourcesUserSubscriptionApiAxiosParamCreator = function ( * @param {LearningResourcesUserSubscriptionCheckListSortbyEnum} [sortby] If the parameter starts with \'-\' the sort is in descending order * `featured` - Featured * `id` - Object ID ascending * `-id` - Object ID descending * `readable_id` - Readable ID ascending * `-readable_id` - Readable ID descending * `last_modified` - Last Modified Date ascending * `-last_modified` - Last Modified Date descending * `new` - Newest resources first * `start_date` - Start Date ascending * `-start_date` - Start Date descending * `mitcoursenumber` - MIT course number ascending * `-mitcoursenumber` - MIT course number descending * `views` - Popularity ascending * `-views` - Popularity descending * `upcoming` - Next start date ascending * @param {LearningResourcesUserSubscriptionCheckListSourceTypeEnum} [source_type] The subscription type * `search_subscription_type` - search_subscription_type * `channel_subscription_type` - channel_subscription_type * @param {Array} [topic] The topic name. To see a list of options go to api/v1/topics/ - * @param {boolean | null} [use_dfs_query_then_fetch] If true sets search_type=dfs_query_then_fetch which makes Opensearchmake an extra pre-query to calculate term frequencies accross indexes * @param {number | null} [yearly_decay_percent] Relevance score penalty percent per year for for resources without upcoming runs. Only affects results if there is a search term. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -13536,7 +13491,6 @@ export const LearningResourcesUserSubscriptionApiAxiosParamCreator = function ( sortby?: LearningResourcesUserSubscriptionCheckListSortbyEnum, source_type?: LearningResourcesUserSubscriptionCheckListSourceTypeEnum, topic?: Array, - use_dfs_query_then_fetch?: boolean | null, yearly_decay_percent?: number | null, options: RawAxiosRequestConfig = {}, ): Promise => { @@ -13661,11 +13615,6 @@ export const LearningResourcesUserSubscriptionApiAxiosParamCreator = function ( localVarQueryParameter["topic"] = topic } - if (use_dfs_query_then_fetch !== undefined) { - localVarQueryParameter["use_dfs_query_then_fetch"] = - use_dfs_query_then_fetch - } - if (yearly_decay_percent !== undefined) { localVarQueryParameter["yearly_decay_percent"] = yearly_decay_percent } @@ -13712,7 +13661,6 @@ export const LearningResourcesUserSubscriptionApiAxiosParamCreator = function ( * @param {number | null} [slop] Allowed distance for phrase search * @param {LearningResourcesUserSubscriptionListSortbyEnum} [sortby] If the parameter starts with \'-\' the sort is in descending order * `featured` - Featured * `id` - Object ID ascending * `-id` - Object ID descending * `readable_id` - Readable ID ascending * `-readable_id` - Readable ID descending * `last_modified` - Last Modified Date ascending * `-last_modified` - Last Modified Date descending * `new` - Newest resources first * `start_date` - Start Date ascending * `-start_date` - Start Date descending * `mitcoursenumber` - MIT course number ascending * `-mitcoursenumber` - MIT course number descending * `views` - Popularity ascending * `-views` - Popularity descending * `upcoming` - Next start date ascending * @param {Array} [topic] The topic name. To see a list of options go to api/v1/topics/ - * @param {boolean | null} [use_dfs_query_then_fetch] If true sets search_type=dfs_query_then_fetch which makes Opensearchmake an extra pre-query to calculate term frequencies accross indexes * @param {number | null} [yearly_decay_percent] Relevance score penalty percent per year for for resources without upcoming runs. Only affects results if there is a search term. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -13743,7 +13691,6 @@ export const LearningResourcesUserSubscriptionApiAxiosParamCreator = function ( slop?: number | null, sortby?: LearningResourcesUserSubscriptionListSortbyEnum, topic?: Array, - use_dfs_query_then_fetch?: boolean | null, yearly_decay_percent?: number | null, options: RawAxiosRequestConfig = {}, ): Promise => { @@ -13864,11 +13811,6 @@ export const LearningResourcesUserSubscriptionApiAxiosParamCreator = function ( localVarQueryParameter["topic"] = topic } - if (use_dfs_query_then_fetch !== undefined) { - localVarQueryParameter["use_dfs_query_then_fetch"] = - use_dfs_query_then_fetch - } - if (yearly_decay_percent !== undefined) { localVarQueryParameter["yearly_decay_percent"] = yearly_decay_percent } @@ -13916,7 +13858,6 @@ export const LearningResourcesUserSubscriptionApiAxiosParamCreator = function ( * @param {LearningResourcesUserSubscriptionSubscribeCreateSortbyEnum} [sortby] If the parameter starts with \'-\' the sort is in descending order * `featured` - Featured * `id` - Object ID ascending * `-id` - Object ID descending * `readable_id` - Readable ID ascending * `-readable_id` - Readable ID descending * `last_modified` - Last Modified Date ascending * `-last_modified` - Last Modified Date descending * `new` - Newest resources first * `start_date` - Start Date ascending * `-start_date` - Start Date descending * `mitcoursenumber` - MIT course number ascending * `-mitcoursenumber` - MIT course number descending * `views` - Popularity ascending * `-views` - Popularity descending * `upcoming` - Next start date ascending * @param {LearningResourcesUserSubscriptionSubscribeCreateSourceTypeEnum} [source_type] The subscription type * `search_subscription_type` - search_subscription_type * `channel_subscription_type` - channel_subscription_type * @param {Array} [topic] The topic name. To see a list of options go to api/v1/topics/ - * @param {boolean | null} [use_dfs_query_then_fetch] If true sets search_type=dfs_query_then_fetch which makes Opensearchmake an extra pre-query to calculate term frequencies accross indexes * @param {number | null} [yearly_decay_percent] Relevance score penalty percent per year for for resources without upcoming runs. Only affects results if there is a search term. * @param {PercolateQuerySubscriptionRequestRequest} [PercolateQuerySubscriptionRequestRequest] * @param {*} [options] Override http request option. @@ -13949,7 +13890,6 @@ export const LearningResourcesUserSubscriptionApiAxiosParamCreator = function ( sortby?: LearningResourcesUserSubscriptionSubscribeCreateSortbyEnum, source_type?: LearningResourcesUserSubscriptionSubscribeCreateSourceTypeEnum, topic?: Array, - use_dfs_query_then_fetch?: boolean | null, yearly_decay_percent?: number | null, PercolateQuerySubscriptionRequestRequest?: PercolateQuerySubscriptionRequestRequest, options: RawAxiosRequestConfig = {}, @@ -14075,11 +14015,6 @@ export const LearningResourcesUserSubscriptionApiAxiosParamCreator = function ( localVarQueryParameter["topic"] = topic } - if (use_dfs_query_then_fetch !== undefined) { - localVarQueryParameter["use_dfs_query_then_fetch"] = - use_dfs_query_then_fetch - } - if (yearly_decay_percent !== undefined) { localVarQueryParameter["yearly_decay_percent"] = yearly_decay_percent } @@ -14198,7 +14133,6 @@ export const LearningResourcesUserSubscriptionApiFp = function ( * @param {LearningResourcesUserSubscriptionCheckListSortbyEnum} [sortby] If the parameter starts with \'-\' the sort is in descending order * `featured` - Featured * `id` - Object ID ascending * `-id` - Object ID descending * `readable_id` - Readable ID ascending * `-readable_id` - Readable ID descending * `last_modified` - Last Modified Date ascending * `-last_modified` - Last Modified Date descending * `new` - Newest resources first * `start_date` - Start Date ascending * `-start_date` - Start Date descending * `mitcoursenumber` - MIT course number ascending * `-mitcoursenumber` - MIT course number descending * `views` - Popularity ascending * `-views` - Popularity descending * `upcoming` - Next start date ascending * @param {LearningResourcesUserSubscriptionCheckListSourceTypeEnum} [source_type] The subscription type * `search_subscription_type` - search_subscription_type * `channel_subscription_type` - channel_subscription_type * @param {Array} [topic] The topic name. To see a list of options go to api/v1/topics/ - * @param {boolean | null} [use_dfs_query_then_fetch] If true sets search_type=dfs_query_then_fetch which makes Opensearchmake an extra pre-query to calculate term frequencies accross indexes * @param {number | null} [yearly_decay_percent] Relevance score penalty percent per year for for resources without upcoming runs. Only affects results if there is a search term. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -14230,7 +14164,6 @@ export const LearningResourcesUserSubscriptionApiFp = function ( sortby?: LearningResourcesUserSubscriptionCheckListSortbyEnum, source_type?: LearningResourcesUserSubscriptionCheckListSourceTypeEnum, topic?: Array, - use_dfs_query_then_fetch?: boolean | null, yearly_decay_percent?: number | null, options?: RawAxiosRequestConfig, ): Promise< @@ -14267,7 +14200,6 @@ export const LearningResourcesUserSubscriptionApiFp = function ( sortby, source_type, topic, - use_dfs_query_then_fetch, yearly_decay_percent, options, ) @@ -14312,7 +14244,6 @@ export const LearningResourcesUserSubscriptionApiFp = function ( * @param {number | null} [slop] Allowed distance for phrase search * @param {LearningResourcesUserSubscriptionListSortbyEnum} [sortby] If the parameter starts with \'-\' the sort is in descending order * `featured` - Featured * `id` - Object ID ascending * `-id` - Object ID descending * `readable_id` - Readable ID ascending * `-readable_id` - Readable ID descending * `last_modified` - Last Modified Date ascending * `-last_modified` - Last Modified Date descending * `new` - Newest resources first * `start_date` - Start Date ascending * `-start_date` - Start Date descending * `mitcoursenumber` - MIT course number ascending * `-mitcoursenumber` - MIT course number descending * `views` - Popularity ascending * `-views` - Popularity descending * `upcoming` - Next start date ascending * @param {Array} [topic] The topic name. To see a list of options go to api/v1/topics/ - * @param {boolean | null} [use_dfs_query_then_fetch] If true sets search_type=dfs_query_then_fetch which makes Opensearchmake an extra pre-query to calculate term frequencies accross indexes * @param {number | null} [yearly_decay_percent] Relevance score penalty percent per year for for resources without upcoming runs. Only affects results if there is a search term. * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -14343,7 +14274,6 @@ export const LearningResourcesUserSubscriptionApiFp = function ( slop?: number | null, sortby?: LearningResourcesUserSubscriptionListSortbyEnum, topic?: Array, - use_dfs_query_then_fetch?: boolean | null, yearly_decay_percent?: number | null, options?: RawAxiosRequestConfig, ): Promise< @@ -14379,7 +14309,6 @@ export const LearningResourcesUserSubscriptionApiFp = function ( slop, sortby, topic, - use_dfs_query_then_fetch, yearly_decay_percent, options, ) @@ -14425,7 +14354,6 @@ export const LearningResourcesUserSubscriptionApiFp = function ( * @param {LearningResourcesUserSubscriptionSubscribeCreateSortbyEnum} [sortby] If the parameter starts with \'-\' the sort is in descending order * `featured` - Featured * `id` - Object ID ascending * `-id` - Object ID descending * `readable_id` - Readable ID ascending * `-readable_id` - Readable ID descending * `last_modified` - Last Modified Date ascending * `-last_modified` - Last Modified Date descending * `new` - Newest resources first * `start_date` - Start Date ascending * `-start_date` - Start Date descending * `mitcoursenumber` - MIT course number ascending * `-mitcoursenumber` - MIT course number descending * `views` - Popularity ascending * `-views` - Popularity descending * `upcoming` - Next start date ascending * @param {LearningResourcesUserSubscriptionSubscribeCreateSourceTypeEnum} [source_type] The subscription type * `search_subscription_type` - search_subscription_type * `channel_subscription_type` - channel_subscription_type * @param {Array} [topic] The topic name. To see a list of options go to api/v1/topics/ - * @param {boolean | null} [use_dfs_query_then_fetch] If true sets search_type=dfs_query_then_fetch which makes Opensearchmake an extra pre-query to calculate term frequencies accross indexes * @param {number | null} [yearly_decay_percent] Relevance score penalty percent per year for for resources without upcoming runs. Only affects results if there is a search term. * @param {PercolateQuerySubscriptionRequestRequest} [PercolateQuerySubscriptionRequestRequest] * @param {*} [options] Override http request option. @@ -14458,7 +14386,6 @@ export const LearningResourcesUserSubscriptionApiFp = function ( sortby?: LearningResourcesUserSubscriptionSubscribeCreateSortbyEnum, source_type?: LearningResourcesUserSubscriptionSubscribeCreateSourceTypeEnum, topic?: Array, - use_dfs_query_then_fetch?: boolean | null, yearly_decay_percent?: number | null, PercolateQuerySubscriptionRequestRequest?: PercolateQuerySubscriptionRequestRequest, options?: RawAxiosRequestConfig, @@ -14493,7 +14420,6 @@ export const LearningResourcesUserSubscriptionApiFp = function ( sortby, source_type, topic, - use_dfs_query_then_fetch, yearly_decay_percent, PercolateQuerySubscriptionRequestRequest, options, @@ -14595,7 +14521,6 @@ export const LearningResourcesUserSubscriptionApiFactory = function ( requestParameters.sortby, requestParameters.source_type, requestParameters.topic, - requestParameters.use_dfs_query_then_fetch, requestParameters.yearly_decay_percent, options, ) @@ -14639,7 +14564,6 @@ export const LearningResourcesUserSubscriptionApiFactory = function ( requestParameters.slop, requestParameters.sortby, requestParameters.topic, - requestParameters.use_dfs_query_then_fetch, requestParameters.yearly_decay_percent, options, ) @@ -14684,7 +14608,6 @@ export const LearningResourcesUserSubscriptionApiFactory = function ( requestParameters.sortby, requestParameters.source_type, requestParameters.topic, - requestParameters.use_dfs_query_then_fetch, requestParameters.yearly_decay_percent, requestParameters.PercolateQuerySubscriptionRequestRequest, options, @@ -14900,13 +14823,6 @@ export interface LearningResourcesUserSubscriptionApiLearningResourcesUserSubscr */ readonly topic?: Array - /** - * If true sets search_type=dfs_query_then_fetch which makes Opensearchmake an extra pre-query to calculate term frequencies accross indexes - * @type {boolean} - * @memberof LearningResourcesUserSubscriptionApiLearningResourcesUserSubscriptionCheckList - */ - readonly use_dfs_query_then_fetch?: boolean | null - /** * Relevance score penalty percent per year for for resources without upcoming runs. Only affects results if there is a search term. * @type {number} @@ -15096,13 +15012,6 @@ export interface LearningResourcesUserSubscriptionApiLearningResourcesUserSubscr */ readonly topic?: Array - /** - * If true sets search_type=dfs_query_then_fetch which makes Opensearchmake an extra pre-query to calculate term frequencies accross indexes - * @type {boolean} - * @memberof LearningResourcesUserSubscriptionApiLearningResourcesUserSubscriptionList - */ - readonly use_dfs_query_then_fetch?: boolean | null - /** * Relevance score penalty percent per year for for resources without upcoming runs. Only affects results if there is a search term. * @type {number} @@ -15299,13 +15208,6 @@ export interface LearningResourcesUserSubscriptionApiLearningResourcesUserSubscr */ readonly topic?: Array - /** - * If true sets search_type=dfs_query_then_fetch which makes Opensearchmake an extra pre-query to calculate term frequencies accross indexes - * @type {boolean} - * @memberof LearningResourcesUserSubscriptionApiLearningResourcesUserSubscriptionSubscribeCreate - */ - readonly use_dfs_query_then_fetch?: boolean | null - /** * Relevance score penalty percent per year for for resources without upcoming runs. Only affects results if there is a search term. * @type {number} @@ -15382,7 +15284,6 @@ export class LearningResourcesUserSubscriptionApi extends BaseAPI { requestParameters.sortby, requestParameters.source_type, requestParameters.topic, - requestParameters.use_dfs_query_then_fetch, requestParameters.yearly_decay_percent, options, ) @@ -15428,7 +15329,6 @@ export class LearningResourcesUserSubscriptionApi extends BaseAPI { requestParameters.slop, requestParameters.sortby, requestParameters.topic, - requestParameters.use_dfs_query_then_fetch, requestParameters.yearly_decay_percent, options, ) @@ -15475,7 +15375,6 @@ export class LearningResourcesUserSubscriptionApi extends BaseAPI { requestParameters.sortby, requestParameters.source_type, requestParameters.topic, - requestParameters.use_dfs_query_then_fetch, requestParameters.yearly_decay_percent, requestParameters.PercolateQuerySubscriptionRequestRequest, options, diff --git a/frontends/mit-learn/src/page-components/SearchDisplay/SearchDisplay.tsx b/frontends/mit-learn/src/page-components/SearchDisplay/SearchDisplay.tsx index 4943b9ae7f..7e0d8e8299 100644 --- a/frontends/mit-learn/src/page-components/SearchDisplay/SearchDisplay.tsx +++ b/frontends/mit-learn/src/page-components/SearchDisplay/SearchDisplay.tsx @@ -553,7 +553,6 @@ const SearchDisplay: React.FC = ({ max_incompleteness_penalty: searchParams.get( "max_incompleteness_penalty", ), - use_dfs_query_then_fetch: searchParams.get("use_dfs_query_then_fetch"), ...requestParams, aggregations: (facetNames || []).concat([ "resource_category", diff --git a/learning_resources_search/api.py b/learning_resources_search/api.py index f377f832c2..8826a6c3dd 100644 --- a/learning_resources_search/api.py +++ b/learning_resources_search/api.py @@ -595,7 +595,7 @@ def add_text_query_to_search(search, text, search_params, query_type_query): return search -def construct_search(search_params): # noqa: C901 +def construct_search(search_params): """ Construct a learning resources search based on the query @@ -623,7 +623,7 @@ def construct_search(search_params): # noqa: C901 search = Search(index=",".join(indexes)) search = search.source(fields={"excludes": SOURCE_EXCLUDED_FIELDS}) - + search = search.params(search_type="dfs_query_then_fetch") if search_params.get("offset"): search = search.extra(from_=search_params.get("offset")) @@ -669,9 +669,6 @@ def construct_search(search_params): # noqa: C901 if search_params.get("dev_mode"): search = search.extra(explain=True) - if search_params.get("use_dfs_query_then_fetch"): - search = search.params(search_type="dfs_query_then_fetch") - return search diff --git a/learning_resources_search/api_test.py b/learning_resources_search/api_test.py index 20e0ceb6f4..9450f73105 100644 --- a/learning_resources_search/api_test.py +++ b/learning_resources_search/api_test.py @@ -1436,6 +1436,7 @@ def test_execute_learn_search_for_learning_resource_query(opensearch): opensearch.conn.search.assert_called_once_with( body=query, index=["testindex_course_default"], + search_type="dfs_query_then_fetch", ) @@ -1893,6 +1894,7 @@ def test_execute_learn_search_with_script_score( opensearch.conn.search.assert_called_once_with( body=query, index=["testindex_course_default"], + search_type="dfs_query_then_fetch", ) @@ -2302,6 +2304,7 @@ def test_execute_learn_search_with_min_score(mocker, opensearch): opensearch.conn.search.assert_called_once_with( body=query, index=["testindex_course_default"], + search_type="dfs_query_then_fetch", ) @@ -2511,6 +2514,7 @@ def test_execute_learn_search_for_content_file_query(opensearch): opensearch.conn.search.assert_called_once_with( body=query, index=["testindex_course_default"], + search_type="dfs_query_then_fetch", ) diff --git a/learning_resources_search/serializers.py b/learning_resources_search/serializers.py index a26aa7eb52..070e5163cd 100644 --- a/learning_resources_search/serializers.py +++ b/learning_resources_search/serializers.py @@ -284,15 +284,6 @@ class SearchRequestSerializer(serializers.Serializer): default=False, help_text="If true return raw open search results with score explanations", ) - use_dfs_query_then_fetch = serializers.BooleanField( - required=False, - allow_null=True, - default=False, - help_text=( - "If true sets search_type=dfs_query_then_fetch which makes Opensearch" - "make an extra pre-query to calculate term frequencies accross indexes" - ), - ) def validate(self, attrs): unknown = set(self.initial_data) - set(self.fields) diff --git a/learning_resources_search/serializers_test.py b/learning_resources_search/serializers_test.py index 938d000f4b..f80a482c0f 100644 --- a/learning_resources_search/serializers_test.py +++ b/learning_resources_search/serializers_test.py @@ -942,7 +942,6 @@ def test_learning_resources_search_request_serializer(): "slop": 2, "min_score": 0, "max_incompleteness_penalty": 25, - "use_dfs_query_then_fetch": False, } cleaned = { @@ -969,7 +968,6 @@ def test_learning_resources_search_request_serializer(): "slop": 2, "min_score": 0, "max_incompleteness_penalty": 25, - "use_dfs_query_then_fetch": False, } serialized = LearningResourcesSearchRequestSerializer(data=data) @@ -1007,7 +1005,6 @@ def test_content_file_search_request_serializer(): "offered_by": ["xpro", "ocw"], "platform": ["xpro", "edx", "ocw"], "dev_mode": False, - "use_dfs_query_then_fetch": False, } serialized = ContentFileSearchRequestSerializer(data=data) diff --git a/openapi/specs/v1.yaml b/openapi/specs/v1.yaml index 58006cf66b..4d4a278a5e 100644 --- a/openapi/specs/v1.yaml +++ b/openapi/specs/v1.yaml @@ -303,14 +303,6 @@ paths: type: string minLength: 1 description: The topic name. To see a list of options go to api/v1/topics/ - - in: query - name: use_dfs_query_then_fetch - schema: - type: boolean - nullable: true - default: false - description: If true sets search_type=dfs_query_then_fetch which makes Opensearchmake - an extra pre-query to calculate term frequencies accross indexes tags: - content_file_search responses: @@ -2799,14 +2791,6 @@ paths: type: string minLength: 1 description: The topic name. To see a list of options go to api/v1/topics/ - - in: query - name: use_dfs_query_then_fetch - schema: - type: boolean - nullable: true - default: false - description: If true sets search_type=dfs_query_then_fetch which makes Opensearchmake - an extra pre-query to calculate term frequencies accross indexes - in: query name: yearly_decay_percent schema: @@ -3309,14 +3293,6 @@ paths: type: string minLength: 1 description: The topic name. To see a list of options go to api/v1/topics/ - - in: query - name: use_dfs_query_then_fetch - schema: - type: boolean - nullable: true - default: false - description: If true sets search_type=dfs_query_then_fetch which makes Opensearchmake - an extra pre-query to calculate term frequencies accross indexes - in: query name: yearly_decay_percent schema: @@ -3858,14 +3834,6 @@ paths: type: string minLength: 1 description: The topic name. To see a list of options go to api/v1/topics/ - - in: query - name: use_dfs_query_then_fetch - schema: - type: boolean - nullable: true - default: false - description: If true sets search_type=dfs_query_then_fetch which makes Opensearchmake - an extra pre-query to calculate term frequencies accross indexes - in: query name: yearly_decay_percent schema: @@ -4384,14 +4352,6 @@ paths: type: string minLength: 1 description: The topic name. To see a list of options go to api/v1/topics/ - - in: query - name: use_dfs_query_then_fetch - schema: - type: boolean - nullable: true - default: false - description: If true sets search_type=dfs_query_then_fetch which makes Opensearchmake - an extra pre-query to calculate term frequencies accross indexes - in: query name: yearly_decay_percent schema: @@ -10338,12 +10298,6 @@ components: nullable: true default: false description: If true return raw open search results with score explanations - use_dfs_query_then_fetch: - type: boolean - nullable: true - default: false - description: If true sets search_type=dfs_query_then_fetch which makes Opensearchmake - an extra pre-query to calculate term frequencies accross indexes id: type: array items: From 89e967841ec7a72dd91ea711c3644b4ddb8f2849 Mon Sep 17 00:00:00 2001 From: Carey P Gumaer Date: Mon, 16 Sep 2024 10:20:11 -0400 Subject: [PATCH 05/16] add noindex setting (#1559) * add new setting for enabling noindex * default to true * add the setting to the frontend and write in noindex meta tag if it's true --- app.json | 4 ++++ frontends/mit-learn/public/index.html | 3 +++ frontends/mit-learn/webpack.config.js | 6 ++++++ main/settings.py | 3 +++ 4 files changed, 16 insertions(+) diff --git a/app.json b/app.json index 52b749d30b..fa40538047 100644 --- a/app.json +++ b/app.json @@ -352,6 +352,10 @@ "description": "Shared secret for JWT auth tokens", "required": false }, + "MITOL_NOINDEX": { + "description": "Prevent search engines from indexing the site", + "required": false + }, "MITOL_SECURE_SSL_REDIRECT": { "description": "Application-level SSL redirect setting.", "value": "True", diff --git a/frontends/mit-learn/public/index.html b/frontends/mit-learn/public/index.html index 3a53a522fa..db71cb559f 100644 --- a/frontends/mit-learn/public/index.html +++ b/frontends/mit-learn/public/index.html @@ -3,6 +3,9 @@ + <% if (MITOL_NOINDEX) { %> + + <% } %>