urn:noticeable:projects:G29QS3M0aRz4dY8JYHrrCS50 Changelogcs50.harvard.edu2021-08-18T00:56:20.718ZCopyright © CS50Noticeable#1e88e5urn:noticeable:publications:FOriY7Nd9jLty14eGQxe2021-08-17T15:26:18.945Z2021-08-18T00:56:20.718ZLanguage UpdatesIn anticipation of fall semester, cli50 and CS50 IDE have been updated with some updated language support! Java 16.0.2 Node 16.2.2 Python 3.9.6 Ruby 2.7.4<p>In anticipation of fall semester, <code>cli50</code> and CS50 IDE have been updated with some updated language support!</p><ul><li><p>Java 16.0.2</p></li><li><p>Node 16.2.2</p></li><li><p>Python 3.9.6</p></li><li><p>Ruby 2.7.4</p><p></p></li></ul>David J. Malan[email protected]urn:noticeable:publications:FcBc7dKGFI4ts0LSEy572021-08-14T01:00:00Z2021-08-18T01:08:22.902ZChanges to check50, submit50 AuthenticationTools like check50 and submit50 rely on git, a popular tool for saving different versions of code, and GitHub, a popular website for saving those versions in the cloud. To push (i.e., save) your code to GitHub using git, it used to be<p>Tools like <a href="https://cs50.readthedocs.io/projects/check50/en/latest/?utm_source=noticeable&amp;utm_campaign=cs50.changes-to-check50-submit50-authentication&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.FcBc7dKGFI4ts0LSEy57&amp;utm_medium=newspage">check50</a> and <a href="https://cs50.readthedocs.io/submit50/?utm_source=noticeable&amp;utm_campaign=cs50.changes-to-check50-submit50-authentication&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.FcBc7dKGFI4ts0LSEy57&amp;utm_medium=newspage">submit50</a> rely on <code>git</code>, a popular tool for saving different versions of code, and <a href="https://github.com/?utm_source=noticeable&amp;utm_campaign=cs50.changes-to-check50-submit50-authentication&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.FcBc7dKGFI4ts0LSEy57&amp;utm_medium=newspage">GitHub</a>, a popular website for saving those versions in the cloud. To push (i.e., save) your code to GitHub using <code>git</code>, it used to be possible to log into GitHub via a command line (as in a terminal window) using a GitHub username and password. As of <a href="https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/?utm_source=noticeable&amp;utm_campaign=cs50.changes-to-check50-submit50-authentication&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.FcBc7dKGFI4ts0LSEy57&amp;utm_medium=newspage">August 13, 2021</a>, that’s no longer possible, which means you can no longer use <code>check50</code> or <code>submit50</code> using your GitHub username and password either.</p><p>But you can still use <code>check50</code> and <code>submit50</code>! You just need to log in a bit differently, either using <a href="https://cs50.readthedocs.io/github/?utm_source=noticeable&amp;utm_campaign=cs50.changes-to-check50-submit50-authentication&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.FcBc7dKGFI4ts0LSEy57&amp;utm_medium=newspage#ssh">SSH</a> or a <a href="https://cs50.readthedocs.io/github/?utm_source=noticeable&amp;utm_campaign=cs50.changes-to-check50-submit50-authentication&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.FcBc7dKGFI4ts0LSEy57&amp;utm_medium=newspage#personal-access-token">personal access token</a>. Odds are you’ll find SSH more convenient.</p><p>See <a href="https://cs50.readthedocs.io/github/?utm_source=noticeable&amp;utm_campaign=cs50.changes-to-check50-submit50-authentication&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.FcBc7dKGFI4ts0LSEy57&amp;utm_medium=newspage" rel="noopener nofollow" target="_blank">https://cs50.readthedocs.io/github/</a> for all details.</p>David J. Malan[email protected]urn:noticeable:publications:KzY6YsIYu7bBcNwlkk9r2021-01-01T20:23:00.001Z2021-08-17T15:35:51.288Zcli50 Upgraded to Ubuntu 20.04Just in time for the new year, cli50 has been upgraded from Ubuntu 18.04 to Ubuntu 20.04, just like CS50 IDE! Also included are: Java 15 Node 15 Python 3.9 Ruby 2.7 <p>Just in time for the new year, <code>cli50</code> has been upgraded from Ubuntu 18.04 to Ubuntu 20.04, just like CS50 IDE! Also included are:</p><ul><li><p>Java 15</p></li><li><p>Node 15</p></li><li><p>Python 3.9</p></li><li><p>Ruby 2.7</p></li></ul>David J. Malan[email protected]urn:noticeable:publications:zYbW206K6jdAllYjo28w2020-09-13T18:10:00.001Z2020-09-13T18:30:31.079ZRubber Duck Debugging in CS50 IDEIn addition to printf, debug50 (aka gdb), and valgrind, CS50 also introduces students to rubber duck debugging, a technique that involves talking to a rubber duck (or any inanimate, or even animate, object) about a bug in their code. In...<p>In addition to <code>printf</code>, <code>debug50</code> (aka <code>gdb</code>), and <code>valgrind</code>, CS50 also introduces students to <a href="https://en.wikipedia.org/wiki/Rubber_duck_debugging?utm_source=noticeable&amp;utm_campaign=cs50.rubber-duck-debugging-in-cs-50-ide&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.zYbW206K6jdAllYjo28w&amp;utm_medium=newspage" target="_blank" rel="noopener">rubber duck debugging</a>, a technique that involves talking to a rubber duck (or any inanimate, or even animate, object) about a bug in their code. In healthier times, students on campus even receive their very own <a href="https://www.theharvardshop.com/products/ddb50rubberducks?utm_source=noticeable&amp;utm_campaign=cs50.rubber-duck-debugging-in-cs-50-ide&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.zYbW206K6jdAllYjo28w&amp;utm_medium=newspage" target="_blank" rel="noopener">ddb</a>. By explaining the intended logic of their code, any illogic therein tends to stand out, thereby enabling students to debug their code.</p> <p>With everyone taking CS50 online this term, we thought we’d provide everyone with their own virtual duck! And so, thanks to CS50’s own Kareem Zidane, Sophie Anderson, and Brenda Anderson, <a href="https://ide.cs50.io/?utm_source=noticeable&amp;utm_campaign=cs50.rubber-duck-debugging-in-cs-50-ide&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.zYbW206K6jdAllYjo28w&amp;utm_medium=newspage" target="_blank" rel="noopener">CS50 IDE</a> now has its own clickable duck to whom students can talk via chat. To be fair, its vocabulary is limited, but what matters is students’ side of the conversation!</p> <p><img src="https://storage.noticeable.io/projects/G29QS3M0aRz4dY8JYHrr/publications/zYbW206K6jdAllYjo28w/01h55ta3gsvd15rffxhz62keer-image.png" alt="quack.png"></p> David J. Malan[email protected]urn:noticeable:publications:PMVA3go65USGjHWRUA1y2020-08-13T13:37:00.001Z2020-08-13T13:44:43.950ZLinking to ChaptersSo that teachers (and we!) can link to specific chapters within CS50's videos, the links in the Chapters menu now include not only start parameters but also end parameters as well. That way, if you control- or right-click on a chapter...<p>So that teachers (and we!) can link to specific chapters within CS50’s videos, the links in the <strong>Chapters</strong> menu now include not only <code>start</code> parameters but also <code>end</code> parameters as well. That way, if you control- or right-click on a chapter and copy its URL, you can link to just a single chapter; the player will start playing the video at <code>start</code> and will automatically pause it at <code>end</code>. Consider, for instance, this link to a chapter on <strong>Pseudocode</strong>, which starts at 1700 seconds and ends at 1878 seconds!</p> <p><a href="https://video.cs50.io/jjqgP9dpD1k?screen=w3XNssqYBSU&amp;start=1700&amp;end=1878&amp;utm_source=noticeable&amp;utm_campaign=cs50.linking-to-chapters&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.PMVA3go65USGjHWRUA1y&amp;utm_medium=newspage" target="_blank" rel="noopener">https://video.cs50.io/jjqgP9dpD1k?screen=w3XNssqYBSU&amp;start=1700&amp;end=1878</a></p> <p>You can also use the form on the player’s landing page at <a href="https://video.cs50.io/?utm_source=noticeable&amp;utm_campaign=cs50.linking-to-chapters&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.PMVA3go65USGjHWRUA1y&amp;utm_medium=newspage" target="_blank" rel="noopener">https://video.cs50.io/</a> to create URLs manually!</p> <p><img src="https://storage.noticeable.io/projects/G29QS3M0aRz4dY8JYHrr/publications/PMVA3go65USGjHWRUA1y/01h55ta3gsmme3mw897dwf03b2-image.png" alt="Screen Shot 2020-08-13 at 9.33.53 AM.png"></p> David J. Malan[email protected]urn:noticeable:publications:lK5lXQLfAY7wHwOOYCA32020-06-20T12:24:00.001Z2020-06-20T12:37:28.688ZSnacks for LecturesA tradition in CS50 is to serve cake (or cupcakes) after the course's first lecture. And that tradition has since evolved into snacks in the middle of every lecture. Of course, those snacks don't readily translate to video, and such...<p>A tradition in CS50 is to serve cake (or cupcakes) after the course’s first lecture. And that tradition has since evolved into snacks in the middle of every lecture. Of course, those snacks don’t readily translate to video, and such comments as these online have not been uncommon:</p> <ul> <li><a href="https://www.facebook.com/groups/cs50/permalink/1581744055305967/?utm_source=noticeable&amp;utm_campaign=cs50.snacks-for-lectures&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.lK5lXQLfAY7wHwOOYCA3&amp;utm_medium=newspage" target="_blank" rel="noopener">So ive come to realise that im going to need cookies and cupcakes on standby whilst watching the lectures.</a></li> <li><a href="https://www.facebook.com/groups/cs50/permalink/1716047601875611/?utm_source=noticeable&amp;utm_campaign=cs50.snacks-for-lectures&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.lK5lXQLfAY7wHwOOYCA3&amp;utm_medium=newspage" target="_blank" rel="noopener">When professor Malan says “Let’s take our 5-minute break, you have cupcakes outside” but you’re watching a recorded lecture and you get no cupcakes :-(</a></li> </ul> <p>But no longer! Happy to say that the CS50 Video Player now includes a menu of snacks, complete with cake and healthier options alike!</p> <p><img src="https://storage.noticeable.io/projects/G29QS3M0aRz4dY8JYHrr/publications/lK5lXQLfAY7wHwOOYCA3/01h55ta3gshxmxwvgaqxhjmq8v-image.png" alt="1.png"></p> <p><img src="https://storage.noticeable.io/projects/G29QS3M0aRz4dY8JYHrr/publications/lK5lXQLfAY7wHwOOYCA3/01h55ta3gsya3hj97gdnraz9n7-image.png" alt="2.png"></p> <p>Eat your vegetables!</p> David J. Malan[email protected]urn:noticeable:publications:RWKPgjpMBipv94UmhdQF2020-06-03T18:00:00.001Z2020-06-04T00:32:52.087ZAn API for Harvard's MapYears ago, CS50 had an API (application programming interface) for Harvard's map, so that students could integrate maps of campus into their own final projects. The API eventually fell by the wayside as CS50's infrastructure evolved, but...<p>Years ago, CS50 had an API (application programming interface) for <a href="https://map.harvard.edu/?utm_source=noticeable&amp;utm_campaign=cs50.an-api-for-harvard-s-map&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.RWKPgjpMBipv94UmhdQF&amp;utm_medium=newspage" target="_blank" rel="noopener">Harvard’s map</a>, so that students could integrate maps of campus into their own final projects. The API eventually fell by the wayside as CS50’s infrastructure evolved, but, now, that <a href="https://cs50.readthedocs.io/api/map/?utm_source=noticeable&amp;utm_campaign=cs50.an-api-for-harvard-s-map&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.RWKPgjpMBipv94UmhdQF&amp;utm_medium=newspage" target="_blank" rel="noopener">API is back</a>!</p> <p>Via a simple HTTP-based API can students now search for buildings like Wigglesworth Hall via simple GET requests. For instance, <a href="https://cs50.readthedocs.io/api/map/?utm_source=noticeable&amp;utm_campaign=cs50.an-api-for-harvard-s-map&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.RWKPgjpMBipv94UmhdQF&amp;utm_medium=newspage" target="_blank" rel="noopener">https://cs50.readthedocs.io/api/map/</a> will return JSON like:</p> <pre><code>[ { <span class="hljs-attr">"address"</span>: <span class="hljs-string">"6 Harvard Yard"</span>, <span class="hljs-attr">"city"</span>: <span class="hljs-string">"Cambridge"</span>, <span class="hljs-attr">"geometry"</span>: { <span class="hljs-attr">"point"</span>: [ <span class="hljs-number">-71.1162317399999</span>, <span class="hljs-number">42.3728310430001</span> ], <span class="hljs-attr">"polygons"</span>: [ [ [ <span class="hljs-number">-71.11589956799997</span>, <span class="hljs-number">42.37279049500006</span> ], [ <span class="hljs-number">-71.11594347499994</span>, <span class="hljs-number">42.372702323000055</span> ], [ <span class="hljs-number">-71.11600147799999</span>, <span class="hljs-number">42.37271820400008</span> ], [ <span class="hljs-number">-71.11600269399997</span>, <span class="hljs-number">42.37271576400008</span> ], [ <span class="hljs-number">-71.11610170199998</span>, <span class="hljs-number">42.37274287200006</span> ], [ <span class="hljs-number">-71.11610013999996</span>, <span class="hljs-number">42.37274601000007</span> ], [ <span class="hljs-number">-71.11640570199995</span>, <span class="hljs-number">42.372829671000034</span> ], [ <span class="hljs-number">-71.11640749999998</span>, <span class="hljs-number">42.37282606200006</span> ], [ <span class="hljs-number">-71.11650843499996</span>, <span class="hljs-number">42.37285369800003</span> ], [ <span class="hljs-number">-71.11650663799998</span>, <span class="hljs-number">42.37285730600007</span> ], [ <span class="hljs-number">-71.11656312399998</span>, <span class="hljs-number">42.37287277200005</span> ], [ <span class="hljs-number">-71.11652030599998</span>, <span class="hljs-number">42.37296030500005</span> ], [ <span class="hljs-number">-71.11589956799997</span>, <span class="hljs-number">42.37279049500006</span> ] ] ] }, <span class="hljs-attr">"id"</span>: <span class="hljs-number">997</span>, <span class="hljs-attr">"image"</span>: <span class="hljs-string">"https://devsmap.cadm.harvard.edu/images/root_images/03323.jpg"</span>, <span class="hljs-attr">"name"</span>: <span class="hljs-string">"Wigglesworth Hall, Entries A,B,C+D"</span> }, { <span class="hljs-attr">"address"</span>: <span class="hljs-string">"6 Harvard Yard"</span>, <span class="hljs-attr">"city"</span>: <span class="hljs-string">"Cambridge"</span>, <span class="hljs-attr">"geometry"</span>: { <span class="hljs-attr">"point"</span>: [ <span class="hljs-number">-71.117157489</span>, <span class="hljs-number">42.373083326</span> ], <span class="hljs-attr">"polygons"</span>: [ [ [ <span class="hljs-number">-71.11674415099998</span>, <span class="hljs-number">42.37302187700004</span> ], [ <span class="hljs-number">-71.11676889299997</span>, <span class="hljs-number">42.37297193200004</span> ], [ <span class="hljs-number">-71.11678784399999</span>, <span class="hljs-number">42.37293177000004</span> ], [ <span class="hljs-number">-71.11679359399994</span>, <span class="hljs-number">42.37293354600007</span> ], [ <span class="hljs-number">-71.11684414499996</span>, <span class="hljs-number">42.37294797100003</span> ], [ <span class="hljs-number">-71.11684574399999</span>, <span class="hljs-number">42.37294474200007</span> ], [ <span class="hljs-number">-71.11694710199998</span>, <span class="hljs-number">42.37297234700003</span> ], [ <span class="hljs-number">-71.11694550299995</span>, <span class="hljs-number">42.372975576000044</span> ], [ <span class="hljs-number">-71.11740777999995</span>, <span class="hljs-number">42.37310117900006</span> ], [ <span class="hljs-number">-71.11741015999996</span>, <span class="hljs-number">42.37309832700004</span> ], [ <span class="hljs-number">-71.11750781999996</span>, <span class="hljs-number">42.37312492400008</span> ], [ <span class="hljs-number">-71.11750300299997</span>, <span class="hljs-number">42.37312714900003</span> ], [ <span class="hljs-number">-71.11757062399994</span>, <span class="hljs-number">42.37314577600006</span> ], [ <span class="hljs-number">-71.11752645499996</span>, <span class="hljs-number">42.37323494200007</span> ], [ <span class="hljs-number">-71.11674415099998</span>, <span class="hljs-number">42.37302187700004</span> ] ] ] }, <span class="hljs-attr">"id"</span>: <span class="hljs-number">1159</span>, <span class="hljs-attr">"image"</span>: <span class="hljs-string">"https://devsmap.cadm.harvard.edu/images/root_images/03322.jpg"</span>, <span class="hljs-attr">"name"</span>: <span class="hljs-string">"Wigglesworth Hall, Entries E,F,G,H+I"</span> }, { <span class="hljs-attr">"address"</span>: <span class="hljs-string">"6 Harvard Yard"</span>, <span class="hljs-attr">"city"</span>: <span class="hljs-string">"Cambridge"</span>, <span class="hljs-attr">"geometry"</span>: { <span class="hljs-attr">"point"</span>: [ <span class="hljs-number">-71.117856715</span>, <span class="hljs-number">42.3732810010001</span> ], <span class="hljs-attr">"polygons"</span>: [ [ [ <span class="hljs-number">-71.11770292099999</span>, <span class="hljs-number">42.37328923700005</span> ], [ <span class="hljs-number">-71.11774775899994</span>, <span class="hljs-number">42.37320090400004</span> ], [ <span class="hljs-number">-71.11800155099996</span>, <span class="hljs-number">42.37327055600008</span> ], [ <span class="hljs-number">-71.11801092199994</span>, <span class="hljs-number">42.37327307900006</span> ], [ <span class="hljs-number">-71.11796559599998</span>, <span class="hljs-number">42.373360913000056</span> ], [ <span class="hljs-number">-71.11770292099999</span>, <span class="hljs-number">42.37328923700005</span> ] ] ] }, <span class="hljs-attr">"id"</span>: <span class="hljs-number">1449</span>, <span class="hljs-attr">"image"</span>: <span class="hljs-string">"https://devsmap.cadm.harvard.edu/images/root_images/03321.jpg"</span>, <span class="hljs-attr">"name"</span>: <span class="hljs-string">"Wigglesworth Hall, Entries J+K"</span> } ] </code></pre> <p>In addition to providing students’ with each building’s <code>address</code>, <code>city</code>, <code>id</code>, <code>image</code>, and <code>name</code>, the API also provides a building’s <code>geometry</code>, the value of which includes a <code>point</code> for that building (e.g., its centroid) and also one or more <code>polygons</code>, which collectively describe the building’s footprint.</p> David J. Malan[email protected]urn:noticeable:publications:kMd7RjVVN1KXErNRJiQR2020-06-03T00:00:00.001Z2020-06-04T00:24:12.740ZUI Improvements for CS50 Video PlayerCS50's video player, a web app at video.cs50.io that synchronizes instructional videos with screen recordings, is now all the more responsive, particularly when embedded in a course's website: The "Keyboard" in "Keyboard Shortcuts" has...<p>CS50’s video player, a web app at <a href="https://video.cs50.io/?utm_source=noticeable&amp;utm_campaign=cs50.ui-improvements-for-cs-50-video-player&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.kMd7RjVVN1KXErNRJiQR&amp;utm_medium=newspage" target="_blank" rel="noopener">video.cs50.io</a> that synchronizes instructional videos with screen recordings, is now all the more responsive, particularly when embedded in a course’s website:</p> <ul> <li>The “Keyboard” in “Keyboard Shortcuts” has been replaced with an <a href="https://fontawesome.com/icons/keyboard?style=regular&amp;utm_source=noticeable&amp;utm_campaign=cs50.ui-improvements-for-cs-50-video-player&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.kMd7RjVVN1KXErNRJiQR&amp;utm_medium=newspage" target="_blank" rel="noopener">icon</a> to free up horizontal space.</li> <li>A <a href="https://fontawesome.com/icons/external-link-alt?style=solid&amp;utm_source=noticeable&amp;utm_campaign=cs50.ui-improvements-for-cs-50-video-player&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.kMd7RjVVN1KXErNRJiQR&amp;utm_medium=newspage" target="_blank" rel="noopener">pop-out icon</a> has been added (when the player is embedded) so that students can pop the player out into the full window.</li> <li>“CS50 Video Player” is shortened to “CS50” on the smallest of screens.</li> </ul> <p>Screenshots below!</p> <p>In terms of other features and bug fixes:</p> <ul> <li>The Escape key will now close the <strong>Captions</strong> drop-down.</li> <li>A bug was fixed whereby clicking <strong>Screen</strong> when a video is paused would result in a spinning icon.</li> <li>A bug was fixed whereby, if a student seeked in a video while <strong>Screen</strong> was enabled, the main video wouldn’t stay synchronized.</li> </ul> <p><strong>Large</strong></p> <p><img src="https://storage.noticeable.io/projects/G29QS3M0aRz4dY8JYHrr/publications/kMd7RjVVN1KXErNRJiQR/01h55ta3gskyqff6btz8ma9dje-image.png" alt="1.png"></p> <p><strong>Medium</strong></p> <p><img src="https://storage.noticeable.io/projects/G29QS3M0aRz4dY8JYHrr/publications/kMd7RjVVN1KXErNRJiQR/01h55ta3gsry12d4tc6nvr6epd-image.png" alt="2.png"></p> <p><strong>Small</strong><br> <img src="https://storage.noticeable.io/projects/G29QS3M0aRz4dY8JYHrr/publications/kMd7RjVVN1KXErNRJiQR/01h55ta3gsrsd429sn772662be-image.png" alt="3.png"></p> David J. Malan[email protected]urn:noticeable:publications:4tfoNl9p9fvcs2kRf3FB2020-06-02T02:00:00.001Z2020-06-04T00:51:01.105ZDocs for CS50's Dining API Have MovedDocumentation for CS50's Dining API, which provides Harvard students with programmatic access via HTTP to data from Harvard University Dining Services, has been integrated to cs50.readthedocs.io, where CS50's other documentation lives...<p>Documentation for CS50’s Dining API, which provides Harvard students with programmatic access via HTTP to data from <a href="https://dining.harvard.edu/?utm_source=noticeable&amp;utm_campaign=cs50.docs-for-cs-50-s-dining-api-have-moved&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.4tfoNl9p9fvcs2kRf3FB&amp;utm_medium=newspage" target="_blank" rel="noopener">Harvard University Dining Services</a>, has been integrated to <a href="https://cs50.readthedocs.io/?utm_source=noticeable&amp;utm_campaign=cs50.docs-for-cs-50-s-dining-api-have-moved&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.4tfoNl9p9fvcs2kRf3FB&amp;utm_medium=newspage" target="_blank" rel="noopener">cs50.readthedocs.io</a>, where CS50’s other documentation lives.</p> <p>While the documentation no longer includes <strong>Try It</strong> buttons (which seemed unnecessary for a GET-only API), it does still include tabbed code examples for Python and cURL. And it’s (hopefully!) a bit easier to read.</p> <p>See <a href="https://cs50.readthedocs.io/api/dining/?utm_source=noticeable&amp;utm_campaign=cs50.docs-for-cs-50-s-dining-api-have-moved&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.4tfoNl9p9fvcs2kRf3FB&amp;utm_medium=newspage" target="_blank" rel="noopener">cs50.readthedocs.io/api/dining</a> for its new home. Screenshot below!</p> <p><img src="https://storage.noticeable.io/projects/G29QS3M0aRz4dY8JYHrr/publications/4tfoNl9p9fvcs2kRf3FB/01h55ta3gs4d5tbc3w53av6zm5-image.png" alt="Screen Shot 2020-06-03 at 8.49.56 PM.png"></p> David J. Malan[email protected]urn:noticeable:publications:yvMno9TcnjwjX1EnY8Sw2020-06-02T00:00:00.001Z2020-06-04T00:51:35.437ZTheme for CS50's Docs UpdatedThe theme for CS50's documentation at cs50.readthedocs.io has been updated to the latest version of sphinxrtdtheme. The UI is largely the same, though we've tweaked a few aesthetics. Most compelling, though, the latest version of the...<p>The theme for CS50’s documentation at <a href="https://cs50.readthedocs.io/?utm_source=noticeable&amp;utm_campaign=cs50.theme-for-cs-50-s-docs-updated&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.yvMno9TcnjwjX1EnY8Sw&amp;utm_medium=newspage" target="_blank" rel="noopener">cs50.readthedocs.io</a> has been updated to the latest version of <a href="https://sphinx-rtd-theme.readthedocs.io/?utm_source=noticeable&amp;utm_campaign=cs50.theme-for-cs-50-s-docs-updated&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.yvMno9TcnjwjX1EnY8Sw&amp;utm_medium=newspage" target="_blank" rel="noopener"><code>sphinx_rtd_theme</code></a>. The UI is largely the same, though we’ve tweaked a few aesthetics. Most compelling, though, the latest version of the theme has simplified the documentation’s <a href="https://github.com/cs50/cs50.readthedocs.io/tree/rel?utm_source=noticeable&amp;utm_campaign=cs50.theme-for-cs-50-s-docs-updated&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.yvMno9TcnjwjX1EnY8Sw&amp;utm_medium=newspage" target="_blank" rel="noopener"><code>conf.py</code></a> and obviated the need for most of the site’s <a href="https://github.com/cs50/cs50.readthedocs.io/blob/rel/_static/custom.css?utm_source=noticeable&amp;utm_campaign=cs50.theme-for-cs-50-s-docs-updated&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.yvMno9TcnjwjX1EnY8Sw&amp;utm_medium=newspage" target="_blank" rel="noopener">custom CSS</a>.</p> <p>We’ve also enabled an <strong>Edit on GitHub</strong> link atop each page to make it easier for folks to open a <a href="https://github.com/features/code-review/?utm_source=noticeable&amp;utm_campaign=cs50.theme-for-cs-50-s-docs-updated&amp;utm_content=publication+link&amp;utm_id=G29QS3M0aRz4dY8JYHrr.y7erYtgTxQBTyiQkmye8.yvMno9TcnjwjX1EnY8Sw&amp;utm_medium=newspage" target="_blank" rel="noopener">pull request</a> to propose corrections or improvements to the documentation.</p> <p>Screenshot below!</p> <p><img src="https://storage.noticeable.io/projects/G29QS3M0aRz4dY8JYHrr/publications/yvMno9TcnjwjX1EnY8Sw/01h55ta3gskp3qqrpxfj258kxq-image.png" alt="Screen Shot 2020-06-03 at 8.50.05 PM.png"></p> David J. Malan[email protected]