101 lines
4.1 KiB
HTML
101 lines
4.1 KiB
HTML
<!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>
|