{"id":268,"date":"2024-02-28T10:21:03","date_gmt":"2024-02-28T10:21:03","guid":{"rendered":"https:\/\/blogs.imperial.ac.uk\/computing\/?p=268"},"modified":"2024-02-28T10:21:03","modified_gmt":"2024-02-28T10:21:03","slug":"second-year-projects-wacc-and-pintos","status":"publish","type":"post","link":"https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/","title":{"rendered":"Second-Year Projects \u2013 WACC and PintOS"},"content":{"rendered":"<p>Hi, I\u2019m Hamish; I\u2019m from Watford, UK, and I\u2019m in the second year of Computing. In my free time I enjoy studying foreign languages, playing water polo and doing Competitive Programming. This year I\u2019m behind Imperial CyberSoc and CTF Team. Let\u2019s connect on\u00a0<a href=\"https:\/\/www.linkedin.com\/in\/hamish-starling-147859235\/\">LinkedIn<\/a>!<img loading=\"lazy\" decoding=\"async\" width=\"167\" height=\"205\" class=\"alignright wp-image-256 size-full\" src=\"https:\/\/blogs.imperial.ac.uk\/computing\/files\/2023\/11\/Hamish-photo.png\" alt=\"Hamish photo\" \/><\/p>\n<hr \/>\n<p><span class=\"TextRun SCXW31783712 BCX0\" lang=\"EN-GB\" xml:lang=\"EN-GB\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW31783712 BCX0\">Amongst <\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">c<\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">omputing students there is a <\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">definite <\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">consensus that the <\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">second-year<\/span><span class=\"NormalTextRun SCXW31783712 BCX0\"> projects of WACC (writing a compiler from scratch) and <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW31783712 BCX0\">PintOS<\/span><span class=\"NormalTextRun SCXW31783712 BCX0\"> (<\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">adding features to a barebones OS in C<\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">) <\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">are<\/span> <span class=\"NormalTextRun SCXW31783712 BCX0\">among the most formative experiences of the degree, <\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">though <\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">we haven\u2019t had a blog post on them<\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">, so<\/span><span class=\"NormalTextRun SCXW31783712 BCX0\"> I <\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">want to <\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">give a<\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">n <\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">overview of<\/span><span class=\"NormalTextRun SCXW31783712 BCX0\"> this term <\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">and last, and <\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">what I\u2019ve learned (<\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">incredibly hard <\/span><span class=\"NormalTextRun SCXW31783712 BCX0\">to sum up in only a few hundred words!)<\/span><\/span><span class=\"EOP SCXW31783712 BCX0\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><!--more--><\/p>\n<h2><span data-contrast=\"none\">PintOS<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">\u201cYou don\u2019t understand concurrency until you do PintOS\u201d \u2013 Imperial Proverb!<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:2,&quot;335551620&quot;:2,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">PintOS, modified from a Stanford lab of the same name, comprises an individual \u201cTask 0\u201d \u2013 implementing an alarm clock feature to get familiar with interrupts and the codebase \u2013 followed by 3 group tasks in teams of 4: adding a BSD scheduler, user programs with system calls, and virtual memory.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Before PintOS, I knew what an OS was to some degree \u2013 software running directly on the computer mediating hardware access for programs that users want to run. This sounds simple enough, but once I realised I didn\u2019t know what a syscall was, or even really understand race conditions, I noted there was a lot to learn.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">PintOS taught us how to design a complex system and consider potential concurrency bugs from various perspectives, and gave me confidence that, with some iteration, I can write code to solve problems that seem incomprehensible to begin with. I often refer to it when wondering how my day-to-day code interacts with the OS, which, in making good programming choices, is invaluable.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<figure id=\"attachment_270\" aria-describedby=\"caption-attachment-270\" style=\"width: 862px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"862\" height=\"574\" class=\"size-full wp-image-270\" src=\"https:\/\/blogs.imperial.ac.uk\/computing\/files\/2024\/02\/Image-of-monitor-1.jpg\" alt=\"Image of monitor showing code\" \/><figcaption id=\"caption-attachment-270\" class=\"wp-caption-text\">[Debug output from PintOS task 3, virtual memory. No memory was leaked in the making of this image\u2026]<\/figcaption><\/figure>\n<h2><span data-contrast=\"none\">WACC<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">In contrast, the WACC lab is focused around writing high-quality software from scratch (rather than adding to an existing codebase). Students create a compiler for a simplified C-like language (to x86-64, Arm32 or Arm64), with a toolstack of their choice, testing it thoroughly with unit and integration tests via CI.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Most groups use Scala, and the state-of-the-art Parsley library written by a world expert in parser combinators, and one of the teaching fellows in charge of the project! As a result, the whole frontend milestone provides an opportunity to develop an understanding of parser combinators and Scala, new to most groups.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Currently, we\u2019re working on the backend milestone, where the program\u2019s parsed AST is converted to assembly. Smart intermediate representation choices are crucial, which certainly develops design skills.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">The project will be capped off by the extensions, where groups can take the compiler as far as they wish, implementing alternative backends, OOP features, a runtime system and garbage collection or even WACC in WACC! This allows each member of the group to focus on the part of the compiler that interests them and develop a deeper understanding of it.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<figure id=\"attachment_271\" aria-describedby=\"caption-attachment-271\" style=\"width: 752px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"752\" height=\"423\" class=\"size-full wp-image-271\" src=\"https:\/\/blogs.imperial.ac.uk\/computing\/files\/2024\/02\/Screenshot-2.png\" alt=\"Screenshot of computer screen\" \/><figcaption id=\"caption-attachment-271\" class=\"wp-caption-text\">[CI Pipelines on our WACC project with mixed success\u2026]<\/figcaption><\/figure>\n<p><span data-contrast=\"auto\">In conclusion PintOS and WACC live up to their reputations of being simultaneously challenging and rewarding. Since they take place during regular term, with deadlines often coinciding with other courseworks, and a full schedule of lectures to attend concurrently, they certainly foster organisation skills. They also serve as points of reference which our we can think back to if unsure about how to approach a problem, technically or in terms of design.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">If, reading this, you are considering applying to Imperial, take the projects as a strong motivation to do so, and if you are a current student, I\u2019m sure you\u2019ll share my gratitude to Drs Mark and Jamie and the team behind the labs for continually iterating them to be the most educational they can be!<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hi, I\u2019m Hamish; I\u2019m from Watford, UK, and I\u2019m in the second year of Computing. In my free time I enjoy studying foreign languages, playing water polo and doing Competitive Programming. This year I\u2019m behind Imperial CyberSoc and CTF Team. Let\u2019s connect on\u00a0LinkedIn! Amongst computing students there is a definite consensus that the second-year projects [&hellip;]<\/p>\n","protected":false},"author":1399,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48173],"tags":[],"class_list":["post-268","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Second-Year Projects \u2013 WACC and PintOS - Imperial Computing<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Second-Year Projects \u2013 WACC and PintOS - Imperial Computing\" \/>\n<meta property=\"og:description\" content=\"Hi, I\u2019m Hamish; I\u2019m from Watford, UK, and I\u2019m in the second year of Computing. In my free time I enjoy studying foreign languages, playing water polo and doing Competitive Programming. This year I\u2019m behind Imperial CyberSoc and CTF Team. Let\u2019s connect on\u00a0LinkedIn! Amongst computing students there is a definite consensus that the second-year projects [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/\" \/>\n<meta property=\"og:site_name\" content=\"Imperial Computing\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-28T10:21:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.imperial.ac.uk\/computing\/files\/2023\/11\/Hamish-photo.png\" \/>\n<meta name=\"author\" content=\"Blog Admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Blog Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/2024\\\/02\\\/28\\\/second-year-projects-wacc-and-pintos\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/2024\\\/02\\\/28\\\/second-year-projects-wacc-and-pintos\\\/\"},\"author\":{\"name\":\"Blog Admin\",\"@id\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/#\\\/schema\\\/person\\\/15503306d82b14d1cf6d846a33bce56c\"},\"headline\":\"Second-Year Projects \u2013 WACC and PintOS\",\"datePublished\":\"2024-02-28T10:21:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/2024\\\/02\\\/28\\\/second-year-projects-wacc-and-pintos\\\/\"},\"wordCount\":672,\"image\":{\"@id\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/2024\\\/02\\\/28\\\/second-year-projects-wacc-and-pintos\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/files\\\/2023\\\/11\\\/Hamish-photo.png\",\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/2024\\\/02\\\/28\\\/second-year-projects-wacc-and-pintos\\\/\",\"url\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/2024\\\/02\\\/28\\\/second-year-projects-wacc-and-pintos\\\/\",\"name\":\"Second-Year Projects \u2013 WACC and PintOS - Imperial Computing\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/2024\\\/02\\\/28\\\/second-year-projects-wacc-and-pintos\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/2024\\\/02\\\/28\\\/second-year-projects-wacc-and-pintos\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/files\\\/2023\\\/11\\\/Hamish-photo.png\",\"datePublished\":\"2024-02-28T10:21:03+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/#\\\/schema\\\/person\\\/15503306d82b14d1cf6d846a33bce56c\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/2024\\\/02\\\/28\\\/second-year-projects-wacc-and-pintos\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/2024\\\/02\\\/28\\\/second-year-projects-wacc-and-pintos\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/2024\\\/02\\\/28\\\/second-year-projects-wacc-and-pintos\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/files\\\/2023\\\/11\\\/Hamish-photo.png\",\"contentUrl\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/files\\\/2023\\\/11\\\/Hamish-photo.png\",\"width\":167,\"height\":205,\"caption\":\"Hamish photo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/2024\\\/02\\\/28\\\/second-year-projects-wacc-and-pintos\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Second-Year Projects \u2013 WACC and PintOS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/#website\",\"url\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/\",\"name\":\"Imperial Computing\",\"description\":\"Imperial Computing\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/#\\\/schema\\\/person\\\/15503306d82b14d1cf6d846a33bce56c\",\"name\":\"Blog Admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4c32929fd2f8b5a45c39e0705971d10f1af53bd925457f72e7409551ee48b06a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4c32929fd2f8b5a45c39e0705971d10f1af53bd925457f72e7409551ee48b06a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4c32929fd2f8b5a45c39e0705971d10f1af53bd925457f72e7409551ee48b06a?s=96&d=mm&r=g\",\"caption\":\"Blog Admin\"},\"url\":\"https:\\\/\\\/blogs.imperial.ac.uk\\\/computing\\\/author\\\/aidle\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Second-Year Projects \u2013 WACC and PintOS - Imperial Computing","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/","og_locale":"en_GB","og_type":"article","og_title":"Second-Year Projects \u2013 WACC and PintOS - Imperial Computing","og_description":"Hi, I\u2019m Hamish; I\u2019m from Watford, UK, and I\u2019m in the second year of Computing. In my free time I enjoy studying foreign languages, playing water polo and doing Competitive Programming. This year I\u2019m behind Imperial CyberSoc and CTF Team. Let\u2019s connect on\u00a0LinkedIn! Amongst computing students there is a definite consensus that the second-year projects [&hellip;]","og_url":"https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/","og_site_name":"Imperial Computing","article_published_time":"2024-02-28T10:21:03+00:00","og_image":[{"url":"https:\/\/blogs.imperial.ac.uk\/computing\/files\/2023\/11\/Hamish-photo.png","type":"","width":"","height":""}],"author":"Blog Admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Blog Admin","Estimated reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/#article","isPartOf":{"@id":"https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/"},"author":{"name":"Blog Admin","@id":"https:\/\/blogs.imperial.ac.uk\/computing\/#\/schema\/person\/15503306d82b14d1cf6d846a33bce56c"},"headline":"Second-Year Projects \u2013 WACC and PintOS","datePublished":"2024-02-28T10:21:03+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/"},"wordCount":672,"image":{"@id":"https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.imperial.ac.uk\/computing\/files\/2023\/11\/Hamish-photo.png","inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/","url":"https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/","name":"Second-Year Projects \u2013 WACC and PintOS - Imperial Computing","isPartOf":{"@id":"https:\/\/blogs.imperial.ac.uk\/computing\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/#primaryimage"},"image":{"@id":"https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.imperial.ac.uk\/computing\/files\/2023\/11\/Hamish-photo.png","datePublished":"2024-02-28T10:21:03+00:00","author":{"@id":"https:\/\/blogs.imperial.ac.uk\/computing\/#\/schema\/person\/15503306d82b14d1cf6d846a33bce56c"},"breadcrumb":{"@id":"https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/#primaryimage","url":"https:\/\/blogs.imperial.ac.uk\/computing\/files\/2023\/11\/Hamish-photo.png","contentUrl":"https:\/\/blogs.imperial.ac.uk\/computing\/files\/2023\/11\/Hamish-photo.png","width":167,"height":205,"caption":"Hamish photo"},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.imperial.ac.uk\/computing\/2024\/02\/28\/second-year-projects-wacc-and-pintos\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blogs.imperial.ac.uk\/computing\/"},{"@type":"ListItem","position":2,"name":"Second-Year Projects \u2013 WACC and PintOS"}]},{"@type":"WebSite","@id":"https:\/\/blogs.imperial.ac.uk\/computing\/#website","url":"https:\/\/blogs.imperial.ac.uk\/computing\/","name":"Imperial Computing","description":"Imperial Computing","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.imperial.ac.uk\/computing\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/blogs.imperial.ac.uk\/computing\/#\/schema\/person\/15503306d82b14d1cf6d846a33bce56c","name":"Blog Admin","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/4c32929fd2f8b5a45c39e0705971d10f1af53bd925457f72e7409551ee48b06a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4c32929fd2f8b5a45c39e0705971d10f1af53bd925457f72e7409551ee48b06a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4c32929fd2f8b5a45c39e0705971d10f1af53bd925457f72e7409551ee48b06a?s=96&d=mm&r=g","caption":"Blog Admin"},"url":"https:\/\/blogs.imperial.ac.uk\/computing\/author\/aidle\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.imperial.ac.uk\/computing\/wp-json\/wp\/v2\/posts\/268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.imperial.ac.uk\/computing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.imperial.ac.uk\/computing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.imperial.ac.uk\/computing\/wp-json\/wp\/v2\/users\/1399"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.imperial.ac.uk\/computing\/wp-json\/wp\/v2\/comments?post=268"}],"version-history":[{"count":2,"href":"https:\/\/blogs.imperial.ac.uk\/computing\/wp-json\/wp\/v2\/posts\/268\/revisions"}],"predecessor-version":[{"id":272,"href":"https:\/\/blogs.imperial.ac.uk\/computing\/wp-json\/wp\/v2\/posts\/268\/revisions\/272"}],"wp:attachment":[{"href":"https:\/\/blogs.imperial.ac.uk\/computing\/wp-json\/wp\/v2\/media?parent=268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.imperial.ac.uk\/computing\/wp-json\/wp\/v2\/categories?post=268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.imperial.ac.uk\/computing\/wp-json\/wp\/v2\/tags?post=268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}