# 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).