feat(meditations): thanks djikstra
This commit is contained in:
parent
ecc52ce002
commit
b83f17d087
4 changed files with 110 additions and 3 deletions
|
|
@ -23,6 +23,9 @@
|
||||||
<li class="topic software">
|
<li class="topic software">
|
||||||
<a href="/software" onclick="typechars(event)">software</a>
|
<a href="/software" onclick="typechars(event)">software</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="topic meditations">
|
||||||
|
<a href="/meditations" onclick="typechars(event)">meditations</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="posts" id="posts"></div>
|
<div class="posts" id="posts"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
101
posts/meditations/the-problem-with-cs-curricula.html
Normal file
101
posts/meditations/the-problem-with-cs-curricula.html
Normal 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>
|
||||||
|
|
@ -122,6 +122,8 @@ const getTopicColor = (topicName) => {
|
||||||
return "#009975";
|
return "#009975";
|
||||||
case "algorithms":
|
case "algorithms":
|
||||||
return "#d50032";
|
return "#d50032";
|
||||||
|
case "meditations":
|
||||||
|
return "#6a0dad";
|
||||||
default:
|
default:
|
||||||
return "#000000";
|
return "#000000";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ const postMapping = new Map([
|
||||||
"models of production",
|
"models of production",
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
["meditations", ["the problem with cs curricula"]],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
function refresh(e) {
|
function refresh(e) {
|
||||||
|
|
@ -42,10 +43,10 @@ function renderPosts(topic) {
|
||||||
|
|
||||||
// Normalize topic for lookup (in case it has spaces, like "operating systems")
|
// Normalize topic for lookup (in case it has spaces, like "operating systems")
|
||||||
const normalizedTopic = topic.trim();
|
const normalizedTopic = topic.trim();
|
||||||
|
|
||||||
// Get posts for this topic
|
// Get posts for this topic
|
||||||
const topicPosts = postMapping.get(normalizedTopic);
|
const topicPosts = postMapping.get(normalizedTopic);
|
||||||
|
|
||||||
if (!topicPosts) {
|
if (!topicPosts) {
|
||||||
console.error(`No posts found for topic: ${normalizedTopic}`);
|
console.error(`No posts found for topic: ${normalizedTopic}`);
|
||||||
return;
|
return;
|
||||||
|
|
@ -59,7 +60,7 @@ function renderPosts(topic) {
|
||||||
|
|
||||||
const link = document.createElement("a");
|
const link = document.createElement("a");
|
||||||
const postLink = postName.toLowerCase().replace(/\s+/g, "-");
|
const postLink = postName.toLowerCase().replace(/\s+/g, "-");
|
||||||
|
|
||||||
// Convert topic to URL-friendly format
|
// Convert topic to URL-friendly format
|
||||||
const topicSlug = normalizedTopic.toLowerCase().replace(/\s+/g, "-");
|
const topicSlug = normalizedTopic.toLowerCase().replace(/\s+/g, "-");
|
||||||
link.href = `/posts/${topicSlug}/${postLink}.html`;
|
link.href = `/posts/${topicSlug}/${postLink}.html`;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue