CINXE.COM
Treehouse: HTML, CSS, PHP, JS, and Python Development Courses
<!DOCTYPE html> <html lang="en" class="application-layout library-index library-controller index-action visitor ie7 ie lt-ie11 lt-ie10 lt-ie9 lt-ie8 windows" id="layout" data-featurette="application-layout" > <head> <title>Treehouse: HTML, CSS, PHP, JS, and Python Development Courses</title> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","errorBeacon":"bam.nr-data.net","licenseKey":"d98036d1cc","applicationID":"1824378","transactionName":"cQ5eRRQNCQ8BFhZUXlATUUMfTQwNAAFB","queueTime":0,"applicationTime":1156,"agent":""}</script> <script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:[]}};(window.NREUM||(NREUM={})).loader_config={xpid:"VwIBVldWGwIIVlVRAAk=",licenseKey:"d98036d1cc",applicationID:"1824378"};;/*! For license information please see nr-loader-full-1.281.0.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},9417:(e,t,r)=>{"use strict";r.d(t,{D0:()=>g,gD:()=>m,xN:()=>p});var n=r(3333),i=r(993);const o=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var a=r(2614),s=r(944),c=r(384),u=r(8122);const d="[data-nr-mask]",l=()=>{const e={feature_flags:[],experimental:{marks:!1,measures:!1,resources:!1},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0,level:i.p_.INFO},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{get capture_marks(){return e.feature_flags.includes(n.$v.MARKS)||e.experimental.marks},set capture_marks(t){e.experimental.marks=t},get capture_measures(){return e.feature_flags.includes(n.$v.MEASURES)||e.experimental.measures},set capture_measures(t){e.experimental.measures=t},capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(n.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:a.wk,inactiveMs:a.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){o(t)?e.mask_selector="".concat(t,",").concat(d):""===t||null===t?e.mask_selector=d:(0,s.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){o(t)?e.block_selector+=",".concat(t):""!==t&&(0,s.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,s.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},spa:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]}}},f={},h="All configuration objects require an agent identifier!";function g(e){if(!e)throw new Error(h);if(!f[e])throw new Error("Configuration for ".concat(e," was never set"));return f[e]}function p(e,t){if(!e)throw new Error(h);f[e]=(0,u.a)(t,l());const r=(0,c.nY)(e);r&&(r.init=f[e])}function m(e,t){if(!e)throw new Error(h);var r=g(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},5603:(e,t,r)=>{"use strict";r.d(t,{a:()=>c,o:()=>s});var n=r(384),i=r(8122);const o={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},a={};function s(e){if(!e)throw new Error("All loader-config objects require an agent identifier!");if(!a[e])throw new Error("LoaderConfig for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.loader_config=a[e])}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>l});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0,harvester:void 0},d={};function l(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!d[e])throw new Error("Runtime for ".concat(e," was never set"));return d[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");d[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(d[e],"harvestCount")||Object.defineProperty(d[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=d[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,Yq:()=>a,xv:()=>n});const n="1.281.0",i="PROD",o="CDN",a="^2.0.0-alpha.17"},6154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>u,RI:()=>i,WN:()=>f,bv:()=>o,gm:()=>a,lR:()=>l,m:()=>c,mw:()=>s,sb:()=>d});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,u=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),d=u&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)()},7295:(e,t,r)=>{"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>o});var n=[];function i(e){if(!e||o(e))return!1;if(0===n.length)return!0;for(var t=0;t<n.length;t++){var r=n[t];if("*"===r.hostname)return!1;if(s(r.hostname,e.hostname)&&c(r.pathname,e.pathname))return!1}return!0}function o(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let o,a;i>0?(o=r.substring(0,i),a=r.substring(i)):(o=r,a="");let[s]=o.split(":");n.push({hostname:s,pathname:a})}}function s(e,t){return!(e.length>t.length)&&t.indexOf(e)===t.length-e.length}function c(e,t){return 0===e.indexOf("/")&&(e=e.substring(1)),0===t.indexOf("/")&&(t=t.substring(1)),""===e||e===t}},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>l,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};d(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),h(e,t,!1),s[e].size&&f(e))}function d(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function l(e="",t="feature",r=!1){if(d(e),!e||!s[e].get(t)||r)return h(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),h(e,t)})))}function h(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)g(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function g(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:g,addEventListener:g,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=h(n),c=p(e),d=c.length,l=0;l<d;l++)c[l].apply(a,r);var g=v()[s[e]];g&&g.push([f,e,r,a]);return a},get:m,listeners:p,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function g(e,t){n[e]=p(e).concat(t)}function p(e){return n[e]||[]}function m(t){return d[t]=d[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=u)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,ZF:()=>c,bz:()=>a,el:()=>u});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}function c(){return s(16)}function u(){return s(32)}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},7485:(e,t,r)=>{"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(7836),i=r(6154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},3304:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(7836);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>d,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>l});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function d(e,t){a()[e]=t}function l(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},8139:(e,t,r)=>{"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),o=r(8990),a=r(6154);const s={},c=a.gm.XMLHttpRequest,u="addEventListener",d="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e){var t=function(e){return(e||n.ee).get("events")}(e);if(s[t.debugId]++)return t;s[t.debugId]=1;var r=(0,i.YM)(t,!0);function f(e){r.inPlace(e,[u,d],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,f),c&&h(c.prototype,f),h(a.gm,f)),t.on(u+"-start",(function(e,t){var n=e[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var i=(0,o.I)(n,l,(function(){var e={object:function(){if("function"!=typeof n.handleEvent)return;return n.handleEvent.apply(n,arguments)},function:n}[typeof n];return e?r(e,"fn-",null,e.name||"anonymous"):n}));this.wrapped=e[1]=i}})),t.on(d+"-start",(function(e){e[1]=this.wrapped||e[1]})),t}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,u);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];d(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return d(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,d,l;try{a=this,o=[...arguments],d="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],d],e)}i(r+"start",[o,a,s],d,c);try{return l=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],d,c),e}finally{i(r+"end",[o,a,l],d,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function d(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},9300:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.ajax},3333:(e,t,r)=>{"use strict";r.d(t,{$v:()=>u,TZ:()=>n,Zp:()=>i,kd:()=>c,mq:()=>s,nf:()=>a,qN:()=>o});const n=r(860).K7.genericEvents,i=["auxclick","click","copy","keydown","paste","scrollend"],o=["focus","blur"],a=4,s=1e3,c=["PageAction","UserAction","BrowserPerformance"],u={MARKS:"experimental.marks",MEASURES:"experimental.measures",RESOURCES:"experimental.resources"}},6774:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.jserrors},993:(e,t,r)=>{"use strict";r.d(t,{ET:()=>o,TZ:()=>a,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o="log",a=n.K7.logging},3785:(e,t,r)=>{"use strict";r.d(t,{R:()=>c,b:()=>u});var n=r(9908),i=r(1863),o=r(860),a=r(3969),s=r(993);function c(e,t,r={},c=s.p_.INFO){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,o.K7.metrics,e),(0,n.p)(s.ET,[(0,i.t)(),t,r,c],void 0,o.K7.logging,e)}function u(e){return"string"==typeof e&&Object.values(s.p_).some((t=>t===e.toUpperCase().trim()))}},3969:(e,t,r)=>{"use strict";r.d(t,{TZ:()=>n,XG:()=>s,rs:()=>i,xV:()=>a,z_:()=>o});const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{BB:()=>d,G4:()=>o,Qb:()=>l,TZ:()=>i,Ug:()=>a,_s:()=>s,bc:()=>u,yP:()=>c});var n=r(2614);const i=r(860).K7.sessionReplay,o={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"},a=.12,s={DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},c={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0},u={RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},d=5e3,l={API:"api"}},5270:(e,t,r)=>{"use strict";r.d(t,{Aw:()=>c,CT:()=>u,SR:()=>s});var n=r(384),i=r(9417),o=r(7767),a=r(6154);function s(e){return!!(0,n.dV)().o.MO&&(0,o.V)(e)&&!0===(0,i.gD)(e,"session_trace.enabled")}function c(e){return!0===(0,i.gD)(e,"session_replay.preload")&&s(e)}function u(e,t){const r=t.correctAbsoluteTimestamp(e);return{originalTimestamp:e,correctedTimestamp:r,timestampDiff:e-r,originTime:a.WN,correctedOriginTime:t.correctedOriginTime,originTimeDiff:Math.floor(a.WN-t.correctedOriginTime)}}},3738:(e,t,r)=>{"use strict";r.d(t,{He:()=>i,Kp:()=>s,Lc:()=>u,Rz:()=>d,TZ:()=>n,bD:()=>o,d3:()=>a,jx:()=>l,uP:()=>c});const n=r(860).K7.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState",l=1e3},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7767:(e,t,r)=>{"use strict";r.d(t,{V:()=>o});var n=r(9417),i=r(6154);const o=e=>i.RI&&!0===(0,n.gD)(e,"privacy.cookies_enabled")},425:(e,t,r)=>{"use strict";r.d(t,{j:()=>j});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),d=r(6154),l=r(944),f=r(3969),h=r(384),g=r(6344);const p=["setErrorHandler","finished","addToTrace","addRelease","recordCustomEvent","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",g.G4.RECORD,g.G4.PAUSE,"log","wrapLogger"],m=["setErrorHandler","finished","addToTrace","addRelease"];var v=r(1863),b=r(2614),y=r(993),R=r(3785),x=r(2646),w=r(3434);const E=new Map;function A(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,w.YM)(i),a=new x.y(s.P);a.level=n.level,a.customAttributes=n.customAttributes;const c=t[r]?.[w.Jt]||t[r];return E.set(c,a),o.inPlace(t,[r],"wrap-logger-",(()=>E.get(c))),i}function T(){const e=(0,h.pV)();p.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,l.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const _={};var S=r(9417),O=r(5603),N=r(5284);const I=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let P=!1;function j(e,t={},p,x){let{init:w,info:E,loader_config:j,runtime:C={},exposed:k=!0}=t;C.loaderType=p;const H=(0,h.pV)();E||(w=H.init,E=H.info,j=H.loader_config),(0,S.xN)(e.agentIdentifier,w||{}),(0,O.a)(e.agentIdentifier,j||{}),E.jsAttributes??={},d.bv&&(E.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,E);const L=(0,S.D0)(e.agentIdentifier),D=[E.beacon,E.errorBeacon];P||(L.proxy.assets&&(I(L.proxy.assets),D.push(L.proxy.assets)),L.proxy.beacon&&D.push(L.proxy.beacon),T(),(0,h.US)("activatedFeatures",N.B),e.runSoftNavOverSpa&&=!0===L.soft_navigations.enabled&&L.feature_flags.includes("soft_nav")),C.denyList=[...L.ajax.deny_list||[],...L.ajax.block_internal?D:[]],C.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,C),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=function(e,t,h=!1){t||(0,c.Ak)(e,"api");const p={};var x=s.ee.get(e),w=x.get("tracer");_[e]=b.g.OFF,x.on(g.G4.REPLAY_RUNNING,(t=>{_[e]=t}));var E="api-",T=E+"ixn-";function S(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),I(E,n,!0,o||null===r?"session":void 0)(t,r)}function O(){}p.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,x),(0,R.R)(x,e,t,r)},p.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,x),A(x,e,t,{customAttributes:r,level:i})},m.forEach((e=>{p[e]=I(E,e,!0,"api")})),p.addPageAction=I(E,"addPageAction",!0,n.K7.genericEvents),p.recordCustomEvent=I(E,"recordCustomEvent",!0,n.K7.genericEvents),p.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,I(E,"setPageViewName",!0)()},p.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return S(e,t,"setCustomAttribute",r);(0,l.R)(40,typeof t)}else(0,l.R)(39,typeof e)},p.setUserId=function(e){if("string"==typeof e||null===e)return S("enduser.id",e,"setUserId",!0);(0,l.R)(41,typeof e)},p.setApplicationVersion=function(e){if("string"==typeof e||null===e)return S("application.version",e,"setApplicationVersion",!1);(0,l.R)(42,typeof e)},p.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,x),x.emit("manual-start-all")}catch(e){(0,l.R)(23,e)}},p[g.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,x),(0,a.p)(g.G4.RECORD,[],void 0,n.K7.sessionReplay,x)},p[g.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,x),(0,a.p)(g.G4.PAUSE,[],void 0,n.K7.sessionReplay,x)},p.interaction=function(e){return(new O).get("object"==typeof e?e:{})};const N=O.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,x),h||(0,a.p)(T+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,x),function(){if(w.emit((o?"":"no-")+"fn-start",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw w.emit("fn-err",[arguments,this,t],r),t}finally{w.emit("fn-end",[(0,v.t)()],r)}}}};function I(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,x),i&&(0,a.p)(e+t,[r?(0,v.t)():performance.now(),...arguments],r?null:this,i,x),r?void 0:this}}function P(){r.e(891).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,l.R)(27,e),x.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{N[e]=I(T,e,void 0,h?n.K7.softNav:n.K7.spa)})),p.setCurrentRouteName=h?I(T,"routeName",void 0,n.K7.softNav):I(E,"routeName",!0,n.K7.spa),p.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,x),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!_[e]],void 0,n.K7.jserrors,x)},d.RI?(0,u.GG)((()=>P()),!0):P(),p}(e.agentIdentifier,x,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=k),P=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>u,K7:()=>s,P3:()=>c,XX:()=>i,qY:()=>n,v4:()=>a});const n="events",i="jserrors",o="browser/blobs",a="rum",s={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},c={[s.pageViewEvent]:1,[s.pageViewTiming]:2,[s.metrics]:3,[s.jserrors]:4,[s.spa]:5,[s.ajax]:6,[s.sessionTrace]:7,[s.softNav]:8,[s.sessionReplay]:9,[s.logging]:10,[s.genericEvents]:11},u={[s.pageViewEvent]:a,[s.pageViewTiming]:n,[s.ajax]:n,[s.spa]:n,[s.softNav]:n,[s.metrics]:i,[s.jserrors]:i,[s.sessionTrace]:o,[s.sessionReplay]:o,[s.logging]:"browser/logs",[s.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>({95:"nr-full-compressor",222:"nr-full-recorder",891:"nr-full"}[e]+"-1.281.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.281.0.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var l=u[d];if(l.getAttribute("src")==r||l.getAttribute("data-webpack")==t+o){s=l;break}}if(!s){c=!0;var f={891:"sha512-54Aat8Udm6iAAlMAdj4qB/wPExKn9TKWSsPnD5+K2RMckmHE0cb0CFc0VauDfpPug5wse9qzwDKuwIMa3hX6gw==",222:"sha512-IA751FH/bvhLWl8I5ZELgH0tFQetWKV1G+9qRkPvOrTSv2X2tgItmreKfvrd8zImHp4sIPTnSN0otmgnX7UJXA==",95:"sha512-Rwnn8hCtQVvDGDl0hSpEazVuRDuvlGnJpNuNwuapJ46vDCvUNGBIzCZCrZYygTgVJUjMrfQoMAULb+2gKoTIiQ=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var h=(t,n)=>{s.onerror=s.onload=null,clearTimeout(g);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},g=setTimeout(h.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=h.bind(null,s.onerror),s.onload=h.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={85:0,959:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.281.0.PROD"]=self["webpackChunk:NRBA-1.281.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(){this.agentIdentifier=(0,r.LA)(16)}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}recordCustomEvent(e,t){return this.#e("recordCustomEvent",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(9417);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var d=i(425);var l=i(1687),f=i(4234),h=i(5289),g=i(6154),p=i(5270),m=i(7767),v=i(6389);class b extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,l.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,v.J)((()=>{(0,l.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if((0,m.V)(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(891).then(i.bind(i,6526));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(!this.#t(this.featureName,o))return(0,l.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(891).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),t.runtime.harvester.initializedAggregates.push(this.featAggregate),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,l.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};g.RI?(0,h.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return(0,p.SR)(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var y=i(6630);class R extends b{static featureName=y.T;constructor(e,t=!0){super(e,y.T,t),this.importAggregator(e)}}var x=i(384);var w=i(9908),E=i(2843),A=i(3878),T=i(782),_=i(1863);class S extends b{static featureName=T.T;constructor(e,t=!0){super(e,T.T,t),g.RI&&((0,E.u)((()=>(0,w.p)("docHidden",[(0,_.t)()],void 0,T.T,this.ee)),!0),(0,A.sp)("pagehide",(()=>(0,w.p)("winPagehide",[(0,_.t)()],void 0,T.T,this.ee))),this.importAggregator(e))}}var O=i(3969);class N extends b{static featureName=O.TZ;constructor(e,t=!0){super(e,O.TZ,t),this.importAggregator(e)}}var I=i(6774),P=i(3304);class j{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,P.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function C(e){return L(e)?e:new j(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic)}function k(e){const t="Unhandled Promise Rejection";if(!e?.reason)return;if(L(e.reason))try{return e.reason.message=t+": "+e.reason.message,C(e.reason)}catch(t){return C(e.reason)}const r=C(e.reason);return r.message=t+": "+r?.message,r}function H(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new j(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic);return t.name=SyntaxError.name,t}return L(e.error)?e.error:C(e)}function L(e){return e instanceof Error&&!!e.stack}class D extends b{static featureName=I.T;#r=!1;constructor(e,r=!0){super(e,I.T,r);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",((e,t)=>{this.abortHandler&&(0,w.p)("ierr",[C(e),(0,_.t)(),!0,{},this.#r,t],void 0,this.featureName,this.ee)})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.#r=e})),g.gm.addEventListener("unhandledrejection",(e=>{this.abortHandler&&(0,w.p)("err",[k(e),(0,_.t)(),!1,{unhandledPromiseRejection:1},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",(e=>{this.abortHandler&&(0,w.p)("err",[H(e),(0,_.t)(),!1,{},this.#r],void 0,this.featureName,this.ee)}),(0,A.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e)}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var M=i(8990);let K=1;const U="nr@id";function V(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,M.I)(e,U,(function(){return K++}))}function G(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,P.A)(e).length}catch(e){return}}}var F=i(8139),B=i(7836),W=i(3434);const z={},q=["open","send"];function Z(t){var r=t||B.ee;const n=function(e){return(e||B.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(z[n.debugId]++)return n;z[n.debugId]=1,(0,F.u)(r);var i=(0,W.YM)(n),o=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,s=g.gm.Promise,c=g.gm.setInterval,u="readystatechange",d=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],l=[],f=g.gm.XMLHttpRequest=function(t){const r=new o(t),a=n.context(r);try{n.emit("new-xhr",[r],a),r.addEventListener(u,(s=a,function(){var e=this;e.readyState>3&&!s.resolved&&(s.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,d,"fn-",y)}),(0,A.jT)(!1))}catch(t){(0,e.R)(15,t);try{n.emit("internal-error",[t])}catch(e){}}var s;return r};function h(e,t){i.inPlace(t,["onreadystatechange"],"fn-",y)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,f),f.prototype=o.prototype,i.inPlace(f.prototype,q,"-xhr-",y),n.on("send-xhr-start",(function(e,t){h(e,t),function(e){l.push(e),a&&(p?p.then(b):c?c(b):(m=-m,v.data=m))}(t)})),n.on("open-xhr-start",h),a){var p=s&&s.resolve();if(!c&&!s){var m=1,v=document.createTextNode(m);new a(b).observe(v,{characterData:!0})}}else r.on("fn-end",(function(e){e[0]&&e[0].type===u||b()}));function b(){for(var e=0;e<l.length;e++)h(0,l[e]);l.length&&(l=[])}function y(e,t){return t}return n}var Y="fetch-",X=Y+"body-",J=["arrayBuffer","blob","json","text","formData"],Q=g.gm.Request,ee=g.gm.Response,te="prototype";const re={};function ne(e){const t=function(e){return(e||B.ee).get("fetch")}(e);if(!(Q&&ee&&g.gm.fetch))return t;if(re[t.debugId]++)return t;function r(e,r,n){var i=e[r];"function"==typeof i&&(e[r]=function(){var e,r=[...arguments],o={};t.emit(n+"before-start",[r],o),o[B.P]&&o[B.P].dt&&(e=o[B.P].dt);var a=i.apply(this,r);return t.emit(n+"start",[r,e],a),a.then((function(e){return t.emit(n+"end",[null,e],a),e}),(function(e){throw t.emit(n+"end",[e],a),e}))})}return re[t.debugId]=1,J.forEach((e=>{r(Q[te],e,X),r(ee[te],e,X)})),r(g.gm,"fetch",Y),t.on(Y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(Y+"done",[null,r],n)}else t.emit(Y+"done",[e],n)})),t}var ie=i(7485),oe=i(5603);class ae{constructor(e){this.agentIdentifier=e}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var t=(0,oe.o)(this.agentIdentifier);if(!t)return null;var n=(t.accountID||"").toString()||null,i=(t.agentID||"").toString()||null,o=(t.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,r.ZF)(),s=(0,r.el)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,o){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,P.A)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1,r={};if((0,s.gD)(this.agentIdentifier,"distributed_tracing")&&(r=(0,s.D0)(this.agentIdentifier).distributed_tracing),e.sameOrigin)t=!0;else if(r.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,ie.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}isDtEnabled(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.enabled}excludeNewrelicHeader(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=(0,s.gD)(this.agentIdentifier,"distributed_tracing");return!!e&&!!e.cors_use_tracecontext_headers}}var se=i(9300),ce=i(7295),ue=["load","error","abort","timeout"],de=ue.length,le=(0,x.dV)().o.REQ,fe=(0,x.dV)().o.XHR;class he extends b{static featureName=se.T;constructor(e,t=!0){super(e,se.T,t),this.dt=new ae(e.agentIdentifier),this.handler=(e,t,r,n)=>(0,w.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach((t=>{if(t.initiatorType in e&&0!==t.responseStatus){const r={status:t.responseStatus},n={rxSize:t.transferSize,duration:Math.floor(t.duration),cbTime:0};ge(r,t.name),this.handler("xhr",[r,n,t.startTime,t.responseEnd,e[t.initiatorType]],void 0,a.K7.ajax)}}))}catch(e){}ne(this.ee),Z(this.ee),function(e,t,r,n){function i(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=x,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){E(t,e)}),(0,A.jT)(!1)),g.lR||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,A.jT)(!1))}function o(e){this.params={method:e[0]},ge(this,e[1]),this.metrics={}}function s(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var i=n.generateTracePayload(this.parsedOrigin);if(i){var o=!1;i.newrelicHeader&&(r.setRequestHeader("newrelic",i.newrelicHeader),o=!0),i.traceContextParentHeader&&(r.setRequestHeader("traceparent",i.traceContextParentHeader),i.traceContextStateHeader&&r.setRequestHeader("tracestate",i.traceContextStateHeader),o=!0),o&&(this.dt=i)}}function c(e,r){var n=this.metrics,i=e[0],o=this;if(n&&i){var a=G(i);a&&(n.txSize=a)}this.startTime=(0,_.t)(),this.body=i,this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof r.onload)&&"function"==typeof o.end)&&o.end(r)}catch(e){try{t.emit("internal-error",[e])}catch(e){}}};for(var s=0;s<de;s++)r.addEventListener(ue[s],this.listener,(0,A.jT)(!1))}function u(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function d(e,t){var r=""+V(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function l(e,t){var r=""+V(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function f(){this.endTime=(0,_.t)()}function h(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-added",[e[1],e[2]],r)}function p(e,r){r instanceof fe&&"load"===e[0]&&t.emit("xhr-load-removed",[e[1],e[2]],r)}function m(e,t,r){t instanceof fe&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,_.t)()))}function v(e,r){this.xhrCbStart&&t.emit("xhr-cb-time",[(0,_.t)()-this.xhrCbStart,this.onload,r],r)}function b(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,ie.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var i=n.generateTracePayload(this.parsedOrigin);if(i&&(i.newrelicHeader||i.traceContextParentHeader))if(e[0]&&e[0].headers)s(e[0].headers,i)&&(this.dt=i);else{var o={};for(var a in r)o[a]=r[a];o.headers=new Headers(r.headers||{}),s(o.headers,i)&&(this.dt=i),e.length>1?e[1]=o:e.push(o)}}function s(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function y(e,t){this.params={},this.metrics={},this.startTime=(0,_.t)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof le?r=i.url:g.gm?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),ge(this,r);var o=(""+(i&&i instanceof le&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.body=n.body,this.txSize=G(n.body)||0}function R(e,t){if(this.endTime=(0,_.t)(),this.params||(this.params={}),(0,ce.iW)(this.params))return;let n;this.params.status=t?t.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);const i={txSize:this.txSize,rxSize:n,duration:(0,_.t)()-this.startTime};r("xhr",[this.params,i,this.startTime,this.endTime,"fetch"],this,a.K7.ajax)}function x(e){const t=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(let t=0;t<de;t++)e.removeEventListener(ue[t],this.listener,!1);t.aborted||(0,ce.iW)(t)||(n.duration=(0,_.t)()-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):E(this,e),n.cbTime=this.cbTime,r("xhr",[t,n,this.startTime,this.endTime,"xhr"],this,a.K7.ajax))}}function E(e,r){e.params.status=r.status;var n=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?G(e.response):"text"===r||""===r||void 0===r?G(e.responseText):void 0}(r,e.lastSize);if(n&&(e.metrics.rxSize=n),e.sameOrigin){var i=r.getResponseHeader("X-NewRelic-App-Data");i&&((0,w.p)(O.rs,["Ajax/CrossApplicationTracing/Header/Seen"],void 0,a.K7.metrics,t),e.params.cat=i.split(", ").pop())}e.loadCaptureCalled=!0}t.on("new-xhr",i),t.on("open-xhr-start",o),t.on("open-xhr-end",s),t.on("send-xhr-start",c),t.on("xhr-cb-time",u),t.on("xhr-load-added",d),t.on("xhr-load-removed",l),t.on("xhr-resolved",f),t.on("addEventListener-end",h),t.on("removeEventListener-end",p),t.on("fn-end",v),t.on("fetch-before-start",b),t.on("fetch-start",y),t.on("fn-start",m),t.on("fetch-done",R)}(e,this.ee,this.handler,this.dt),this.importAggregator(e)}}function ge(e,t){var r=(0,ie.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}const pe={},me=["pushState","replaceState"];function ve(e){const t=function(e){return(e||B.ee).get("history")}(e);return!g.RI||pe[t.debugId]++||(pe[t.debugId]=1,(0,W.YM)(t).inPlace(window.history,me,"-")),t}var be=i(3738);const{He:ye,bD:Re,d3:xe,Kp:we,TZ:Ee,Lc:Ae,uP:Te,Rz:_e}=be;class Se extends b{static featureName=Ee;constructor(e,t=!0){super(e,Ee,t);if(!(0,m.V)(this.agentIdentifier))return void this.deregisterDrain();const r=this.ee;let n;ve(r),this.eventsEE=(0,F.u)(r),this.eventsEE.on(Te,(function(e,t){this.bstStart=(0,_.t)()})),this.eventsEE.on(Ae,(function(e,t){(0,w.p)("bst",[e[0],t,this.bstStart,(0,_.t)()],void 0,a.K7.sessionTrace,r)})),r.on(_e+xe,(function(e){this.time=(0,_.t)(),this.startPath=location.pathname+location.hash})),r.on(_e+we,(function(e){(0,w.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,a.K7.sessionTrace,r)}));try{n=new PerformanceObserver((e=>{const t=e.getEntries();(0,w.p)(ye,[t],void 0,a.K7.sessionTrace,r)})),n.observe({type:Re,buffered:!0})}catch(e){}this.importAggregator(e,{resourceObserver:n})}}var Oe=i(2614);class Ne extends b{static featureName=t.TZ;#i;#o;constructor(e,r=!0){let n;super(e,t.TZ,r),this.replayRunning=!1,this.#o=e;try{n=JSON.parse(localStorage.getItem("".concat(Oe.H3,"_").concat(Oe.uh)))}catch(e){}(0,p.SR)(e.agentIdentifier)&&this.ee.on(t.G4.RECORD,(()=>this.#a())),this.#s(n)?(this.#i=n?.sessionReplayMode,this.#c()):this.importAggregator(e),this.ee.on("err",(e=>{this.replayRunning&&(this.errorNoticed=!0,(0,w.p)(t.G4.ERROR_DURING_REPLAY,[e],void 0,this.featureName,this.ee))})),this.ee.on(t.G4.REPLAY_RUNNING,(e=>{this.replayRunning=e}))}#s(e){return e&&(e.sessionReplayMode===Oe.g.FULL||e.sessionReplayMode===Oe.g.ERROR)||(0,p.Aw)(this.agentIdentifier)}#u=!1;async#c(e){if(!this.#u){this.#u=!0;try{const{Recorder:t}=await Promise.all([i.e(891),i.e(222)]).then(i.bind(i,8589));this.recorder??=new t({mode:this.#i,agentIdentifier:this.agentIdentifier,trigger:e,ee:this.ee,agentRef:this.#o}),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording}catch(e){}this.importAggregator(this.#o,{recorder:this.recorder,errorNoticed:this.errorNoticed})}}#a(){this.featAggregate?this.featAggregate.mode!==Oe.g.FULL&&this.featAggregate.initializeRecording(Oe.g.FULL,!0):(this.#i=Oe.g.FULL,this.#c(t.Qb.API),this.recorder&&this.recorder.parent.mode!==Oe.g.FULL&&(this.recorder.parent.mode=Oe.g.FULL,this.recorder.stopRecording(),this.recorder.startRecording(),this.abortHandler=this.recorder.stopRecording))}}var Ie=i(3333);class Pe extends b{static featureName=Ie.TZ;constructor(e,t=!0){super(e,Ie.TZ,t);const r=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.user_actions.enabled,e.init.performance.resources.enabled];if(g.RI&&(e.init.user_actions.enabled&&(Ie.Zp.forEach((e=>(0,A.sp)(e,(e=>(0,w.p)("ua",[e],void 0,this.featureName,this.ee)),!0))),Ie.qN.forEach((e=>{const t=(0,v.s)((e=>{(0,w.p)("ua",[e],void 0,this.featureName,this.ee)}),500,{leading:!0});(0,A.sp)(e,t)}))),e.init.performance.resources.enabled&&g.gm.PerformanceObserver?.supportedEntryTypes.includes("resource"))){new PerformanceObserver((e=>{e.getEntries().forEach((e=>{(0,w.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)}))})).observe({type:"resource",buffered:!0})}r.some((e=>e))?this.importAggregator(e):this.deregisterDrain()}}var je=i(993),Ce=i(3785);class ke extends b{static featureName=je.TZ;constructor(e,t=!0){super(e,je.TZ,t);const r=this.ee;this.ee.on("wrap-logger-end",(function([e]){const{level:t,customAttributes:n}=this;(0,Ce.R)(r,e,n,t)})),this.importAggregator(e)}}new class extends o{constructor(t){super(),g.gm?(this.features={},(0,x.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(R),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,d.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,x.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[R,S,Se,Ne,he,N,D,Pe,ke],loaderType:"pro"})})()})();</script> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, user-scalable=yes" /> <meta name="google-site-verification" content="4Ga-viQvIZUFNQXu323xpp_24RDlLooxwlpnXhinjPA" /> <meta name="msvalidate.01" content="F0716E70B7DD3B8C892B48891CA4B541" /> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="6OA3zO4TeC4YIKLBnFuYR1t2j17H0w0xr0vft0053kq0Wj1bM9Jm9CW8cvqhZgvB+PtYNpA+c3yp8lT4GH9hUQ==" /> <meta name="description" content="Browse all the courses we offer by topic or difficulty. Sign up today and get access to our entire library, workshops, bonus content, and more." /> <meta name="image" content="https://ecs-static.teamtreehouse.com/assets/logo-232a207b24bcb8ab1fba7c1d85467f71d7b2d010d427c859987ed641706f45d9.png" /> <meta name="twitter:site" content="@treehouse" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:description" content="Browse all the courses we offer by topic or difficulty. Sign up today and get access to our entire library, workshops, bonus content, and more." /> <meta name="twitter:image" content="https://ecs-static.teamtreehouse.com/assets/marketing/opengraph/logo_twitter-cd0ecb90408499f45a2191805f54362981da5a69ddcfaa6ec93556d64e289036.png" /> <meta property="fb:app_id" content="1447543992198627" /> <meta property="og:site_name" content="Treehouse" /> <meta property="og:description" content="Browse all the courses we offer by topic or difficulty. Sign up today and get access to our entire library, workshops, bonus content, and more." /> <meta property="og:image" content="https://ecs-static.teamtreehouse.com/assets/marketing/opengraph/logo_facebook-5a7642409483233360d948ca4dd6840de0a6083475af4b047d452b77b00ca68a.png" /> <link rel="preload" href="https://ecs-static.teamtreehouse.com/assets/vendor-f4a70e398d62c1b7bd00ff33f21e74e92066e660584b86e57d54a9b252314e57.css" as="style" type="text/css" crossorigin="anonymous" integrity="true"> <link rel="preload" href="https://ecs-static.teamtreehouse.com/assets/application-3fe4d64fadf4ca4d0459873312d66d0c10d2159ffc37a68b02020c15e1167db5.css" as="style" type="text/css" crossorigin="anonymous" integrity="true"> <link rel="stylesheet" media="all" href="https://ecs-static.teamtreehouse.com/assets/vendor-f4a70e398d62c1b7bd00ff33f21e74e92066e660584b86e57d54a9b252314e57.css" crossorigin="true" integrity="sha256-9KcOOY1iwbe9AP8z8h506SBm5mBYS4blfVSpslIxTlc=" /> <link rel="stylesheet" media="all" href="https://ecs-static.teamtreehouse.com/assets/application-3fe4d64fadf4ca4d0459873312d66d0c10d2159ffc37a68b02020c15e1167db5.css" crossorigin="true" integrity="sha256-P+TWT630yk0EWYczEtZtDBDSFZ/8N6aLAgIMFeEWfbU=" /> <link rel="preconnect" href="https://cdn.fonts.net"> <link rel="preload" onload="this.rel='stylesheet'" as="style" href="https://cdn.fonts.net/kit/39d0ab8f-c2d6-48ee-8a04-732fec352d95/39d0ab8f-c2d6-48ee-8a04-732fec352d95.css" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@9/swiper-bundle.min.css"/> <style media="print"> header, footer, .graph, .nav, svg { display: none } </style> <link rel="shortcut icon" href="/assets/favicon-pride.png" /> <link rel="apple-touch-icon-precomposed" sizes="60x60" href="https://ecs-static.teamtreehouse.com/assets/apple-touch-icon-60x60-precomposed-05be36fef4d37c9642a8923eb00325c9d680150d26954e868ddded6b7976a032.png" /> <link rel="apple-touch-icon-precomposed" sizes="76x76" href="https://ecs-static.teamtreehouse.com/assets/apple-touch-icon-76x76-precomposed-7283cd247847d1f21be0e79c52e3524c89adabf69cfc331046319f4ab19be058.png" /> <link rel="apple-touch-icon-precomposed" sizes="120x120" href="https://ecs-static.teamtreehouse.com/assets/apple-touch-icon-120x120-precomposed-dda60d87f49aa928ff86379bb50d9514d4b5f19502ff562b453e3d254730f682.png" /> <link rel="apple-touch-icon-precomposed" sizes="152x152" href="https://ecs-static.teamtreehouse.com/assets/apple-touch-icon-152x152-precomposed-1f486d33d1fe181adce0689d370d7dab9e777fab99b244e15b8c785239410674.png" /> <link href="https://teamtreehouse.com/library" rel="canonical" /> <link rel="preload" href="https://ecs-static.teamtreehouse.com/assets/application_vendor-190e58c76a02c6db7ade130f3dd31bde5c398709b1af3261fd56a768836c437c.js" as="script" type="text/javascript" crossorigin="anonymous"> <link rel="preload" href="https://ecs-static.teamtreehouse.com/assets/application-35a8d45d797f31fa96a9e8c1bf74532a40290afe0afe98b7cc63ee27379c151b.js" as="script" type="text/javascript" crossorigin="anonymous"> <link rel="preconnect" href="https://www.googletagmanager.com" crossorigin> <link rel="dns-prefetch" href="https://www.googletagmanager.com"> <link rel="preconnect" href="https://www.google-analytics.com" crossorigin> <link rel="dns-prefetch" href="https://www.google-analytics.com"> <link rel="preconnect" href="https://2607fe104b34492c99ca6fd077590dd7.js.ubembed.com" crossorigin> <link rel="dns-prefetch" href="https://2607fe104b34492c99ca6fd077590dd7.js.ubembed.com"> <link rel="preconnect" href="https://www.google.com/recaptcha/api.js" crossorigin> <link rel="dns-prefetch" href="https://www.google.com/recaptcha/api.js"> <script src="https://www.google.com/recaptcha/api.js" async defer></script> <script src="https://cdn.usefathom.com/script.js" data-site="JATZEBKX" defer></script> <script>(function(w,r){w._rwq=r;w[r]=w[r]||function(){(w[r].q=w[r].q||[]).push(arguments)}})(window,"rewardful");</script> <script async src="https://affiliates.teamtreehouse.com/rw.js" data-rewardful="5ba892"></script> </head> <body class="windows ie7 ie lt-ie11 lt-ie10 lt-ie9 lt-ie8 navbar-announcement-padding"> <!-- Data Layer --> <script> window.dataLayer = window.dataLayer || []; dataLayer.push({"loggedIn":false,"visitorId":8979280457,"userId":null}); </script> <!-- Google Tag Manager --> <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-PZ55S7" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl+'';f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-PZ55S7');</script> <!-- End Google Tag Manager --> <script src="https://ecs-static.teamtreehouse.com/assets/head_vendor-6a3288bb3aef100cad5d3497f90343103ec0f44b56f4ab0a057922302e7e77bb.js" crossorigin="true" integrity="sha256-ajKIuzrvEAytXTSX+QNDED7A9EtW9KsKBXkiMC5+d7s="></script> <script> window.bugsnagClient = bugsnag({ apiKey: "8251a8eb6422d59eaf410e7c1b1c7b38", releaseStage: "production", beforeSend: function (report) { if (window.location.hostname != "teamtreehouse.com") { report.ignore(); } } }); </script> <link rel="preconnect" href="https://optanon.blob.core.windows.net" crossorigin> <link rel="dns-prefetch" href="https://optanon.blob.core.windows.net"> <script async src="https://cdn.cookielaw.org/consent/39d1ae64-085b-42e6-a239-a988d6530b80.js"></script> <script> function OptanonWrapper() { window.dataLayer.push({ event: "OneTrustGroupsUpdated" }) } </script> <script> //<![CDATA[ window.appData = '{\"controller_name\":\"library\",\"action_name\":\"index\",\"app_version\":\"cea27f26d8610df8967f406f622b5f1f54af0233\"}' //]]> </script> <section class="nav-announcement" data-featurette="nav-announcement-banner" style="background-color:#ab20fd !important;"> <div class="swiper nav-announcement-slider"> <div class="swiper-wrapper"> <div class="swiper-slide" data-bg-color="#ab20fd" data-desktop-message="🤑 Join the <a style="text-decoration: underline !important" href="https://join.teamtreehouse.com/affiliates/">Treehouse affiliate program</a> and earn 25% commission!" data-mobile-message="🤑 Join the <a style="text-decoration: underline !important" href="https://join.teamtreehouse.com/affiliates/">Treehouse affiliate program</a> and earn 25% commission!" > <p class="announcement-message grabbable" style="color:#FFFFFF !important;"> 🤑 Join the <a href="https://join.teamtreehouse.com/affiliates/">Treehouse affiliate program</a> and earn 25% commission! </p> </div> <div class="swiper-slide" data-bg-color="#02b6b9" data-desktop-message="✨ No-code curious? Check out 4 new <a style="text-decoration: underline !important" href="/library/topic:no-code"> FREE Adalo courses</a> and start building an app in minutes — no code required!" data-mobile-message="✨ No-code curious? Check out 4 new <a style="text-decoration: underline !important" href="/library/topic:no-code"> FREE Adalo courses</a> and start building an app in minutes — no code required!" > <p class="announcement-message grabbable" style="color:#ffffff !important;"> ✨ No-code curious? Check out 4 new <a href="/library/topic:no-code"> FREE Adalo courses</a> and start building an app in minutes — no code required! </p> </div> <div class="swiper-slide" data-bg-color="#5fcf80" data-desktop-message="🌟 Dreaming of a bright future? 🎓 <a style="text-decoration: underline !important;" href="mailto:help@teamtreehouse.com?subject=Treehouse%20Scholarship%20Inquiry">Ask about the Treehouse Scholarship program!</a> 🚀 " data-mobile-message="🌟 Dreaming of a bright future? 🎓 <a style="text-decoration: underline !important;" href="mailto:help@teamtreehouse.com?subject=Treehouse%20Scholarship%20Inquiry">Ask about the Treehouse Scholarship program!</a> 🚀 " > <p class="announcement-message grabbable" style="color:#ffffff !important;"> 🌟 Dreaming of a bright future? 🎓 <a href="mailto:help@teamtreehouse.com?subject=Treehouse%20Scholarship%20Inquiry">Ask about the Treehouse Scholarship program!</a> 🚀 </p> </div> </div> <div class="swiper-button-prev"></div> <div class="swiper-button-next"></div> </div> </section> <nav class="nav navbar-announcement-margin" data-layout-element="navigation" data-header > <div class="nav-container"> <button class="hamburger-button " aria-label="Navigation Menu" data-hamburger-button> <span class="hamburger"></span> </button> <ul class="nav-list"> <li class="nav-item nav-item-logo"> <h6 class="nav-item-logo-container"><a title="" data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Treehouse Logo" data-event-label="Source: Navbar" data-analytics-event="marketing nav link" data-analytics-link="Treehouse Logo" data-analytics-path="https://teamtreehouse.com/" data-analytics-action="clicked" class="nav-link nav-link-logo" href="https://teamtreehouse.com/"><svg alt="" class="treehouse-icon nav-item-logo-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 139 32" aria-labelledby="treehouseLogo2119876" role="img"> <title id="treehouseLogo2119876">Treehouse Logo</title> <path class="icon-treehouse" d="M42.8 21.1c-0.4 0.1-0.9 0.2-1.4 0.2 -1 0-1.4-0.6-1.4-1.6v-4.5h2.8c0.7 0 1.4-0.5 1.4-1.3s-0.6-1.3-1.4-1.3H40v-1.5c0-0.9-0.7-1.5-1.5-1.5S37 10.3 37 11.1v8.7c0 2.5 1.2 4.3 4 4.3 0.8 0 1.9-0.1 2.7-0.5 0.7-0.3 0.9-0.8 0.9-1.3C44.6 21.6 43.9 20.9 42.8 21.1zM52.8 12.2c-0.4-0.1-1.2-0.2-1.9-0.2 -2.5 0-3.9 1.5-3.9 3.8v6.8c0 0.8 0.7 1.5 1.5 1.5s1.5-0.7 1.5-1.5v-6.2c0-1 0.4-1.4 1.1-1.4s1.1 0.2 1.7 0.2c0.9 0 1.4-0.8 1.4-1.4C54.1 13 53.7 12.5 52.8 12.2zM61.1 12c-2.8 0-4.8 1.8-5.1 4.7 0 0.7-0.1 1.9 0 2.8 0.2 2.8 2.2 4.7 5.2 4.7 1.4 0 2.7-0.3 3.5-0.8 0.6-0.4 0.7-0.8 0.7-1.2 0-0.8-0.7-1.6-1.9-1.2 -0.7 0.3-1.5 0.5-2.3 0.5 -1.4 0-2.5-0.7-2.5-2.1v-0.3h5.7c1 0 1.5-0.6 1.5-1.5v-0.5C66 14 64 12 61.1 12zM63 17.1h-4.2c0-1.5 0.7-2.5 2.3-2.5 1.4 0 2.2 0.9 2.1 2.2C63.2 17 63.2 17.1 63 17.1zM73.1 12c-2.8 0-4.8 1.8-5.1 4.7 0 0.7-0.1 1.9 0 2.8 0.2 2.8 2.2 4.7 5.2 4.7 1.4 0 2.7-0.3 3.5-0.8 0.6-0.4 0.7-0.8 0.7-1.2 0-0.8-0.7-1.6-1.9-1.2 -0.7 0.3-1.5 0.5-2.3 0.5 -1.4 0-2.5-0.7-2.5-2.1v-0.3h5.7c1 0 1.5-0.6 1.5-1.5v-0.5C78 14 76 12 73.1 12zM75 17.1h-4.2c0-1.5 0.7-2.5 2.3-2.5 1.4 0 2.2 0.9 2.1 2.2C75.2 17 75.2 17.1 75 17.1zM123.6 17l-1.6-0.4c-1-0.2-1.3-0.5-1.3-1s0.5-0.9 1.6-0.9c0.6 0 1.3 0.2 1.9 0.5 0.7 0.4 1.5 0.3 1.9-0.2 0.5-0.5 0.5-1.4-0.1-2 -0.8-0.6-2.2-1-3.6-1 -2.6 0-4.5 1.3-4.5 3.7 0 1.9 1.4 2.9 3.2 3.4 0.9 0.2 0.8 0.2 1.6 0.4 0.9 0.2 1.3 0.6 1.3 1 0 0.6-0.5 1-1.7 1 -1 0-1.9-0.3-2.6-0.7 -0.7-0.5-1.5-0.3-1.9 0.3 -0.4 0.6-0.3 1.4 0.3 1.8 0.8 0.7 2.1 1.3 4.2 1.3 2.6 0 4.6-1.4 4.6-3.8C126.9 18.6 125.8 17.5 123.6 17zM137.5 19.1c1 0 1.5-0.6 1.5-1.5l0 0v-0.5c0-3.1-2-5.1-4.9-5.1 -2.8 0-4.8 1.8-5.1 4.7 0 0.7-0.1 1.9 0 2.8 0.2 2.8 2.2 4.7 5.2 4.7 1.4 0 2.7-0.3 3.5-0.8 0.6-0.4 0.7-0.8 0.7-1.2 0-0.8-0.7-1.6-1.9-1.2 -0.7 0.3-1.5 0.5-2.3 0.5 -1.4 0-2.5-0.7-2.5-2.1v-0.3H137.5zM134.1 14.6c1.4 0 2.2 0.9 2.1 2.2 0 0.2-0.1 0.3-0.2 0.3h-4.2C131.8 15.6 132.6 14.6 134.1 14.6zM97.5 12c-3 0-5.2 1.9-5.5 4.5 -0.1 0.9-0.1 2.3 0 3.2 0.2 2.6 2.5 4.5 5.5 4.5s5.2-1.9 5.4-4.5c0.1-0.9 0.1-2.2 0-3.1C102.7 13.9 100.5 12 97.5 12zM99.9 19.2c-0.1 1.3-1 2.1-2.4 2.1s-2.3-0.9-2.4-2.1c0-0.6 0-1.6 0-2.2 0.1-1.3 1-2.1 2.4-2.1s2.3 0.9 2.4 2.1C100 17.6 100 18.6 99.9 19.2zM85.6 12c-1.1 0-2.3 0.4-2.7 0.9l0 0V9.7c0-0.9-0.6-1.5-1.4-1.5s-1.4 0.7-1.4 1.5v12.9c0 0.8 0.7 1.5 1.5 1.5s1.4-0.7 1.4-1.5v-6.7c0.5-0.5 1.3-0.9 2.3-0.9 1.2 0 1.9 0.7 1.9 2.1v5.5c0 0.9 0.6 1.6 1.4 1.6 0.9 0 1.5-0.7 1.5-1.6v-5.7C90 13.7 88.4 12 85.6 12zM113.6 12.1c-0.8 0-1.5 0.7-1.5 1.5v7.1c-0.5 0.3-1.2 0.6-2.1 0.6 -1.2 0-2.1-0.7-2.1-2.1v-5.6c0-0.9-0.7-1.6-1.5-1.6 -0.9 0-1.4 0.7-1.4 1.6v5.7c0 3.1 1.8 4.8 4.9 4.8 2.3 0 3.9-0.8 4.6-1.3 0.4-0.2 0.5-0.5 0.5-1v-8.2C115 12.8 114.4 12.1 113.6 12.1z"></path><path class="icon-logo" d="M26 5.9c-1.1-0.6-2.8 0.4-3.8 2.2l-1.9 3.2c-0.7 1.3-0.6 2.9 0.3 4.2l0.1 0.1c0.9 1.2 2 2.4 2.4 2.8 0.2 0.2 0.4 0.5 0.5 0.9 0.3 1.1-0.3 2.3-1.5 2.6 -1.1 0.3-2.3-0.3-2.6-1.5 -0.1-0.3-0.1-0.6-0.1-0.8 0.1-0.5-0.1-1.2-0.8-2 -0.7-0.7-2 0.7-2.5 2.1v0.1c-0.4 1.4-0.7 2.7-0.6 2.8 0 0.1 0.1 0.1 0.1 0.2 0.6 1.2 0.2 2.6-1 3.2s-2.6 0.2-3.2-1 -0.2-2.6 1-3.2c0.1 0 0.1-0.1 0.2-0.1s0.3-0.6 0.6-1.4c0.2-0.7 0.3-1 0.4-1.3 0.1-0.4 0.3-1.4 0.2-1.8 -0.1-0.5-0.6-0.5-1.1-0.2 -0.3 0.2-0.9 0.7-1.1 0.9 -0.5 0.4-0.9 1-1.1 1.5 -0.1 0.2-0.3 0.5-0.5 0.7 -0.9 0.7-2.2 0.6-3-0.3 -0.7-0.9-0.6-2.2 0.3-3 0.3-0.2 0.6-0.4 0.9-0.4 0.5-0.1 2.3-1.2 3.4-2 0.2-0.1 0.5-0.4 0.6-0.5 0.3-0.4 0-0.7-0.3-0.7 -0.9 0.1-1.9 0.2-2.1 0.5 -0.1 0.1-0.2 0.3-0.4 0.4 -0.8 0.6-2 0.4-2.6-0.4s-0.4-2 0.4-2.6c0.3-0.3 0.8-0.4 1.1-0.4 0.7 0 2.5 0.4 3.9 0.1l0.4-0.1c1.5-0.3 3.3-1.6 4-2.9 0 0 0.7-1.2 1.5-2.7C19 3.6 18.9 1.9 18 1.4l-1.7-1c-0.9-0.5-2.2-0.5-3.1 0L1.6 7C0.7 7.5 0 8.7 0 9.7v12.8c0 1 0.7 2.2 1.6 2.7l11.6 6.6c0.9 0.5 2.3 0.5 3.1 0l11.6-6.6c0.9-0.5 1.6-1.7 1.6-2.7V9.7c0-1-0.7-2.2-1.6-2.7C27.9 7 27.1 6.5 26 5.9z"></path> </svg></a></h6> </li> <div class="nav-block nav-block-mobile-tablet"> <li class="nav-item nav-item-secondary nav-item-show-on-mobile nav-item-tablet" data-featurette="expandable-content-card"> <span class="nav-link nav-link-plans toggle-steps-view">Plans</span> <span class="nav-item-show-on-mobile-container"> <div class="toggle-steps-view-chevron toggle-steps" tabindex="0"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 12 7.5" class="chevron-icon" aria-labelledby="chevron9640129" role="img"> <title id="chevron9640129">Chevron</title> <g> <path d="M6,7.5L0.3,1.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0L6,4.6l4.3-4.3c0.4-0.4,1-0.4,1.4,0c0.4,0.4,0.4,1,0,1.4L6,7.5z"></path> </g> </svg></div> </span> <ul class="list-unstyled steps-list steps-list-override toggle-steps-hide nav-item-submenu nav-item-mobile"> <li><a href="https://teamtreehouse.com/plans">For Individuals</a></li> <li><a href="https://teamtreehouse.com/teams">For Businesses</a></li> <li><a href="https://teamtreehouse.com/for/schools">For Schools</a></li> <li><a href="/libraries">For Libraries</a></li> <li><a href="/military">For Military</a></li> </ul> </li> <li class="nav-item nav-item-secondary nav-item-show-on-mobile nav-item-tablet" data-featurette="expandable-content-card"> <span class="nav-link nav-link-plans toggle-steps-view">Library</span> <span class="nav-item-show-on-mobile-container"> <div class="toggle-steps-view-chevron toggle-steps" tabindex="0"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 12 7.5" class="chevron-icon" aria-labelledby="chevron13854" role="img"> <title id="chevron13854">Chevron</title> <g> <path d="M6,7.5L0.3,1.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0L6,4.6l4.3-4.3c0.4-0.4,1-0.4,1.4,0c0.4,0.4,0.4,1,0,1.4L6,7.5z"></path> </g> </svg></div> </span> <ul class="list-unstyled steps-list steps-list-override toggle-steps-hide nav-item-submenu nav-item-mobile"> <li><a href="https://teamtreehouse.com/library">All Courses</a></li> <li><a href="https://teamtreehouse.com/tracks">Tracks</a></li> <li><a href="https://join.teamtreehouse.com/college-credit">College Credit</a></li> </ul> </li> <li class="nav-item nav-item-secondary nav-item-show-on-mobile nav-item-tablet" data-featurette="expandable-content-card"> <span class="nav-link nav-link-plans toggle-steps-view">Techdegree</span> <span class="nav-item-show-on-mobile-container"> <div class="toggle-steps-view-chevron toggle-steps" tabindex="0"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 12 7.5" class="chevron-icon" aria-labelledby="chevron360458" role="img"> <title id="chevron360458">Chevron</title> <g> <path d="M6,7.5L0.3,1.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0L6,4.6l4.3-4.3c0.4-0.4,1-0.4,1.4,0c0.4,0.4,0.4,1,0,1.4L6,7.5z"></path> </g> </svg></div> </span> <ul class="list-unstyled steps-list steps-list-override toggle-steps-hide nav-item-submenu nav-item-mobile"> <li><a href="https://teamtreehouse.com/techdegree">Overview</a></li> <li><a href="https://teamtreehouse.com/techdegree/front-end-web-development">Front End Development</a></li> <li><a href="https://teamtreehouse.com/techdegree/full-stack-javascript">Full Stack JavaScript</a></li> <li><a href="https://teamtreehouse.com/techdegree/data-analysis">Data Analysis</a></li> <li><a href="https://teamtreehouse.com/techdegree/ux-design">UX Design</a></li> <li><a href="https://teamtreehouse.com/techdegree/python-development">Python</a></li> </ul> </li> <li class="nav-item nav-item-secondary nav-item-show-on-mobile nav-item-tablet" data-featurette="expandable-content-card"> <span class="nav-link nav-link-plans toggle-steps-view">Community</span> <span class="nav-item-show-on-mobile-container"> <div class="toggle-steps-view-chevron toggle-steps" tabindex="0"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 12 7.5" class="chevron-icon" aria-labelledby="chevron9718174" role="img"> <title id="chevron9718174">Chevron</title> <g> <path d="M6,7.5L0.3,1.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0L6,4.6l4.3-4.3c0.4-0.4,1-0.4,1.4,0c0.4,0.4,0.4,1,0,1.4L6,7.5z"></path> </g> </svg></div> </span> <ul class="list-unstyled steps-list steps-list-override toggle-steps-hide nav-item-submenu nav-item-mobile"> <li><a href="https://treehouse-community-projects.vercel.app">Community Projects</a></li> <li><a href="https://teamtreehouse.com/live_sessions">Live Sessions</a></li> <li><a href="https://teamtreehouse.com/code_adventures">Code Adventures</a></li> <li><a href="https://discord.gg/z7AYghFmhR">Discord</a></li> <li><a href="https://teamtreehouse.com/community">Forum</a></li> <li><a href="https://teamtreehouse.com/stories">Success Stories</a></li> <li><a href="https://teamtreehouse.com/links">Treehouse Links</a></li> <li><a href="https://join.teamtreehouse.com/100-days-of-code">100 Days of Code</a></li> </ul> </li> <li class="nav-item nav-item-secondary nav-item-show-on-mobile nav-item-tablet" data-featurette="expandable-content-card"> <span class="nav-link nav-link-plans toggle-steps-view">Resources</span> <span class="nav-item-show-on-mobile-container"> <div class="toggle-steps-view-chevron toggle-steps" tabindex="0"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 12 7.5" class="chevron-icon" aria-labelledby="chevron7187430" role="img"> <title id="chevron7187430">Chevron</title> <g> <path d="M6,7.5L0.3,1.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0L6,4.6l4.3-4.3c0.4-0.4,1-0.4,1.4,0c0.4,0.4,0.4,1,0,1.4L6,7.5z"></path> </g> </svg></div> </span> <ul class="list-unstyled steps-list steps-list-override toggle-steps-hide nav-item-submenu nav-item-mobile"> <li><a class="dropdown-item" href="https://teamtreehouse.com/career-toolbox">Career Toolbox</a></li> <li><a class="dropdown-item" href="https://join.teamtreehouse.com/codeforward">CodeForward</a></li> <li><a class="dropdown-item" href="https://teamtreehouse.com/libraries/find-your-library">Free Treehouse Near Me</a></li> <li><a class="dropdown-item" href="/jobs">Jobs</a></li> <li><a class="dropdown-item" href="http://blog.teamtreehouse.com">Blog</a></li> <li><a class="dropdown-item" href="https://teamtreehouse.com/support">Support</a></li> <li><a class="dropdown-item" href="https://teamtreehouse.com/about">About</a></li> </ul> </li> </div> <div class="nav-block nav-block-2020 nav-block-hide-on-mobile"> <li class="nav-item nav-item-secondary"> <div class="nav-dropdown"> <button class="nav-toggle" aria-haspopup="true" aria-expanded="false">Plans</button> <div class="nav-dropdown-menu"> <a class="dropdown-item" href="https://teamtreehouse.com/plans">For Individuals</a> <a class="dropdown-item" href="https://teamtreehouse.com/teams">For Businesses</a> <a class="dropdown-item" href="https://teamtreehouse.com/for/schools">For Schools</a> <a class="dropdown-item" href="/libraries">For Libraries</a> <a class="dropdown-item" href="/military">For Military</a> </div> </div> </li> <li class="nav-item nav-item-secondary"> <div class="nav-dropdown"> <button class="nav-toggle" aria-haspopup="true" aria-expanded="false">Library</button> <div class="nav-dropdown-menu"> <a class="dropdown-item" href="https://teamtreehouse.com/library">All Courses</a> <a class="dropdown-item" href="https://teamtreehouse.com/tracks">Tracks</a> <a class="dropdown-item" href="https://join.teamtreehouse.com/college-credit">College Credit</a> </div> </div> </li> <li class="nav-item nav-item-secondary"> <div class="nav-dropdown"> <button class="nav-toggle" aria-haspopup="true" aria-expanded="false">Techdegree</button> <div class="nav-dropdown-menu"> <a class="dropdown-item" href="https://teamtreehouse.com/techdegree">Overview</a> <a class="dropdown-item" href="/techdegree/front-end-web-development">Front End Web Development</a> <a class="dropdown-item" href="/techdegree/full-stack-javascript">Full Stack JavaScript</a> <a class="dropdown-item" href="/techdegree/python-development">Python Development</a> <a class="dropdown-item" href="/techdegree/data-analysis">Data Analysis</a> <a class="dropdown-item" href="/techdegree/ux-design">UX Design</a> </div> </div> </li> <li class="nav-item nav-item-secondary"> <div class="nav-dropdown"> <button class="nav-toggle" aria-haspopup="true" aria-expanded="false">Community</button> <div class="nav-dropdown-menu"> <a class="dropdown-item" href="https://treehouse-community-projects.vercel.app">Community Projects</a> <a class="dropdown-item" href="https://teamtreehouse.com/live_sessions">Live Sessions</a> <a class="dropdown-item" href="https://teamtreehouse.com/code_adventures">Code Adventures</a> <a class="dropdown-item" href="https://discord.gg/z7AYghFmhR">Discord</a> <a class="dropdown-item" href="https://teamtreehouse.com/community">Forum</a> <a class="dropdown-item" href="https://teamtreehouse.com/stories">Success Stories</a> <a class="dropdown-item" href="https://teamtreehouse.com/links">Treehouse Links</a> <a class="dropdown-item" href="https://join.teamtreehouse.com/100-days-of-code">100 Days of Code</a> </div> </div> </li> <li class="nav-item nav-item-secondary"> <div class="nav-dropdown"> <button class="nav-toggle" aria-haspopup="true" aria-expanded="false">Resources</button> <div class="nav-dropdown-menu"> <a class="dropdown-item" href="https://teamtreehouse.com/career-toolbox">Career Toolbox</a> <a class="dropdown-item" href="https://join.teamtreehouse.com/codeforward">CodeForward</a> <a class="dropdown-item" href="https://teamtreehouse.com/libraries/find-your-library">Free Treehouse Near Me</a> <a class="dropdown-item" href="/jobs">Jobs</a> <a class="dropdown-item" href="http://blog.teamtreehouse.com">Blog</a> <a class="dropdown-item" href="https://teamtreehouse.com/support">Support</a> <a class="dropdown-item" href="https://teamtreehouse.com/about">About</a> </div> </div> </li> </div> <li class="nav-item nav-item-tablet nav-item-sign-in nav22-mobile-override" data-featurette="analytics-click-event" data-target="a" data-event-category="link" data-event-action="M: Clicked Sign In" data-event-label="Source: Navbar"> <a class="nav-link nav-link-sign-in " data-featurette="analytics-click-event" data-event-category="link" data-event-action="M: Clicked Sign In" data-event-label="Source: Navbar" data-analytics-event="marketing nav link" data-analytics-link="Sign In" data-analytics-path="https://teamtreehouse.com/signin?return_to=%2Flibrary" data-analytics-action="clicked" href="https://teamtreehouse.com/signin?return_to=%2Flibrary">Sign In</a> </li> <li class="nav-item nav-item-free-trial nav-item-cta flex-inline-xs"> <a class="nav-link nav-link-free-trial button" target="_blank" data-featurette="analytics-click-event" data-event-category="link" data-event-action="M: Clicked Free Trial" data-event-label="Source: Navbar" data-analytics-event="marketing nav link" data-analytics-link="Free Trial" data-analytics-path="/subscribe/new?trial=yes" data-analytics-action="clicked" href="/subscribe/new?trial=yes">Free Trial</a> </li> </ul> <div class="nav-social nav-item-show-on-mobile"> <a title="Instagram" class="nav-social-link" target="_blank" rel="noopener" href="https://instagram.com/teamtreehouse"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 24 24" class="instagram-icon" aria-labelledby="instagramIcon4423952" role="img"> <title id="instagramIcon4423952">Instagram</title> <path d="M16.6,18.5H7.4c-1,0-1.9-0.8-1.9-1.9V7.4c0-1,0.8-1.9,1.9-1.9h9.3c1,0,1.9,0.8,1.9,1.9v9.3C18.5,17.7,17.7,18.5,16.6,18.5z M12,10.1c-1,0-1.9,0.8-1.9,1.9s0.8,1.9,1.9,1.9s1.9-0.8,1.9-1.9S13,10.1,12,10.1z M15.7,7.4c-0.6,0-0.9,0.4-0.9,0.9 s0.4,0.9,0.9,0.9s0.9-0.4,0.9-0.9S16.3,7.4,15.7,7.4z M16.6,12h-0.9c0,2-1.7,3.7-3.7,3.7S8.3,14,8.3,12H7.4v3.7 c0,0.6,0.4,0.9,0.9,0.9h7.4c0.6,0,0.9-0.4,0.9-0.9V12z"></path> </svg></a> <a title="Twitter" class="nav-social-link" target="_blank" rel="noopener" href="https://twitter.com/treehouse"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 24 24" class="twitter-icon" aria-labelledby="twitterIcon3543311" role="img"> <title id="twitterIcon3543311">Twitter</title> <path d="M19,8.3c-0.5,0.2-1,0.4-1.5,0.4c0.6-0.3,1-0.9,1.2-1.5c-0.5,0.3-1.1,0.5-1.7,0.7C16.5,7.3,15.8,7,15,7 c-1.5,0-2.7,1.2-2.7,2.8c0,0.2,0,0.4,0.1,0.6c-2.2-0.1-4.2-1.2-5.5-2.9C6.7,7.9,6.5,8.4,6.5,8.9c0,1,0.4,1.8,1.2,2.3 c-0.4,0-1.2-0.1-1.2-0.3c0,0,0,0,0,0c0,1.3,0.9,2.5,2.2,2.7c-0.2,0.1-0.4,0.1-0.7,0.1c-0.2,0-0.3,0-0.5-0.1c0.3,1.1,1.3,1.9,2.5,1.9 c-0.9,0.7-2.1,1.2-3.3,1.2c-0.2,0-0.4,0-0.6,0c1.2,0.8,2.6,1.2,4.1,1.2c4.9,0,7.6-4.2,7.6-7.9c0-0.1,0-0.2,0-0.4 C18.2,9.4,18.6,8.9,19,8.3z"></path> </svg></a> <a title="Facebook" class="nav-social-link" target="_blank" rel="noopener" href="https://facebook.com/teamtreehouse"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 24 24" class="facebook-icon" aria-labelledby="facebookIcon1264374" role="img"> <title id="facebookIcon1264374">Facebook</title> <path d="M10.3,19.8V13H7.8v-2.8h2.5V8c0-2.4,1.5-3.8,3.7-3.8c1.1,0,2.2,0.2,2.2,0.2v2.4h-1.2c-1.2,0-1.6,0.8-1.6,1.5v1.8h2.7 L15.6,13h-2.3v6.8H10.3z"></path> </svg></a> <a title="YouTube" class="nav-social-link" target="_blank" rel="noopener" href="https://youtube.com/user/gotreehouse"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 24 24" class="youtube-icon" aria-labelledby="youtubeIcon766585" role="img"> <title id="youtubeIcon766585">YouTube</title> <path d="M19.5,8.2c-0.2-0.7-0.7-1.2-1.4-1.4C16.9,6.5,12,6.5,12,6.5s-4.9,0-6.1,0.3C5.2,7,4.7,7.6,4.5,8.2C4.2,9.5,4.2,12,4.2,12 s0,2.5,0.3,3.8c0.2,0.7,0.7,1.2,1.4,1.4c1.2,0.3,6.1,0.3,6.1,0.3s4.9,0,6.1-0.3c0.7-0.2,1.2-0.7,1.4-1.4c0.3-1.2,0.3-3.8,0.3-3.8 S19.8,9.5,19.5,8.2z M9.9,15V9l5.2,3L9.9,15z"></path> </svg></a> <a title="LinkedIn" class="nav-social-link" target="_blank" rel="noopener" href="https://linkedin.com/company/treehouse-island-inc-"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 24 24" class="linked-in-icon" aria-labelledby="linkedinIcon7473267" role="img"> <title id="linkedinIcon7473267">LinkedIn</title> <path d="M17.5,5.5h-11C6,5.5,5.6,6,5.5,6.5v11.1c0,0.5,0.4,0.9,1,0.9h11c0.5,0,0.9-0.4,1-0.9V6.5C18.5,6,18.1,5.5,17.5,5.5z M9.4,16.6H7.5v-6.2h1.9V16.6z M8.4,9.5C7.8,9.5,7.3,9,7.3,8.4s0.5-1.1,1.1-1.1s1.1,0.5,1.1,1.1S9,9.5,8.4,9.5z M16.6,16.6h-1.9v-3 c0-0.7,0-1.7-1-1.7s-1.2,0.8-1.2,1.6v3.1h-1.9v-6.2h1.8v0.9c0.4-0.6,1-1,1.8-1c2,0,2.3,1.3,2.3,3L16.6,16.6z"></path> </svg></a> </div> </div> </nav> <div class=""> <main class="content " role="main" data-content=""> <div class="container "> <div id="welcome-panel" class=" box" data-featurette="welcome-panel" data-url="/user/hide-tour" data-key="library.logged-out-messaging"> <div class="grid-container"> <div class="grid-50 right-768 text-centered"> <img alt="Person reading a book" class="welcome-panel-img" src="https://ecs-static.teamtreehouse.com/assets/views/library/library-4ce8bae163e506844b74a0691d942c161af7f7456bb52dbb74e7a7fdee28c29e.png" /> </div> <div class="grid-50"> <h2> Welcome to the Treehouse Library </h2> <p> This is a sample catalog of all the courses we offer. Browse by topic or difficulty. Sign up today and get access to our entire library. Treehouse students get access to workshops, bonus content, conferences, and more. </p> <h4>Ready to start learning?</h4> <p> Treehouse offers a <strong>7 day free trial</strong> for new students. Get access to 1000s of hours of content. Learn to code, land your dream job. </p> <a href="/subscribe/new?trial=yes" class="button button-primary button-large icon-on-right">Start Your Free Trial <svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 12 12" class="right-arrow-icon"> <path d="M11.7,6.7l-5,5c-0.4,0.4-1,0.4-1.4,0c-0.4-0.4-0.4-1,0-1.4L8.6,7H1C0.5,7,0,6.6,0,6s0.4-1,1-1h7.6L5.3,1.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5,5c0,0,0,0,0,0C12.1,5.7,12.1,6.3,11.7,6.7z"></path> </svg></a> </div> </div> </div> <div data-featurette="library-index"> <div class="contained control-container search custom-search narrower" data-featurette="control-bar"><!-- add class search-focused --> <!-- Search --> <div class="search-container custom-search-container"> <form class="control-search search-form"> <label for="search"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18" class="loading-icon"> <path class="loading-circle" d="M9,4c2.76,0,5,2.24,5,5s-2.24,5-5,5s-5-2.24-5-5S6.24,4,9,4 M9,0C4.03,0,0,4.03,0,9s4.03,9,9,9s9-4.03,9-9S13.97,0,9,0L9,0z"></path> <path class="loading-quarter-circle" d="M16,11c-1.1,0-2-0.9-2-2c0-2.76-2.24-5-5-5C7.9,4,7,3.1,7,2s0.9-2,2-2c4.96,0,9,4.04,9,9C18,10.1,17.1,11,16,11z"></path> </svg><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16" class="search-icon"> <path d="M15.6,13.5l-4-4c0.6-1,1-2.1,1-3.3C12.5,2.8,9.8,0,6.3,0C2.9,0,0,2.8,0,6.2c0,3.4,2.8,6.2,6.3,6.2 c1.2,0,2.2-0.3,3.1-0.9l4,4.1c0.5,0.5,1.5,0.5,2.1,0C16.1,15,16.1,14.1,15.6,13.5z M6.5,9.4c-1.8,0-3.3-1.5-3.3-3.2 C3.2,4.4,4.7,3,6.5,3s3.3,1.5,3.3,3.2C9.7,8,8.3,9.4,6.5,9.4z"></path> </svg></label> <div class="search-input"> <input type="text" class="search input-text" id="q" placeholder="Search Courses and Topics..."> </div> </form> </div> <div class="custom-filter-wrapper">Filters:</div> <!-- Control Page Items --> <ul class="control-page-items custom-control-page-items"> <!-- Sorting --> <li id="sort" class="dropdown-parent filter-container" data-featurette="filter-list"> <a class="dropdown-parent-label sort" data-filter-list-current-value>Newest</a> <ul class="sorting-container dropdown-child filter-dropdown"> <li><a data-filter-value="" class="selected">Newest</a></li> <li><a data-filter-value="oldest" class="">Oldest</a></li> <li><a data-filter-value="title" class="">Alphabetical</a></li> <li><a data-filter-value="difficulty" class="">Difficulty</a></li> </ul> </li> <!-- Filtering --> <li id="type" class="dropdown-parent filter-container hidden" data-featurette="filter-list"> <a class="dropdown-parent-label type" data-filter-list-current-value>Content type</a> <ul class="sorting-container dropdown-child filter-dropdown"> <li><a data-filter-value="">All Types</a></li> <li><a data-filter-value="course">Course</a></li> <li><a data-filter-value="workshop">Workshop</a></li> <li><a data-filter-value="practice">Practice</a></li> <li><a data-filter-value="conference">Conference</a></li> <li><a data-filter-value="bonus">Bonus Series</a></li> </ul> </li> <!-- Courses --> <li id="topic" class="dropdown-parent filter-container" data-featurette="filter-list"> <a class="dropdown-parent-label course" data-filter-list-current-value>All Topics</a> <ul itemscope itemtype="http://schema.org/BreadcrumbList" class="dropdown-child filter-dropdown"> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a itemprop="item" itemid="https://teamtreehouse.com/library" href="#" data-filter-value="" class="selected"> <span itemprop="name">All Topics</span></a> <meta itemprop="position" content="1" /> </li> <li class="ai"> <a data-filter-value="ai"> <span class="topic-color" style="color:#804197"> • </span> AI </a> </li> <li class="javascript"> <a data-filter-value="javascript"> <span class="topic-color" style="color:#3659A2"> • </span> JavaScript </a> </li> <li class="react"> <a data-filter-value="react"> <span class="topic-color" style="color:#3659A2"> • </span> React </a> </li> <li class="no-code"> <a data-filter-value="no-code"> <span class="topic-color" style="color:#31AF7F"> • </span> No Code </a> </li> <li class="python"> <a data-filter-value="python"> <span class="topic-color" style="color:#0e8397"> • </span> Python </a> </li> <li class="design"> <a data-filter-value="design"> <span class="topic-color" style="color:#4A4290"> • </span> Design </a> </li> <li class="html"> <a data-filter-value="html"> <span class="topic-color" style="color:#3659A2"> • </span> HTML </a> </li> <li class="css"> <a data-filter-value="css"> <span class="topic-color" style="color:#3659A2"> • </span> CSS </a> </li> <li class="game-development"> <a data-filter-value="game-development"> <span class="topic-color" style="color:#856fc4"> • </span> Game Development </a> </li> <li class="data-analysis"> <a data-filter-value="data-analysis"> <span class="topic-color" style="color:#be4e95"> • </span> Data Analysis </a> </li> <li class="development-tools"> <a data-filter-value="development-tools"> <span class="topic-color" style="color:#004e61"> • </span> Development Tools </a> </li> <li class="databases"> <a data-filter-value="databases"> <span class="topic-color" style="color:#be4e95"> • </span> Databases </a> </li> <li class="security"> <a data-filter-value="security"> <span class="topic-color" style="color:#409BE9"> • </span> Security </a> </li> <li class="digital-literacy"> <a data-filter-value="digital-literacy"> <span class="topic-color" style="color:#d44c66"> • </span> Digital Literacy </a> </li> <li class="swift"> <a data-filter-value="swift"> <span class="topic-color" style="color:#0e8397"> • </span> Swift </a> </li> <li class="java"> <a data-filter-value="java"> <span class="topic-color" style="color:#0e8397"> • </span> Java </a> </li> <li class="machine-learning"> <a data-filter-value="machine-learning"> <span class="topic-color" style="color:#804197"> • </span> Machine Learning </a> </li> <li class="apis"> <a data-filter-value="apis"> <span class="topic-color" style="color:#0e8397"> • </span> APIs </a> </li> <li class="professional-skills"> <a data-filter-value="professional-skills"> <span class="topic-color" style="color:#d44c66"> • </span> Professional Skills </a> </li> <li class="computer-science"> <a data-filter-value="computer-science"> <span class="topic-color" style="color:#004e61"> • </span> Computer Science </a> </li> <li class="ruby"> <a data-filter-value="ruby"> <span class="topic-color" style="color:#0e8397"> • </span> Ruby </a> </li> <li class="quality-assurance"> <a data-filter-value="quality-assurance"> <span class="topic-color" style="color:#004e61"> • </span> Quality Assurance </a> </li> <li class="php"> <a data-filter-value="php"> <span class="topic-color" style="color:#0e8397"> • </span> PHP </a> </li> <li class="go-language"> <a data-filter-value="go-language"> <span class="topic-color" style="color:#0e8397"> • </span> Go Language </a> </li> <li class="android"> <a data-filter-value="android"> <span class="topic-color" style="color:#30826c"> • </span> Android </a> </li> <li class="learning-resources"> <a data-filter-value="learning-resources"> <span class="topic-color" style="color:#5fcf80"> • </span> Learning Resources </a> </li> <li class="college-credit"> <a data-filter-value="college-credit"> <span class="topic-color" style="color:#3887c8"> • </span> College Credit </a> </li> <li class="coding-for-kids"> <a data-filter-value="coding-for-kids"> <span class="topic-color" style="color:#F36C27"> • </span> Coding for Kids </a> </li> </ul><!-- /child --> </li><!-- /parent --> </ul><!-- /control-page-items --> </div><!-- /control-container --> <div id="library-pjax" data-featurette="truncate-tags"> <div class="tracks-container"> <div class="section-heading"> <a class="button button-secondary" href="/tracks">View all Tracks</a> <h2>Popular Tracks</h2> <p>These are some of the most common tracks students start with.</p> </div> <ul class="card-list"> <li itemscope itemtype="https://schema.org/Course" class="card track topic-front-end premium-video"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <link itemprop="url" href="/tracks/front-end-web-development" /> <meta itemprop="category" content="JavaScript" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT51H" /> </div> <a class="card-box card-link" href="/tracks/front-end-web-development"> <div class="card-progress"> <svg class="track-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <g> <path d="M4,0C3.4,0,3,0.4,3,1v16c0,0.6,0.4,1,1,1s1-0.4,1-1V1C5,0.4,4.6,0,4,0z"></path> <path d="M14,0c-0.6,0-1,0.4-1,1v16c0,0.6,0.4,1,1,1s1-0.4,1-1V1C15,0.4,14.6,0,14,0z"></path> <path d="M0,15c0,0.6,0.4,1,1,1h1v-2H1C0.4,14,0,14.4,0,15z"></path> <path d="M0,9c0,0.6,0.4,1,1,1h1V8H1C0.4,8,0,8.4,0,9z"></path> <path d="M0,3c0,0.6,0.4,1,1,1h1V2H1C0.4,2,0,2.4,0,3z"></path> <path d="M17,8h-1v2h1c0.6,0,1-0.4,1-1S17.6,8,17,8z"></path> <path d="M17,14h-1v2h1c0.6,0,1-0.4,1-1S17.6,14,17,14z"></path> <path d="M6,2h6v2H6V2z M6,8h6v2H6V8z M6,14h6v2H6V14z"></path> <path d="M18,3c0-0.6-0.4-1-1-1h-1v2h1C17.6,4,18,3.6,18,3z"></path> </g> </svg> <ul class="card-stages"> <li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li> </ul> <span class="card-estimate"> 51 hours </span> </div> <p class="card-type">Track <span class="track-due-date"></span> </p> <h3 itemprop="name" class="card-title">Front End Web Development</h3> <p itemprop="description" class="card-description"> Learn to code websites using HTML, CSS, and JavaScript. </p> <meta itemscope="provider" content="Treehouse"> </a> <ul class="card-actions"> <li class="card-action secondary-action"> <a class="button primary" tabindex="0" href="/tracks/front-end-web-development">Explore</a> </li> <li class="card-action secondary card-action-trailer"> <a class="card-action-button" data-featurette="dialog-trigger" tabindex="0" href="/tracks/front-end-web-development/trailer"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 11 12" class="play-icon" aria-labelledby="playIcon3251286" role="img"> <title id="playIcon3251286">Play</title> <path d="M10.5,5.1l-9-5C1.3,0,1.2,0,1,0C0.8,0,0.6,0,0.5,0.1C0.2,0.3,0,0.6,0,1v10c0,0.4,0.2,0.7,0.5,0.9C0.6,12,0.8,12,1,12 c0.2,0,0.3,0,0.5-0.1l9-5C10.8,6.7,11,6.3,11,6C11,5.6,10.8,5.3,10.5,5.1z"></path> </svg><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18" class="loading-icon"> <path class="loading-circle" d="M9,4c2.76,0,5,2.24,5,5s-2.24,5-5,5s-5-2.24-5-5S6.24,4,9,4 M9,0C4.03,0,0,4.03,0,9s4.03,9,9,9s9-4.03,9-9S13.97,0,9,0L9,0z"></path> <path class="loading-quarter-circle" d="M16,11c-1.1,0-2-0.9-2-2c0-2.76-2.24-5-5-5C7.9,4,7,3.1,7,2s0.9-2,2-2c4.96,0,9,4.04,9,9C18,10.1,17.1,11,16,11z"></path> </svg></a> </li> <li class="card-action secondary"> <a class="card-action-info" tabindex="0"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 21" class="salary-icon"> <path d="M13,21H3c-1.7,0-3-1.3-3-3v-6c0-3.6,2.4-6.7,5.8-7.7L4.1,1.5c0,0,0,0,0,0 C4.1,1.4,4,1.3,4,1.2c0,0,0,0,0-0.1C4,1.1,4,1,4,1c0-0.1,0-0.1,0-0.2c0,0,0-0.1,0-0.1c0-0.1,0.1-0.1,0.1-0.2c0-0.1,0.1-0.1,0.1-0.2 c0,0,0.1-0.1,0.1-0.1c0,0,0.1-0.1,0.1-0.1c0,0,0.1,0,0.1,0c0,0,0,0,0.1,0C4.8,0,4.9,0,5,0c0,0,0,0,0,0h6c0,0,0,0,0.1,0 c0.1,0,0.2,0,0.2,0c0,0,0.1,0,0.1,0c0,0,0.1,0,0.1,0c0.1,0,0.1,0.1,0.1,0.1c0,0,0.1,0,0.1,0.1c0.1,0.1,0.1,0.2,0.2,0.3c0,0,0,0,0,0 C12,0.7,12,0.9,12,1c0,0,0,0,0,0c0,0,0,0,0,0c0,0.1,0,0.2-0.1,0.3c0,0,0,0,0,0c0,0,0,0.1,0,0.1l-1.6,2.8c3.3,1,5.8,4,5.8,7.7v6 C16,19.7,14.7,21,13,21z M6.7,2l1.2,2C7.9,4,8,4,8,4c0,0,0.1,0,0.1,0l1.2-2H6.7z M14,12c0-3.3-2.7-6-6-6s-6,2.7-6,6v6 c0,0.6,0.4,1,1,1h10c0.6,0,1-0.4,1-1V12z M11,17H9c0,0.6-0.4,1-1,1s-1-0.4-1-1H5c-0.6,0-1-0.4-1-1s0.4-1,1-1h5v-1H5 c-0.6,0-1-0.4-1-1v-3c0-0.6,0.4-1,1-1h2c0-0.6,0.4-1,1-1s1,0.4,1,1h2c0.6,0,1,0.4,1,1c0,0.6-0.4,1-1,1H6v1h5c0.6,0,1,0.4,1,1v3 C12,16.6,11.6,17,11,17z"></path> </svg></a> <div class="card-tooltip"> <p>An entry-level salary for the technologies covered in this track is about <strong>$51,000 / yr</strong> on average.</p> </div> </li> <li class="card-action secondary"> <a class="card-action-info" tabindex="0"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 17 16" class="building-icon"> <path d="M16,16H1c-0.6,0-1-0.4-1-1V4c0-0.6,0.4-1,1-1h5V1c0-0.6,0.4-1,1-1h9 c0.6,0,1,0.4,1,1v14C17,15.6,16.6,16,16,16z M6,5H2v9h4V5z M15,2H8v12h7V2z M11,5H9V3h2V5z M11,8H9V6h2V8z M11,11H9V9h2V11z M14,5 h-2V3h2V5z M14,8h-2V6h2V8z M14,11h-2V9h2V11z M5,8H3V6h2V8z M5,11H3V9h2V11z"></path> </svg></a> <div class="card-tooltip" data-featurette="info-tooltip"> <p>Some companies that use these technologies regularly include: <strong>Google, Facebook, Yahoo, eBay, Amazon, and Treehouse</strong>.</p> </div> </li> </ul> </li> <li itemscope itemtype="https://schema.org/Course" class="card track topic-back-end premium-video"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <link itemprop="url" href="/tracks/beginning-python" /> <meta itemprop="category" content="Python" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT14H" /> </div> <a class="card-box card-link" href="/tracks/beginning-python"> <div class="card-progress"> <svg class="track-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <g> <path d="M4,0C3.4,0,3,0.4,3,1v16c0,0.6,0.4,1,1,1s1-0.4,1-1V1C5,0.4,4.6,0,4,0z"></path> <path d="M14,0c-0.6,0-1,0.4-1,1v16c0,0.6,0.4,1,1,1s1-0.4,1-1V1C15,0.4,14.6,0,14,0z"></path> <path d="M0,15c0,0.6,0.4,1,1,1h1v-2H1C0.4,14,0,14.4,0,15z"></path> <path d="M0,9c0,0.6,0.4,1,1,1h1V8H1C0.4,8,0,8.4,0,9z"></path> <path d="M0,3c0,0.6,0.4,1,1,1h1V2H1C0.4,2,0,2.4,0,3z"></path> <path d="M17,8h-1v2h1c0.6,0,1-0.4,1-1S17.6,8,17,8z"></path> <path d="M17,14h-1v2h1c0.6,0,1-0.4,1-1S17.6,14,17,14z"></path> <path d="M6,2h6v2H6V2z M6,8h6v2H6V8z M6,14h6v2H6V14z"></path> <path d="M18,3c0-0.6-0.4-1-1-1h-1v2h1C17.6,4,18,3.6,18,3z"></path> </g> </svg> <ul class="card-stages"> <li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li> </ul> <span class="card-estimate"> 14 hours </span> </div> <p class="card-type">Track <span class="track-due-date"></span> </p> <h3 itemprop="name" class="card-title">Beginning Python</h3> <p itemprop="description" class="card-description"> Learn the general purpose programming language Python and build large and small applications and tools. </p> <meta itemscope="provider" content="Treehouse"> </a> <ul class="card-actions"> <li class="card-action secondary-action"> <a class="button primary" tabindex="0" href="/tracks/beginning-python">Explore</a> </li> <li class="card-action secondary card-action-trailer"> <a class="card-action-button" data-featurette="dialog-trigger" tabindex="0" href="/tracks/beginning-python/trailer"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 11 12" class="play-icon" aria-labelledby="playIcon1514248" role="img"> <title id="playIcon1514248">Play</title> <path d="M10.5,5.1l-9-5C1.3,0,1.2,0,1,0C0.8,0,0.6,0,0.5,0.1C0.2,0.3,0,0.6,0,1v10c0,0.4,0.2,0.7,0.5,0.9C0.6,12,0.8,12,1,12 c0.2,0,0.3,0,0.5-0.1l9-5C10.8,6.7,11,6.3,11,6C11,5.6,10.8,5.3,10.5,5.1z"></path> </svg><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18" class="loading-icon"> <path class="loading-circle" d="M9,4c2.76,0,5,2.24,5,5s-2.24,5-5,5s-5-2.24-5-5S6.24,4,9,4 M9,0C4.03,0,0,4.03,0,9s4.03,9,9,9s9-4.03,9-9S13.97,0,9,0L9,0z"></path> <path class="loading-quarter-circle" d="M16,11c-1.1,0-2-0.9-2-2c0-2.76-2.24-5-5-5C7.9,4,7,3.1,7,2s0.9-2,2-2c4.96,0,9,4.04,9,9C18,10.1,17.1,11,16,11z"></path> </svg></a> </li> <li class="card-action secondary"> <a class="card-action-info" tabindex="0"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 21" class="salary-icon"> <path d="M13,21H3c-1.7,0-3-1.3-3-3v-6c0-3.6,2.4-6.7,5.8-7.7L4.1,1.5c0,0,0,0,0,0 C4.1,1.4,4,1.3,4,1.2c0,0,0,0,0-0.1C4,1.1,4,1,4,1c0-0.1,0-0.1,0-0.2c0,0,0-0.1,0-0.1c0-0.1,0.1-0.1,0.1-0.2c0-0.1,0.1-0.1,0.1-0.2 c0,0,0.1-0.1,0.1-0.1c0,0,0.1-0.1,0.1-0.1c0,0,0.1,0,0.1,0c0,0,0,0,0.1,0C4.8,0,4.9,0,5,0c0,0,0,0,0,0h6c0,0,0,0,0.1,0 c0.1,0,0.2,0,0.2,0c0,0,0.1,0,0.1,0c0,0,0.1,0,0.1,0c0.1,0,0.1,0.1,0.1,0.1c0,0,0.1,0,0.1,0.1c0.1,0.1,0.1,0.2,0.2,0.3c0,0,0,0,0,0 C12,0.7,12,0.9,12,1c0,0,0,0,0,0c0,0,0,0,0,0c0,0.1,0,0.2-0.1,0.3c0,0,0,0,0,0c0,0,0,0.1,0,0.1l-1.6,2.8c3.3,1,5.8,4,5.8,7.7v6 C16,19.7,14.7,21,13,21z M6.7,2l1.2,2C7.9,4,8,4,8,4c0,0,0.1,0,0.1,0l1.2-2H6.7z M14,12c0-3.3-2.7-6-6-6s-6,2.7-6,6v6 c0,0.6,0.4,1,1,1h10c0.6,0,1-0.4,1-1V12z M11,17H9c0,0.6-0.4,1-1,1s-1-0.4-1-1H5c-0.6,0-1-0.4-1-1s0.4-1,1-1h5v-1H5 c-0.6,0-1-0.4-1-1v-3c0-0.6,0.4-1,1-1h2c0-0.6,0.4-1,1-1s1,0.4,1,1h2c0.6,0,1,0.4,1,1c0,0.6-0.4,1-1,1H6v1h5c0.6,0,1,0.4,1,1v3 C12,16.6,11.6,17,11,17z"></path> </svg></a> <div class="card-tooltip"> <p>An entry-level salary for the technologies covered in this track is about <strong>$70,000 / yr</strong> on average.</p> </div> </li> <li class="card-action secondary"> <a class="card-action-info" tabindex="0"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 17 16" class="building-icon"> <path d="M16,16H1c-0.6,0-1-0.4-1-1V4c0-0.6,0.4-1,1-1h5V1c0-0.6,0.4-1,1-1h9 c0.6,0,1,0.4,1,1v14C17,15.6,16.6,16,16,16z M6,5H2v9h4V5z M15,2H8v12h7V2z M11,5H9V3h2V5z M11,8H9V6h2V8z M11,11H9V9h2V11z M14,5 h-2V3h2V5z M14,8h-2V6h2V8z M14,11h-2V9h2V11z M5,8H3V6h2V8z M5,11H3V9h2V11z"></path> </svg></a> <div class="card-tooltip" data-featurette="info-tooltip"> <p>Some companies that use these technologies regularly include: <strong>Google, NASA, Nokia, IBM, Digg, Dropbox, Pinterest, Reddit, Yelp, Apple, and Amazon</strong>.</p> </div> </li> </ul> </li> <li itemscope itemtype="https://schema.org/Course" class="card track topic-front-end premium-video"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <link itemprop="url" href="/tracks/full-stack-javascript" /> <meta itemprop="category" content="JavaScript" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT41H" /> </div> <a class="card-box card-link" href="/tracks/full-stack-javascript"> <div class="card-progress"> <svg class="track-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <g> <path d="M4,0C3.4,0,3,0.4,3,1v16c0,0.6,0.4,1,1,1s1-0.4,1-1V1C5,0.4,4.6,0,4,0z"></path> <path d="M14,0c-0.6,0-1,0.4-1,1v16c0,0.6,0.4,1,1,1s1-0.4,1-1V1C15,0.4,14.6,0,14,0z"></path> <path d="M0,15c0,0.6,0.4,1,1,1h1v-2H1C0.4,14,0,14.4,0,15z"></path> <path d="M0,9c0,0.6,0.4,1,1,1h1V8H1C0.4,8,0,8.4,0,9z"></path> <path d="M0,3c0,0.6,0.4,1,1,1h1V2H1C0.4,2,0,2.4,0,3z"></path> <path d="M17,8h-1v2h1c0.6,0,1-0.4,1-1S17.6,8,17,8z"></path> <path d="M17,14h-1v2h1c0.6,0,1-0.4,1-1S17.6,14,17,14z"></path> <path d="M6,2h6v2H6V2z M6,8h6v2H6V8z M6,14h6v2H6V14z"></path> <path d="M18,3c0-0.6-0.4-1-1-1h-1v2h1C17.6,4,18,3.6,18,3z"></path> </g> </svg> <ul class="card-stages"> <li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li> </ul> <span class="card-estimate"> 41 hours </span> </div> <p class="card-type">Track <span class="track-due-date"></span> </p> <h3 itemprop="name" class="card-title">Full Stack JavaScript</h3> <p itemprop="description" class="card-description"> Learn JavaScript, Node.js, and Express to become a professional JavaScript developer. </p> <meta itemscope="provider" content="Treehouse"> </a> <ul class="card-actions"> <li class="card-action secondary-action"> <a class="button primary" tabindex="0" href="/tracks/full-stack-javascript">Explore</a> </li> <li class="card-action secondary card-action-trailer"> <a class="card-action-button" data-featurette="dialog-trigger" tabindex="0" href="/tracks/full-stack-javascript/trailer"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 11 12" class="play-icon" aria-labelledby="playIcon8146413" role="img"> <title id="playIcon8146413">Play</title> <path d="M10.5,5.1l-9-5C1.3,0,1.2,0,1,0C0.8,0,0.6,0,0.5,0.1C0.2,0.3,0,0.6,0,1v10c0,0.4,0.2,0.7,0.5,0.9C0.6,12,0.8,12,1,12 c0.2,0,0.3,0,0.5-0.1l9-5C10.8,6.7,11,6.3,11,6C11,5.6,10.8,5.3,10.5,5.1z"></path> </svg><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18" class="loading-icon"> <path class="loading-circle" d="M9,4c2.76,0,5,2.24,5,5s-2.24,5-5,5s-5-2.24-5-5S6.24,4,9,4 M9,0C4.03,0,0,4.03,0,9s4.03,9,9,9s9-4.03,9-9S13.97,0,9,0L9,0z"></path> <path class="loading-quarter-circle" d="M16,11c-1.1,0-2-0.9-2-2c0-2.76-2.24-5-5-5C7.9,4,7,3.1,7,2s0.9-2,2-2c4.96,0,9,4.04,9,9C18,10.1,17.1,11,16,11z"></path> </svg></a> </li> <li class="card-action secondary"> <a class="card-action-info" tabindex="0"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 21" class="salary-icon"> <path d="M13,21H3c-1.7,0-3-1.3-3-3v-6c0-3.6,2.4-6.7,5.8-7.7L4.1,1.5c0,0,0,0,0,0 C4.1,1.4,4,1.3,4,1.2c0,0,0,0,0-0.1C4,1.1,4,1,4,1c0-0.1,0-0.1,0-0.2c0,0,0-0.1,0-0.1c0-0.1,0.1-0.1,0.1-0.2c0-0.1,0.1-0.1,0.1-0.2 c0,0,0.1-0.1,0.1-0.1c0,0,0.1-0.1,0.1-0.1c0,0,0.1,0,0.1,0c0,0,0,0,0.1,0C4.8,0,4.9,0,5,0c0,0,0,0,0,0h6c0,0,0,0,0.1,0 c0.1,0,0.2,0,0.2,0c0,0,0.1,0,0.1,0c0,0,0.1,0,0.1,0c0.1,0,0.1,0.1,0.1,0.1c0,0,0.1,0,0.1,0.1c0.1,0.1,0.1,0.2,0.2,0.3c0,0,0,0,0,0 C12,0.7,12,0.9,12,1c0,0,0,0,0,0c0,0,0,0,0,0c0,0.1,0,0.2-0.1,0.3c0,0,0,0,0,0c0,0,0,0.1,0,0.1l-1.6,2.8c3.3,1,5.8,4,5.8,7.7v6 C16,19.7,14.7,21,13,21z M6.7,2l1.2,2C7.9,4,8,4,8,4c0,0,0.1,0,0.1,0l1.2-2H6.7z M14,12c0-3.3-2.7-6-6-6s-6,2.7-6,6v6 c0,0.6,0.4,1,1,1h10c0.6,0,1-0.4,1-1V12z M11,17H9c0,0.6-0.4,1-1,1s-1-0.4-1-1H5c-0.6,0-1-0.4-1-1s0.4-1,1-1h5v-1H5 c-0.6,0-1-0.4-1-1v-3c0-0.6,0.4-1,1-1h2c0-0.6,0.4-1,1-1s1,0.4,1,1h2c0.6,0,1,0.4,1,1c0,0.6-0.4,1-1,1H6v1h5c0.6,0,1,0.4,1,1v3 C12,16.6,11.6,17,11,17z"></path> </svg></a> <div class="card-tooltip"> <p>An entry-level salary for the technologies covered in this track is about <strong>$65,000 / yr</strong> on average.</p> </div> </li> <li class="card-action secondary"> <a class="card-action-info" tabindex="0"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 17 16" class="building-icon"> <path d="M16,16H1c-0.6,0-1-0.4-1-1V4c0-0.6,0.4-1,1-1h5V1c0-0.6,0.4-1,1-1h9 c0.6,0,1,0.4,1,1v14C17,15.6,16.6,16,16,16z M6,5H2v9h4V5z M15,2H8v12h7V2z M11,5H9V3h2V5z M11,8H9V6h2V8z M11,11H9V9h2V11z M14,5 h-2V3h2V5z M14,8h-2V6h2V8z M14,11h-2V9h2V11z M5,8H3V6h2V8z M5,11H3V9h2V11z"></path> </svg></a> <div class="card-tooltip" data-featurette="info-tooltip"> <p>Some companies that use these technologies regularly include: <strong>Walmart, PayPal, Groupon, Airbnb</strong>.</p> </div> </li> </ul> </li> </ul> </div> <div class="section-heading"> <h2>Topics</h2> <p>Browse content by the topics that interest you most.</p> </div> <ul id="library-topic-filters" class=" topic-filters"><li class="topic-filter topic-ai has-topic-fill-dark-to-child-on-hover add-ai-fill-dark-to-child-on-hover" data-topic-id="185"><a data-filter-list-val="topic:ai" href="/library/topic:ai"><div class="topic-filter-cover has-topic-fill-to-child add-ai-fill-to-child"><img class="topic-filter__icon" alt="AI" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/ai-brain-logo.png" /></div><span>AI</span></a></li><li class="topic-filter topic-front-end has-topic-fill-dark-to-child-on-hover add-front-end-fill-dark-to-child-on-hover" data-topic-id="4"><a data-filter-list-val="topic:javascript" href="/library/topic:javascript"><div class="topic-filter-cover has-topic-fill-to-child add-front-end-fill-to-child"><img class="topic-filter__icon" alt="JavaScript" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/topics-icons_javascript.png" /></div><span>JavaScript</span></a></li><li class="topic-filter topic-front-end has-topic-fill-dark-to-child-on-hover add-front-end-fill-dark-to-child-on-hover" data-topic-id="186"><a data-filter-list-val="topic:react" href="/library/topic:react"><div class="topic-filter-cover has-topic-fill-to-child add-front-end-fill-to-child"><img class="topic-filter__icon" alt="React" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/icon4-react.png" /></div><span>React</span></a></li><li class="topic-filter topic-no-code has-topic-fill-dark-to-child-on-hover add-no-code-fill-dark-to-child-on-hover" data-topic-id="188"><a data-filter-list-val="topic:no-code" href="/library/topic:no-code"><div class="topic-filter-cover has-topic-fill-to-child add-no-code-fill-to-child"><img class="topic-filter__icon" alt="No Code" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/no-code.png" /></div><span>No Code</span></a></li><li class="topic-filter topic-back-end has-topic-fill-dark-to-child-on-hover add-back-end-fill-dark-to-child-on-hover" data-topic-id="12"><a data-filter-list-val="topic:python" href="/library/topic:python"><div class="topic-filter-cover has-topic-fill-to-child add-back-end-fill-to-child"><img class="topic-filter__icon" alt="Python" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/topics-icons_python.png" /></div><span>Python</span></a></li><li class="topic-filter topic-design has-topic-fill-dark-to-child-on-hover add-design-fill-dark-to-child-on-hover" data-topic-id="3"><a data-filter-list-val="topic:design" href="/library/topic:design"><div class="topic-filter-cover has-topic-fill-to-child add-design-fill-to-child"><img class="topic-filter__icon" alt="Design" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/topics-icons_design2.png" /></div><span>Design</span></a></li><li class="topic-filter topic-front-end has-topic-fill-dark-to-child-on-hover add-front-end-fill-dark-to-child-on-hover" data-topic-id="1"><a data-filter-list-val="topic:html" href="/library/topic:html"><div class="topic-filter-cover has-topic-fill-to-child add-front-end-fill-to-child"><img class="topic-filter__icon" alt="HTML" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/topics-icons_html.png" /></div><span>HTML</span></a></li><li class="topic-filter topic-front-end has-topic-fill-dark-to-child-on-hover add-front-end-fill-dark-to-child-on-hover" data-topic-id="2"><a data-filter-list-val="topic:css" href="/library/topic:css"><div class="topic-filter-cover has-topic-fill-to-child add-front-end-fill-to-child"><img class="topic-filter__icon" alt="CSS" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/topics-icons_css.png" /></div><span>CSS</span></a></li><li class="topic-filter topic-game-development has-topic-fill-dark-to-child-on-hover add-game-development-fill-dark-to-child-on-hover" data-topic-id="42"><a data-filter-list-val="topic:game-development" href="/library/topic:game-development"><div class="topic-filter-cover has-topic-fill-to-child add-game-development-fill-to-child"><img class="topic-filter__icon" alt="Game Development" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/Game-Dev-Icon.png" /></div><span>Game Development</span></a></li><li class="topic-filter topic-data has-topic-fill-dark-to-child-on-hover add-data-fill-dark-to-child-on-hover" data-topic-id="82"><a data-filter-list-val="topic:data-analysis" href="/library/topic:data-analysis"><div class="topic-filter-cover has-topic-fill-to-child add-data-fill-to-child"><img class="topic-filter__icon" alt="Data Analysis" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/DA-icon.png" /></div><span>Data Analysis</span></a></li><li class="topic-filter topic-foundations has-topic-fill-dark-to-child-on-hover add-foundations-fill-dark-to-child-on-hover" data-topic-id="10"><a data-filter-list-val="topic:development-tools" href="/library/topic:development-tools"><div class="topic-filter-cover has-topic-fill-to-child add-foundations-fill-to-child"><img class="topic-filter__icon" alt="Development Tools" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/Developmental-Tools-Icon.png" /></div><span>Development Tools</span></a></li><li class="topic-filter topic-data has-topic-fill-dark-to-child-on-hover add-data-fill-dark-to-child-on-hover" data-topic-id="62"><a data-filter-list-val="topic:databases" href="/library/topic:databases"><div class="topic-filter-cover has-topic-fill-to-child add-data-fill-to-child"><img class="topic-filter__icon" alt="Databases" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/databases-icon.png" /></div><span>Databases</span></a></li><li class="topic-filter topic-security has-topic-fill-dark-to-child-on-hover add-security-fill-dark-to-child-on-hover" data-topic-id="102"><a data-filter-list-val="topic:security" href="/library/topic:security"><div class="topic-filter-cover has-topic-fill-to-child add-security-fill-to-child"><img class="topic-filter__icon" alt="Security" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/Security-icon-final.png" /></div><span>Security</span></a></li><li class="topic-filter topic-fundamentals has-topic-fill-dark-to-child-on-hover add-fundamentals-fill-dark-to-child-on-hover" data-topic-id="32"><a data-filter-list-val="topic:digital-literacy" href="/library/topic:digital-literacy"><div class="topic-filter-cover has-topic-fill-to-child add-fundamentals-fill-to-child"><img class="topic-filter__icon" alt="Digital Literacy" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/dig-lit-icon.png" /></div><span>Digital Literacy</span></a></li><li class="topic-filter topic-back-end has-topic-fill-dark-to-child-on-hover add-back-end-fill-dark-to-child-on-hover" data-topic-id="182"><a data-filter-list-val="topic:swift" href="/library/topic:swift"><div class="topic-filter-cover has-topic-fill-to-child add-back-end-fill-to-child"><img class="topic-filter__icon" alt="Swift" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/image.png" /></div><span>Swift</span></a></li><li class="topic-filter topic-back-end has-topic-fill-dark-to-child-on-hover add-back-end-fill-dark-to-child-on-hover" data-topic-id="22"><a data-filter-list-val="topic:java" href="/library/topic:java"><div class="topic-filter-cover has-topic-fill-to-child add-back-end-fill-to-child"><img class="topic-filter__icon" alt="Java" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/topics-icons_java.png" /></div><span>Java</span></a></li><li class="topic-filter topic-ai has-topic-fill-dark-to-child-on-hover add-ai-fill-dark-to-child-on-hover" data-topic-id="152"><a data-filter-list-val="topic:machine-learning" href="/library/topic:machine-learning"><div class="topic-filter-cover has-topic-fill-to-child add-ai-fill-to-child"><img class="topic-filter__icon" alt="Machine Learning" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/maching-learn-icon1.png" /></div><span>Machine Learning</span></a></li><li class="topic-filter topic-back-end has-topic-fill-dark-to-child-on-hover add-back-end-fill-dark-to-child-on-hover" data-topic-id="92"><a data-filter-list-val="topic:apis" href="/library/topic:apis"><div class="topic-filter-cover has-topic-fill-to-child add-back-end-fill-to-child"><img class="topic-filter__icon" alt="APIs" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/topics-icons_apis.png" /></div><span>APIs</span></a></li><li class="topic-filter topic-fundamentals has-topic-fill-dark-to-child-on-hover add-fundamentals-fill-dark-to-child-on-hover" data-topic-id="11"><a data-filter-list-val="topic:professional-skills" href="/library/topic:professional-skills"><div class="topic-filter-cover has-topic-fill-to-child add-fundamentals-fill-to-child"><img class="topic-filter__icon" alt="Professional Skills" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/business-icon.png" /></div><span>Professional Skills</span></a></li><li class="topic-filter topic-foundations has-topic-fill-dark-to-child-on-hover add-foundations-fill-dark-to-child-on-hover" data-topic-id="172"><a data-filter-list-val="topic:computer-science" href="/library/topic:computer-science"><div class="topic-filter-cover has-topic-fill-to-child add-foundations-fill-to-child"><img class="topic-filter__icon" alt="Computer Science" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/CS-icon.png" /></div><span>Computer Science</span></a></li><li class="topic-filter topic-back-end has-topic-fill-dark-to-child-on-hover add-back-end-fill-dark-to-child-on-hover" data-topic-id="5"><a data-filter-list-val="topic:ruby" href="/library/topic:ruby"><div class="topic-filter-cover has-topic-fill-to-child add-back-end-fill-to-child"><img class="topic-filter__icon" alt="Ruby" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/topics-icons_ruby.png" /></div><span>Ruby</span></a></li><li class="topic-filter topic-foundations has-topic-fill-dark-to-child-on-hover add-foundations-fill-dark-to-child-on-hover" data-topic-id="122"><a data-filter-list-val="topic:quality-assurance" href="/library/topic:quality-assurance"><div class="topic-filter-cover has-topic-fill-to-child add-foundations-fill-to-child"><img class="topic-filter__icon" alt="Quality Assurance" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/QA-Icon-Final.png" /></div><span>Quality Assurance</span></a></li><li class="topic-filter topic-back-end has-topic-fill-dark-to-child-on-hover add-back-end-fill-dark-to-child-on-hover" data-topic-id="6"><a data-filter-list-val="topic:php" href="/library/topic:php"><div class="topic-filter-cover has-topic-fill-to-child add-back-end-fill-to-child"><img class="topic-filter__icon" alt="PHP" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/topics-icons_php.png" /></div><span>PHP</span></a></li><li class="topic-filter topic-back-end has-topic-fill-dark-to-child-on-hover add-back-end-fill-dark-to-child-on-hover" data-topic-id="112"><a data-filter-list-val="topic:go-language" href="/library/topic:go-language"><div class="topic-filter-cover has-topic-fill-to-child add-back-end-fill-to-child"><img class="topic-filter__icon" alt="Go Language" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/go-lang-icon.png" /></div><span>Go Language</span></a></li><li class="topic-filter topic-mobile has-topic-fill-dark-to-child-on-hover add-mobile-fill-dark-to-child-on-hover" data-topic-id="9"><a data-filter-list-val="topic:android" href="/library/topic:android"><div class="topic-filter-cover has-topic-fill-to-child add-mobile-fill-to-child"><img class="topic-filter__icon" alt="Android" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/topics-icons_android.png" /></div><span>Android</span></a></li><li class="topic-filter topic-treehouse-resources has-topic-fill-dark-to-child-on-hover add-treehouse-resources-fill-dark-to-child-on-hover" data-topic-id="162"><a data-filter-list-val="topic:learning-resources" href="/library/topic:learning-resources"><div class="topic-filter-cover has-topic-fill-to-child add-treehouse-resources-fill-to-child"><img class="topic-filter__icon" alt="Learning Resources" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/learning-resources-icon.png" /></div><span>Learning Resources</span></a></li><li class="topic-filter topic-college-credit has-topic-fill-dark-to-child-on-hover add-college-credit-fill-dark-to-child-on-hover" data-topic-id="187"><a data-filter-list-val="topic:college-credit" href="/library/topic:college-credit"><div class="topic-filter-cover has-topic-fill-to-child add-college-credit-fill-to-child"><img class="topic-filter__icon" alt="College Credit" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/College-Credit_Icon-Final.png" /></div><span>College Credit</span></a></li><li class="topic-filter topic-coding-for-kids has-topic-fill-dark-to-child-on-hover add-coding-for-kids-fill-dark-to-child-on-hover" data-topic-id="189"><a data-filter-list-val="topic:coding-for-kids" href="/library/topic:coding-for-kids"><div class="topic-filter-cover has-topic-fill-to-child add-coding-for-kids-fill-to-child"><img class="topic-filter__icon" alt="Coding for Kids" height="70" width="70" loading="lazy" src="https://topic-images.teamtreehouse.com/topics/KidsTopic3.png" /></div><span>Coding for Kids</span></a></li></ul> <div class="box inline-cta"> <h2> Change Your Career, Change Your Life </h2> <p> With 100s of courses and more to come, Treehouse is the best way to learn how to code. </p> <a href="/subscribe/new?trial=yes" class="button button-primary button-large icon-on-right"> Start Your Free Trial <svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 12 12" class="right-arrow-icon"> <path d="M11.7,6.7l-5,5c-0.4,0.4-1,0.4-1.4,0c-0.4-0.4-0.4-1,0-1.4L8.6,7H1C0.5,7,0,6.6,0,6s0.4-1,1-1h7.6L5.3,1.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5,5c0,0,0,0,0,0C12.1,5.7,12.1,6.3,11.7,6.7z"></path> </svg> </a> </div> <div class="section-heading first"> <a class="button button-secondary" data-filter-list-val="type:course">View all 338</a> <h2>Courses</h2> <p>Browse courses across an array of topics and disciplines.</p> </div> <ul itemscope itemtype="https://schema.org/ItemList" id="courses" class="card-list"> <li class="card course syllabus topic-front-end" data-location="library" data-activity="syllabus/4862" itemscope="itemscope" itemtype="https://schema.org/Course" id="Syllabus-4862"> <a class="card-box" href="/library/javascript-basics"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/javascript-basics"> <meta itemprop="category" content="JavaScript" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT3H" /> </div> <div class="card-progress"> <svg class="course-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M0,1.1v13.3c0,0.6,0.5,1.1,1.1,1.2c1.9,0.2,5.5,0.6,6.8,1.5c0.1,0.1,0.2,0.2,0.3,0.3l0.4,0.4c0.2,0.2,0.6,0.2,0.8,0l0.4-0.4c0.1-0.1,0.2-0.2,0.3-0.3c1.3-1,4.9-1.4,6.8-1.5c0.6-0.1,1.1-0.6,1.1-1.2V1.1C18,0.5,17.5,0,16.9,0C14.9,0.1,11,0.5,9,1.9C7,0.5,3.1,0.1,1.1,0C0.5,0,0,0.5,0,1.1z M8,15c-2-0.9-4.5-1.2-6-1.3V2c1.8,0.1,4.5,0.6,6,1.7V15z M16,13.7c-1.5,0.1-4,0.4-6,1.3V3.7c0.6-0.5,1.5-0.8,2.4-1.1c0.8-0.2,1.6-0.4,2.4-0.5C15.2,2.1,15.6,2,16,2V13.7z"></path> </svg> <ul class="card-stages"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> <span class="card-estimate">3 hours</span> </div> <strong class="card-type">Course</strong> <h3 itemprop="name" class="card-title">JavaScript Basics</h3> <div class="rating-and-student-count"> <div class="star-rating-container"> <svg class="star-small-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> </div> | <span>24821 <small>students</small></span> </div> <p itemprop="description" class="card-description"> JavaScript is a programming language that drives the web: from front-end user interface design to server-side backend programming, you'll find JavaScript at every stage of a website and web application. In this course, you'll learn the fundamental programming concepts and syntax of the JavaScript programming language. </p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark7787006" role="img"> <title id="checkmark7787006">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title"></span> </div> </a> <ul class="card-tags tags"> <li class="topic-front-end topic topic"><a data-filter-list-val="topic:javascript" href="/library/topic:javascript"><span>JavaScript</span></a></li><li class="difficulty"><span>Beginner</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card course syllabus topic-front-end" data-location="library" data-activity="syllabus/3832" itemscope="itemscope" itemtype="https://schema.org/Course" id="Syllabus-3832"> <a class="card-box" href="/library/html-basics-2"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/html-basics-2"> <meta itemprop="category" content="HTML" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT3H" /> </div> <div class="card-progress"> <svg class="course-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M0,1.1v13.3c0,0.6,0.5,1.1,1.1,1.2c1.9,0.2,5.5,0.6,6.8,1.5c0.1,0.1,0.2,0.2,0.3,0.3l0.4,0.4c0.2,0.2,0.6,0.2,0.8,0l0.4-0.4c0.1-0.1,0.2-0.2,0.3-0.3c1.3-1,4.9-1.4,6.8-1.5c0.6-0.1,1.1-0.6,1.1-1.2V1.1C18,0.5,17.5,0,16.9,0C14.9,0.1,11,0.5,9,1.9C7,0.5,3.1,0.1,1.1,0C0.5,0,0,0.5,0,1.1z M8,15c-2-0.9-4.5-1.2-6-1.3V2c1.8,0.1,4.5,0.6,6,1.7V15z M16,13.7c-1.5,0.1-4,0.4-6,1.3V3.7c0.6-0.5,1.5-0.8,2.4-1.1c0.8-0.2,1.6-0.4,2.4-0.5C15.2,2.1,15.6,2,16,2V13.7z"></path> </svg> <ul class="card-stages"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> <span class="card-estimate">3 hours</span> </div> <strong class="card-type">Course</strong> <h3 itemprop="name" class="card-title">HTML Basics</h3> <div class="rating-and-student-count"> <div class="star-rating-container"> <svg class="star-small-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> </div> | <span>51833 <small>students</small></span> </div> <p itemprop="description" class="card-description"> Learn HTML (HyperText Markup Language), the language common to every website. HTML describes the basic structure and content of a web page. If you want to build a website or web application, you'll need to know HTML. </p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark7193950" role="img"> <title id="checkmark7193950">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title"></span> </div> </a> <ul class="card-tags tags"> <li class="topic-front-end topic topic"><a data-filter-list-val="topic:html" href="/library/topic:html"><span>HTML</span></a></li><li class="difficulty"><span>Beginner</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card course syllabus topic-back-end" data-location="library" data-activity="syllabus/4382" itemscope="itemscope" itemtype="https://schema.org/Course" id="Syllabus-4382"> <a class="card-box" href="/library/python-basics-3"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/python-basics-3"> <meta itemprop="category" content="Python" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT3H" /> </div> <div class="card-progress"> <svg class="course-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M0,1.1v13.3c0,0.6,0.5,1.1,1.1,1.2c1.9,0.2,5.5,0.6,6.8,1.5c0.1,0.1,0.2,0.2,0.3,0.3l0.4,0.4c0.2,0.2,0.6,0.2,0.8,0l0.4-0.4c0.1-0.1,0.2-0.2,0.3-0.3c1.3-1,4.9-1.4,6.8-1.5c0.6-0.1,1.1-0.6,1.1-1.2V1.1C18,0.5,17.5,0,16.9,0C14.9,0.1,11,0.5,9,1.9C7,0.5,3.1,0.1,1.1,0C0.5,0,0,0.5,0,1.1z M8,15c-2-0.9-4.5-1.2-6-1.3V2c1.8,0.1,4.5,0.6,6,1.7V15z M16,13.7c-1.5,0.1-4,0.4-6,1.3V3.7c0.6-0.5,1.5-0.8,2.4-1.1c0.8-0.2,1.6-0.4,2.4-0.5C15.2,2.1,15.6,2,16,2V13.7z"></path> </svg> <ul class="card-stages"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> <span class="card-estimate">3 hours</span> </div> <strong class="card-type">Course</strong> <h3 itemprop="name" class="card-title">Python Basics</h3> <div class="rating-and-student-count"> <div class="star-rating-container"> <svg class="star-small-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> </div> | <span>25179 <small>students</small></span> </div> <p itemprop="description" class="card-description"> Learn the building blocks of the wonderful general purpose programming language Python. </p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark4532491" role="img"> <title id="checkmark4532491">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title"></span> </div> </a> <ul class="card-tags tags"> <li class="topic-back-end topic topic"><a data-filter-list-val="topic:python" href="/library/topic:python"><span>Python</span></a></li><li class="difficulty"><span>Beginner</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card course syllabus topic-back-end" data-location="library" data-activity="syllabus/4942" itemscope="itemscope" itemtype="https://schema.org/Course" id="Syllabus-4942"> <a class="card-box" href="/library/python-for-kids"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/python-for-kids"> <meta itemprop="category" content="Python" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT2H" /> </div> <div class="card-progress"> <svg class="course-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M0,1.1v13.3c0,0.6,0.5,1.1,1.1,1.2c1.9,0.2,5.5,0.6,6.8,1.5c0.1,0.1,0.2,0.2,0.3,0.3l0.4,0.4c0.2,0.2,0.6,0.2,0.8,0l0.4-0.4c0.1-0.1,0.2-0.2,0.3-0.3c1.3-1,4.9-1.4,6.8-1.5c0.6-0.1,1.1-0.6,1.1-1.2V1.1C18,0.5,17.5,0,16.9,0C14.9,0.1,11,0.5,9,1.9C7,0.5,3.1,0.1,1.1,0C0.5,0,0,0.5,0,1.1z M8,15c-2-0.9-4.5-1.2-6-1.3V2c1.8,0.1,4.5,0.6,6,1.7V15z M16,13.7c-1.5,0.1-4,0.4-6,1.3V3.7c0.6-0.5,1.5-0.8,2.4-1.1c0.8-0.2,1.6-0.4,2.4-0.5C15.2,2.1,15.6,2,16,2V13.7z"></path> </svg> <ul class="card-stages"> <li>1</li> <li>3</li> </ul> <span class="card-estimate">2 hours</span> </div> <strong class="card-type">Course</strong> <h3 itemprop="name" class="card-title">Python for Kids</h3> <div class="rating-and-student-count"> <div class="star-rating-container"> <svg class="star-small-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> </div> | <span>16 <small>students</small></span> </div> <p itemprop="description" class="card-description"> Learn the building blocks of the wonderful general purpose programming language Python. </p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark4144686" role="img"> <title id="checkmark4144686">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title"></span> </div> </a> <ul class="card-tags tags"> <li class="topic-back-end topic topic"><a data-filter-list-val="topic:python" href="/library/topic:python"><span>Python</span></a></li><li class="difficulty"><span>Beginner</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card course syllabus topic-front-end" data-location="library" data-activity="syllabus/4894" itemscope="itemscope" itemtype="https://schema.org/Course" id="Syllabus-4894"> <a class="card-box" href="/library/css-basics-5"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/css-basics-5"> <meta itemprop="category" content="CSS" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT3H" /> </div> <div class="card-progress"> <svg class="course-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M0,1.1v13.3c0,0.6,0.5,1.1,1.1,1.2c1.9,0.2,5.5,0.6,6.8,1.5c0.1,0.1,0.2,0.2,0.3,0.3l0.4,0.4c0.2,0.2,0.6,0.2,0.8,0l0.4-0.4c0.1-0.1,0.2-0.2,0.3-0.3c1.3-1,4.9-1.4,6.8-1.5c0.6-0.1,1.1-0.6,1.1-1.2V1.1C18,0.5,17.5,0,16.9,0C14.9,0.1,11,0.5,9,1.9C7,0.5,3.1,0.1,1.1,0C0.5,0,0,0.5,0,1.1z M8,15c-2-0.9-4.5-1.2-6-1.3V2c1.8,0.1,4.5,0.6,6,1.7V15z M16,13.7c-1.5,0.1-4,0.4-6,1.3V3.7c0.6-0.5,1.5-0.8,2.4-1.1c0.8-0.2,1.6-0.4,2.4-0.5C15.2,2.1,15.6,2,16,2V13.7z"></path> </svg> <ul class="card-stages"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> <span class="card-estimate">3 hours</span> </div> <strong class="card-type">Course</strong> <h3 itemprop="name" class="card-title">CSS Basics</h3> <div class="rating-and-student-count"> <div class="star-rating-container"> <svg class="star-small-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> </div> | <span>10624 <small>students</small></span> </div> <p itemprop="description" class="card-description"> In this course, we're going to learn the basics of CSS, one of the core technologies for designing and building websites and applications. No matter what kind of website or web application you want to build, you'll have to use CSS. If you haven't written much CSS, or even if you’ve never written CSS at all, don’t worry. That's what this course is for. We’ll start with basic CSS concepts, then gradually progress to more advanced topics and lessons. </p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark5474856" role="img"> <title id="checkmark5474856">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title"></span> </div> </a> <ul class="card-tags tags"> <li class="topic-front-end topic topic"><a data-filter-list-val="topic:css" href="/library/topic:css"><span>CSS</span></a></li><li class="difficulty"><span>Beginner</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card course syllabus topic-front-end" data-location="library" data-activity="syllabus/4897" itemscope="itemscope" itemtype="https://schema.org/Course" id="Syllabus-4897"> <a class="card-box" href="/library/css-layout"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/css-layout"> <meta itemprop="category" content="CSS" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT2H" /> </div> <div class="card-progress"> <svg class="course-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M0,1.1v13.3c0,0.6,0.5,1.1,1.1,1.2c1.9,0.2,5.5,0.6,6.8,1.5c0.1,0.1,0.2,0.2,0.3,0.3l0.4,0.4c0.2,0.2,0.6,0.2,0.8,0l0.4-0.4c0.1-0.1,0.2-0.2,0.3-0.3c1.3-1,4.9-1.4,6.8-1.5c0.6-0.1,1.1-0.6,1.1-1.2V1.1C18,0.5,17.5,0,16.9,0C14.9,0.1,11,0.5,9,1.9C7,0.5,3.1,0.1,1.1,0C0.5,0,0,0.5,0,1.1z M8,15c-2-0.9-4.5-1.2-6-1.3V2c1.8,0.1,4.5,0.6,6,1.7V15z M16,13.7c-1.5,0.1-4,0.4-6,1.3V3.7c0.6-0.5,1.5-0.8,2.4-1.1c0.8-0.2,1.6-0.4,2.4-0.5C15.2,2.1,15.6,2,16,2V13.7z"></path> </svg> <ul class="card-stages"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> <span class="card-estimate">2 hours</span> </div> <strong class="card-type">Course</strong> <h3 itemprop="name" class="card-title">CSS Layout</h3> <div class="rating-and-student-count"> <div class="star-rating-container"> <svg class="star-small-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> </div> | <span>8312 <small>students</small></span> </div> <p itemprop="description" class="card-description"> In this course, we're going to learn techniques for better control over our CSS layouts. We’ll cover how the CSS Box Model impacts the presentation of each HTML element, learn to control the position of each element onscreen, and even begin to adjust our layouts for different screen sizes and environments. </p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark4365933" role="img"> <title id="checkmark4365933">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title"></span> </div> </a> <ul class="card-tags tags"> <li class="topic-front-end topic topic"><a data-filter-list-val="topic:css" href="/library/topic:css"><span>CSS</span></a></li><li class="difficulty"><span>Beginner</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card course syllabus topic-front-end" data-location="library" data-activity="syllabus/4910" itemscope="itemscope" itemtype="https://schema.org/Course" id="Syllabus-4910"> <a class="card-box" href="/library/javascript-and-the-dom-3"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/javascript-and-the-dom-3"> <meta itemprop="category" content="JavaScript" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT2H" /> </div> <div class="card-progress"> <svg class="course-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M0,1.1v13.3c0,0.6,0.5,1.1,1.1,1.2c1.9,0.2,5.5,0.6,6.8,1.5c0.1,0.1,0.2,0.2,0.3,0.3l0.4,0.4c0.2,0.2,0.6,0.2,0.8,0l0.4-0.4c0.1-0.1,0.2-0.2,0.3-0.3c1.3-1,4.9-1.4,6.8-1.5c0.6-0.1,1.1-0.6,1.1-1.2V1.1C18,0.5,17.5,0,16.9,0C14.9,0.1,11,0.5,9,1.9C7,0.5,3.1,0.1,1.1,0C0.5,0,0,0.5,0,1.1z M8,15c-2-0.9-4.5-1.2-6-1.3V2c1.8,0.1,4.5,0.6,6,1.7V15z M16,13.7c-1.5,0.1-4,0.4-6,1.3V3.7c0.6-0.5,1.5-0.8,2.4-1.1c0.8-0.2,1.6-0.4,2.4-0.5C15.2,2.1,15.6,2,16,2V13.7z"></path> </svg> <ul class="card-stages"> <li>1</li> <li>2</li> <li>3</li> </ul> <span class="card-estimate">2 hours</span> </div> <strong class="card-type">Course</strong> <h3 itemprop="name" class="card-title">JavaScript and the DOM</h3> <div class="rating-and-student-count"> <div class="star-rating-container"> <svg class="star-small-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> </div> | <span>5397 <small>students</small></span> </div> <p itemprop="description" class="card-description"> JavaScript lets you create interactive web pages which can respond to a user's actions. In this course, you'll learn how to bring web pages to life using the power of JavaScript. </p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark1888491" role="img"> <title id="checkmark1888491">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title"></span> </div> </a> <ul class="card-tags tags"> <li class="topic-front-end topic topic"><a data-filter-list-val="topic:javascript" href="/library/topic:javascript"><span>JavaScript</span></a></li><li class="difficulty"><span>Beginner</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card course syllabus topic-data" data-location="library" data-activity="syllabus/1892" itemscope="itemscope" itemtype="https://schema.org/Course" id="Syllabus-1892"> <a class="card-box" href="/library/sql-basics"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/sql-basics"> <meta itemprop="category" content="Databases" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT2H" /> </div> <div class="card-progress"> <svg class="course-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M0,1.1v13.3c0,0.6,0.5,1.1,1.1,1.2c1.9,0.2,5.5,0.6,6.8,1.5c0.1,0.1,0.2,0.2,0.3,0.3l0.4,0.4c0.2,0.2,0.6,0.2,0.8,0l0.4-0.4c0.1-0.1,0.2-0.2,0.3-0.3c1.3-1,4.9-1.4,6.8-1.5c0.6-0.1,1.1-0.6,1.1-1.2V1.1C18,0.5,17.5,0,16.9,0C14.9,0.1,11,0.5,9,1.9C7,0.5,3.1,0.1,1.1,0C0.5,0,0,0.5,0,1.1z M8,15c-2-0.9-4.5-1.2-6-1.3V2c1.8,0.1,4.5,0.6,6,1.7V15z M16,13.7c-1.5,0.1-4,0.4-6,1.3V3.7c0.6-0.5,1.5-0.8,2.4-1.1c0.8-0.2,1.6-0.4,2.4-0.5C15.2,2.1,15.6,2,16,2V13.7z"></path> </svg> <ul class="card-stages"> <li>1</li> <li>2</li> <li>3</li> </ul> <span class="card-estimate">2 hours</span> </div> <strong class="card-type">Course</strong> <h3 itemprop="name" class="card-title">SQL Basics</h3> <div class="rating-and-student-count"> <div class="star-rating-container"> <svg class="star-small-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> </div> | <span>29264 <small>students</small></span> </div> <p itemprop="description" class="card-description"> In SQL Basics, we’ll take a look at what databases are and how you can retrieve information from them. Databases can store massive amounts of information to be retrieved at a later date. Databases act as the memory for dynamic web sites or mobile apps. </p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark1107680" role="img"> <title id="checkmark1107680">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title"></span> </div> </a> <ul class="card-tags tags"> <li class="topic-data topic topic"><a data-filter-list-val="topic:databases" href="/library/topic:databases"><span>Databases</span></a></li><li class="difficulty"><span>Beginner</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card course syllabus topic-front-end" data-location="library" data-activity="syllabus/4918" itemscope="itemscope" itemtype="https://schema.org/Course" id="Syllabus-4918"> <a class="card-box" href="/library/nodejs-basics-3"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/nodejs-basics-3"> <meta itemprop="category" content="JavaScript" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT68M" /> </div> <div class="card-progress"> <svg class="course-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M0,1.1v13.3c0,0.6,0.5,1.1,1.1,1.2c1.9,0.2,5.5,0.6,6.8,1.5c0.1,0.1,0.2,0.2,0.3,0.3l0.4,0.4c0.2,0.2,0.6,0.2,0.8,0l0.4-0.4c0.1-0.1,0.2-0.2,0.3-0.3c1.3-1,4.9-1.4,6.8-1.5c0.6-0.1,1.1-0.6,1.1-1.2V1.1C18,0.5,17.5,0,16.9,0C14.9,0.1,11,0.5,9,1.9C7,0.5,3.1,0.1,1.1,0C0.5,0,0,0.5,0,1.1z M8,15c-2-0.9-4.5-1.2-6-1.3V2c1.8,0.1,4.5,0.6,6,1.7V15z M16,13.7c-1.5,0.1-4,0.4-6,1.3V3.7c0.6-0.5,1.5-0.8,2.4-1.1c0.8-0.2,1.6-0.4,2.4-0.5C15.2,2.1,15.6,2,16,2V13.7z"></path> </svg> <ul class="card-stages"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> <span class="card-estimate">68 min</span> </div> <strong class="card-type">Course</strong> <h3 itemprop="name" class="card-title">Node.js Basics</h3> <div class="rating-and-student-count"> <div class="star-rating-container"> <svg class="star-small-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> </div> | <span>917 <small>students</small></span> </div> <p itemprop="description" class="card-description"> In this course we will create two command line applications using the popular server-side JavaScript platform Node.js. We'll be creating an application to retrieve a student's Treehouse profile information and be working with a dictionary API to retrieve definitions of a given word. </p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark2541001" role="img"> <title id="checkmark2541001">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title"></span> </div> </a> <ul class="card-tags tags"> <li class="topic-front-end topic topic"><a data-filter-list-val="topic:javascript" href="/library/topic:javascript"><span>JavaScript</span></a></li><li class="difficulty"><span>Intermediate</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card course syllabus topic-foundations" data-location="library" data-activity="syllabus/4222" itemscope="itemscope" itemtype="https://schema.org/Course" id="Syllabus-4222"> <a class="card-box" href="/library/introduction-to-git"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/introduction-to-git"> <meta itemprop="category" content="Development Tools" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT3H" /> </div> <div class="card-progress"> <svg class="course-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M0,1.1v13.3c0,0.6,0.5,1.1,1.1,1.2c1.9,0.2,5.5,0.6,6.8,1.5c0.1,0.1,0.2,0.2,0.3,0.3l0.4,0.4c0.2,0.2,0.6,0.2,0.8,0l0.4-0.4c0.1-0.1,0.2-0.2,0.3-0.3c1.3-1,4.9-1.4,6.8-1.5c0.6-0.1,1.1-0.6,1.1-1.2V1.1C18,0.5,17.5,0,16.9,0C14.9,0.1,11,0.5,9,1.9C7,0.5,3.1,0.1,1.1,0C0.5,0,0,0.5,0,1.1z M8,15c-2-0.9-4.5-1.2-6-1.3V2c1.8,0.1,4.5,0.6,6,1.7V15z M16,13.7c-1.5,0.1-4,0.4-6,1.3V3.7c0.6-0.5,1.5-0.8,2.4-1.1c0.8-0.2,1.6-0.4,2.4-0.5C15.2,2.1,15.6,2,16,2V13.7z"></path> </svg> <ul class="card-stages"> <li>1</li> <li>2</li> <li>3</li> </ul> <span class="card-estimate">3 hours</span> </div> <strong class="card-type">Course</strong> <h3 itemprop="name" class="card-title">Introduction to Git</h3> <div class="rating-and-student-count"> <div class="star-rating-container"> <svg class="star-small-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> </div> | <span>11364 <small>students</small></span> </div> <p itemprop="description" class="card-description"> Git is a version control system - it helps you manage the different versions of your project files, and helps keep your work safe. This course will show you how Git works, and how to upload your projects to GitHub. </p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark7912237" role="img"> <title id="checkmark7912237">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title"></span> </div> </a> <ul class="card-tags tags"> <li class="topic-foundations topic topic"><a data-filter-list-val="topic:development-tools" href="/library/topic:development-tools"><span>Dev Tools</span></a></li><li class="difficulty"><span>Beginner</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card course syllabus topic-back-end" data-location="library" data-activity="syllabus/4841" itemscope="itemscope" itemtype="https://schema.org/Course" id="Syllabus-4841"> <a class="card-box" href="/library/c-basics-2"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/c-basics-2"> <meta itemprop="category" content="C#" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT3H" /> </div> <div class="card-progress"> <svg class="course-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M0,1.1v13.3c0,0.6,0.5,1.1,1.1,1.2c1.9,0.2,5.5,0.6,6.8,1.5c0.1,0.1,0.2,0.2,0.3,0.3l0.4,0.4c0.2,0.2,0.6,0.2,0.8,0l0.4-0.4c0.1-0.1,0.2-0.2,0.3-0.3c1.3-1,4.9-1.4,6.8-1.5c0.6-0.1,1.1-0.6,1.1-1.2V1.1C18,0.5,17.5,0,16.9,0C14.9,0.1,11,0.5,9,1.9C7,0.5,3.1,0.1,1.1,0C0.5,0,0,0.5,0,1.1z M8,15c-2-0.9-4.5-1.2-6-1.3V2c1.8,0.1,4.5,0.6,6,1.7V15z M16,13.7c-1.5,0.1-4,0.4-6,1.3V3.7c0.6-0.5,1.5-0.8,2.4-1.1c0.8-0.2,1.6-0.4,2.4-0.5C15.2,2.1,15.6,2,16,2V13.7z"></path> </svg> <ul class="card-stages"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> <span class="card-estimate">3 hours</span> </div> <strong class="card-type">Course</strong> <h3 itemprop="name" class="card-title">C# Basics</h3> <div class="rating-and-student-count"> <div class="star-rating-container"> <svg class="star-small-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> </div> | <span>3552 <small>students</small></span> </div> <p itemprop="description" class="card-description"> C# is the most popular programming language in the Microsoft ecosystem of products. C# code is designed to run fast and to be easily maintainable. In C# Basics, we'll learn how to work with C# to write simple programs. </p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark2979725" role="img"> <title id="checkmark2979725">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title"></span> </div> </a> <ul class="card-tags tags"> <li class="topic-back-end topic topic"><a data-filter-list-val="topic:csharp" href="/library/topic:csharp"><span>C#</span></a></li><li class="difficulty"><span>Beginner</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card course syllabus topic-fundamentals" data-location="library" data-activity="syllabus/4880" itemscope="itemscope" itemtype="https://schema.org/Course" id="Syllabus-4880"> <a class="card-box" href="/library/how-to-give-and-receive-feedback"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/how-to-give-and-receive-feedback"> <meta itemprop="category" content="Professional Skills" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT29M" /> </div> <div class="card-progress"> <svg class="course-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M0,1.1v13.3c0,0.6,0.5,1.1,1.1,1.2c1.9,0.2,5.5,0.6,6.8,1.5c0.1,0.1,0.2,0.2,0.3,0.3l0.4,0.4c0.2,0.2,0.6,0.2,0.8,0l0.4-0.4c0.1-0.1,0.2-0.2,0.3-0.3c1.3-1,4.9-1.4,6.8-1.5c0.6-0.1,1.1-0.6,1.1-1.2V1.1C18,0.5,17.5,0,16.9,0C14.9,0.1,11,0.5,9,1.9C7,0.5,3.1,0.1,1.1,0C0.5,0,0,0.5,0,1.1z M8,15c-2-0.9-4.5-1.2-6-1.3V2c1.8,0.1,4.5,0.6,6,1.7V15z M16,13.7c-1.5,0.1-4,0.4-6,1.3V3.7c0.6-0.5,1.5-0.8,2.4-1.1c0.8-0.2,1.6-0.4,2.4-0.5C15.2,2.1,15.6,2,16,2V13.7z"></path> </svg> <ul class="card-stages"> <li>1</li> </ul> <span class="card-estimate">29 min</span> </div> <strong class="card-type">Course</strong> <h3 itemprop="name" class="card-title">How to Give and Receive Feedback</h3> <div class="rating-and-student-count"> <div class="star-rating-container"> <svg class="star-small-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> </div> | <span>966 <small>students</small></span> </div> <p itemprop="description" class="card-description"> Learn why feedback is useful. You'll explore a simple process for providing feedback (both positive and constructive) in a way that will be well-received and motivate the right behavior. You'll also learn tips for receiving feedback effectively and putting it into action. </p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark7423152" role="img"> <title id="checkmark7423152">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title"></span> </div> </a> <ul class="card-tags tags"> <li class="topic-fundamentals topic topic"><a data-filter-list-val="topic:professional-skills" href="/library/topic:professional-skills"><span>Professional Skills</span></a></li><li class="difficulty"><span>Beginner</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> </ul> <div class="workshops-container"> <div class="section-heading"> <a class="button button-secondary" data-filter-list-val="type:workshop">View all 272</a> <h2>Workshops</h2> <p>Technology-focused presentations of tips, tricks, and tutorials.</p> </div> <ul itemscope itemtype="https://schema.org/ItemList" class="card-list truncated"> <li class="card workshop topic-front-end" data-location="library" data-activity="workshop/3769" itemscope="itemscope" itemtype="https://schema.org/Course" id="Workshop-3769"> <a class="card-box" href="/library/javascript-search"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/javascript-search"> <meta itemprop="category" content="JavaScript" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT9M" /> </div> <div class="card-progress"> <svg class="workshop-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M18,15l-2.8,2.7C15,17.9,14.7,18,14.5,18l0,0l0,0c-0.3,0-0.5-0.1-0.7-0.3L11,15l0,0l0,0l0,0l0,0V1c0-0.6,0.4-1,1-1h5c0.6,0,1,0.4,1,1V15L18,15L18,15z M16,2h-3v2h3V2z M16,13.8V5h-3v8.8l1.5,1.2l0,0L16,13.8zM6,18H1c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1h5c0.6,0,1,0.4,1,1v16C7,17.6,6.6,18,6,18zM5,2H2v2h1.5C3.8,4,4,4.2,4,4.5S3.8,5,3.5,5H2v2h0.5C2.8,7,3,7.2,3,7.5S2.8,8,2.5,8H2v2h1.5C3.8,10,4,10.2,4,10.5S3.8,11,3.5,11H2v2h0.5C2.8,13,3,13.2,3,13.5S2.8,14,2.5,14H2v2h3V2z"></path> </svg> <span class="card-estimate add-topic-background-color">9 min</span> </div> <strong class="card-type">Workshop</strong> <h3 itemprop="name" class="card-title">JavaScript Search</h3> <p itemprop="description" class="card-description">Letting users search through data in your application or website is a great UX feature. Building out this type of functionality isn't as hard as you may think. With some basic JavaScript, we can tackle the filtering and searching of data. Follow along as I add a search feature with vanilla JavaScript that allows the user to search for a specific author in a list of authors!</p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark272066" role="img"> <title id="checkmark272066">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title">Viewed</span> </div> </a> <ul class="card-tags tags"> <li class="topic-front-end topic topic"><a data-filter-list-val="topic:javascript" href="/library/topic:javascript"><span>JavaScript</span></a></li><li class="difficulty"><span>Beginner</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card workshop topic-front-end" data-location="library" data-activity="workshop/3768" itemscope="itemscope" itemtype="https://schema.org/Course" id="Workshop-3768"> <a class="card-box" href="/library/shorten-text-with-css"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/shorten-text-with-css"> <meta itemprop="category" content="CSS" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT2M" /> </div> <div class="card-progress"> <svg class="workshop-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M18,15l-2.8,2.7C15,17.9,14.7,18,14.5,18l0,0l0,0c-0.3,0-0.5-0.1-0.7-0.3L11,15l0,0l0,0l0,0l0,0V1c0-0.6,0.4-1,1-1h5c0.6,0,1,0.4,1,1V15L18,15L18,15z M16,2h-3v2h3V2z M16,13.8V5h-3v8.8l1.5,1.2l0,0L16,13.8zM6,18H1c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1h5c0.6,0,1,0.4,1,1v16C7,17.6,6.6,18,6,18zM5,2H2v2h1.5C3.8,4,4,4.2,4,4.5S3.8,5,3.5,5H2v2h0.5C2.8,7,3,7.2,3,7.5S2.8,8,2.5,8H2v2h1.5C3.8,10,4,10.2,4,10.5S3.8,11,3.5,11H2v2h0.5C2.8,13,3,13.2,3,13.5S2.8,14,2.5,14H2v2h3V2z"></path> </svg> <span class="card-estimate add-topic-background-color">2 min</span> </div> <strong class="card-type">Workshop</strong> <h3 itemprop="name" class="card-title">Shorten Text With CSS</h3> <p itemprop="description" class="card-description">Ever wondered how to shorten text with an ellipsis (...)? It’s quite easy to do and only requires a few lines of CSS. Follow along as I take you through setting this up!</p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark9596743" role="img"> <title id="checkmark9596743">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title">Viewed</span> </div> </a> <ul class="card-tags tags"> <li class="topic-front-end topic topic"><a data-filter-list-val="topic:css" href="/library/topic:css"><span>CSS</span></a></li><li class="difficulty"><span>Beginner</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card workshop topic-front-end" data-location="library" data-activity="workshop/3767" itemscope="itemscope" itemtype="https://schema.org/Course" id="Workshop-3767"> <a class="card-box" href="/library/htmlonly-accordion"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/htmlonly-accordion"> <meta itemprop="category" content="HTML" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT3M" /> </div> <div class="card-progress"> <svg class="workshop-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M18,15l-2.8,2.7C15,17.9,14.7,18,14.5,18l0,0l0,0c-0.3,0-0.5-0.1-0.7-0.3L11,15l0,0l0,0l0,0l0,0V1c0-0.6,0.4-1,1-1h5c0.6,0,1,0.4,1,1V15L18,15L18,15z M16,2h-3v2h3V2z M16,13.8V5h-3v8.8l1.5,1.2l0,0L16,13.8zM6,18H1c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1h5c0.6,0,1,0.4,1,1v16C7,17.6,6.6,18,6,18zM5,2H2v2h1.5C3.8,4,4,4.2,4,4.5S3.8,5,3.5,5H2v2h0.5C2.8,7,3,7.2,3,7.5S2.8,8,2.5,8H2v2h1.5C3.8,10,4,10.2,4,10.5S3.8,11,3.5,11H2v2h0.5C2.8,13,3,13.2,3,13.5S2.8,14,2.5,14H2v2h3V2z"></path> </svg> <span class="card-estimate add-topic-background-color">3 min</span> </div> <strong class="card-type">Workshop</strong> <h3 itemprop="name" class="card-title">HTML-Only Accordion</h3> <p itemprop="description" class="card-description">Accordions are all over the web and mobile apps. They are a great way to show and hide content based on user interaction and aren’t very hard to build. However, they usually require a bit of HTML, CSS, and JavaScript. Did you know you can build a simple accordion with only HTML in seconds? Follow along as I explain how to set this up!</p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark1481275" role="img"> <title id="checkmark1481275">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title">Viewed</span> </div> </a> <ul class="card-tags tags"> <li class="topic-front-end topic topic"><a data-filter-list-val="topic:html" href="/library/topic:html"><span>HTML</span></a></li><li class="difficulty"><span>Beginner</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card workshop topic-front-end" data-location="library" data-activity="workshop/3758" itemscope="itemscope" itemtype="https://schema.org/Course" id="Workshop-3758"> <a class="card-box" href="/library/full-stack-javascript-techdegree-portfolio-overview"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/full-stack-javascript-techdegree-portfolio-overview"> <meta itemprop="category" content="JavaScript" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT8M" /> </div> <div class="card-progress"> <svg class="workshop-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M18,15l-2.8,2.7C15,17.9,14.7,18,14.5,18l0,0l0,0c-0.3,0-0.5-0.1-0.7-0.3L11,15l0,0l0,0l0,0l0,0V1c0-0.6,0.4-1,1-1h5c0.6,0,1,0.4,1,1V15L18,15L18,15z M16,2h-3v2h3V2z M16,13.8V5h-3v8.8l1.5,1.2l0,0L16,13.8zM6,18H1c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1h5c0.6,0,1,0.4,1,1v16C7,17.6,6.6,18,6,18zM5,2H2v2h1.5C3.8,4,4,4.2,4,4.5S3.8,5,3.5,5H2v2h0.5C2.8,7,3,7.2,3,7.5S2.8,8,2.5,8H2v2h1.5C3.8,10,4,10.2,4,10.5S3.8,11,3.5,11H2v2h0.5C2.8,13,3,13.2,3,13.5S2.8,14,2.5,14H2v2h3V2z"></path> </svg> <span class="card-estimate add-topic-background-color">8 min</span> </div> <strong class="card-type">Workshop</strong> <h3 itemprop="name" class="card-title">Full Stack JavaScript Techdegree Portfolio Overview</h3> <p itemprop="description" class="card-description">Here at Treehouse, we have many Techdegrees to get you job ready no matter your skill level. The Full Stack JavaScript Techdegree is one of the most popular. Come take a look at all the professional-quality projects you'll build in this Techdegree! <br> <br> Start your free trial today! (https://trhou.se/3I1UNT3) <br> <br> Projects Random Quote Generator (https://teamtreehouse.com/library/introducing-the-random-quote-generator-2) Data Pagination and Filtering (https://teamtreehouse.com/library/introducing-the-data-pagination-and-filtering-project-2) Interactive Form (https://teamtreehouse.com/library/introducing-the-interactive-form-project-2) OOP Game Show App (https://teamtreehouse.com/library/introducing-the-oop-game-show-app-2) Public API Requests (https://teamtreehouse.com/library/introducing-the-api-requests-project-2) Static Node.js and Express Site (https://teamtreehouse.com/library/introducing-the-static-nodejs-and-express-site-project-2) React Gallery App (https://teamtreehouse.com/library/introducing-the-react-gallery-app-project-2) SQL Library Manager (https://teamtreehouse.com/library/introducing-the-sql-library-manager-project-2) REST API (https://teamtreehouse.com/library/introducing-the-rest-api-project-2) Full Stack App with React and a REST API (https://teamtreehouse.com/library/introducing-the-full-stack-app-with-react-and-a-rest-api-project-2)</p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark6275522" role="img"> <title id="checkmark6275522">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title">Viewed</span> </div> </a> <ul class="card-tags tags"> <li class="topic-front-end topic topic"><a data-filter-list-val="topic:javascript" href="/library/topic:javascript"><span>JavaScript</span></a></li><li class="difficulty"><span>Beginner</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> </ul> </div> <div class="workshops-container"> <div class="section-heading"> <a class="button button-secondary" data-filter-list-val="type:practice">View all 114</a> <h2>Practice</h2> <p>Refine and strengthen your skills with these practice exercises.</p> </div> <ul itemscope itemtype="https://schema.org/ItemList" class="card-list truncated"> <li class="card course syllabus topic-front-end" data-location="library" data-activity="syllabus/4692" itemscope="itemscope" itemtype="https://schema.org/Course" id="Syllabus-4692"> <a class="card-box" href="/library/practice-classes-in-javascript"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/practice-classes-in-javascript"> <meta itemprop="category" content="JavaScript" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT19M" /> </div> <div class="card-progress"> <svg class="practice-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 22 22"> <title>practiceIcon Copy 5</title> Created with Sketch. <g id="practiceCardInAppPracticeIcon-Copy"> <g id="practiceIcon-Copy-5"> <path d="M11,12.5908182 C10.1214154,12.5908182 9.40918178,11.8785846 9.40918178,11 C9.40918178,10.1214154 10.1214154,9.40918178 11,9.40918178 C11.8785846,9.40918178 12.5908182,10.1214154 12.5908182,11 C12.5908182,11.8785846 11.8785846,12.5908182 11,12.5908182 Z M11,10.7728181 C10.8745309,10.7728181 10.7728181,10.8745309 10.7728181,11 C10.7728181,11.1254691 10.8745309,11.2271819 11,11.2271819 C11.1254691,11.2271819 11.2271819,11.1254691 11.2271819,11 C11.2271819,10.8745309 11.1254691,10.7728181 11,10.7728181 Z" id="Oval"></path> <path d="M11,16.2726364 C8.08800332,16.2726364 5.7273636,13.9119967 5.7273636,11 C5.7273636,8.08800332 8.08800332,5.7273636 11,5.7273636 C13.9119967,5.7273636 16.2726364,8.08800332 16.2726364,11 C16.2726364,13.9119967 13.9119967,16.2726364 11,16.2726364 Z M11,14.4546363 C12.907943,14.4546363 14.4546363,12.907943 14.4546363,11 C14.4546363,9.09205704 12.907943,7.54536368 11,7.54536368 C9.09205704,7.54536368 7.54536368,9.09205704 7.54536368,11 C7.54536368,12.907943 9.09205704,14.4546363 11,14.4546363 Z" id="Oval-Copy"></path> <path d="M11,21.4089999 C5.25126808,21.4089999 0.59100008,16.7487319 0.59100008,11 C0.59100008,5.25126808 5.25126808,0.59100008 11,0.59100008 C16.7487319,0.59100008 21.4089999,5.25126808 21.4089999,11 C21.4089999,16.7487319 16.7487319,21.4089999 11,21.4089999 Z M11,18.5910001 C15.1923936,18.5910001 18.5910001,15.1923936 18.5910001,11 C18.5910001,6.80760642 15.1923936,3.40899992 11,3.40899992 C6.80760642,3.40899992 3.40899992,6.80760642 3.40899992,11 C3.40899992,15.1923936 6.80760642,18.5910001 11,18.5910001 Z" id="Oval-Copy-2"></path> </g> </g> </svg> <ul class="card-stages"> <li>1</li> </ul> <span class="card-estimate">19 min</span> </div> <strong class="card-type">Practice</strong> <h3 itemprop="name" class="card-title">Practice Classes in JavaScript</h3> <div class="rating-and-student-count"> <div class="star-rating-container"> <svg class="star-small-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> <svg class="star-small-icon active" preserveAspectRatio="xMinYMin meet" viewBox="0 0 16 16"> <path d="M16,6.2c0,0.1-0.1,0.3-0.2,0.5l-3.5,3.6l0.8,5c0,0,0,0.1,0,0.2c0,0.1,0,0.3-0.1,0.4C12.9,16,12.8,16,12.7,16 c-0.1,0-0.2,0-0.4-0.1L8,13.5l-4.3,2.4C3.5,16,3.4,16,3.3,16c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.4c0,0,0-0.1,0-0.2l0.8-5 L0.2,6.7C0.1,6.5,0,6.3,0,6.2C0,6,0.2,5.8,0.5,5.7L5.4,5l2.2-4.6C7.7,0.1,7.8,0,8,0c0.2,0,0.3,0.1,0.5,0.4L10.6,5l4.8,0.7 C15.8,5.8,16,6,16,6.2L16,6.2z"></path> </svg> </div> | <span>8615 <small>students</small></span> </div> <p itemprop="description" class="card-description"> Practice building and working with classes in JavaScript. </p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark3030893" role="img"> <title id="checkmark3030893">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title"></span> </div> </a> <ul class="card-tags tags"> <li class="topic-front-end topic topic"><a data-filter-list-val="topic:javascript" href="/library/topic:javascript"><span>JavaScript</span></a></li><li class="difficulty"><span>Intermediate</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card workshop topic-back-end" data-location="library" data-activity="workshop/3755" itemscope="itemscope" itemtype="https://schema.org/Course" id="Workshop-3755"> <a class="card-box" href="/library/practice-setting-up-a-python-project"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/practice-setting-up-a-python-project"> <meta itemprop="category" content="Python" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT11M" /> </div> <div class="card-progress"> <svg class="practice-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 22 22"> <title>practiceIcon Copy 5</title> Created with Sketch. <g id="practiceCardInAppPracticeIcon-Copy"> <g id="practiceIcon-Copy-5"> <path d="M11,12.5908182 C10.1214154,12.5908182 9.40918178,11.8785846 9.40918178,11 C9.40918178,10.1214154 10.1214154,9.40918178 11,9.40918178 C11.8785846,9.40918178 12.5908182,10.1214154 12.5908182,11 C12.5908182,11.8785846 11.8785846,12.5908182 11,12.5908182 Z M11,10.7728181 C10.8745309,10.7728181 10.7728181,10.8745309 10.7728181,11 C10.7728181,11.1254691 10.8745309,11.2271819 11,11.2271819 C11.1254691,11.2271819 11.2271819,11.1254691 11.2271819,11 C11.2271819,10.8745309 11.1254691,10.7728181 11,10.7728181 Z" id="Oval"></path> <path d="M11,16.2726364 C8.08800332,16.2726364 5.7273636,13.9119967 5.7273636,11 C5.7273636,8.08800332 8.08800332,5.7273636 11,5.7273636 C13.9119967,5.7273636 16.2726364,8.08800332 16.2726364,11 C16.2726364,13.9119967 13.9119967,16.2726364 11,16.2726364 Z M11,14.4546363 C12.907943,14.4546363 14.4546363,12.907943 14.4546363,11 C14.4546363,9.09205704 12.907943,7.54536368 11,7.54536368 C9.09205704,7.54536368 7.54536368,9.09205704 7.54536368,11 C7.54536368,12.907943 9.09205704,14.4546363 11,14.4546363 Z" id="Oval-Copy"></path> <path d="M11,21.4089999 C5.25126808,21.4089999 0.59100008,16.7487319 0.59100008,11 C0.59100008,5.25126808 5.25126808,0.59100008 11,0.59100008 C16.7487319,0.59100008 21.4089999,5.25126808 21.4089999,11 C21.4089999,16.7487319 16.7487319,21.4089999 11,21.4089999 Z M11,18.5910001 C15.1923936,18.5910001 18.5910001,15.1923936 18.5910001,11 C18.5910001,6.80760642 15.1923936,3.40899992 11,3.40899992 C6.80760642,3.40899992 3.40899992,6.80760642 3.40899992,11 C3.40899992,15.1923936 6.80760642,18.5910001 11,18.5910001 Z" id="Oval-Copy-2"></path> </g> </g> </svg> <span class="card-estimate add-topic-background-color">11 min</span> </div> <strong class="card-type">Practice</strong> <h3 itemprop="name" class="card-title">Practice Setting Up a Python Project</h3> <p itemprop="description" class="card-description">Practice setting up a Python project locally and on GitHub.</p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark2334716" role="img"> <title id="checkmark2334716">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title">Viewed</span> </div> </a> <ul class="card-tags tags"> <li class="topic-back-end topic topic"><a data-filter-list-val="topic:python" href="/library/topic:python"><span>Python</span></a></li><li class="difficulty"><span>Intermediate</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card workshop topic-front-end" data-location="library" data-activity="workshop/3716" itemscope="itemscope" itemtype="https://schema.org/Course" id="Workshop-3716"> <a class="card-box" href="/library/practice-hooks-in-react"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/practice-hooks-in-react"> <meta itemprop="category" content="JavaScript" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT11M" /> </div> <div class="card-progress"> <svg class="practice-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 22 22"> <title>practiceIcon Copy 5</title> Created with Sketch. <g id="practiceCardInAppPracticeIcon-Copy"> <g id="practiceIcon-Copy-5"> <path d="M11,12.5908182 C10.1214154,12.5908182 9.40918178,11.8785846 9.40918178,11 C9.40918178,10.1214154 10.1214154,9.40918178 11,9.40918178 C11.8785846,9.40918178 12.5908182,10.1214154 12.5908182,11 C12.5908182,11.8785846 11.8785846,12.5908182 11,12.5908182 Z M11,10.7728181 C10.8745309,10.7728181 10.7728181,10.8745309 10.7728181,11 C10.7728181,11.1254691 10.8745309,11.2271819 11,11.2271819 C11.1254691,11.2271819 11.2271819,11.1254691 11.2271819,11 C11.2271819,10.8745309 11.1254691,10.7728181 11,10.7728181 Z" id="Oval"></path> <path d="M11,16.2726364 C8.08800332,16.2726364 5.7273636,13.9119967 5.7273636,11 C5.7273636,8.08800332 8.08800332,5.7273636 11,5.7273636 C13.9119967,5.7273636 16.2726364,8.08800332 16.2726364,11 C16.2726364,13.9119967 13.9119967,16.2726364 11,16.2726364 Z M11,14.4546363 C12.907943,14.4546363 14.4546363,12.907943 14.4546363,11 C14.4546363,9.09205704 12.907943,7.54536368 11,7.54536368 C9.09205704,7.54536368 7.54536368,9.09205704 7.54536368,11 C7.54536368,12.907943 9.09205704,14.4546363 11,14.4546363 Z" id="Oval-Copy"></path> <path d="M11,21.4089999 C5.25126808,21.4089999 0.59100008,16.7487319 0.59100008,11 C0.59100008,5.25126808 5.25126808,0.59100008 11,0.59100008 C16.7487319,0.59100008 21.4089999,5.25126808 21.4089999,11 C21.4089999,16.7487319 16.7487319,21.4089999 11,21.4089999 Z M11,18.5910001 C15.1923936,18.5910001 18.5910001,15.1923936 18.5910001,11 C18.5910001,6.80760642 15.1923936,3.40899992 11,3.40899992 C6.80760642,3.40899992 3.40899992,6.80760642 3.40899992,11 C3.40899992,15.1923936 6.80760642,18.5910001 11,18.5910001 Z" id="Oval-Copy-2"></path> </g> </g> </svg> <span class="card-estimate add-topic-background-color">11 min</span> </div> <strong class="card-type">Practice</strong> <h3 itemprop="name" class="card-title">Practice Hooks in React </h3> <p itemprop="description" class="card-description">Practice React's built-in useContext and useState Hooks to update an app with user authentication.</p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark1173162" role="img"> <title id="checkmark1173162">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title">Viewed</span> </div> </a> <ul class="card-tags tags"> <li class="topic-front-end topic topic"><a data-filter-list-val="topic:javascript" href="/library/topic:javascript"><span>JavaScript</span></a></li><li class="difficulty"><span>Intermediate</span></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> </ul> </div> <div class="section-heading"> <a class="button button-secondary" data-filter-list-val="type:conference">View all 3</a> <h2>Conferences</h2> <p>Watch talks from influential industry leaders.</p> </div> <ul itemscope itemtype="https://schema.org/ItemList" class="card-list truncated"> <li class="card bonus-content-series topic-front-end" data-location="library" data-activity="bonus_content_series/467" itemscope="itemscope" itemtype="https://schema.org/Course" id="BonusContentSeries-467"> <a class="card-box" href="/library/treehouse-festival-december-2020"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/treehouse-festival-december-2020"> <meta itemprop="category" content="HTML" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT12H" /> </div> <div class="card-progress"> <svg class="conference-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M17,15h-5.8l1.7,2.1c0.3,0.3,0.1,0.7-0.3,0.9c-0.4,0.2-1,0.1-1.2-0.2L9.1,15H8.8l-2.2,2.7c-0.2,0.3-0.8,0.4-1.2,0.2C5,17.7,4.8,17.4,5.1,17L6.8,15H1c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1h16c0.6,0,1,0.4,1,1v13C18,14.5,17.6,15,17,15z M16,2H2v11h14V2z M6.5,5C7.9,5,9,6.1,9,7.5S7.9,10,6.5,10S4,8.9,4,7.5S5.1,5,6.5,5zM10.5,6h3C13.8,6,14,6.2,14,6.5S13.8,7,13.5,7h-3C10.2,7,10,6.8,10,6.5S10.2,6,10.5,6zM10.5,8h3C13.8,8,14,8.2,14,8.5C14,8.8,13.8,9,13.5,9h-3C10.2,9,10,8.8,10,8.5C10,8.2,10.2,8,10.5,8z"></path> </svg> <span class="card-estimate add-topic-background-color">12 hours</span> </div> <strong class="card-type">Conference</strong> <h3 itemprop="name" class="card-title">Treehouse Festival December 2020</h3> <p itemprop="description" class="card-description">Treehouse Festival is an online conference designed for Treehouse students and all aspiring developers and designers. The presentations will empower those that attend with skills and a network to transition to a tech career or level-up in their current roles. Sessions include “Designing with a Developer Mindset,” “Computer Science, Emulation, and the NES,” “Interview with a Treehouse Grad”, and more!</p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark6647000" role="img"> <title id="checkmark6647000">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title">Viewed</span> </div> </a> <ul class="card-tags tags"> <li class="topic-front-end topic topic"><a data-filter-list-val="topic:html" href="/library/topic:html"><span>HTML</span></a></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card bonus-content-series topic-front-end" data-location="library" data-activity="bonus_content_series/470" itemscope="itemscope" itemtype="https://schema.org/Course" id="BonusContentSeries-470"> <a class="card-box" href="/library/treehouse-festival-june-2021"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/treehouse-festival-june-2021"> <meta itemprop="category" content="HTML" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT14H" /> </div> <div class="card-progress"> <svg class="conference-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M17,15h-5.8l1.7,2.1c0.3,0.3,0.1,0.7-0.3,0.9c-0.4,0.2-1,0.1-1.2-0.2L9.1,15H8.8l-2.2,2.7c-0.2,0.3-0.8,0.4-1.2,0.2C5,17.7,4.8,17.4,5.1,17L6.8,15H1c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1h16c0.6,0,1,0.4,1,1v13C18,14.5,17.6,15,17,15z M16,2H2v11h14V2z M6.5,5C7.9,5,9,6.1,9,7.5S7.9,10,6.5,10S4,8.9,4,7.5S5.1,5,6.5,5zM10.5,6h3C13.8,6,14,6.2,14,6.5S13.8,7,13.5,7h-3C10.2,7,10,6.8,10,6.5S10.2,6,10.5,6zM10.5,8h3C13.8,8,14,8.2,14,8.5C14,8.8,13.8,9,13.5,9h-3C10.2,9,10,8.8,10,8.5C10,8.2,10.2,8,10.5,8z"></path> </svg> <span class="card-estimate add-topic-background-color">14 hours</span> </div> <strong class="card-type">Conference</strong> <h3 itemprop="name" class="card-title">Treehouse Festival June 2021</h3> <p itemprop="description" class="card-description">Treehouse Festival is an online conference designed for Treehouse students and all aspiring developers and designers. The presentations will empower those that attend with skills and a network to transition to a tech career or level-up in their current roles. Sessions include “Designing with a Developer Mindset,” “Computer Science, Emulation, and the NES,” “Interview with a Treehouse Grad”, and more!</p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark2049292" role="img"> <title id="checkmark2049292">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title">Viewed</span> </div> </a> <ul class="card-tags tags"> <li class="topic-front-end topic topic"><a data-filter-list-val="topic:html" href="/library/topic:html"><span>HTML</span></a></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card bonus-content-series topic-front-end" data-location="library" data-activity="bonus_content_series/465" itemscope="itemscope" itemtype="https://schema.org/Course" id="BonusContentSeries-465"> <a class="card-box" href="/library/treehouse-festival-july-2020"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/treehouse-festival-july-2020"> <meta itemprop="category" content="HTML" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT12H" /> </div> <div class="card-progress"> <svg class="conference-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M17,15h-5.8l1.7,2.1c0.3,0.3,0.1,0.7-0.3,0.9c-0.4,0.2-1,0.1-1.2-0.2L9.1,15H8.8l-2.2,2.7c-0.2,0.3-0.8,0.4-1.2,0.2C5,17.7,4.8,17.4,5.1,17L6.8,15H1c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1h16c0.6,0,1,0.4,1,1v13C18,14.5,17.6,15,17,15z M16,2H2v11h14V2z M6.5,5C7.9,5,9,6.1,9,7.5S7.9,10,6.5,10S4,8.9,4,7.5S5.1,5,6.5,5zM10.5,6h3C13.8,6,14,6.2,14,6.5S13.8,7,13.5,7h-3C10.2,7,10,6.8,10,6.5S10.2,6,10.5,6zM10.5,8h3C13.8,8,14,8.2,14,8.5C14,8.8,13.8,9,13.5,9h-3C10.2,9,10,8.8,10,8.5C10,8.2,10.2,8,10.5,8z"></path> </svg> <span class="card-estimate add-topic-background-color">12 hours</span> </div> <strong class="card-type">Conference</strong> <h3 itemprop="name" class="card-title">Treehouse Festival July 2020</h3> <p itemprop="description" class="card-description">Treehouse Festival 2020</p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark9979107" role="img"> <title id="checkmark9979107">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title">Viewed</span> </div> </a> <ul class="card-tags tags"> <li class="topic-front-end topic topic"><a data-filter-list-val="topic:html" href="/library/topic:html"><span>HTML</span></a></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> </ul> <div class="section-heading"> <a class="button button-secondary" data-filter-list-val="type:bonus">View all 26</a> <h2>Bonus Series</h2> <p>Bonus material is exclusive to Courses Plus membership and includes series covering new processes in design, development and illustration.</p> </div> <ul itemscope itemtype="https://schema.org/ItemList" class="card-list truncated"> <li class="card bonus-content-series topic-back-end" data-location="library" data-activity="bonus_content_series/462" itemscope="itemscope" itemtype="https://schema.org/Course" id="BonusContentSeries-462"> <a class="card-box" href="/library/takeaways"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/takeaways"> <meta itemprop="category" content="Java" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT9M" /> </div> <div class="card-progress"> <svg class="bonus-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M17,18H1c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1h16c0.6,0,1,0.4,1,1v16 C18,17.6,17.6,18,17,18z M11,17c0.6,0,1-0.4,1-1c0-0.6-0.4-1-1-1s-1,0.4-1,1C10,16.6,10.4,17,11,17z M7,17c0.6,0,1-0.4,1-1 c0-0.6-0.4-1-1-1s-1,0.4-1,1C6,16.6,6.4,17,7,17z M3,17c0.6,0,1-0.4,1-1c0-0.6-0.4-1-1-1s-1,0.4-1,1C2,16.6,2.4,17,3,17z M3,1 C2.4,1,2,1.4,2,2s0.4,1,1,1s1-0.4,1-1S3.6,1,3,1z M7,1C6.4,1,6,1.4,6,2s0.4,1,1,1s1-0.4,1-1S7.6,1,7,1z M11,1c-0.6,0-1,0.4-1,1 s0.4,1,1,1s1-0.4,1-1S11.6,1,11,1z M15,1c-0.6,0-1,0.4-1,1s0.4,1,1,1s1-0.4,1-1S15.6,1,15,1z M16,4H2v10h14V4z M15,15 c-0.6,0-1,0.4-1,1c0,0.6,0.4,1,1,1s1-0.4,1-1C16,15.4,15.6,15,15,15z M7.5,6c0.1,0,0.1,0,0.2,0l4.1,2.5C11.9,8.7,12,8.8,12,9 c0,0.1-0.1,0.3-0.2,0.4l-4.1,2.5C7.6,12,7.5,12,7.5,12c-0.1,0-0.2,0-0.2-0.1C7.1,11.8,7,11.7,7,11.5v-5c0-0.2,0.1-0.3,0.2-0.4 C7.3,6,7.4,6,7.5,6z"></path> </svg> <span class="card-estimate add-topic-background-color">9 min</span> </div> <strong class="card-type">Bonus Series</strong> <h3 itemprop="name" class="card-title">Takeaways</h3> <p itemprop="description" class="card-description">Got some time during your lunch break? Want to get something to takeaway?</p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark9265753" role="img"> <title id="checkmark9265753">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title">Viewed</span> </div> </a> <ul class="card-tags tags"> <li class="topic-back-end topic topic"><a data-filter-list-val="topic:java" href="/library/topic:java"><span>Java</span></a></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card bonus-content-series topic-treehouse-resources" data-location="library" data-activity="bonus_content_series/469" itemscope="itemscope" itemtype="https://schema.org/Course" id="BonusContentSeries-469"> <a class="card-box" href="/library/treehouse-live"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/treehouse-live"> <meta itemprop="category" content="Learning Resources" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT3H" /> </div> <div class="card-progress"> <svg class="bonus-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M17,18H1c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1h16c0.6,0,1,0.4,1,1v16 C18,17.6,17.6,18,17,18z M11,17c0.6,0,1-0.4,1-1c0-0.6-0.4-1-1-1s-1,0.4-1,1C10,16.6,10.4,17,11,17z M7,17c0.6,0,1-0.4,1-1 c0-0.6-0.4-1-1-1s-1,0.4-1,1C6,16.6,6.4,17,7,17z M3,17c0.6,0,1-0.4,1-1c0-0.6-0.4-1-1-1s-1,0.4-1,1C2,16.6,2.4,17,3,17z M3,1 C2.4,1,2,1.4,2,2s0.4,1,1,1s1-0.4,1-1S3.6,1,3,1z M7,1C6.4,1,6,1.4,6,2s0.4,1,1,1s1-0.4,1-1S7.6,1,7,1z M11,1c-0.6,0-1,0.4-1,1 s0.4,1,1,1s1-0.4,1-1S11.6,1,11,1z M15,1c-0.6,0-1,0.4-1,1s0.4,1,1,1s1-0.4,1-1S15.6,1,15,1z M16,4H2v10h14V4z M15,15 c-0.6,0-1,0.4-1,1c0,0.6,0.4,1,1,1s1-0.4,1-1C16,15.4,15.6,15,15,15z M7.5,6c0.1,0,0.1,0,0.2,0l4.1,2.5C11.9,8.7,12,8.8,12,9 c0,0.1-0.1,0.3-0.2,0.4l-4.1,2.5C7.6,12,7.5,12,7.5,12c-0.1,0-0.2,0-0.2-0.1C7.1,11.8,7,11.7,7,11.5v-5c0-0.2,0.1-0.3,0.2-0.4 C7.3,6,7.4,6,7.5,6z"></path> </svg> <span class="card-estimate add-topic-background-color">3 hours</span> </div> <strong class="card-type">Bonus Series</strong> <h3 itemprop="name" class="card-title">Treehouse Live</h3> <p itemprop="description" class="card-description">Enjoy our full collection of Treehouse Live sessions with our amazing Treehouse Instructors! Follow along as they teach live and take questions from students like you.</p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark2630211" role="img"> <title id="checkmark2630211">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title">Viewed</span> </div> </a> <ul class="card-tags tags"> <li class="topic-treehouse-resources topic topic"><a data-filter-list-val="topic:learning-resources" href="/library/topic:learning-resources"><span>Learning Resources</span></a></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card bonus-content-series topic-foundations" data-location="library" data-activity="bonus_content_series/471" itemscope="itemscope" itemtype="https://schema.org/Course" id="BonusContentSeries-471"> <a class="card-box" href="/library/treehouse-guest-speaker-series"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/treehouse-guest-speaker-series"> <meta itemprop="category" content="Computer Science" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT6H" /> </div> <div class="card-progress"> <svg class="bonus-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M17,18H1c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1h16c0.6,0,1,0.4,1,1v16 C18,17.6,17.6,18,17,18z M11,17c0.6,0,1-0.4,1-1c0-0.6-0.4-1-1-1s-1,0.4-1,1C10,16.6,10.4,17,11,17z M7,17c0.6,0,1-0.4,1-1 c0-0.6-0.4-1-1-1s-1,0.4-1,1C6,16.6,6.4,17,7,17z M3,17c0.6,0,1-0.4,1-1c0-0.6-0.4-1-1-1s-1,0.4-1,1C2,16.6,2.4,17,3,17z M3,1 C2.4,1,2,1.4,2,2s0.4,1,1,1s1-0.4,1-1S3.6,1,3,1z M7,1C6.4,1,6,1.4,6,2s0.4,1,1,1s1-0.4,1-1S7.6,1,7,1z M11,1c-0.6,0-1,0.4-1,1 s0.4,1,1,1s1-0.4,1-1S11.6,1,11,1z M15,1c-0.6,0-1,0.4-1,1s0.4,1,1,1s1-0.4,1-1S15.6,1,15,1z M16,4H2v10h14V4z M15,15 c-0.6,0-1,0.4-1,1c0,0.6,0.4,1,1,1s1-0.4,1-1C16,15.4,15.6,15,15,15z M7.5,6c0.1,0,0.1,0,0.2,0l4.1,2.5C11.9,8.7,12,8.8,12,9 c0,0.1-0.1,0.3-0.2,0.4l-4.1,2.5C7.6,12,7.5,12,7.5,12c-0.1,0-0.2,0-0.2-0.1C7.1,11.8,7,11.7,7,11.5v-5c0-0.2,0.1-0.3,0.2-0.4 C7.3,6,7.4,6,7.5,6z"></path> </svg> <span class="card-estimate add-topic-background-color">6 hours</span> </div> <strong class="card-type">Bonus Series</strong> <h3 itemprop="name" class="card-title">Treehouse Guest Speaker Series</h3> <p itemprop="description" class="card-description">Treehouse Guest Speaker Series is an ongoing live event hosted by Treehouse staff. In this series experts working in the field offer advice on how to transition into tech. Want advice on how to nail a technical interview? Need to stand out to tech recruiters? Have the desire to improve your practical skills? This is the series for you!</p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark8456018" role="img"> <title id="checkmark8456018">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title">Viewed</span> </div> </a> <ul class="card-tags tags"> <li class="topic-foundations topic topic"><a data-filter-list-val="topic:computer-science" href="/library/topic:computer-science"><span>Computer Science</span></a></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> <li class="card bonus-content-series topic-treehouse-resources" data-location="library" data-activity="bonus_content_series/432" itemscope="itemscope" itemtype="https://schema.org/Course" id="BonusContentSeries-432"> <a class="card-box" href="/library/how-to-learn"> <div itemprop="offers" itemscope itemtype="https://schema.org/Offer"> <meta itemprop="url" content="/library/how-to-learn"> <meta itemprop="category" content="Learning Resources" /> <meta itemprop="availability" content="https://schema.org/InStock" /> </div> <div itemprop="provider" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="Treehouse" /> <link itemprop="url" href="https://teamtreehouse.com" /> </div> <div itemprop="hasCourseInstance" itemscope itemtype="https://schema.org/CourseInstance"> <meta itemprop="courseMode" content="Online" /> <meta itemprop="courseWorkload" content="PT21M" /> </div> <div class="card-progress"> <svg class="bonus-icon card-icon" preserveAspectRatio="xMinYMin meet" viewBox="0 0 18 18"> <path d="M17,18H1c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1h16c0.6,0,1,0.4,1,1v16 C18,17.6,17.6,18,17,18z M11,17c0.6,0,1-0.4,1-1c0-0.6-0.4-1-1-1s-1,0.4-1,1C10,16.6,10.4,17,11,17z M7,17c0.6,0,1-0.4,1-1 c0-0.6-0.4-1-1-1s-1,0.4-1,1C6,16.6,6.4,17,7,17z M3,17c0.6,0,1-0.4,1-1c0-0.6-0.4-1-1-1s-1,0.4-1,1C2,16.6,2.4,17,3,17z M3,1 C2.4,1,2,1.4,2,2s0.4,1,1,1s1-0.4,1-1S3.6,1,3,1z M7,1C6.4,1,6,1.4,6,2s0.4,1,1,1s1-0.4,1-1S7.6,1,7,1z M11,1c-0.6,0-1,0.4-1,1 s0.4,1,1,1s1-0.4,1-1S11.6,1,11,1z M15,1c-0.6,0-1,0.4-1,1s0.4,1,1,1s1-0.4,1-1S15.6,1,15,1z M16,4H2v10h14V4z M15,15 c-0.6,0-1,0.4-1,1c0,0.6,0.4,1,1,1s1-0.4,1-1C16,15.4,15.6,15,15,15z M7.5,6c0.1,0,0.1,0,0.2,0l4.1,2.5C11.9,8.7,12,8.8,12,9 c0,0.1-0.1,0.3-0.2,0.4l-4.1,2.5C7.6,12,7.5,12,7.5,12c-0.1,0-0.2,0-0.2-0.1C7.1,11.8,7,11.7,7,11.5v-5c0-0.2,0.1-0.3,0.2-0.4 C7.3,6,7.4,6,7.5,6z"></path> </svg> <span class="card-estimate add-topic-background-color">21 min</span> </div> <strong class="card-type">Bonus Series</strong> <h3 itemprop="name" class="card-title">How to Learn</h3> <p itemprop="description" class="card-description">Learning can be challenging. But having the proper mindset and a good set of strategies for studying and practice can help you learn faster and better. In this series of videos learn helpful techniques to boost your learning, and discover what the latest scientific research has to tell us about how to learn.</p> <div class="card-status"> <svg class="complete-icon card-status-icon" preserveAspectRatio="xMinYMin meet" viewBox="140 0 140 120" aria-labelledby="checkmark1726856" role="img"> <title id="checkmark1726856">Checkmark</title> <path d="M197.3,120l-52.8-52c-6-6-6-17,0-23c7-6,16.9-6,23.9,0l26.9,27l54.8-66c6-7,16-8,23.9-2c7,6,8,16,2,23 L197.3,120z"></path> </svg> <span class="card-status-title">Viewed</span> </div> </a> <ul class="card-tags tags"> <li class="topic-treehouse-resources topic topic"><a data-filter-list-val="topic:learning-resources" href="/library/topic:learning-resources"><span>Learning Resources</span></a></li> <li class="truncated-tags"><span></span><ul></ul></li> </ul> </li> </ul> </div> </div> </div></main> </div> <svg xmlns="http://www.w3.org/2000/svg" class="color-bar-footer" width="100%" height="3" viewBox="0 0 1441 3" preserveAspectRatio="none"> <g fill="none" fill-rule="evenodd"> <rect width="144" height="3" fill="#0B88C3"/> <rect width="144" height="3" x="144" fill="#00D377"/> <rect width="144" height="3" x="288" fill="#00B950"/> <rect width="144" height="3" x="432" fill="#FFD247"/> <rect width="144" height="3" x="576" fill="#FF9800"/> <rect width="144" height="3" x="720" fill="#FF464F"/> <rect width="144" height="3" x="864" fill="#FF82B3"/> <rect width="144" height="3" x="1008" fill="#FF4385"/> <rect width="144" height="3" x="1152" fill="#A47DCC"/> <rect width="145" height="3" x="1296" fill="#875BB5"/> </g> </svg> <footer> <div class="footer"> <!-- Left --> <div class="footer-left"> <ul class="links-2020-footer list-unstyled"> <h4>Treehouse</h4> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked About" data-event-label="Source: Footer" href="/about">About</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Blog" data-event-label="Source: Footer" href="https://blog.teamtreehouse.com/">Blog</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Careers" data-event-label="Source: Footer" href="/jobs">Careers</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Community" data-event-label="Source: Footer" href="/community">Community</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Stories" data-event-label="Source: Footer" href="/stories">Stories</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Treehouse Shop" data-event-label="Source: Footer" href="https://teespring.com/stores/teamtreehouse">Shop</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Contact" data-event-label="Source: Footer" href="/support">Contact</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Contact" data-event-label="Source: Footer" href="/giftcard">Gift Card</a></li> </ul> </div> <!-- Middle --> <div class="footer-middle"> <h4 class="catcta"><a href="/library">See Full Catalogue</a></h4> <div class="footer-catalogue"> <div class="footer-catalogue-tech"> <h4><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Techdegrees" data-event-label="Source: Footer" href="/techdegree">Techdegree</a></h4> <ul class="links-2020-footer list-unstyled"> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Front End Web Development" data-event-label="Source: Footer" href="/techdegree/front-end-web-development">Front End Web Development</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Full Stack JavaScript" data-event-label="Source: Footer" href="/techdegree/full-stack-javascript">Full Stack JavaScript</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Python Development" data-event-label="Source: Footer" href="/techdegree/python-development">Python Development</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Data Analysis" data-event-label="Source: Footer" href="/techdegree/data-analysis">Data Analysis</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked UX Design" data-event-label="Source: Footer" href="/techdegree/ux-design">UX Design</a></li> </ul> </div> <div class="footer-catalogue-tracks"> <h4>Tracks</h4> <ul class="links-2020-footer list-unstyled"> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Learn to Code for Beginners" data-event-label="Source: Footer" href="/tracks/learn-to-code-for-beginners">Learn to Code for Beginners</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Beginning Python" data-event-label="Source: Footer" href="/tracks/beginning-python">Beginning Python</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Beginning SQL" data-event-label="Source: Footer" href="/tracks/beginning-sql">Beginning SQL</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Beginning Java" data-event-label="Source: Footer" href="/tracks/beginning-java">Beginning Java</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked See More Tracks" data-event-label="Source: Footer" href="/tracks">...see more</a></li> </ul> </div> <div class="footer-catalogue-courses"> <h4>Courses</h4> <ul class="links-2020-footer list-unstyled"> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked JavaDcript Basics" data-event-label="Source: Footer" href="/library/javascript-basics">JavaScript Basics</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Intro to HTML & CSS" data-event-label="Source: Footer" href="/library/introduction-to-html-and-css">Intro to HTML & CSS</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Python Basics" data-event-label="Source: Footer" href="/library/python-basics">Python Basics</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked CSS Layout" data-event-label="Source: Footer" href="/library/css-layout">CSS Layout</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked See more Courses" data-event-label="Source: Footer" href="/library">...see more</a></li> </ul> </div> </div> </div> <!-- Right --> <div class="footer-right"> <h4>Explore</h4> <ul class="links-2020-footer list-unstyled"> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Plans" data-event-label="Source: Footer" href="/plans">Plans</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Affiliates" data-event-label="Source: Footer" href="https://join.teamtreehouse.com/affiliates">Affiliates</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Perks" data-event-label="Source: Footer" href="/perks">Perks</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Physical Library Access" data-event-label="Source: Footer" href="/libraries/find-your-library">Free Treehouse Near Me</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Treehouse for Libraries" data-event-label="Source: Footer" href="https://join.teamtreehouse.com/libraries/">Treehouse for Libraries</a></li> <li><a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Treehouse for Teams" data-event-label="Source: Footer" href="/teams">Treehouse for Businesses</a></li> </ul> </div> </div> <div class="footer-tail"> <ul class="list-unstyled social"> <li><a title="Twitter" target="_blank" rel="noopener" data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Twitter Icon" data-event-label="Source: Footer" href="https://twitter.com/treehouse"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 24 24" class="twitter-icon" aria-labelledby="twitterIcon7606307" role="img"> <title id="twitterIcon7606307">Twitter</title> <path d="M19,8.3c-0.5,0.2-1,0.4-1.5,0.4c0.6-0.3,1-0.9,1.2-1.5c-0.5,0.3-1.1,0.5-1.7,0.7C16.5,7.3,15.8,7,15,7 c-1.5,0-2.7,1.2-2.7,2.8c0,0.2,0,0.4,0.1,0.6c-2.2-0.1-4.2-1.2-5.5-2.9C6.7,7.9,6.5,8.4,6.5,8.9c0,1,0.4,1.8,1.2,2.3 c-0.4,0-1.2-0.1-1.2-0.3c0,0,0,0,0,0c0,1.3,0.9,2.5,2.2,2.7c-0.2,0.1-0.4,0.1-0.7,0.1c-0.2,0-0.3,0-0.5-0.1c0.3,1.1,1.3,1.9,2.5,1.9 c-0.9,0.7-2.1,1.2-3.3,1.2c-0.2,0-0.4,0-0.6,0c1.2,0.8,2.6,1.2,4.1,1.2c4.9,0,7.6-4.2,7.6-7.9c0-0.1,0-0.2,0-0.4 C18.2,9.4,18.6,8.9,19,8.3z"></path> </svg></a></li> <li><a title="YouTube" target="_blank" rel="noopener" data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked YouTube Icon" data-event-label="Source: Footer" href="https://youtube.com/user/gotreehouse"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 24 24" class="youtube-icon" aria-labelledby="youtubeIcon8249855" role="img"> <title id="youtubeIcon8249855">YouTube</title> <path d="M19.5,8.2c-0.2-0.7-0.7-1.2-1.4-1.4C16.9,6.5,12,6.5,12,6.5s-4.9,0-6.1,0.3C5.2,7,4.7,7.6,4.5,8.2C4.2,9.5,4.2,12,4.2,12 s0,2.5,0.3,3.8c0.2,0.7,0.7,1.2,1.4,1.4c1.2,0.3,6.1,0.3,6.1,0.3s4.9,0,6.1-0.3c0.7-0.2,1.2-0.7,1.4-1.4c0.3-1.2,0.3-3.8,0.3-3.8 S19.8,9.5,19.5,8.2z M9.9,15V9l5.2,3L9.9,15z"></path> </svg></a></li> <li><a title="Facebook" target="_blank" rel="noopener" data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Facebook Icon" data-event-label="Source: Footer" href="https://facebook.com/teamtreehouse"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 24 24" class="facebook-icon" aria-labelledby="facebookIcon9858558" role="img"> <title id="facebookIcon9858558">Facebook</title> <path d="M10.3,19.8V13H7.8v-2.8h2.5V8c0-2.4,1.5-3.8,3.7-3.8c1.1,0,2.2,0.2,2.2,0.2v2.4h-1.2c-1.2,0-1.6,0.8-1.6,1.5v1.8h2.7 L15.6,13h-2.3v6.8H10.3z"></path> </svg></a></li> <li><a title="LinkedIn" target="_blank" rel="noopener" data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked LinkedIn Icon" data-event-label="Source: Footer" href="https://linkedin.com/company/treehouse-island-inc-"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 24 24" class="linked-in-icon" aria-labelledby="linkedinIcon792358" role="img"> <title id="linkedinIcon792358">LinkedIn</title> <path d="M17.5,5.5h-11C6,5.5,5.6,6,5.5,6.5v11.1c0,0.5,0.4,0.9,1,0.9h11c0.5,0,0.9-0.4,1-0.9V6.5C18.5,6,18.1,5.5,17.5,5.5z M9.4,16.6H7.5v-6.2h1.9V16.6z M8.4,9.5C7.8,9.5,7.3,9,7.3,8.4s0.5-1.1,1.1-1.1s1.1,0.5,1.1,1.1S9,9.5,8.4,9.5z M16.6,16.6h-1.9v-3 c0-0.7,0-1.7-1-1.7s-1.2,0.8-1.2,1.6v3.1h-1.9v-6.2h1.8v0.9c0.4-0.6,1-1,1.8-1c2,0,2.3,1.3,2.3,3L16.6,16.6z"></path> </svg></a></li> <li><a title="Instagram" target="_blank" rel="noopener" data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Instagram Icon" data-event-label="Source: Footer" href="https://instagram.com/teamtreehouse"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 24 24" class="instagram-icon" aria-labelledby="instagramIcon9435390" role="img"> <title id="instagramIcon9435390">Instagram</title> <path d="M16.6,18.5H7.4c-1,0-1.9-0.8-1.9-1.9V7.4c0-1,0.8-1.9,1.9-1.9h9.3c1,0,1.9,0.8,1.9,1.9v9.3C18.5,17.7,17.7,18.5,16.6,18.5z M12,10.1c-1,0-1.9,0.8-1.9,1.9s0.8,1.9,1.9,1.9s1.9-0.8,1.9-1.9S13,10.1,12,10.1z M15.7,7.4c-0.6,0-0.9,0.4-0.9,0.9 s0.4,0.9,0.9,0.9s0.9-0.4,0.9-0.9S16.3,7.4,15.7,7.4z M16.6,12h-0.9c0,2-1.7,3.7-3.7,3.7S8.3,14,8.3,12H7.4v3.7 c0,0.6,0.4,0.9,0.9,0.9h7.4c0.6,0,0.9-0.4,0.9-0.9V12z"></path> </svg></a></li> <li><a title="TikTok" target="_blank" rel="noopener" data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked TikTok Icon" data-event-label="Source: Footer" href="https://tiktok.com/@team.treehouse"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 24 24" class="tiktok-icon"> <g id="BXaky5.tif"> <g> <path d="M17.6,8.5C17.6,8.5,17.6,8.5,17.6,8.5c-0.1,0-0.1,0-0.2-0.1c-0.8-0.1-1.5-0.5-2-1.1C15,7,14.7,6.6,14.5,6.1 C14.5,6,14.4,6,14.3,6c-0.6,0-1.1,0-1.7,0c-0.2,0-0.2,0-0.2,0.2c0,2.6,0,5.2,0,7.8c0,1.1-0.8,1.9-1.9,1.9c-1,0-1.9-0.8-1.9-1.9 c0-1,0.8-1.9,1.9-1.9c0.2,0,0.4,0,0.6,0c0.1,0,0.2,0,0.2-0.2c0-0.6,0-1.2,0-1.8c0,0,0-0.1,0-0.1c-0.4,0-0.8,0-1.2,0 c-2.1,0.2-3.6,2.1-3.5,4.2c0.1,2.1,1.8,3.7,3.9,3.8c2.2,0,4.1-1.7,4.1-3.9c0-1.5,0-3.1,0-4.6c0-0.1,0-0.1,0-0.2 c0.8,0.8,1.7,1.2,2.8,1.3C17.4,9.8,17.5,9.2,17.6,8.5z"></path> </g> </g> </svg></a></li> <li><a title="Discord" target="_blank" rel="noopener" data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Discord Icon" data-event-label="Source: Footer" href="https://discord.com/invite/RNNxkTHAUT"><svg preserveAspectRatio="xMinYMin meet" viewBox="0 0 14 11" class="discord-icon"> <g id="surface1"> <path d="M 11.859375 1.035156 C 10.941406 0.609375 9.96875 0.308594 8.972656 0.136719 C 8.835938 0.382812 8.710938 0.636719 8.601562 0.898438 C 7.539062 0.734375 6.457031 0.734375 5.394531 0.898438 C 5.285156 0.636719 5.160156 0.382812 5.027344 0.136719 C 4.027344 0.308594 3.054688 0.613281 2.136719 1.039062 C 0.308594 3.769531 -0.1875 6.4375 0.0585938 9.066406 C 1.128906 9.863281 2.328125 10.472656 3.601562 10.863281 C 3.886719 10.472656 4.140625 10.058594 4.359375 9.625 C 3.945312 9.46875 3.546875 9.277344 3.164062 9.050781 C 3.265625 8.976562 3.363281 8.902344 3.457031 8.828125 C 4.566406 9.355469 5.777344 9.628906 7 9.628906 C 8.222656 9.628906 9.433594 9.355469 10.542969 8.828125 C 10.636719 8.90625 10.734375 8.980469 10.835938 9.050781 C 10.453125 9.277344 10.050781 9.472656 9.636719 9.628906 C 9.855469 10.0625 10.109375 10.472656 10.394531 10.863281 C 11.671875 10.476562 12.871094 9.867188 13.941406 9.066406 C 14.230469 6.019531 13.445312 3.378906 11.859375 1.035156 Z M 4.675781 7.449219 C 3.984375 7.449219 3.414062 6.816406 3.414062 6.035156 C 3.414062 5.257812 3.964844 4.617188 4.671875 4.617188 C 5.378906 4.617188 5.945312 5.257812 5.933594 6.035156 C 5.921875 6.816406 5.378906 7.449219 4.675781 7.449219 Z M 9.324219 7.449219 C 8.632812 7.449219 8.066406 6.816406 8.066406 6.035156 C 8.066406 5.257812 8.617188 4.617188 9.324219 4.617188 C 10.035156 4.617188 10.597656 5.257812 10.585938 6.035156 C 10.570312 6.816406 10.027344 7.449219 9.324219 7.449219 Z M 9.324219 7.449219 "></path> </g> </svg></a></li> </ul> <div class="legal-links"> <a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Terms & Conditions" data-event-label="Source: Footer" href="/terms">Terms & Conditions</a></li> <span>|</span> <a data-featurette="analytics-click-event" data-event-category="button" data-event-action="M: Clicked Privacy" data-event-label="Source: Footer" href="/privacy">Privacy</a></li> </div> <p class="copyright-message">© 2025 Treehouse Island, Inc.</p> </div> </footer> <div id="mini-profile-container"></div> <div id="tarp" class="modal-tarp" style="display: none;" data-featurette="tarp"></div> <script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/8.4.4/swiper-bundle.min.js" defer="defer" aysnc="true"></script> <script src="https://ecs-static.teamtreehouse.com/assets/application_vendor-190e58c76a02c6db7ade130f3dd31bde5c398709b1af3261fd56a768836c437c.js" crossorigin="anonymous" defer="defer" integrity="sha256-GQ5Yx2oCxtt63hMPPdMb3lw5hwmxrzJh/VanaINsQ3w="></script> <script src="https://ecs-static.teamtreehouse.com/assets/application-35a8d45d797f31fa96a9e8c1bf74532a40290afe0afe98b7cc63ee27379c151b.js" crossorigin="anonymous" defer="defer" integrity="sha256-NajUXXl/MfqWqejBv3RTKkApCv4K/pi3zGPuJzecFRs="></script> <!-- Segment.io Analytics --> <script type="text/plain" class="optanon-category-2" async> !function(){ var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t,e){var n=document.createElement("script");n.type="text/javascript";n.async=!0;n.src="https://cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a);analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.1.0"; analytics.load("DMUKccVYvuuUIVSJlokCJe0YQyGm9qVb"); analytics.ready(function(){ window.analytics.segmentDebug = window.analytics.debug; window.analytics.debug = function(state) { if (state == null) { state = true; } $.cookie("_treehouse_analytics_debug", state); return state; }; }) window.recordedAnalytics = [] function recordAnalyticsCall(callType, event, properties, options) { if ($.cookie("_treehouse_analytics_debug") == "true") { window.recordedAnalytics.push([callType, event, properties, options]) console.debug("Analytics: ", callType, ("'" + event + "'"), properties, options); } } analytics.on('alias', function(e, p, o) { recordAnalyticsCall('alias', e, p, o)}); analytics.on('identify', function(e, p, o) { recordAnalyticsCall('identify', e, p, o)}); analytics.on('group', function(e, p, o) { recordAnalyticsCall('group', e, p, o)}); analytics.on('track', function(e, p, o) { recordAnalyticsCall('track', e, p, o)}); analytics.on('page', function(e, p, o) { recordAnalyticsCall('page', e, p, o)}); var request_id = "43a644b7-ade8-46a6-8c4c-a4df8e4b5b7b"; function trackIdentity() { window.analytics.identify({"visitor_id":"8979280457","session_id":"45f57186-e0d2-4bb8-9aa8-338abdd3042a"}); } function trackPage() { window.analytics.page({ visitor_id: "8979280457", session_id: "45f57186-e0d2-4bb8-9aa8-338abdd3042a", request_id: request_id }); } trackIdentity(); trackPage(); $(document).on("pjax:success", function(event, body, status, xhr, options) { request_id = xhr.getResponseHeader("X-Request-Id"); trackPage(); }); }}(); //# sourceURL=_analytics_footer.erb </script> <!-- Start of HubSpot Embed Code --> <script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/7320745.js"></script> <!-- End of HubSpot Embed Code --> <script src="https://ecs-static.teamtreehouse.com/packs/js/application-9900001412a776dd2112.js"></script> <!-- Include the recaptcha javascript library --> </body> </html>