Skip to content

Course Documentation

CΔƒtΔƒlin BuruianΔƒ edited this page Apr 14, 2020 · 2 revisions

What is a Course?

A Course (or subtopic) represents a specific area of content within a Topic. They are particularly useful when tackling broad topics (such as Java, Python etc.) where further subject-based vision makes sense.

Every course is in a child-parent relationship with a topic. Hence, we place courses as folders within a topic to enforce this relationship. Similarly, we define course folders with a** human-readable slug**.

A valid course folder is accompanied by its README.md - the manifest which defines all course-related metadata.

For example, under the JavaScript topic, we can find various subtopics such as:

  • Ecmascript 2015
  • Core
  • Promises
  • Gulp
  • etc.

Same goes to Java with:

  • Annotation
  • GUI
  • Testing
  • etc.

Fields Definitions

Name

This field is shown in the app together with any other more-granular content piece (e.g. Insights, Workouts). It needs to be short- less than 20 characters max.

Description

This field can be used in the app to accompany any course-related content. It helps to pinpoint the area of discussion. It can be a little longer, but should still remain under 100 characters.

Core

The core field is a boolean that marks whether a course is core or not. Core courses are the first ones to be served to a beginner user and usually try to demystify the basics of the technology/subject they talk about.

NOTE THAT THERE SHOULD BE EXACTLY 1 CORE COURSE PER TOPIC

Sections

The sections field simply denotes the structure and order of workouts within the course. Breaking down all workouts into sections furthermore helps with the encapsulation of information into digestible blocks. When a section ends we usually allow the user to progress to the next one by taking a placement test. While this can be thought of as a revision test, keep in mind that any arbitrary section can be unlocked by passing this test. Essentially, this allows users with pre-existing expertise to skip to the section they care the most about.

We use string numbers for the section names. Within each section, we list the relevant workout slugs in the desired order.

Next

The next field allows the creation of links between courses. We usually present content by iterating through the courses given these links. Starting from the CORE course, we first move to the course referenced by its next field. This process is repeated until the end of the content.

The syntax used here is topic-slug:course-slug. While the syntax allows referencing courses from other topics, currently we're using only links from within the same topic.

Course Example

A course's README file looks like this:

name: Data Structures and Algorithms

description: The abstract toolkit needed for programmers to manage the complexity of problems and the problem-solving process.

core: true

sections:
  '0':
    - intro-data-structures
    - intro-graphs
  '1':
    - algorithms-i
    - binary-search-tree
    - heap-and-trie
    - tree-traversals
    - algorithms-ii
  '2':
    - graph-algorithms
    - mst-algorithms

next:
  - comp-sci:networking
Clone this wiki locally