These are the pre-course materials for Fractal Bootcamp (https://fractalbootcamp.com/). This repository is meant to be interactive (please PR) and teach you everything you need to be successful in the bootcamp.
This is also a live repository - expect it to change and evolve over time.
If you are totally new to programming, START HERE.
NOTE: when learning to code, ALWAYS engage your curiosity. If you want to know why/how something works, ask ChatGPT, Youtube, or Google! (in roughly that order).
I've divided your Intro To Coding into four main parts:
- 1a. Concept (Intro)
- 2a. Practice (Intro)
- 1b. Concepts (Deep)
- 2b. Practice (Deep)
I encourage you to jump between resources, depending on what feels good at the moment:
- If you feel like actually DOING something with code, try Practice.
- If you want to learn concepts, focus on conceptual understanding.
Enjoying and practicing coding before class will go a long way in helping understand the fundamentals of programming, and help you get the most out of the course. The faster you develop an intuition for coding, the faster you'll fall in love with it as a medium of expression.
Animated videos are the best shallow introduction to any subject. Hence your nostalgia for Magic School Bus.
- Web Dev 101 in 13 minutes (13 min)
- Javascript in 100 seconds (2 min)
- 100+ Javascript Concepts (12 min)
- Git in 100 seconds (2 min)
- CS 101 in 13 min (13 min)
The best introductory resource for practicing code is a tutorial. The best tutorials are interactive, and that's where Scrimba comes in.
Feel free to skip around or speed up if it's too slow.
- EloquentJS: Introduction through Chapter 7 [recommended]
- Pro Git: Chapters 1, 2, and 6
- FullStack Open: Part 0b
Fullstack Open is the best free online bootcamp. Working through this will prepare you immensely for our bootcamp and increase your velocity a ton!
- FullStack Open
- Javascript for Haters (3 min)
- Inventing on Principle, Bret Victor (54 min -- this is a long talk about the sorts of things we can still invent with computers, not about learning programming)
- Hackers and Painters, Paul Graham
- What is Code? (famous Bloomberg piece on coding culture)
- Don't feel bad about not knowing basic things
For each folder, go through the relevant modules or submodules and read the questions.
For each module:
-
Check out a new git branch, called
${your_name}/${module_name}
. If you don't know what this is or how to do it via the command line, read the git and terminal basics sections. -
Create a new file
${your_name}.md
, under theanswers
folder in the module.* (bonus: use the terminal to do this) -
Copy the answers in the module's
README.md
into your file. (bonus: use the terminal to do this) -
Read through the resources and do your own research online. Drawing on your understanding, answer the questions in the your answer file.
-
Save and commit your new file. Create a pull request (PR) from your branch to the main branch. Add @jakezegil and/or a friend as the PR reviewer. (bonus: use the terminal to do this)
*see computer-science/basics/answers/jake-zegil.md
for an example submission
Refer to the SCHEDULE.md
(WIP) for the recommended sequencing. This is not prescriptive - feel free to jump around or skip modules that you're already familiar with.
There's no rules - reading through other's answers or working with a partner can be really helpful for learning. But please, for your own sake, don't copy and paste things. Framing your understanding in your own words is a powerful and valuable exercise.
ChatGPT is a great resource for having conversations about many of these questions and topics.
Whenever you see a word that you don't fully understand, write it down and define it.
Everything that is in this repository matters for writing software, and many things relate to each other. Always ask yourself, how does this relate to the other concepts that I've learned?
Use the terminal as much possible.
If you come across a super helpful resource for a given module, add it to the module readme and open up a PR. Help the future students!