Nathan Esquenazi
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    # CodePath.org - Curriculum and Course Development ## Introduction - The courses system is a blended content delivery system for courses - "Blended" means the system was designed to combine live expert-led or facilitated sessions with asynchronous content consumed by students outside of class time and then combined with hands-on submissions. - Our course system delivers courses developed as part of "course content packs". These course content packs can be developed by CodePath or even by other organizations and can be accessed by students and instructional staff within the course system. ## What's in a course content packages? - Think of course content packages a lot like software packages. - The source of content packages lives in Github repositories filled with folders and files that comprise that course's materials - Content files are developed using an enhanced [markdown formatting language](https://www.markdownguide.org/cheat-sheet/) A course pack generally involves a variety of content including many of the following: - Shared class pages: Syllabus, submission instructions, etc - Technical guides/cliffnotes referenced throughout the course (e.g [Cybersecurity](http://guides.codepath.org/websecurity) and [Technical Interviews](https://guides.codepath.org/compsci)) - [Markdown Slides](https://revealjs.com/)/Speakerdeck/Google Slides - Slide decks - Youtube videos - Recorded video content playlists - HackerRank tests - Coding assessments or quizzes And then each course contains **a series of units of content in a carefully designed order**. A “unit” is a particular section of the course filled with content with specific learning objectives. ### Units A course is composed of a sequential series of these “units”. Each unit might consist of flexible "unit content sections" as well as assigned submissions (assignments/quizzes/tests) or hands-on labs. For example, our iOS course might have the following **sections per unit**: - **Unit Overview** - An overview for the unit - **Hands-on Lab** - A hands-on lab to be run during one of the live sessions - **Assignment/Submission** - Hands-on project or challenge of some sort for students to submit by a specific deadline - **Session or Group Activity** - group or “pod” activity to be completed during a class session. To be moderated by the session facilitator. - **Hints and Tips** - Hints, tips, troubleshooting, solutions, etc that a student should review before and during the completion of the assignment. - **Reading** - List of further reading/videos/materials for a student to consume outside of class time to build understanding The "unit content sections" are completely customizable per course, and then each unit has tabs for each of those sections. Sections can sometimes even vary unit to unit. ## New Curriculum Map ### Curriculum Group Any new course is developed alongside a group of key curriculum stakeholders: - CodePath leadership - Includes Head of Programs, Chief Learning Officer - Curriculum architect - Contractor and domain expert making final decisions about the course structure, resolving conflicts - Curriculum developers - Contractors and often domain experts, contributing, providing feedback and helping out with content - Supporting content developer - Not domain experts, often student leaders, or others helping with supplementary content (polish guides, solutions, etc) - Beta testers - Small group of students paid to test out the assignments and labs and provide feedback ### Curriculum Development Process Every CodePath course starts as a proposal. The course has a specific learning objectives for students, duration, and will have a sequence of units. Each unit will have submissions, topics, videos, learning objectives, unit outcomes, and other related materials. To start this process, you would [ask yourself these questions](https://hackmd.io/@nesquena/developing-new-courses#Think-of-your-course-starting-with-an-application-and-human-centric-approach) and list out the basic information about a course, the overall course objectives, and then start mapping out units and corresponding unit objectives. Once we have an initial unit map for the course, then we start to assign curriculum owners for different units. The architect creates exemplary units as a model and then the other developers start fleshing out unit outlines and implementing their assigned units to match consistently with the exemplar units. ### A Class as a Story In the design of this class, the course objectives, the unit objectives and then the individual activity objectives need to be tied together and interleaved to create a crisp, meaningful and effective experience for students. It can help to think of a **class as a story** or narrative and then the beginning, the chapters (units), and the end. The more powerful, entertaining and clear the story, the more transformational the impact on students. ### Development Stages 1. **Course Proposal** CodePath leadership, contract architect, contract developers all collaborate to create an agreed upon course design outline - Learning outcomes and student integration test for the course, length of the course (number of units) - Unit by unit breakdown (topic map, and learning outcomes by unit) - Submission types and cadence (e.g assignments, labs) 2. **Early Scaffolding** Architect and curriculum developers start mapping out each unit in more detail - Sketch out the submissions/assignments per unit, major topics, major guides index, labs - Iterate and then start drafting up sections in the course system with lots of placeholders - Identify the sections for each unit (tabs in the course system) 3. **Unit Implementation** Architect and curriculum developers, supporting content developers start implementing units - Architect assigns units to different developers with supporting content developers helping out as well - Sketching out the plan for each of the session and designing drafts of activities or discussions - Building the assignment or challenges for each unit - Drafting first cut of topic guides for each unit - Initial draft of each of the sections in the course system - Beta testers are testing content as it's ready and giving feedback 4. **Instructor Materials** - Pilot instructor builds final instructor specific materials for each unit - Creating initial slides for each week that would be taught by an expert instructor during first run - Creating any demo or code walkthroughs to present - Drafting any final content ahead of the Pilot 6. **Alpha Pilot Run** - Pilot instructors and Curriculum developers work to deliver the course and iterate during pilot - Run a small number of students through the early alpha course - Take notes along the way and gather lots of feedback - Iterate to improve the course based on the pilot response - Adjust activities, adjust labs and assignments, etc :::info To learn more about this process check out our [designing a new course page](https://hackmd.io/@nesquena/developing-new-courses). ::: ### Course Feedback Loops Building courses is a highly collaborative process, and involves a number of people from CodePath leadership, contract architects, contract developers and others helping out during the course. The development is highly iterative with feedback being provided throughout. As a curriculum architect is working on the course and unit design, there would be frequent syncs with other stakeholders including: - Feedback and review sessions with CodePath leadership - Feedback and review syncs with other curriculum developers - Feedback and review syncs with instructional design contractors, or other educator or faculty advisors Through the process, everyone will learn and the course design will evolve and improve. A course is a living thing, and will continue to evolve and grow each run from the very first in the Pilot, to each run after. We find the first 2-3 runs are essential time to be iterating, changing, tweaking and improving to achieve the desired outcomes. ## Platform Support Beyond just the courses system, the learning platform also supports the following related tools by default: - Application and admission system for enrolling students - Mailer platform for drafting and communicating with students - Discussion system for students posting questions and getting support - Gradebook where our graders can score and provide feedback on submissions - Analytics where you can track the health of your class with standard metrics - Searchable markdown wiki for technical content ## Other Questions ### What is the general way the course runs? Our courses are generally not fully online self-paced. We believe strongly in the importance of relationships and synchronous interactions in the learning process. Our courses generally **run synchronously in one of two ways**: - Blended on-campus facilitated - Professors or students lead one or two live sessions each week, along with student learning outside of class - Blended remote expert-led - Engineers act as instructors and give a lecture each week using Zoom, along with student learning outside of class In either case, students also have access to the course system outside of live class time and can do further reading, watch additional topic videos, and then work on their required submissions. We like to have recorded sessions or videos provided in the course system developed by experts that can then be used as part of the blended format. We find that the combination of live class time with activities/labs and discussion combined with student time doing further investigation outside of class, watching videos, and working on hands-on assignments creates the most effective learning experience. ### Is there a template for how the course should look or be designed? The course system is extremely flexible and supports a wide variety of courses with custom unit lengths, custom pages, custom unit sections, and custom submission types, as well as flexibility in almost every aspect of what is displayed in your course content pack. Each content course pack is simply a folder in a git repo filled with subfolders and lots of enhanced markdown files. As a course architect or developer, you would have access to reviewing multiple other courses as a reference point, and can use other courses as a template for your course. You would be able to see how the iOS course, the Cybersecurity course, and other courses are structured as you start developing your own course. ### What exactly can be in markdown in a course? Pretty much everything about the course materials can be in enhanced markdown, the enhanced markdown also supports expandable text blocks, alerts, conditionals, dynamic data, and other more complex and dynamic templating. This includes all course content in markdown: - Class pages, syllabus - Slides using [Reveal.js](https://revealjs.com/) - Guides using our [open-source guides system](http://guides.codepath.org/) - Assignment descriptions and outlines - Hands-on lab step by step instructions Things that are not markdown include third-party services such as: - Recorded Youtube video playlists - Google Slide presentations (more powerful than markdown slides) - HackerRank assessments Third-party content can then be linked from within the markdown units. ### Do courses require a textbook? Textbooks can be optionally assigned. CodePath uses living digital textbooks in markdown that are free to access, sometimes open source leveraging our [open-source guides system](http://guides.codepath.org/). You can see other [examples here](http://guides.codepath.org/websecurity) and [here](http://guides.codepath.org/compsci). In this way, we have a living and evolving textbook in markdown, searchable and easily accessed via the course system. Think of this as complementary to a full textbook, instead this is the "cliff notes" or more practical indexed technical guides which students can reference during and after the class. ### How do students access the course content? Students will go through some enrollment process, either directly through our platform or through a third-party system. Eventually our operations team works to make sure that each enrolled student is associated with the correct cohort and site. This can take place through our custom application process, or the faculty can send us a list of students and we can gather the student Githubs and then load that into our system. Once students have been properly placed into the correct course/cohort either through our application process or bulk imported by our ops team coordinating with the course organizer, then students can sign into our course system and all of our tools directly using Github as single sign-on. They won't need to remember an account or a password, they simply click and connect their Github and they are all set! The student is then automatically taken to the appropriate course/cohort and even to the correct course unit based on their enrollment. ### Is the course content open-source? No, the course content packs live in private closed repos on Github. However, the content repos are made available to faculty, student leaders, curriculum contractors, and instructors. Everyone involved can collaborate together on the course with PRs, issues, and the normal software workflows on Github repo collaboration. Separately, our [topic guides/online textbook](https://guides.codepath.org/android) is often actually open source. The guides system is powered by an [open source Github markdown wiki](https://github.com/codepath/android_guides/wiki).

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully