Skip to content

leske42/Foundations

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 

Repository files navigation

Welcome to Project Foundations

You might be looking for

Hitchhiker's Guide to Undefined Behavior (excerpt of my workshop from 2025)

What is this?

Foundations repository is a collection of foundational theory. It is made mostly to help students of Software Engineering such as students of 42.

By foundational theory I mean the sort of stuff everything else you learn is built on. I think the utmost importance of this kind of knowledge should be clear from this definition alone. Paradoxically, it is often also the first thing people opt to skip, because it tends to be heavy on theory instead of practice (doing anything wouldn't make too much sense before we know what we are trying to do to begin with).

This problem is also exactly why I started to work on Foundations - after almost 3 years in 42 and many projects behind me, I have realized that I have, in fact, absolutely no clue what I am doing.

The Goal of Foundations

Foundations Project is made to help you identify and challenge some assumptions you might not even know you have.

In everyday life, we quite often start learning in medias res (in the middle of things) instead of ab ovo (from the beginning).

In self-study, this can happen because we don't know where to begin.

We start learning C by learning concepts like variables and control flow - easy to find information on and quickly produces results measurable as progress. We might even become very comfortable with the syntax after a while and start to live under the assumption we are good programmers - without having any clue that, for example, our code might become something very different than we thought once the compiler takes over.

However, in my experience, the situation is no better in traditional or formal education. This is because the tension is not between theory and practice - theory can also be taught in a way that doesn't help building a coherent structure. The problem is always starting in the middle instead of starting from the beginning.

I felt this when I was studying psychology in university. From the first week, we started learning about things like normal distribution, how the muscles work, how children develop - we received a lot of random information in different classes, but it was never put into context or shaped into a coherent whole.

It is important to realize something super interesting and super dangerous about this whole issue. If we do not equip ourselves with solid foundational knowledge, we will fill the gaps with assumptions inferred from what we currently know. Because foundations are a necessary prerequisite for building, we will create them for ourselves, however shaky and questionable, mostly without even reflecting on the process.

These assumptions will then shape our thoughts. For example, a person who learned coding in a similar way as in my earlier example might start to find themselves sharing the idea that GenAI will soon replace Software Engineers, as it indeed knows syntax convincingly well.

Not all of the inferred assumptions are necessarily wrong, but the chances are that quite a lot are not coherent and even we ourselves would question them upon closer inspection. I aim to introduce a sort of re-learning process where the first step is identifying these and reflecting on them - what do I really believe and where does it come from?

This project is partly a result of going through this work myself, inspecting my own thoughts and identifying gaps through the process of writing.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors