feat(meditations): thanks djikstra

This commit is contained in:
Barrett Ruth 2025-05-16 12:52:56 -04:00
parent ecc52ce002
commit b83f17d087
4 changed files with 110 additions and 3 deletions

View file

@ -23,6 +23,9 @@
<li class="topic software">
<a href="/software" onclick="typechars(event)">software</a>
</li>
<li class="topic meditations">
<a href="/meditations" onclick="typechars(event)">meditations</a>
</li>
</ul>
<div class="posts" id="posts"></div>
</div>

View file

@ -0,0 +1,101 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="/styles/common.css" />
<link rel="stylesheet" href="/styles/post.css" />
<link rel="icon" type="image/webp" href="/public/logo.webp" />
<script
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"
async
></script>
<title>the problem with cs curricula</title>
</head>
<body class="graph-background">
<site-header></site-header>
<main class="main">
<div class="post-container">
<header class="post-header">
<h1 class="post-title">the problem with cs curricula</h1>
</header>
<article class="post-article">
<p>
Edsger Wybe Dijkstra's
<a
href="https://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html"
target="_blank"
>"On the cruelty of really teaching computing science"</a
>
perfectly sums up my gripes with how Computer Science is taught at a
university level (at my school, at least).
</p>
<p>
Succinctly put, my time learning computer science at my unnamed
college exemplified nearly everything he (and I) believe a CS
curriculum should <i>not do</i>:
</p>
<ul>
<li>
Ignore the existential questions about computer programs (what are
they? why do they exist? can they want? what should they be used
for?)
</li>
<li>
Ignore the notion of program behavior, i.e. provability (this is
set aside as an advanced core class, counterintuitively reserved
for a third or fourth year).
</li>
<li>
Excessively simplify and frame new technologies with analogy,
effectively instilling maladaptive thinking patterns that fail to
extend to more novel problems
</li>
<li>
Give up on doing the inverse of the above because it is too hard
for young students.
</li>
</ul>
<p>
Walking out of my third year, I left with the sad realization that I
got by the majority of my classes by only understanding things as
they pertained to assignments and exams.
<b>And by "got by", I mean straight A's</b>.
</p>
<p>
I always knew something was wrong with how my school taught computer
science (despite it being the biggest major as of 2025). As of late,
though, I realized the gargantuan amount of damage it caused to my
reasoning abilities. Damage that I have to reverse by, essentially,
doing everything all over again.
</p>
<p>
My
<a
href="https://barrettruth.com/posts/algorithms/competitive-programming-log.html"
target="_blank"
>competitive programming journey</a
>
epitomizes this point: to this day I struggle with reasoning,
argumentation, and understanding program behavior. I know how a
segment tree works but can't formalize the constraints of a problem.
I can do dynamic programming on trees but I can barely manipulate
and work with primitive mathematical concepts such as the \(gcd\)
function. I cannot think of a more useless skillset.
</p>
<p>
Nearly all of this is my fault. However,
<i
>it should not be possible for this to happen in a computer
science curriculum</i
>. In other words, Djikstra is right.
</p>
</article>
</div>
</main>
<site-footer></site-footer>
<script src="/scripts/common.js"></script>
<script src="/scripts/post.js"></script>
</body>
</html>

View file

@ -122,6 +122,8 @@ const getTopicColor = (topicName) => {
return "#009975";
case "algorithms":
return "#d50032";
case "meditations":
return "#6a0dad";
default:
return "#000000";
}

View file

@ -19,6 +19,7 @@ const postMapping = new Map([
"models of production",
],
],
["meditations", ["the problem with cs curricula"]],
]);
function refresh(e) {
@ -42,10 +43,10 @@ function renderPosts(topic) {
// Normalize topic for lookup (in case it has spaces, like "operating systems")
const normalizedTopic = topic.trim();
// Get posts for this topic
const topicPosts = postMapping.get(normalizedTopic);
if (!topicPosts) {
console.error(`No posts found for topic: ${normalizedTopic}`);
return;
@ -59,7 +60,7 @@ function renderPosts(topic) {
const link = document.createElement("a");
const postLink = postName.toLowerCase().replace(/\s+/g, "-");
// Convert topic to URL-friendly format
const topicSlug = normalizedTopic.toLowerCase().replace(/\s+/g, "-");
link.href = `/posts/${topicSlug}/${postLink}.html`;