{"id":13482033,"url":"https://github.com/uva-cs/pdr","last_synced_at":"2025-03-27T12:32:14.187Z","repository":{"id":40499916,"uuid":"145071182","full_name":"uva-cs/pdr","owner":"uva-cs","description":"A repo for a Program and Data Representation university-level course","archived":false,"fork":true,"pushed_at":"2022-12-05T16:45:27.000Z","size":66236,"stargazers_count":91,"open_issues_count":24,"forks_count":228,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-10-30T15:51:18.192Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"aaronbloomfield/pdr","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/uva-cs.png","metadata":{"files":{"readme":"readme-old.html","changelog":null,"contributing":null,"funding":null,"license":"license.html","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-08-17T04:19:54.000Z","updated_at":"2024-08-31T16:57:27.000Z","dependencies_parsed_at":"2023-01-23T10:44:46.321Z","dependency_job_id":null,"html_url":"https://github.com/uva-cs/pdr","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uva-cs%2Fpdr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uva-cs%2Fpdr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uva-cs%2Fpdr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uva-cs%2Fpdr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uva-cs","download_url":"https://codeload.github.com/uva-cs/pdr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245845221,"owners_count":20681869,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T17:00:58.395Z","updated_at":"2025-03-27T12:32:10.936Z","avatar_url":"https://github.com/uva-cs.png","language":"HTML","readme":"\u003c!DOCTYPE html\u003e\n\u003chtml xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"\" xml:lang=\"\"\u003e\n\u003chead\u003e\n  \u003cmeta charset=\"utf-8\" /\u003e\n  \u003cmeta name=\"generator\" content=\"pandoc\" /\u003e\n  \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\" /\u003e\n  \u003ctitle\u003eProgram and Data Representation\u003c/title\u003e\n  \u003cstyle\u003e\n    code{white-space: pre-wrap;}\n    span.smallcaps{font-variant: small-caps;}\n    span.underline{text-decoration: underline;}\n    div.column{display: inline-block; vertical-align: top; width: 50%;}\n    div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}\n    ul.task-list{list-style: none;}\n    .display.math{display: block; text-align: center; margin: 0.5rem auto;}\n  \u003c/style\u003e\n  \u003clink rel=\"stylesheet\" href=\"markdown.css\" /\u003e\n  \u003c!--[if lt IE 9]\u003e\n    \u003cscript src=\"//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js\"\u003e\u003c/script\u003e\n  \u003c![endif]--\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n\u003ch1 id=\"program-and-data-representation\"\u003eProgram and Data\nRepresentation\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"#introduction\"\u003eIntroduction\u003c/a\u003e | \u003ca\nhref=\"#contents\"\u003eRepository contents\u003c/a\u003e | \u003ca\nhref=\"#contributing\"\u003eContributing to this repository\u003c/a\u003e | \u003ca\nhref=\"#description\"\u003eCourse description\u003c/a\u003e | \u003ca\nhref=\"#markdown\"\u003eMarkdown\u003c/a\u003e | \u003ca href=\"#sourcecode\"\u003eSource code\u003c/a\u003e |\n\u003ca href=\"#canvasnotes\"\u003eCanvas notes\u003c/a\u003e | \u003ca\nhref=\"#license\"\u003eLicense\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"introduction\"\u003e\u003ca name=\"introduction\"\u003e\u003c/a\u003eIntroduction\u003c/h2\u003e\n\u003cp\u003eThis repository contains the materials for the course entitled “CS\n2150: Program and Data Representation” in the \u003ca\nhref=\"http://www.cs.virginia.edu\"\u003eComputer Science Department\u003c/a\u003e at the\n\u003ca href=\"http://www.virginia.edu\"\u003eUniversity of Virginia\u003c/a\u003e. It\ncontains all of the slides, labs, exams, etc., used throughout the\ncourse. The course description is \u003ca href=\"#description\"\u003ebelow\u003c/a\u003e. The\ngithub repository for this course is at \u003ca\nhref=\"https://github.com/markfloryan/pdr\"\u003ehttps://github.com/markfloryan/pdr\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eStudents \u003cem\u003ecurrently\u003c/em\u003e in the course should view the \u003ca\nhref=\"uva/index.html\"\u003euva/index.html\u003c/a\u003e (\u003ca href=\"uva/index.md\"\u003emd\u003c/a\u003e)\nfile in the \u003cstrong\u003ecloned\u003c/strong\u003e repository (i.e., don’t try to view\nit on github.com); current students may also want to view the \u003ca\nhref=\"uva/daily-announcements.html#/\"\u003edaily announcements\u003c/a\u003e. Note that\nmany of the course materials are modified right before they are needed –\nfor example, this repository will be updated right before the semester\nstarts.\u003c/p\u003e\n\u003cp\u003eStudents who were previously in the course may want to view the\ncurrent version, or you can view the version from your semester. All\nsemester versions are tagged with an end-of-semester tag of the form\n“year-semester”. For example, the spring 2014 semester was tagged as\n\u003ccode\u003e2014-spring\u003c/code\u003e. To obtain a specific tag, you can enter\n\u003ccode\u003egit checkout tags/2014-spring\u003c/code\u003e in an already cloned\nrepository.\u003c/p\u003e\n\u003cp\u003eThe primary author of this repository is \u003ca\nhref=\"http://www.cs.virginia.edu/~mrf8t\"\u003eMark Floryan\u003c/a\u003e (\u003ca\nhref=\"mailto:mrf8t@cs.virginia.edu\"\u003emrf8t@cs.virginia.edu\u003c/a\u003e). This\nrepository originally developed (and has been adapted from) a similar\none by \u003ca href=\"http://www.cs.virginia.edu/~asb\"\u003eAaron Bloomfield\u003c/a\u003e\n(\u003ca href=\"mailto:aaron@virginia.edu\"\u003eaaron@virginia.edu\u003c/a\u003e. Many\nstudents and faculty have worked on this course material over the\nyears.\u003c/p\u003e\n\u003ch2 id=\"repository-contents\"\u003e\u003ca name=\"contents\"\u003e\u003c/a\u003eRepository\nContents\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote that the links below will not work correctly if you are\nviewing this online at github.com – you will need to clone (download)\nthe repository first\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"book/index.html\"\u003ebook\u003c/a\u003e (\u003ca href=\"book/index.md\"\u003emd\u003c/a\u003e):\nthe beginnings of a textbook to be used for this course. It is written\nusing LaTeX.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"docs/index.html\"\u003edocs\u003c/a\u003e (\u003ca href=\"docs/index.md\"\u003emd\u003c/a\u003e):\na series of useful documents that are not labs or tutorials.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"uva/index.html\"\u003euva\u003c/a\u003e (\u003ca href=\"uva/index.md\"\u003emd\u003c/a\u003e):\nthe materials that are specific to CS 2150 as taught at the University\nof Virginia, such as daily announcements, due dates, etc.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"exams/index.html\"\u003eexams\u003c/a\u003e (\u003ca\nhref=\"exams/index.md\"\u003emd\u003c/a\u003e): past exams for the course; there are two\nmidterms and a final for each semester.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"ibcm/ibcm.html\"\u003eibcm\u003c/a\u003e (\u003ca href=\"ibcm/ibcm.md\"\u003emd\u003c/a\u003e):\nthe files necessary for the IBCM module on machine language, which is\ntaught about two thirds of the way into the course.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"labs/index.html\"\u003elabs\u003c/a\u003e (\u003ca href=\"labs/index.md\"\u003emd\u003c/a\u003e):\nthe labs are the main assignments in the course, and each lab is split\ninto pre-lab, in-lab, and post-lab parts. There are 11 full labs, with a\npartial 12th lab that is an optional component of the course. The labs\nare written using \u003ca\nhref=\"http://daringfireball.net/projects/markdown/\"\u003emarkdown\u003c/a\u003e, and\nthe rendered HTML version of each lab is also committed to this\nrepository.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"slides/index.html\"\u003eslides\u003c/a\u003e (\u003ca\nhref=\"slides/index.md\"\u003emd\u003c/a\u003e): Contains the slides used in the course.\nThe slides use \u003ca\nhref=\"https://github.com/hakimel/reveal.js/\"\u003ereveal.js\u003c/a\u003e, an HTML\npresentation framework.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"tutorials/index.html\"\u003etutorials\u003c/a\u003e (\u003ca\nhref=\"tutorials/index.md\"\u003emd\u003c/a\u003e): the tutorials that are used as part\nof the lab assignments, these are primarily Linux tutorials.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"utils/index.html\"\u003eutils\u003c/a\u003e (\u003ca\nhref=\"utils/index.md\"\u003emd\u003c/a\u003e): various utilities for this\nrepository\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\nid=\"contributing-to-this-repository\"\u003e\u003ca name=\"contributing\"\u003e\u003c/a\u003eContributing\nto this Repository\u003c/h2\u003e\n\u003cp\u003eUpdates to the repository are restricted to approved individuals\nonly, to prevent anybody from messing with the slides right before a\nlecture. However, others can still contribute to this repository – to do\nso, take the following steps:\u003c/p\u003e\n\u003col type=\"1\"\u003e\n\u003cli\u003eCreate a github account, if you do not have one\u003c/li\u003e\n\u003cli\u003eFork this repository: you can click on the “Fork” link in the upper\nright, or just click \u003ca\nhref=\"https://github.com/markfloryan/pdr/fork\"\u003ehere\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClone your forked repository on to your local machine\u003c/li\u003e\n\u003cli\u003eMake any changes you want to your forked version, then commit and\npush your changes back to your forked repository\u003c/li\u003e\n\u003cli\u003eCreate a pull request, following the instructions \u003ca\nhref=\"https://help.github.com/articles/creating-a-pull-request\"\u003ehere\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eAt that point, I will receive a notice that a change has been\nsubmitted, and I’ll look at it and hopefully accept it into the main\nrepository.\u003c/p\u003e\n\u003cp\u003eWhen you want to bring in the updates from the main pdr github\nrepository into your forked repository, you will need to follow the\ninstructions \u003ca\nhref=\"https://help.github.com/articles/syncing-a-fork\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"course-description\"\u003e\u003ca name=\"description\"\u003e\u003c/a\u003eCourse\nDescription\u003c/h2\u003e\n\u003cp\u003eThis course is a second-year course for computer science majors. It\nis the primary data structures course in the \u003ca\nhref=\"http://www.virginia.edu\"\u003eUniversity of Virginia\u003c/a\u003e’s \u003ca\nhref=\"http://www.cs.virginia.edu\"\u003ecomputer science\u003c/a\u003e curriculum.\nUnlike many other data structure courses at other institutions, it is\nintended as the \u003cem\u003ethird\u003c/em\u003e course in sequence, meaning that students\nare expected to have taken two semesters of Java (or equivalent,\nalthough some of the examples are specifically from Java). The course\nfocuses on how programs and data are represented from the high level\ndown to the low level. For programs, we examine (from high to low):\nabstract data types, Java code, C++ code, C code, assembly (x86) code,\nand a customized machine language. For data, we examine (also from high\nto low): abstract data types, objects, primitive types, and how numbers\nare encoded (both floats (IEEE 754) and integers (two’s complement)).\nAbout two-thirds of this course is programming using C++. The remainder\nof this course uses other languages, including (in decreasing order):\nx86 assembly, IBCM (a machine language), C, Objective C, and shell\nscripting.\u003c/p\u003e\n\u003cp\u003eThe \u003ca href=\"http://www.abet.org\"\u003eABET\u003c/a\u003e course objects are as\nfollows:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUnderstand program representation from the high-level programming\nlanguage perspective down to the underlying machine level\nrepresentation, including: number representation, operations,\nconditionals, and control structures\u003c/li\u003e\n\u003cli\u003eBe able to implement basic and advanced abstract data types in C++\nincluding: linked lists, stacks, queues, hash tables, trees, and\ngraphs\u003c/li\u003e\n\u003cli\u003eBe able to evaluate asymptotic time and space complexity analysis of\nprograms and data structure implementations using Big-O, Big-Omega, and\nBig-Theta notation and assess the suitability of a data structure for a\nparticular problem\u003c/li\u003e\n\u003cli\u003eUnderstand the basic program execution model and the underlying\ncomputer hardware and software (fetch-execute cycle, memory hierarchy,\noperating system, compiler)\u003c/li\u003e\n\u003cli\u003eBe able to implement basic program control and data structures in an\nassembly language (loops, conditionals, subroutines and parameter\npassing modes, arrays)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"markdown\"\u003e\u003ca name=\"markdown\"\u003e\u003c/a\u003eMarkdown\u003c/h2\u003e\n\u003cp\u003eThe majority of the content in this repository was created using \u003ca\nhref=\"http://daringfireball.net/projects/markdown/\"\u003eMarkdown\u003c/a\u003e.\nUnfortunately, the only standardized Markdown is very old (2004), and\nhas limited support for many HTML features, such as tables. In the past,\nthere were custom utilities (which can still be found in the \u003ca\nhref=\"utils/index.html\"\u003eutils\u003c/a\u003e (\u003ca href=\"tutorials/index.md\"\u003emd\u003c/a\u003e)\ndirectory) were used. However, \u003ca\nhref=\"http://johnmacfarlane.net/pandoc/\"\u003epandoc\u003c/a\u003e is now used (which\nis installed via the “pandoc” package on Ubuntu). Typing\n\u003ccode\u003emake\u003c/code\u003e in the root repo directory will call pandoc on all the\nmarkdown files.\u003c/p\u003e\n\u003cp\u003eFor all the Markdown files in this repository, both the original\n(.md) file and the HTML version (.html) are added to the repository, so\nthat people who do not have Markdown installed can still view the\ncontents of this repository.\u003c/p\u003e\n\u003cp\u003eNote that Github supports an enhanced version of Markdown, called \u003ca\nhref=\"https://help.github.com/articles/github-flavored-markdown\"\u003eGithub\nFlavored Markdown\u003c/a\u003e, or GFM. This mostly pertains to this README file.\nIn an effort to ensure compatibility with other Markdown programs (such\nas the one described here and what reveal.js uses), GFM specific\nfeatures are generally avoided. One example is the use of anchors in\nthis document – the HTML tags are included instead of using GFM’s\nversion.\u003c/p\u003e\n\u003ch2 id=\"source-code\"\u003e\u003ca name=\"sourcecode\"\u003e\u003c/a\u003eSource code\u003c/h2\u003e\n\u003cp\u003eAll source code is formatted via \u003ca\nhref=\"http://astyle.sourceforge.net/\"\u003eastyle\u003c/a\u003e and then highlighted\nvia \u003ca\nhref=\"http://www.gnu.org/software/src-highlite/source-highlight.html\"\u003esource-highlight\u003c/a\u003e.\nBoth the original file (foo.cpp) and the highlighted version\n(foo.cpp.html) are included in the repository. All links to source code\nwill like to the .html, with a “(\u003ca href=\"README.md\"\u003esrc\u003c/a\u003e)” after it\nto link to the original source code.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eastyle options: \u003ccode\u003e-A2 -s4 -S\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003esource-highlight options: \u003ccode\u003e-d\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"canvas-notes\"\u003e\u003ca name=\"canvasnotes\"\u003e\u003c/a\u003eCanvas notes\u003c/h2\u003e\n\u003cp\u003eSome of the slides allow pen-based markup of the slides. To add a\ncanvas to a slide (to allow drawing with a mouse or a stylus), you must\ndo a few things:\u003c/p\u003e\n\u003col type=\"1\"\u003e\n\u003cli\u003e\u003cp\u003eThe slide can NOT be Markdown, it must be all pure HTML\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eInclude the js/canvas.js and css/dhtmlwindow.js scripts, as well\nas the dhtmlwindow.css CSS file (the two dhtmlwindow.* files are for the\ncalibration feature):\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003e\u0026lt;script type=\u0026quot;text/javascript\u0026quot; src=\u0026quot;js/dhtmlwindow.js\u0026quot;\u0026gt;\u0026lt;/script\u0026gt;\n\u0026lt;script type=\u0026quot;text/javascript\u0026quot; src=\u0026quot;js/canvas.js\u0026quot;\u0026gt;\u0026lt;/script\u0026gt;\n\u0026lt;link rel=\u0026quot;stylesheet\u0026quot; href=\u0026quot;css/dhtmlwindow.css\u0026quot; type=\u0026quot;text/css\u0026quot;\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\u003col start=\"3\" type=\"1\"\u003e\n\u003cli\u003e\u003cp\u003eAdd an \u003ccode\u003eonload=\"canvasinit()\"\u003c/code\u003e to the\n\u003ccode\u003e\u0026lt;body\u0026gt;\u003c/code\u003e tag: \u003ccode\u003e\u0026lt;body\nonload=\"canvasinit()\"\u0026gt;\u003c/code\u003e\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eAdd the following immediately after the \u003ccode\u003e\u0026lt;body\u0026gt;\u003c/code\u003e\ntag (this is for the calibration feature):\u003c/p\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003e\u0026lt;div id=\u0026quot;dhtmlwindowholder\u0026quot;\u0026gt;\u0026lt;span style=\u0026quot;display:none\u0026quot;\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/div\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\u003col start=\"5\" type=\"1\"\u003e\n\u003cli\u003eAdd the following code at the end of the .html file (just before the\nthree script tags):\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003e\u0026lt;div id=\u0026quot;calibratediv\u0026quot; style=\u0026quot;display:none\u0026quot;\u0026gt;\n  \u0026lt;div id=\u0026quot;calibratecanvasdiv\u0026quot;\u0026gt;\n    \u0026lt;canvas id=\u0026quot;calibratecanvas\u0026quot; width=\u0026quot;300\u0026quot; height=\u0026quot;300\u0026quot;\u0026gt;Your\n            browser does not support the canvas tag\u0026lt;/canvas\u0026gt;\n   \u0026lt;/div\u0026gt;\n   \u0026lt;p style=\u0026quot;text-align:center\u0026quot;\u0026gt;Click the center of the target\u0026lt;br\u0026gt;\u0026lt;a href=\u0026quot;#\u0026quot; \n       onClick=\u0026quot;calibratewin.close(); return false\u0026quot;\u0026gt;Close window\u0026lt;/a\u0026gt;\u0026lt;/p\u0026gt;\n\u0026lt;/div\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\u003col start=\"6\" type=\"1\"\u003e\n\u003cli\u003eThen, on each slide that you want a canvas on, you add the\nfollowing:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre\u003e\u003ccode\u003e\u0026lt;script type=\u0026quot;text/javascript\u0026quot;\u0026gt;insertCanvas();\u0026lt;/script\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eA few other notes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe canvas is larger than the slide itself, and the amount, in\nnumber of pixels, is the \u003ccode\u003ecanvas_border\u003c/code\u003e variable in the\ncanvas.js file\u003c/li\u003e\n\u003cli\u003eTo add colors, add them to the \u003ccode\u003ecolors\u003c/code\u003e array in the\ncanvas.js file; more color names can be found \u003ca\nhref=\"http://www.tutorialspoint.com/html5/html5_color_names.htm\"\u003ehere\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"license\"\u003e\u003ca name=\"license\"\u003e\u003c/a\u003eLicense\u003c/h2\u003e\n\u003cp\u003eThe material in this repository is released under a \u003ca\nhref=\"http://creativecommons.org/licenses/by-sa/4.0/\"\u003eCreative Commons\nAttribution-ShareAlike 4.0 International License\u003c/a\u003e (CC BY-SA).\u003c/p\u003e\n\u003cp\u003eCopyright (c) 2017-2018 by Mark Floryan Copyright (c) 2013-2017 by\nAaron Bloomfield.\u003c/p\u003e\n\u003cp\u003eSome parts of this repository are taken, with permission, from other\nsources. The full details are in the \u003ca href=\"LICENSE.html\"\u003eLicense\u003c/a\u003e\n(\u003ca href=\"LICENSE.md\"\u003emd\u003c/a\u003e) file. In particular, some parts of this\nrepository that were obtained elsewhere can not be used for commercial\npurposes.\u003c/p\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n","funding_links":[],"categories":["HTML"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuva-cs%2Fpdr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuva-cs%2Fpdr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuva-cs%2Fpdr/lists"}