A introduction to the fundamentals of computer science and JavaScript.
JavaScript HTML CSS
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
Session 1
Session 10
Session 2
Session 3
Session 4
Session 5
Session 6
Session 7
Session 8
Session 9


Welcome to the Cirrus Collective!

Why Cirrus? Since we're in the cloud, we might as well be clouds, and if we're clouds, we are cirrus clouds. Cirrus clouds are the first to illuminate in the morning and they continue to glow brightly well after the other clouds have faded at sundown.

My goal is to keep us all deeply, almost nauseatingly challenged while moving ever forward.

It's worthwhile to consider some principles as they relate to our objectives together. Our aim is efficiency:

Effectiveness Efficiency
Meaning Effectiveness is about doing the right task, completing activities and achieving goals. Efficiency is about doing things in an optimal way, for example doing it the fastest or in the least expensive way. It could be the wrong thing, but it was done optimally.
Effort oriented No Yes
Process Oriented No Yes
Goal oriented Yes Yes
Time oriented No Yes

Be optimal. Move fast. Don't linger.

How to learn fast:

  1. make each hour you spend coding is maximally efficient

  2. maximize the number of hours

     learning efficiency = hour quantity x hour quality

Our goal is not to complete projects. It is not about understanding exactly what code to write before putting something on the screen.

Get something on the screen! Break stuff! Do it again!

The comprehension will come as long as you keep doing.

suf·fer·ing, noun: the state of undergoing pain, distress, or hardship.

We will suffer! We will learn that while suffering is unavoidable, pain is. We will learn that we get to choose how we suffer. We will learn to embrace the suffering. Put another way, programming is hard and when you feel that hardship, know that you are doing it right!


Currently, the pattern for each day contains the following blocks:

  1. Sprint 90 minutes(pairing)
  2. Lecture 60 minutes (autonomous)
  3. Lunch, exercise, go outside 60 minutes
  4. Sprint 45 minutes (pairing)
  5. Algorithm practice 60 minutes (autonomous)
  6. Consume/videos/slides 60 minutes (autonomous)
  7. Sprint 180 minutes (pairing)

You can expect a new post each day containing the specific resources and problems we will be using.


Your feedback is key. You get to drive this experiment. Keep pushing feedback for each section. Watch the course improve.


Among the team, we have several different schedules of availability and I'm striving to keep the curriculum relevent, efficient, and flexible.

Whenever someone is not available to pair, send a blast to the team. Everyone is copied on this email. If pairing is unfamiliar to you, reach out to me. If you are curious about what tools to use for remote pairing, let me know.

On pairing and feelings of inadequacy

No one of us is more skilled in absolute terms than any other of us. Each of us has the opportunity to teach and learn from everyone else. Every opportunity to pair is an opportunity to grow along one or more axis. Sometimes you grow in breadth of skill, like when you learned something new about javascript, other times you have the chance to deepen your growth, as when you get to find a way to explain a basic concept that's intuitive to you, but that you've never had to articulate to someone else. The key is to remember that both people in the pair always have pathways for growth available, regardless of perceived skill level.

When you feel inadequate or frustrated, I promise you that every one of us has felt exactly the same way. Chances are good most of us are feeling that way at that very moment.

We're a team. We're a collective. We're in this together.

We will lean on each other.

Remember, the goal for this course is definitive: maximize the quantity and quality of each hour spent learning. Ensure that each hour is more efficient than the last.

Notice that nowhere in there is anything about completely grasping functional programming, building a working app, or getting a job. Those things are happy byproducts of maximizing the efficiency of our every hour together.

Embrace the discomfort and keep moving!