{
  "$type": "site.standard.document",
  "content": "---\ntitle: \"The road to COMP4020: course software environment\"\ndescription: \"Every CS/software development course has a policy on what software it uses -\n  the only different is whether it's written down or not.\"\ntags: [comp4020]\n---\n\nFor the [previous courses I've developed](/teaching/) I've always (tried to, at\nleast) think hard about the course software environment. This includes which\nOSes and software tools are installed on the lab machines, whether BYOD is\nallowed (and to what extent the tutors will support you in that case if your\nsystem is borked), in what environment the assessment will take place, etc.\n\nSetting this out clearly is beneficial for me and for my students (and for our\nIT team, because they know what we're on hook for supporting). And when I do\nallow BYOD (which I try to, unless there's a good reason not to) I'm still able\nto say what the recommended software stack is and give some tips on how to\ninstall it. But I can also make it clear that if you _do_ BYOD then we can't\nguarantee that we can always unpick the knots you get yourself tied up in, and\n\"the software stopped working the day before the deadline so I couldn't complete\nthe assignment\" is never a way to get off the hook for late penalties.\n\nAnyway, here's my current thinking for \"required setup\" for the Agentic Coding\nStudio course:\n\n- a working terminal environment where you can run e.g. Claude Code\n- the ability to build & run Docker containers and other web infrastructure\n  (e.g. node)\n- Chrome/Chromium[^chrome]\n\nWhile this means that students on macOS and Linux are probably going to have a\nbetter time than students on Windows, I don't want to mandate this... just give\na big'ol caveat emptor (maybe it's \"caveat artifex\" for software developers?).\nIt's a course for undergraduate seniors and masters students, with solid\npre-requisites, so I think this'll be sufficient for this course. And because of\nthe [studio tutorial model](/blog/2026/02/20/comp4020-the-core-mechanic/) I\n_don't_ want to have the tutorials in computer labs---I want them to be in flat,\nflexible rooms where we can re-configure the tables, chairs and screens as\nnecessary to support the best discussion dynamics.\n\n## My software stack for teaching\n\nHowever, for this course I will be clear with my students about the software\nstack that I'm using in my teaching, including in the lectures where I always do\n_a lot_ of live coding[^livecoding]. Basically it'll be what I've previously\nwritten up as my\n[new stack of choice for software development](/blog/2026/02/18/ben-s-dev-setup-2026-edition/),\nwhich is unsurprising given that I designed that new stack around an agentic\ncoding workflow. Although I won't be forcing my students to use mutt :)\n\nIn particular, my plan for the lectures is to have a split screen:\n\n- **terminal ([ghostty](https://ghostty.org)) on the left**...\n- running [zellij](https://zellij.dev) as a multiplexer...\n- which is managing multiple instances of\n  [Claude Code](https://github.com/anthropics/claude-code),\n  [Opencode](https://opencode.ai) etc. for coding, git for VCS, and\n  [helix](https://helix-editor.com) for text editing, as well as other CLI/TUI\n  tools as necessary\n- **Chrome on the right** showing the current web page under development (i.e.\n  the dev server, pointing to e.g. `localhost:4321`)\n\nI don't tend to talk from slides (and almost never use slide notes) so to the\nextent that the class will have slides they'll also just be a website, probably\nreveal.js. This allows me to just mirror my whole display to the big screen. The\nstudents see everything I see, there's nothing up my sleeve. I have no hard\nevidence for this, but I think this is pedagogically important; I really do want\nthem to \"look over my shoulder\" as we work through things together. It does mean\nthat I need to be careful I don't (briefly) flash up my API keys or other\nsensitive info in plaintext, though.\n\nA couple of cool things I'm considering (but haven't tested yet) are:\n\n- recording the terminal with [asciinema](https://asciinema.org) (the direct\n  video feed of the screen will already be recorded, but it might be cool to\n  share the asciinema recordings to make it easy to copy/paste text for\n  remixing, and even to have students do analysis on the logs from my agentic\n  coding sessions in class)\n\n- using Zellij's new\n  [read-only session sharing](https://zellij.dev/news/remote-sessions-windows-cli/#read-only-session-sharing)\n  so the students can see (in their own terminal) a live-streamed read-only view\n  of what's going on in my terminal. This might not add heaps---they can already\n  see it on the projector screen, but again it's a live view they can copy-paste\n  from and remix on the fly. In fact, I'm excited about the idea that even\n  during lectures I can have students mess with the provocations I throw out, do\n  their own agentic coding experiments, and then we can have parts of the class\n  where I go around the room and show off the different creations of the\n  students from the lectures.\n\nI've just submitted my timetabling request for the main lecture (where this\nsetup will be used) and I'm hoping to get a newly-fitted out flat space with\nconfigurable seating and large-format displays on every wall. That way I can\nroam around with a madonna-mic and see what the students are doing and share\nthese things back with the class. Because interactive lectures/lectorials are\nmore fun, I reckon.\n\n[^chrome]:\n    Look, it's not my favourite browser either, but the dev tools are pretty\n    good and it's a pretty safe baseline for a web dev course.\n\n[^livecoding]:\n    Here I mean \"live coding\" in the \"writing code in real time, taking input\n    and questions from students as I go\" sense, not the specific\n    [DJ-style livecoding](/livecoding/) sense.\n",
  "createdAt": "2026-05-13T23:14:38.658Z",
  "description": "Every CS/software development course has a policy on what software it uses - the only different is whether it's written down or not.",
  "path": "/blog/2026/03/24/course-software-environment",
  "publishedAt": "2026-03-24T00:00:00.000Z",
  "site": "at://did:plc:tevykrhi4kibtsipzci76d76/site.standard.publication/self",
  "tags": [
    "comp4020"
  ],
  "textContent": "Every CS/software development course has a policy on what software it uses - the only different is whether it's written down or not.",
  "title": "The road to COMP4020: course software environment"
}