For a smooth algebraic variety X over C, we may consider the singular cohomology H^*(X(C), Z) of (the complex analytic space of) its C-points. How much of this can we get at algebraically? Well, l-adic cohomology lets us get at H^*(X(C), Z) \otimes Z_l for each prime l, thereby getting the rank and all l-primary parts. There's another way at getting the ranks: algebraic De Rham cohomology H^*_{DR}(X) lets us algebraically compute H^*(X(C), Z) \otimes C. Algebraic De Rham cohomology has some defects: it's not well-behaved when X is not smooth, and it's not well-behaved when in finite characteristic. Playing with these defects will naturally lead us to look at the Gauss-Manin connection and the "crystalline" viewpoint on connections, and to rediscover H^*_{DR}(X) as sheaf cohomology on a certain site. (This will resolve the issue with smoothness, leaving more to be done for finite characteristic.) This will also be an excuse to give a gentle introduction to vector bundles with flat connections, sites, topoi, and anything else that seems reasonable.