summaryrefslogtreecommitdiff
path: root/public/posts/studying-computer-science/index.html
blob: e4dd70c20ffa3f0b9ac6c8631b5cb0122df96d6e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png">
    <link rel="manifest" href="/images/site.webmanifest">
    <link rel="stylesheet" href="/css/style.css" />
    <link rel="stylesheet" href="/css/fonts.css" />
</head>

<div class="container">
    <ul id="bar">

     
    <li>
        <a href="/">home</a>
    </li>
    <li>|</li>
    

    <li> 
        <a href="mailto:mati.rewa@gmail.com">mati.rewa@gmail.com</a>
    </li>
    <li>|</li>
    <li> 
        <a href="https://git.denounce.ai/">git.denounce.ai</a>
    </li>
    <li>
        |
    </li>
    <li>
        <a href="https://ohmyghost.nl">ohmyghost.nl</a>
    </li>
    <li>
        |
    </li>
    <li>
        <a href="https://atlarge-research.com/mkwiatkowski/">research</a>
    </li>
    <li>
        |
    </li>
    <li>
        book blog 
    </li>
</ul>


</div>
</div>
<div class="container">
    <p>It has long lingered on my mind to reflect partially on my experience of the last 3 years.
The B.Sc. of Computer Science I have recently undertaken is soon coming to an end.
Fortunately, this is not the end of my journey as a Computer Scientist, but there are specific things that I did not realize about Computer Science before I embarked on this endeavour.
Here&rsquo;s one that has been bugging me the most: Computer Science is 90% reading and understanding and 10% coding.</p>
<p>With the proliferation of the so called &ldquo;vibe-coding&rdquo; and use of generative AI to streamline production of code this might seem like a medieval thought at first, but bear with me, as I believe it to be the most important thing I have learned about Computer Science in the last 3 years.</p>
<p>Dealing with complex problems is hard.
Programming is all about solving problems, we programmers live by optimizing our code the best we can, and try to find solutions to problems that we encounter while doing so.
While it is no doubt nice to have a working code that does something cool, or a solution to a problem that meets the specification, I don&rsquo;t think that is the mindset a programmer should have &ndash; that is, to solve a problem is not about getting to a solution somehow.</p>
<p>Solving coding tasks requires time.
This might be difficult to admit for some, as it has been for me.
But understanding a problem requires patient reading and digesting the context, possible solutions and most importantly doubts.
On top of this, if you have solved a problem without asking questions about it, then it wasn&rsquo;t a difficult (by proxy important) problem to be solve in the first place.</p>
<p>Reading code is hard.
It&rsquo;s sometimes like reading an essay in a foreign language.
Your head hurts, your eyes are getting sore, and after 6 hours at staring at the screen you conclude you don&rsquo;t understand anything anymore.
It would almost seem like this time has been wasted, since you might have not produced a line of code.
Nevertheless, this is all there is to programming.</p>
<p>After 3 years, it appears to me that the views about Computer Science as a disciple of Donald Knuth and Edsger Dijkstra seem the most correct.
I had first stumbled on Donald Knuth&rsquo;s blog long ago, when exploring Jamie Zawinski&rsquo;s blog and looking for top figures in CS to study.
On his <a href="https://www-cs-faculty.stanford.edu/~knuth/email.html">blog</a> Knuth writes: &ldquo;What I do takes long hours of studying and uninterruptible concentration. I try to learn certain areas of computer science exhaustively; then I try to digest that knowledge into a form that is accessible to people who don&rsquo;t have time for such study.&rdquo;
There it is.
Computing takes time.
There&rsquo;s no silver bullet yet, and we as programmers have to take our time to think about problems in depth.
There have been many comments on the peculiar style of teaching and way of being of Edsgar Dijkstra, but I believe he has made some really good points.
I greatly encourage you to watch his Turing Award lecture.
Nevertheless, what describes my experience over the last 3 years is his quote: &ldquo;The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility[&hellip;]&rdquo;.
I think this the approach to take, and certainly one that I will take on my future escapes to the CS world.
So often computers help us verify and point out that we indeed really don&rsquo;t know anything, we are just pretending we do.</p>

</div>
<footer>
    <center>
        
        © Copyright 2024-2025 Mateusz J. Kwiatkowski. All Rights Reserved.
        
    </center>
</footer>
</body>
</html>