About this site

What is this

Computer science is just a bunch of puzzles to figure out, I adjusted it so if you can work F/T you can complete it as a hobby by gamifying the material a little. I routinely eliminate and rewrite material to increase the efficiency of the curriculum by hopefully reducing it to entirely problem sets and research. Eventually this will be my own YouTube videos as content is routinely erased and paywalled so I'll just make my own if I have to. The concept is you can complete all the courses using a mobile device, which is what I do while on lunch breaks or commuting, sitting at a coffee shop or waiting in a line. A mobile device is also what most people in the world own, it's difficult to get access to working laptops/desktops and fill it with virtual environments to do other curriculums in some countries. When I would walk around 'developing countries' I saw everyone with a phone and nobody with a laptop anywhere, and expensive access to the internet.

Game concept

Another reason for the hand-held device concept is this should be like a regular crossword or sudoku puzzle, a game where you pull it out, solve some challenge in your free time, and toss it away so you can live your life and not be consumed with too much technology. The reward is you learn the fundamentals of math and computer science faster and maybe are motivated to keep doing it. I find this helps reduce the complexity, you are just thinking about a single problem and how to solve it all day in the back of your mind, you are not worried about the overall picture where it seemingly seems impossible to reach at your starting level. When you do solve it, or see the solution after thinking enough so the solution is meaningful, you end up learning multiple things all the same time especially with competitive programming and math problems. Don Knuth describes his The Art of Programming series as 'puzzles for computer scientists' too.

What do professors want you to learn

Transfer skills. Topic A is seemingly unrelated to topic B but they actually are related. Traditional curriculums struggle to achieve this as per Prof K's papers on teaching.

Content choice

One bit of advice: it is important to view knowledge as sort of a semantic tree — make sure you understand the fundamental principles, ie the trunk and big branches, before you get into the leaves/details or there is nothing for them to hang on to. - Elon Musk

CompSci

Learn the foundations of computation itself, the trunk and PL theory big branches:

  • CS19 Accelerated Intro to CS and the book Programming and Programming Languages was chosen for having very low complexity and ability to complete on a mobile device. It emphasizes property based testing and design by example. The prof of the course has papers about teaching it: what students ask in office hours, their success at assignments, and how they do in future courses.
  • Robert Harpers PFPL book teaches the foundations of programming languages which I may inject here or my other site.
  • Ryan O'Donnell's Theoretical CS Toolkit course goes with the book The Nature of Computation that explains the foundations of computation.
  • Competitive Programming chosen for practice. You can write text source on a tablet or phone and upload it to the online judge servers for free which compiles and tests them as many times as you want. Some of the languages are amenable to templating so often you are just writing the body of the function.

Math

Changed so it's just solve a problem per day. Russian olympiad highschool training so you redo everything that never made sense in highschool and build a foundation to be able to do any math you need.

AI

Jump into the leaves. Google Colab can be used with a phone, since we can practice writing AI algorithms on GPUs through Colab for free may as well also learn optimization of these algorithms. There are numerous AI competitions, most will accept notebook entries you can upload from colab. Is this real AI? Sussman has an entire course I'll inject that says this is not AI. Elon Musk is currently trying to 'reduce the bandwith between the human brain and machines' meaning you have an interface like a remote control you operate with your brain in his neuralink startup. Want to work there and doom/oppress all of humanity then try my workshop.

Software used to build this

This site is built using org-mode which is a major mode for emacs meaning a collection of behaviours that are automatically run whenever you open a .org file, a text file with some markup. It looks like this:

#+STARTUP: showall
#+TITLE: About this site
#+options: num:nil html-postamble:nil toc:nil
#+HTML_HEAD: <style> body {background-color: #fafad2} </style>

* Big heading

Some text

** Smaller heading

#+BEGIN_QUOTE
Some text
#+END_QUOTE

The documentation for org html export I find highly confusing, to learn it I had to read the lisp in ox-html.el in emacs source and some other org lisp files in order to find all the features and make my own. You can use HTML5 tags such as for video if you turn on html5-fancy but I don't allowing the user to use their preferred software to look at videos.

I can edit the text on a phone then by a simple script ssh into a box to run:

emacs myfile.org --batch -f org-html-export-to-html --kill

Home