Migliora il tuo craft, un progetto alla volta.

Vuoi diventare un bravo programmatore? Programma progetti significativi!

Filtri

Esplora i progetti

Sqrt

Implementa un algoritmo per il calcolo approssimato della funzione radice quadrata. Un esempio applicato di calcolo numerico, una fondamentale branca dell'informatica e della matematica applicata.

algorithms

Printf

Impara a lavorare con le funzioni variadiche in C e riscrivi la funzione printf, utilizzata per effettuare delle stampe formattate in C, da zero, avendo a disposizione solo la system call write.

systems-programming

Simple Libc

L'obiettivo di questo progetto è l'implementazione di una piccola libreria di funzioni riprese dalla famosa libc. Imparare ad implementare le funzioni che diamo per scontato della libc è un ottimo modo per fare pratica con il linguaggio C.

systems-programming

CHIP-8 Emulator

Implementa il tuo primo emulatore CHIP-8, una macchina virtuale sviluppata da Joseph Weisbecker negli anni 70 per facilitare la scrittura di videogiochi sui primi microcomputers, come il COSMAC VIP. Un ottimo progetto per chi vuole imparare cosa significa scrivere un emulatore.

computer-architecture

Maze Generator

Impara ad utilizzare la teoria dei grafi per generare e risolvere qualsiasi labirinto. Questo progetto mostra una interessante applicazione di nozioni algoritmiche e tecniche di rendering 2D.

algorithmsgraphics

Trusting Trust

Nel 1984 Ken Thompson rese popolare un'idea interessante: la costruzione di una backdoor auto-replicante da inserire in un compilatore C. L'obiettivo di questo progetto è mostrare come implementare in pratica questa idea lavorando con il compilatore tinyCC e un semplice programma di login.

systems-programmingcompilers and toolchainscybersecurity

Simple Operating System

Il sistema operativo è il programma che implementa le principali astrazioni per permettere alle applicazioni di funzionare correttamente. L'obiettivo di questo progetto è scrivere un semplice sistema operativo per l'architettura RISC-V.

systems-programmingcomputer-architecture

Progetti in costruzione

In lavorazione

LLM Inference Engine

Scrivi da zero il motore che fa parlare un Large Language Model: carica i pesi, trasforma il testo in token, calcola un transformer strato dopo strato e genera testo una parola alla volta. Nessun framework, solo Python e un po' di algebra lineare.

machine-learningalgorithms
In lavorazione

Simple Shell

Ogni programmatore esperto dovrebbe aver implementato almeno una volta una shell. La shell è il programma che interagisce con il sistema operativo per eseguire tutti i comandi di nostro interesse: processi, pipe, e il ciclo read-eval-print (REPL).

systems-programming
In lavorazione

Simple Editor

Ogni programmatore esperto dovrebbe aver implementato almeno una volta un text editor. L'editor è il programma che utilizziamo ogni giorno per scrivere ed editare il testo. Senza editor non possiamo scrivere codice.

systems-programming
In lavorazione

Simple Interpreter

Ogni programmatore esperto dovrebbe aver implementato almeno una volta un interprete. L'inteprete è quel programma che trasforma il testo in computazione. Esattamente come fa Python. Scrivere un interprete significa vedere come si implementa un linguaggio di programmazione interpretato.

compilers and toolchains
In lavorazione

Simple Compiler

Ogni programmatore esperto dovrebbe aver implementato almeno una volta un compilatore. Il compilatore è quel programma che trasforma il testo in un altro programma, che può poi essere eseguito. Esattamente come fa gcc. Scrivere un compilatore significa vedere come si implementa un linguaggio di programmazione compilato.

compilers and toolchains