{"id":2343,"date":"2026-08-02T07:37:40","date_gmt":"2026-08-02T10:37:40","guid":{"rendered":"https:\/\/cs.smu.ca\/~jiju\/?page_id=2343"},"modified":"2026-08-02T07:54:39","modified_gmt":"2026-08-02T10:54:39","slug":"csci-4471-computer-graphics-fall-2026","status":"publish","type":"page","link":"https:\/\/cs.smu.ca\/~jiju\/index.php\/teaching\/csci-4471-computer-graphics-fall-2026\/","title":{"rendered":"CSCI 4471: Computer Graphics (Fall 2026)"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\"><head><meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>CSCI 4471: Computer Graphics (Fall 2026) \u2014 GSC Lab at SMU<\/title><\/head><body>\n<!-- ============================================\n  CSCI 4471 (Fall 2026) course page \u2014 paste-ready for WordPress\n  1. Edit this course page in WP admin.\n  2. Code editor (\u22ee menu \u2192 Code editor), select all, delete.\n  3. Paste EVERYTHING below, wrapped as one HTML block:\n       [wp:html]  ...paste...  [\/wp:html]\n       (real markers: less-than bang dash dash  wp:html  dash dash greater-than)\n  4. Visual editor \u2192 Update.\n  If the theme prints the page title, delete the <h1> line.\n================================================================= -->\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=IBM+Plex+Mono:wght@400;500&#038;family=IBM+Plex+Sans:ital,wght@0,400;0,500;0,600;1,400&#038;family=Space+Grotesk:wght@500;600;700&#038;display=swap\" rel=\"stylesheet\">\n\n<style>\n.gsc-course{\n  --ink:#15202f; --body:#3d4a5c; --faint:#7b8798;\n  --paper:#fafbfc; --card:#ffffff; --line:#e3e8ee;\n  --link:#0f5f8f; --accent:#b0316e;\n  --teal:#0e7c86; --violet:#5a4fcf; --rust:#b3561d;\n  font-family:'IBM Plex Sans',-apple-system,'Segoe UI',sans-serif;\n  color:var(--body); background:var(--paper); line-height:1.62; font-size:17px; margin:0;\n}\n.gsc-course *{box-sizing:border-box;margin:0;padding:0}\n.gsc-course .wrap{max-width:1360px;margin:0 auto;padding:48px 24px 80px}\n\n\/* header + hero image *\/\n.gsc-course .eyebrow{\n  font-family:'IBM Plex Mono',monospace;font-size:.82rem;letter-spacing:.08em;\n  text-transform:uppercase;color:var(--accent);font-weight:500;margin-bottom:10px;\n}\n.gsc-course h1{\n  font-family:'Space Grotesk',sans-serif;font-weight:700;\n  font-size:clamp(1.9rem,4vw,2.6rem);letter-spacing:-.02em;color:var(--ink);\n  line-height:1.12;margin-bottom:22px;\n}\n.gsc-course .hero-img{border-radius:16px;overflow:hidden;border:1px solid var(--line);margin-bottom:10px}\n.gsc-course .hero-img img{display:block;width:100%!important;height:auto}\n.gsc-course .caption{font-size:.85rem;color:var(--faint);font-style:italic;margin-bottom:8px}\n\n\/* quick facts bar *\/\n.gsc-course .facts{\n  display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1px;\n  background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden;margin:26px 0 8px;\n}\n.gsc-course .facts div{background:var(--card);padding:16px 18px}\n.gsc-course .facts small{\n  font-family:'IBM Plex Mono',monospace;font-size:.66rem;letter-spacing:.07em;\n  text-transform:uppercase;color:var(--faint);display:block;margin-bottom:5px;\n}\n.gsc-course .facts b{font-family:'Space Grotesk',sans-serif;color:var(--ink);font-weight:600;font-size:.98rem;line-height:1.3;display:block}\n.gsc-course .facts a{color:var(--link);text-decoration:none}\n.gsc-course .facts a:hover{text-decoration:underline}\n\n\/* section headings *\/\n.gsc-course h2{\n  font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:1.55rem;\n  letter-spacing:-.01em;color:var(--ink);margin:52px 0 8px;\n  display:flex;align-items:baseline;gap:14px;\n}\n.gsc-course h2 small{\n  font-family:'IBM Plex Mono',monospace;font-size:.72rem;font-weight:400;\n  letter-spacing:.07em;text-transform:uppercase;color:var(--faint);\n}\n.gsc-course h2::after{content:\"\";flex:1;height:1px;background:var(--line);transform:translateY(-6px)}\n\n.gsc-course .prose{max-width:1000px}\n.gsc-course .prose p{margin-bottom:16px;font-size:1.05rem}\n.gsc-course .prose strong{color:var(--ink);font-weight:600}\n\n\/* outcomes grid *\/\n.gsc-course h3.sub{\n  font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:1.1rem;\n  color:var(--ink);margin:26px 0 14px;letter-spacing:-.01em;\n}\n.gsc-course .outcomes{\n  display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:10px;list-style:none;\n}\n.gsc-course .outcomes li{\n  background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 16px 14px 42px;\n  position:relative;font-size:.96rem;\n}\n.gsc-course .outcomes li::before{\n  content:\"\u203a\";position:absolute;left:16px;top:12px;color:var(--accent);font-weight:700;font-size:1.1rem;\n}\n\n\/* schedule timeline *\/\n.gsc-course .unit{margin-bottom:8px}\n.gsc-course .unit-h{\n  display:flex;align-items:center;gap:12px;margin:26px 0 12px;\n  font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:1.12rem;color:var(--ink);\n}\n.gsc-course .unit-h .dot{width:12px;height:12px;border-radius:3px;flex:0 0 auto}\n.gsc-course .unit:nth-of-type(1) .dot{background:var(--teal)}\n.gsc-course .unit:nth-of-type(2) .dot{background:var(--violet)}\n.gsc-course .unit:nth-of-type(3) .dot{background:var(--rust)}\n.gsc-course .unit:nth-of-type(4) .dot{background:var(--accent)}\n.gsc-course .sched{list-style:none;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:2px 22px}\n.gsc-course .sched li{\n  padding:12px 0;border-bottom:1px solid var(--line);\n  display:grid;grid-template-columns:92px minmax(0,1fr) auto;gap:18px;align-items:baseline;font-size:.97rem;\n}\n.gsc-course .sched li:last-child{border-bottom:none}\n.gsc-course .sched .d{font-family:'IBM Plex Mono',monospace;font-size:.8rem;color:var(--faint);white-space:nowrap}\n.gsc-course .sched .t{color:var(--ink)}\n.gsc-course .sched .a{\n  font-family:'IBM Plex Mono',monospace;font-size:.72rem;color:var(--accent);font-weight:500;\n  white-space:nowrap;text-align:right;\n}\n\n\/* gallery *\/\n.gsc-course .gallery{\n  display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:6px 0 24px;\n}\n.gsc-course .gallery img{\n  display:block;width:100%!important;height:150px;object-fit:cover;border-radius:10px;border:1px solid var(--line);\n}\n\n\/* recitation list *\/\n.gsc-course .recits{list-style:none;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:2px 22px}\n.gsc-course .recits li{padding:12px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:52px 1fr;gap:16px;align-items:baseline;font-size:.97rem}\n.gsc-course .recits li:last-child{border-bottom:none}\n.gsc-course .recits .n{font-family:'IBM Plex Mono',monospace;font-size:.78rem;color:var(--accent);font-weight:500}\n.gsc-course .recits .r{color:var(--ink)}\n.gsc-course .recits a{color:var(--link);text-decoration:none;border-bottom:1px solid #c9dbe7}\n.gsc-course .recits a:hover{border-bottom-color:var(--link)}\n\n\/* grading bars *\/\n.gsc-course .grades{display:grid;gap:14px;max-width:760px}\n.gsc-course .grade{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px 20px}\n.gsc-course .grade-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}\n.gsc-course .grade-top b{font-family:'Space Grotesk',sans-serif;font-weight:600;color:var(--ink);font-size:1.04rem}\n.gsc-course .grade-top .pct{font-family:'Space Grotesk',sans-serif;font-weight:700;color:var(--accent);font-size:1.15rem}\n.gsc-course .bar{height:8px;background:#eef2f5;border-radius:99px;overflow:hidden;margin-bottom:12px}\n.gsc-course .bar span{display:block;height:100%;background:var(--accent);border-radius:99px}\n.gsc-course .grade ul{list-style:none;margin:0}\n.gsc-course .grade li{padding:4px 0 4px 18px;position:relative;font-size:.9rem;color:var(--body)}\n.gsc-course .grade li::before{content:\"\u2013\";position:absolute;left:2px;color:var(--faint)}\n.gsc-course .grade a{color:var(--link)}\n\n.gsc-course .note{font-size:.9rem;color:var(--faint);max-width:900px;margin-top:16px;line-height:1.6}\n\n\/* textbooks *\/\n.gsc-course .books{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}\n.gsc-course .book{\n  display:grid;grid-template-columns:76px 1fr;gap:16px;align-items:start;\n  background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px;\n}\n.gsc-course .book.req{border-left:4px solid var(--accent)}\n.gsc-course .book img{width:76px!important;max-width:76px;height:auto;border-radius:5px;border:1px solid var(--line)}\n.gsc-course .book .tag{\n  font-family:'IBM Plex Mono',monospace;font-size:.64rem;letter-spacing:.06em;text-transform:uppercase;\n  font-weight:500;margin-bottom:5px;display:inline-block;\n}\n.gsc-course .book.req .tag{color:var(--accent)}\n.gsc-course .book .tag.ref{color:var(--faint)}\n.gsc-course .book b{font-family:'Space Grotesk',sans-serif;color:var(--ink);font-weight:600;font-size:.96rem;display:block;line-height:1.3;margin-bottom:4px}\n.gsc-course .book span{font-size:.85rem;color:var(--body);display:block;line-height:1.5}\n.gsc-course .book .isbn{font-family:'IBM Plex Mono',monospace;font-size:.72rem;color:var(--faint);margin-top:4px}\n\n.gsc-course .infocard a.eml{color:var(--link);text-decoration:none;border-bottom:1px dashed #c9dbe7;cursor:pointer}\n.gsc-course .infocard a.eml:hover{border-bottom-style:solid}\n\n@media (max-width:680px){\n  .gsc-course .sched li{grid-template-columns:76px 1fr;gap:10px}\n  .gsc-course .sched .a{grid-column:1 \/ -1;text-align:left}\n  .gsc-course .book{grid-template-columns:60px 1fr;gap:12px}\n  .gsc-course .book img{width:60px!important;max-width:60px}\n}\n.gsc-course a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}\n<\/style>\n\n<div class=\"gsc-course\">\n<div class=\"wrap\">\n\n<div class=\"eyebrow\">CSCI 4471 \/ 6671 \u00b7 Fall 2026 \u00b7 Saint Mary&#8217;s University<\/div>\n<h1>Computer Graphics<\/h1>\n\n<div class=\"hero-img\">\n  <img decoding=\"async\" src=\"https:\/\/cs.smu.ca\/~jiju\/wp-content\/uploads\/2023\/10\/final-1.png\" alt=\"Procedurally synthesized terrain rendered in the Computer Graphics course\" loading=\"lazy\">\n<\/div>\n<div class=\"caption\">Procedurally synthesized terrain. Image courtesy: Amr Ghoneim, Computer Graphics (Fall 2023).<\/div>\n\n<!-- quick facts -->\n<div class=\"facts\">\n  <div><small>Instructor<\/small><b>Dr. Jiju Poovvancheri<\/b><\/div>\n  <div><small>Lectures<\/small><b>Tue &amp; Thu \u00b7 10:00\u201311:15 \u00b7 MM 301<\/b><\/div>\n  <div><small>Recitation<\/small><b>Tue \u00b7 1:00\u20132:15 \u00b7 MM 301<\/b><\/div>\n  <div><small>Office hours (MN130)<\/small><b>Wed 10\u201312 \u00b7 Thu 2\u20134 \u00b7 Fri 11\u20131<\/b><\/div>\n  <div><small>Course page<\/small><b>MS Teams &amp; GitHub<br><span style=\"font-family:'IBM Plex Sans';font-weight:400;font-size:.8rem;color:var(--faint)\">links on the course Teams<\/span><\/b><\/div>\n<\/div>\n\n<!-- ==================== DESCRIPTION ==================== -->\n<h2 id=\"about\">Course description<\/h2>\n<div class=\"prose\">\n  <p>\n    An introduction to <strong>computer graphics<\/strong> with a focus on rendering and modelling. We cover\n    the core mathematics \u2014 2D and 3D transformations \u2014 and the two great rendering paradigms,\n    <strong>ray tracing<\/strong> and <strong>rasterization<\/strong>, along with the geometric modelling of\n    curves and surfaces. We look at how these components map onto modern graphics processors and their\n    programming APIs, and we close with recent <strong>learning-based scene representations<\/strong>,\n    including Neural Radiance Fields (NeRF) and 3D Gaussian Splatting. Throughout, students build working\n    demos in <strong>C++ and OpenGL (GLSL or equivalent)<\/strong>.\n  <\/p>\n<\/div>\n\n<h3 class=\"sub\">By the end of the course, you will be able to<\/h3>\n<ul class=\"outcomes\">\n  <li>Apply the fundamental mathematics of image synthesis<\/li>\n  <li>Implement a basic ray-tracing renderer<\/li>\n  <li>Implement a rasterization rendering pipeline<\/li>\n  <li>Explain the core functionality of the OpenGL API<\/li>\n  <li>Write graphics programs using shader programming<\/li>\n  <li>Model geometry with B\u00e9zier curves, splines, and NURBS<\/li>\n  <li>Implement data structures for polygonal meshes<\/li>\n  <li>Design and implement procedural synthesis methods<\/li>\n  <li>Explain neural rendering (NeRF, 3D Gaussian Splatting)<\/li>\n<\/ul>\n\n<!-- ==================== SCHEDULE ==================== -->\n<h2 id=\"schedule\">Tentative schedule <small>Fall 2026<\/small><\/h2>\n\n<div class=\"unit\">\n  <div class=\"unit-h\"><span class=\"dot\"><\/span>Ray tracing<\/div>\n  <ul class=\"sched\">\n    <li><span class=\"d\">Sep 10<\/span><span class=\"t\">Introduction to the course<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Sep 15<\/span><span class=\"t\">Math review<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Sep 17<\/span><span class=\"t\">Ray tracing \u2014 basics<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Sep 18<\/span><span class=\"t\">Ray tracing \u2014 intersections<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Sep 22<\/span><span class=\"t\">Blinn\u2013Phong illumination model<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Sep 24<\/span><span class=\"t\">Texture mapping<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Sep 29<\/span><span class=\"t\">Antialiasing<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Oct 1<\/span><span class=\"t\">Acceleration data structures<\/span><span class=\"a\">A1 out<\/span><\/li>\n  <\/ul>\n<\/div>\n\n<div class=\"unit\">\n  <div class=\"unit-h\"><span class=\"dot\"><\/span>Rasterization<\/div>\n  <ul class=\"sched\">\n    <li><span class=\"d\">Oct 6<\/span><span class=\"t\">Introduction to rasterization<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Oct 8<\/span><span class=\"t\">2D &amp; 3D transformations<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Oct 13<\/span><span class=\"t\">Quiz 1<\/span><span class=\"a\">Quiz<\/span><\/li>\n    <li><span class=\"d\">Oct 15<\/span><span class=\"t\">Graphics pipeline, OpenGL<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Oct 20<\/span><span class=\"t\">Shader programming<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Oct 22<\/span><span class=\"t\">Viewing, clipping and culling<\/span><span class=\"a\">A1 due<\/span><\/li>\n  <\/ul>\n<\/div>\n\n<div class=\"unit\">\n  <div class=\"unit-h\"><span class=\"dot\"><\/span>Modeling<\/div>\n  <ul class=\"sched\">\n    <li><span class=\"d\">Oct 27<\/span><span class=\"t\">Procedural modeling<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Oct 29<\/span><span class=\"t\">Perlin noise &amp; terrains<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Nov 3<\/span><span class=\"t\">Curves and surfaces<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Nov 5<\/span><span class=\"t\">Subdivision surfaces<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Nov 17<\/span><span class=\"t\">Triangle meshes<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Nov 19<\/span><span class=\"t\">Neural scene representations &amp; NeRF<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Nov 24<\/span><span class=\"t\">3D Gaussian Splatting<\/span><span class=\"a\">A2 out<\/span><\/li>\n  <\/ul>\n<\/div>\n\n<div class=\"unit\">\n  <div class=\"unit-h\"><span class=\"dot\"><\/span>Animation<\/div>\n  <ul class=\"sched\">\n    <li><span class=\"d\">Nov 26<\/span><span class=\"t\">Quiz 2<\/span><span class=\"a\">Quiz<\/span><\/li>\n    <li><span class=\"d\">Dec 1<\/span><span class=\"t\">Introduction to animation<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Dec 3<\/span><span class=\"t\">Rigging and keyframing<\/span><span class=\"a\"><\/span><\/li>\n    <li><span class=\"d\">Dec 9<\/span><span class=\"t\">Review &amp; discussion<\/span><span class=\"a\">A2 due<\/span><\/li>\n  <\/ul>\n<\/div>\n\n<!-- ==================== RECITATIONS ==================== -->\n<h2 id=\"recitations\">Recitations <small>Hands-on labs<\/small><\/h2>\n<div class=\"gallery\">\n  <img decoding=\"async\" src=\"https:\/\/cs.smu.ca\/~jiju\/wp-content\/uploads\/2021\/09\/raytraced_image.png\" alt=\"Ray-traced scene\" loading=\"lazy\">\n  <img decoding=\"async\" src=\"https:\/\/cs.smu.ca\/~jiju\/wp-content\/uploads\/2021\/11\/Perlin128.png\" alt=\"Perlin noise\" loading=\"lazy\">\n  <img decoding=\"async\" src=\"https:\/\/cs.smu.ca\/~jiju\/wp-content\/uploads\/2023\/11\/plane.gif\" alt=\"Terrain rendering\" loading=\"lazy\">\n  <img decoding=\"async\" src=\"http:\/\/cs.smu.ca\/~jiju\/wp-content\/uploads\/2019\/10\/bunny2-min.gif\" alt=\"Mesh bunny\" loading=\"lazy\">\n  <img decoding=\"async\" src=\"https:\/\/cs.smu.ca\/~jiju\/wp-content\/uploads\/2021\/10\/rasterize_teaser.png\" alt=\"Rasterization\" loading=\"lazy\">\n  <img decoding=\"async\" src=\"http:\/\/cs.smu.ca\/~jiju\/wp-content\/uploads\/2021\/09\/sampling_teaser.png\" alt=\"Sampling\" loading=\"lazy\">\n  <img decoding=\"async\" src=\"http:\/\/cs.smu.ca\/~jiju\/wp-content\/uploads\/2023\/11\/mesh_sky.gif\" alt=\"Mesh and skybox\" loading=\"lazy\">\n  <img decoding=\"async\" src=\"https:\/\/cs.smu.ca\/~jiju\/wp-content\/uploads\/2023\/11\/water-2.gif\" alt=\"Water rendering\" loading=\"lazy\">\n<\/div>\n<ul class=\"recits\">\n  <li><span class=\"n\">Rec 1<\/span><span class=\"r\">Setting up the development environment<\/span><\/li>\n  <li><span class=\"n\">Rec 2<\/span><span class=\"r\">Vector operations (C++ classes, objects)<\/span><\/li>\n  <li><span class=\"n\">Rec 3<\/span><span class=\"r\">Blinn\u2013Phong shading<\/span><\/li>\n  <li><span class=\"n\">Rec 4<\/span><span class=\"r\">Antialiasing using jittering supersampling<\/span><\/li>\n  <li><span class=\"n\">Rec 5<\/span><span class=\"r\">Texture mapping<\/span><\/li>\n  <li><span class=\"n\">Rec 6<\/span><span class=\"r\">Rasterization of line &amp; triangle<\/span><\/li>\n  <li><span class=\"n\">Rec 7<\/span><span class=\"r\">Shader programming &amp; textures<\/span><\/li>\n  <li><span class=\"n\">Rec 8<\/span><span class=\"r\">Perlin noise generation<\/span><\/li>\n  <li><span class=\"n\">Rec 9<\/span><span class=\"r\">Terrain and water<\/span><\/li>\n  <li><span class=\"n\">Rec 10<\/span><span class=\"r\">Skybox and texture blending<\/span><\/li>\n  <li><span class=\"n\">Rec 11<\/span><span class=\"r\">CPU Gaussian splat renderer<\/span><\/li>\n<\/ul>\n\n<!-- ==================== GRADING ==================== -->\n<h2 id=\"grading\">Grading<\/h2>\n<div class=\"grades\">\n\n  <div class=\"grade\">\n    <div class=\"grade-top\"><b>Assignments<\/b><span class=\"pct\">40%<\/span><\/div>\n    <div class=\"bar\"><span style=\"width:40%\"><\/span><\/div>\n    <ul>\n      <li>Two programming assignments (2 \u00d7 20%), coded in C++<\/li>\n      <li>Starter code provided on the GitHub repo; four weeks each<\/li>\n      <li>Graded on algorithms, performance, and code design; submit via MS Teams with brief documentation<\/li>\n      <li>Meeting the required feature set earns an A; going beyond (new features, efficiency, design) earns an A+<\/li>\n      <li>No late assignments without prior arrangement at least 48 hours in advance<\/li>\n    <\/ul>\n  <\/div>\n\n  <div class=\"grade\">\n    <div class=\"grade-top\"><b>Final exam<\/b><span class=\"pct\">25%<\/span><\/div>\n    <div class=\"bar\"><span style=\"width:25%\"><\/span><\/div>\n    <ul>\n      <li>Closed book, no electronics; SMU ID required<\/li>\n      <li>Scheduled by the Registrar during the formal exam period<\/li>\n    <\/ul>\n  <\/div>\n\n  <div class=\"grade\">\n    <div class=\"grade-top\"><b>Quizzes<\/b><span class=\"pct\">20%<\/span><\/div>\n    <div class=\"bar\"><span style=\"width:20%\"><\/span><\/div>\n    <ul>\n      <li>Two quizzes (2 \u00d7 10%), held during the lecture hour<\/li>\n      <li>If missed: contact the instructor within 48 hours and submit a <a href=\"https:\/\/www.smu.ca\/faculty-of-science\/science-student-forms.html\" target=\"_blank\" rel=\"noopener\">Declaration of Extenuating Circumstances<\/a><\/li>\n    <\/ul>\n  <\/div>\n\n  <div class=\"grade\">\n    <div class=\"grade-top\"><b>Recitations<\/b><span class=\"pct\">15%<\/span><\/div>\n    <div class=\"bar\"><span style=\"width:15%\"><\/span><\/div>\n    <ul>\n      <li>7\u20138 C++ exercises; best 5 count (5 \u00d7 3%)<\/li>\n      <li>Designed to help build the assignments; attendance required<\/li>\n      <li>7 days to submit; no late submissions<\/li>\n    <\/ul>\n  <\/div>\n\n<\/div>\n<p class=\"note\">\n  Final grades follow the letter-grade scale in Section 5 of the Academic Regulations. There is no curving or\n  rank-based grading. Final marks are truncated to one decimal place and rounded (.5\u2013.9 up, .0\u2013.4 down) to the\n  nearest whole number.\n<\/p>\n\n<!-- ==================== TEXTBOOKS ==================== -->\n<h2 id=\"books\">Textbooks<\/h2>\n<div class=\"books\">\n\n  <div class=\"book req\">\n    <img decoding=\"async\" src=\"http:\/\/cs.smu.ca\/~jiju\/wp-content\/uploads\/2019\/08\/book1_orig.jpg\" alt=\"Fundamentals of Computer Graphics\" loading=\"lazy\">\n    <div>\n      <span class=\"tag\">Required<\/span>\n      <b>Fundamentals of Computer Graphics (3rd\/4th ed.)<\/b>\n      <span>Peter Shirley, Steve Marschner \u00b7 A.K. Peters<\/span>\n      <span class=\"isbn\">ISBN 978-1482229394<\/span>\n    <\/div>\n  <\/div>\n\n  <div class=\"book\">\n    <img decoding=\"async\" src=\"http:\/\/cs.smu.ca\/~jiju\/wp-content\/uploads\/2019\/08\/book2.jpg\" alt=\"Realistic Ray Tracing\" loading=\"lazy\">\n    <div>\n      <span class=\"tag ref\">Reference<\/span>\n      <b>Realistic Ray Tracing (2nd ed.)<\/b>\n      <span>Peter Shirley, Keith Morley \u00b7 A.K. Peters<\/span>\n      <span class=\"isbn\">ISBN 1-56881-198-5<\/span>\n    <\/div>\n  <\/div>\n\n  <div class=\"book\">\n    <img decoding=\"async\" src=\"http:\/\/cs.smu.ca\/~jiju\/wp-content\/uploads\/2019\/08\/41OHM2RPJSL.jpg\" alt=\"Computer Graphics and Geometric Modeling\" loading=\"lazy\">\n    <div>\n      <span class=\"tag ref\">Reference<\/span>\n      <b>Computer Graphics and Geometric Modeling<\/b>\n      <span>David Salomon \u00b7 Springer<\/span>\n      <span class=\"isbn\">ISBN 978-0387986821<\/span>\n    <\/div>\n  <\/div>\n\n  <div class=\"book\">\n    <img decoding=\"async\" src=\"http:\/\/cs.smu.ca\/~jiju\/wp-content\/uploads\/2019\/08\/procedural_book.jpg\" alt=\"Texturing and Modeling: A Procedural Approach\" loading=\"lazy\">\n    <div>\n      <span class=\"tag ref\">Reference<\/span>\n      <b>Texturing and Modeling: A Procedural Approach<\/b>\n      <span>David S. Ebert et al. \u00b7 Morgan Kaufmann<\/span>\n      <span class=\"isbn\">ISBN 978-1558608481<\/span>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<!-- ==================== KEY REFERENCES ==================== -->\n<h2 id=\"references\">Key references <small>Neural rendering<\/small><\/h2>\n<div class=\"prose\">\n  <p style=\"font-size:1rem;margin-bottom:14px\">Foundational papers for the neural scene representation unit:<\/p>\n<\/div>\n<ul class=\"recits\" style=\"margin-bottom:8px\">\n  <li><span class=\"n\">NeRF<\/span><span class=\"r\">B. Mildenhall, P. P. Srinivasan, M. Tancik, J. T. Barron, R. Ramamoorthi, R. Ng. <em>NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis.<\/em> ECCV 2020.<\/span><\/li>\n  <li><span class=\"n\">3DGS<\/span><span class=\"r\">B. Kerbl, G. Kopanas, T. Leimk\u00fchler, G. Drettakis. <em>3D Gaussian Splatting for Real-Time Radiance Field Rendering.<\/em> ACM Transactions on Graphics (SIGGRAPH) 42(4), 2023.<\/span><\/li>\n<\/ul>\n\n<!-- ==================== PREVIOUS OFFERINGS ==================== -->\n<h2 id=\"previous\">Previous offerings<\/h2>\n<div class=\"prose\">\n  <p style=\"font-size:1rem\">\n    <a href=\"https:\/\/cs.smu.ca\/~jiju\/index.php\/teaching\/csci-4471-6671-computer-graphics-fall-2023\/\" style=\"color:var(--link);text-decoration:none;border-bottom:1px solid #c9dbe7\">Fall 2023<\/a> \u00b7 <a href=\"https:\/\/cs.smu.ca\/~jiju\/index.php\/teaching\/csci-4471-6671-computer-graphics\/\" style=\"color:var(--link);text-decoration:none;border-bottom:1px solid #c9dbe7\">Fall 2021<\/a> \u00b7 Fall 2019.\n    Course materials, announcements, and starter code for the current term are on the course MS Teams.\n    Questions? <span class=\"infocard\"><a class=\"eml\" role=\"button\" tabindex=\"0\" data-u=\"jiju.poovvancheri\" data-d=\"smu.ca\">Show email<\/a><\/span>.\n  <\/p>\n<\/div>\n\n<script>\n(function(){\n  function reveal(a){\n    if(a.getAttribute('data-shown')==='1') return;\n    var addr=a.getAttribute('data-u')+String.fromCharCode(64)+a.getAttribute('data-d');\n    a.textContent=addr; a.setAttribute('href','mail'+'to:'+addr); a.setAttribute('data-shown','1');\n  }\n  var links=document.querySelectorAll('.gsc-course a.eml');\n  for(var i=0;i<links.length;i++){(function(a){\n    a.style.cursor='pointer';\n    a.addEventListener('click',function(e){ if(a.getAttribute('data-shown')!=='1'){e.preventDefault(); reveal(a);} });\n    a.addEventListener('keydown',function(e){ if((e.key==='Enter'||e.key===' ')&#038;&#038;a.getAttribute('data-shown')!=='1'){e.preventDefault(); reveal(a);} });\n  })(links[i]);}\n})();\n<\/script>\n\n<\/div>\n<\/div>\n\n<\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>CSCI 4471: Computer Graphics (Fall 2026) \u2014 GSC Lab at SMU CSCI 4471 \/ 6671 \u00b7 Fall 2026 \u00b7 Saint&hellip;<\/p>\n","protected":false},"author":1,"featured_media":290,"parent":19,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/cs.smu.ca\/~jiju\/index.php\/wp-json\/wp\/v2\/pages\/2343"}],"collection":[{"href":"https:\/\/cs.smu.ca\/~jiju\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cs.smu.ca\/~jiju\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cs.smu.ca\/~jiju\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cs.smu.ca\/~jiju\/index.php\/wp-json\/wp\/v2\/comments?post=2343"}],"version-history":[{"count":13,"href":"https:\/\/cs.smu.ca\/~jiju\/index.php\/wp-json\/wp\/v2\/pages\/2343\/revisions"}],"predecessor-version":[{"id":2428,"href":"https:\/\/cs.smu.ca\/~jiju\/index.php\/wp-json\/wp\/v2\/pages\/2343\/revisions\/2428"}],"up":[{"embeddable":true,"href":"https:\/\/cs.smu.ca\/~jiju\/index.php\/wp-json\/wp\/v2\/pages\/19"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cs.smu.ca\/~jiju\/index.php\/wp-json\/wp\/v2\/media\/290"}],"wp:attachment":[{"href":"https:\/\/cs.smu.ca\/~jiju\/index.php\/wp-json\/wp\/v2\/media?parent=2343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}