CINXE.COM

Just a moment...

<!DOCTYPE html><html lang="en-US"><head><title>Just a moment...</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge"><meta name="robots" content="noindex,nofollow"><meta name="viewport" content="width=device-width,initial-scale=1"><style>*{box-sizing:border-box;margin:0;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%;color:#313131;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}body{display:flex;flex-direction:column;height:100vh;min-height:100vh}.main-content{margin:8rem auto;max-width:60rem;padding-left:1.5rem}@media (width <= 720px){.main-content{margin-top:4rem}}.h2{font-size:1.5rem;font-weight:500;line-height:2.25rem}@media (width <= 720px){.h2{font-size:1.25rem;line-height:1.5rem}}#challenge-error-text{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0IyMEYwMyIgZD0iTTE2IDNhMTMgMTMgMCAxIDAgMTMgMTNBMTMuMDE1IDEzLjAxNSAwIDAgMCAxNiAzbTAgMjRhMTEgMTEgMCAxIDEgMTEtMTEgMTEuMDEgMTEuMDEgMCAwIDEtMTEgMTEiLz48cGF0aCBmaWxsPSIjQjIwRjAzIiBkPSJNMTcuMDM4IDE4LjYxNUgxNC44N0wxNC41NjMgOS41aDIuNzgzem0tMS4wODQgMS40MjdxLjY2IDAgMS4wNTcuMzg4LjQwNy4zODkuNDA3Ljk5NCAwIC41OTYtLjQwNy45ODQtLjM5Ny4zOS0xLjA1Ny4zODktLjY1IDAtMS4wNTYtLjM4OS0uMzk4LS4zODktLjM5OC0uOTg0IDAtLjU5Ny4zOTgtLjk4NS40MDYtLjM5NyAxLjA1Ni0uMzk3Ii8+PC9zdmc+);background-repeat:no-repeat;background-size:contain;padding-left:34px}@media (prefers-color-scheme:dark){body{background-color:#222;color:#d9d9d9}}</style><meta http-equiv="refresh" content="390"></head><body class="no-js"><div class="main-wrapper" role="main"><div class="main-content"><noscript><div class="h2"><span id="challenge-error-text">Enable JavaScript and cookies to continue</span></div></noscript></div></div><script>(function(){window._cf_chl_opt={cvId: '3',cZone: "eecs.berkeley.edu",cType: 'managed',cRay: '917335f57e2efd75',cH: 't74.JnhUN5sjj0N_d3fdjBPWeEIeYiAtXJHAtJgcfAA-1740439483-1.2.1.1-E97rXJ5fpIiMW27oo.mhZtemuNWGESw2Nij_5nYgR40pabbSz6Hjnm5iAPAKCD0Y',cUPMDTk: "\/academics\/undergraduate\/cs-ba\/?__cf_chl_tk=yjuTzS_jrNQdlWGPQK33yt.OZvYdE02UgAQFB6VQ.9c-1740439483-1.0.1.1-Xangbjb9jOFYsHQ2al1nifNjTgOnxZLxJu9KozRApt4",cFPWv: 'b',cITimeS: '1740439483',cTTimeMs: '1000',cMTimeMs: '390000',cTplC: 0,cTplV: 5,cTplB: 'cf',cK: "",fa: "\/academics\/undergraduate\/cs-ba\/?__cf_chl_f_tk=yjuTzS_jrNQdlWGPQK33yt.OZvYdE02UgAQFB6VQ.9c-1740439483-1.0.1.1-Xangbjb9jOFYsHQ2al1nifNjTgOnxZLxJu9KozRApt4",md: "rUaQkOx37RrfWqvMpDR4T0.X3jvyJUP3AB5Pf_dK24U-1740439483-1.2.1.1-R8.GjEKTb9W6bPvQhzzwlq5wzUzpWQ6ZFE0AclacQ06i.faAfjfs7_4gqGOyXaay901HJeN32c3EWCsNYim3eDs41Xhh_Mf.NIb5Mcz8vU60B_6OpSmrBb24cpCLqVGDZkvyeGuher26aMOW8fGy0C1c5upnJC8n2DsTkXzdwYLk9XDADtdfLIQQzu5BlUVkTgwOy7UNfOOGpxQFXue2RFGjh.6ynXxGMatvFQVh8X7bXWkovyy_vKOVOaoJa.gAZpUiEFYCKzxjkUXZTPi.oDk57SefqmMK3qzf7rHXJsCfZCjNUVgp5KxlfyJWcYhF1ZupevyOANjm.bbyxudW9oN_oe6WRH0iopNfnsTW9dK8huUOECInSL7cAOU.4lfA86OWjIBYZBJR42YEJkIiEeD5kHCn5RCvpMrCMWYeiq2izu0jayDl7q9pUdARqgAa9J3ygNOmO_Est4zf6RibLPRr.ernvzwIDavcxV2p.P3CztzoqJn1A85sbn0apwH0mjOFo2vQYcElOWdHEZSpHUzz9oR6wwQPy8x.CIIIuTqzjkH2aJTgntev4IztKztfJVT0AgL8YbLPMWtZkNHFMAuoJt4CkHDaIU2MdYLkARqqRiOTpn3X92wJulRvAr67hjL3LoazdT6YV2HoUFy7nLvekh085nYO8oKPUUBycGb94O0DbObP3sqBdvPCavZfjH_soKRIEuChFIBdfMAJ13HBNgyhTBaXdV0r14ZVU8hQ5Zi69SOxy_zoMDUo1jfP9q_miHXzRaIUoE1_W.4fCFxPcXdpy1tNGAhuO1vcppy0wnD4BbyP2QbHtti_.z08zfgpno.gOYXwo1JKRFdu9iHXxDd6xL_Hy1zETK9vBONCcCAHkK0I_idmcZ_vRVoT0cTP__aWb27qsLKT5p9kaWq_4TBYgOrujA5RDXRpwMpE_ODwX3cpRWd9XOE6Hfb.cmoBkk2fME.q1DrZJIDz.gw8SL4I2t7PuUG.dQQi9zy_HfQXOyoZFQwxZv3eDlT_2SSV_rTry49cjrP6549CZ55Ndub_knjhJRJJNsnATmvqOmy0oysxGhZvT0K8abtxWaR8mVjz2MElcDFN6A.nXHBwsvYhjW6fj.GRrPwhayKWeS0XRMLmejKBx8gXOj45defPuRQCEgk8YIgBBweOxvUOnsjsWjFAMf7KVhjo_gEaTuhRKKJK89s.KOuNr4E1yINf7Vwg0c5WmKHKhDNZ1Ergo3WMgMtkePKL2l1L54KQ.hC7H1sUzmeBP50JAxEkLLFP3H1tqnAsHR.MxhnXT.uhWNWCAxNukfR.h8OgXTbud39NPEzep0PsVMlL9YBV1JaioR4nPeISJciGWd9fjCQrv2pS8xHDnbEafL0TXSwsJVvU4.SaiFpcBIWHRRgHilkLw0i2Nz55vYhfVpnvhebvAo0jDL_sBvNQNCte2QoQMrJYXh0FuwN8SKU6r7EiLy3a2xxB9atvlxeOlsRdFQBAMeumpvb9z6m7GlIQ7IoxEkrTPD9OKVSqi6tGyVMamJTkVQnksZ_eZ0OU0qJENx_9Waga8pppSKEQNXAY45bqy1D1WUpHnm1zpoiaKyDSeuCrze90C4S9OgfflesmqZsGRZovQXIoOXj9NHCscaHTTdYx2TsZDVtKDCLfDmRNwbnq0dDvrQq_tVZLPw35amVZhlzl1hVDMCJF3qrkzQmlJ1EgSq0TMolDunhNKcjs4AEmQgVH8SN_EYuq1YcFOMqXkrzf1ASIwL1YWiZUoNsNu3I.XBn0SLIT66nhv6Q0KA8iTtn0o41AvuM2D3dbLwVBlPmyX6mJx9duoN0C2dp6VcAfnoxgrkdM4mNi6ZbsjP1.tXCr4UdG9k4yZ69rgv.cMTV8c_c0oE9bgHotv9IJ6VUL47ORiAURzeTUKWG3sqoWEwR0CPgzu6v4zjoeV1tr0Ve3aSl_GRG1yW5VtahGWiQ4oyqmDKWett6MQavQX42_00OftPsJQ8f.XdvhUl1NB15q_hkD4yC4rQ4uK611X3Pl.x6xfz8pmRmatMSTTn8lgv6IpJW8JXNt9.I5utl_V7NyNLZ6RVak1ohm7xoBHocqmZgEKLkKWioKfpum6_ceR1MQV3fqCOcGVO00Q_NP_SkQfnUXGVz0WIn6fd0bGZbrpOVg39g3uqHK1laCO0QrTSMWjgTCIH9f_WI0iZeX9x5Exa1MoW9zONgy1WzgR2xkcrhgLxALzrLmfNJsyVfBkF.3saxAjrHGtbaoSJ6qnh9P7k4LNk02WpPTx49uHiG2LhC8768HlRIew.QJpgXmh2zOz3.971AX2.wY0_Qmg42u2FjjDKM46sj2cSMfCmuDibucPcmmbPAgBdCexKJBfvWhyMXZQhOn8kAJwDZA4Ycv_dYOVrBRXFKoTCUswvHHuK6pZa9_cy1_WMgWJB.7j69E8s7zEpRayA6LcDrLIEdlRmv0fHIR.m7ruvdzFI4ylob.vrsB4pmqErcm_NZs8d5h6blgP9e3ktf9JBZQJU.RfkBFAK9VeinUHS9wGgkzmM.K2w_mnZdHz.qkmZFe56itJC7sMR1tu..jXvP2J3TNJViYeSENXs6OwTA",mdrd: "iloS9Vu.8JhmJ17dqUyT8i1GjUNI0VcWYRJxhn0mSq4-1740439483-1.2.1.1-MZ7_2vGiUc8QGOREv2IPUQ7B7pFSCvA.D91JL_9rlfcXssEmD.YSpnifp0tf4CvbiALMLwwqaCge9zSiSKFdnu6Q51J5oHV.FNl70VcpF9DppFLsbYS2VWvcLY5LMxRA4mFVQtMs25FqpAhgotwMFEfF9dbW.K9.QbvKViMA3fk2n8ODR2vlLGL5kTH4UGbBJRev_7NPmjWFNRSkJI1W1DG_nRaA75WqZk_.jcMbFjKlg20CnoV5E2k3OQiv2v0TmNrj4l8Mij5kLxAhHQPb5IvAKHMMtbbuobn0zc.mfJnTH2KPYAT4r_K9FN6aIrDU6azfGPv.r9.7p39DDd8VA7sjuFZnc7uyz2dk9U3gB3lS0BYkDMHTYiyGPO_Lt0Eltj5ywNJjjd4J9pZb0.hzg9vWsVLuiU9yeNIDseMoVchB.zAXNb9POqxOmRI1mS5Y9_XNw.vfzCkDCJmzt59ci7OD_fU.S5hoFfQ8_ACrhWnRCsJjJ031jrqIpkwCnbbBYrz9yAwJ9SsYQ418NhL0Wuv5EyV9Csa023pzUJO980ohWfv5wPN2V5iHiGMSb.7DluaDFlVOsTJtqLd_vvO.orVaWtxcNSIFE9upCbq1zIaf33g9Ghe5NCfsUjMaemrNaBfQgymt345Q.jLgAt.11tMWc_h12WyZIpW77fFTyeRj1iALUb.RpWQHAcBPR7aY78Qgp5r8ydIgQLHC0hnFxSiqLzsdNR1iSiqew_OM1J2CM92nfi1AbjwrsOevu5YwHLfyJmZZC6I2hSBrhJh4K6Vc5a7Abg8oj5F50gmY3.LkK.jcJbk6RoRr6eoaGztqYnnx8G8bkSijFMItGE4.Ioy5WPWdTXOpMWJ93R5pk1evK5ec_MIi4YSuKNZZQZjmbWjoWcmeb3GtUFy4H36tJgGJNTL8aKnbRU3iY9J1kEz2ML6qIc4aywntHMVLgKkIVJtpDZnL6UK29.PN46r_x1ydE0niKSc19VxEQ2EFqt_MAPKGnpuA8l4fZsmH.q6pTUYiNE8ej2qGROBLZ0oehtra.AxEqUNx_LFB5esV8IlarbDeQ9GQ8cYekJC7RHUKwwmntF_cq3GtILz61oIDdVNRFJ87PcjdoTiJtMcAdsFi5c4JL2IHmOPcUA0UB8O.yqDHS9mrl3K4s8oi1w0J6fVQDhVP9bPU4lAUicPO1AXvqxBdQwfsnyHW6pDNllKYUzTraQ1EBuduUmEwBHt9i.ZJWhan7cpP.3JTG9a2S6tWuaYxqQ4LeTXBw2DECSNMTf3c8Qg7AhajdKzZzNWebxLYXLmTtgrbe4th5Mt_OJpPcLOEiCBy2l4G3WRJ1wlItswFVFJADEcrl9yZlXFmDxrSHx8u.ejeT6zwGXMLdqQdv1My0w1YjiIEmIyRImCIaBq6N8Oc5ac0Tjy39TjVHGgv8_fWNNB8ARhTLBGLnp9qwil0FqPJcu1plW_6M1Oyw6Uh66Tkh.TafwQGQSYKAEudMg6z24pDTwdvNB5Eu5OqCEhDhPg8KmbvfuraLVMSHfvXOd3NoDXBHBy5AjF_ovTykX5aMcPIPEDK.XFSVDRc40ZoCi_c8MlPPaofoRZVMxKhuEn_xuN6n_NNZjjt3iwAMOgQ1vd.TAFqN01T1UX4bfeL5HxoSA.1OVILPBiwq7DedHt7UryxTDgi9nfwhgSE6R4wKjs01dHRE94Ypkq422T5lSa0NqrhSmIIDZ1NpWvbwZ_KuTC1XJ8uy9I8.x4p2mgm_3NdXrRR8lcpWL7z6TKGS1V29xAsW2gEoizmQv1inuDxhzsRlTwCpbCiWukBDVO7xs7ayJyDGdM3w629tOAOvFGGGP_q7bwDM7JHCKBptXEa7lnl1Qcn2z2d3yEZHqSyaMVmazBA0OWQwgKbY3Cgfw3vr6kifqdQoFml8AK3W7_yG7h2NJ2B0vN0jn_z2RcI7SQOIVS4MB003RZ_NS5vOS81EykQh3NCChLa"};var cpo = document.createElement('script');cpo.src = '/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=917335f57e2efd75';window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search;if (window.history && window.history.replaceState) {var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;history.replaceState(null, null, "\/academics\/undergraduate\/cs-ba\/?__cf_chl_rt_tk=yjuTzS_jrNQdlWGPQK33yt.OZvYdE02UgAQFB6VQ.9c-1740439483-1.0.1.1-Xangbjb9jOFYsHQ2al1nifNjTgOnxZLxJu9KozRApt4" + window._cf_chl_opt.cOgUHash);cpo.onload = function() {history.replaceState(null, null, ogU);}}document.getElementsByTagName('head')[0].appendChild(cpo);}());</script></body></html>