Computer Science Course Writer

About Brilliant

Effective learning is active, not passive. Brilliant helps over 9 million members around the world master concepts in math, science, and engineering by solving fun, challenging problems. To understand more about our approach, read our principles and testimonials.

You can see all open roles and learn more about our team culture on our Careers Page

The role

As a Computer Science Course Writer, you will design learning experiences (centered around problem solving) that introduce topics at a wide range of experience levels: from foundational data structures to dynamic programming to cutting-edge topics like AI/ML. You'll play a key role in the growth of an exceptional body of content.

Specifically, you will:

  • Write delightful content that teaches how to think about algorithms, programming, and designing projects with an engineering mindset.

  • Develop a narrative voice that empowers learners while distilling complex topics down to their components.

  • Provide a sense of what makes each new skill useful and predict what misconceptions and bugs might be likely culprits when this skill is in use

  • Write small, interactive code blocks that learners are then able to edit, add on to, and run to try out each new concept as they complete a course.

This is a remote work position.

Who are you?

  • Have experience working with Python in an industry, teaching, or research setting. 

  • Have a strong grounding in algorithms and computer science theory.

  • Familiarity with multiple paradigms (e.g. functional programming via OCaml or Haskell) is a plus.

  • Have an excellent sense of what makes an explanation or example great. Teaching experience is an added (but not required) bonus.

  • Want to share the sense of empowerment that comes from knowing you can write code!

  • Be knowledgeable about active learning (learning by doing, instead of listening to lectures).

  • Have a strong command of English grammar and usage.

  • Are available to work a minimum of 20 hours per week, or want to apply as a summer intern and work full time (40-45 hours per week) for 3-4 months.


To land an interview, please include (in addition to your resume):

  • Part 1: What experience do you have programming? What languages? If you have any links to past projects, we’d love to check them out.

  • Part 2: What experience do you have teaching and/or tutoring?

  • Part 3: Sample Assignment:  

  • Complete the following sample assignment for ONE of these two topics:

    • Introduce Dijkstra's shortest path algorithm and gives some context about it as an example of a greedy algorithm and dynamic, recursive programming.

    • Create a data visualization of the letter frequency distribution in an English message and demonstrate how it’s transformed by Caesar and Vigenère ciphers. 

  • Sample Assignment Instructions:

  1. Add documentation within the code that is at a level a new Python learner could understand easily.
  2. Indicate places in the code where a learner might experiment, changing the code in ways that have an interesting impact on the programs.
  3. Briefly (in 2-4 paragraphs) explain what you would emphasize when sharing this code with a learner in the context of teaching them this new topic.  

    • Assume that the learner is an introductory-level Python learner who knows what variables, random variables, functions, and loops are.

    • In the case of Dijkstra's shortest path algorithm, assume that learner have just learned the basic idea of recursion from the immediately preceding unit (via Towers of Hanoi or something similar).

    • For the Data Visualization project, assume that learners have seen Caesar shifts before but that the Vigenère cipher is new territory.

  4. Give two to three examples of multiple choice questions you could follow up with to make sure that your learner understood the ideas you explained.

Want to apply later?

Type your email address below to receive a reminder

Apply to Job

ErrorRequired field
ErrorRequired field
ErrorRequired field
ErrorRequired field
ErrorRequired field
ErrorRequired field
ErrorRequired field