Curriculum

The MVCode Learning Philosophy

MVCode uses project based curriculum to teach children coding and computer science. This “reorganizes” a curriculum around student projects as opposed to a fixed scope and sequence like Common Core. The benefit is that students who complete projects may understand the subject matter more deeply. The challenge with Project Based Curricula is that they are often hard to do at scale, and require a lot of teacher guidance.

Project Based Learning

With this in mind, MVCode tries to solve the challenges in 2 ways. First, we have built an interactive online project based curriculum that allows students to progress independently. This works well since much of our subject matter (coding and computers) is online, so it makes sense to have them proceed on computers. We also use technology (mobile apps, push notifications, live remote help) as much as possible to give students and parents a rich and rewarding experience.

Robotics

However, with robotics, students often need guidance from trained instructors in a more intensive way. We have built a scope and sequence for our robotics education that allows to students to simultaneously build and solve engineering challenges. Coding involved in robotics is often both simple (in terms of quantity of code) and very complex (in terms of understand complex Math and algorithms needed to interact with real world phenomena)

Student Teacher Ratios

The second way we handle Project Based Learning challenges is by having a lower student/teacher ratio. We are careful to staff our program with trained instructors who have enough time to help students. We aim to provide continuous feedback to families, who are primary motivators for children.

Independent Projects and Common Core

Our goal is to enable students to create independent coding and robotics projects by the time they reach in high school. This will put them in a great position. Some subjects that they learn while coding are not in the same order as common core. For example, cartesian coordinates (grade 5), algebra (High School) trigonometry (High School) are such an important part of programming that they taught much earlier. This is one advantage that coding has over more didactic learning approaches such as Math Tutoring. Students naturally end up understanding concepts across a wide variety of subjects because they are more motivated to understand - it is often required to finish their projects.

Programming Languages

We use developmentally appropriate programming environments depending on student developmental phases. When students are younger, they work primarily in visual environments such as MIT Scratch which are easier and more forgiving. As they progress, much learning takes place in Javascript. We chose Javascript given that it is ubiquitous, web-accessible and easy to understand. It avoids complex configuration requirements necessary for other common teaching languages such as Java or Python. These languages are great for learning computer science concepts, but often require a custom development environment and much configuration. Once students understand computer science fundamentals, there is a much broader array of languages available to them, and most concepts translate well from one language to others.

Developmental Phases

We have divided up our curricula into 4 distinct developmental phases. Children typically fall into one phase, and some may move faster or slower through those phases as they progress. This sequencing gives familes and understand what is truly involved in learning to code, as well as its long term benefits.

MVCode Student Development Phases

Phase 1: Literacy Fundamentals

Grades 1-3

Literacy requirements are more rigorous for coding than in school. Students must be able to read, follow directions, write, use a desktop computer, understand arithmetic and cartesian coordinates. During this phase, students often work in MIT Scratch or very basic Javascript.

Phase 2: Programming Fundamentals

Grades 2-8

At this stage, we teach students the fundamentals of programming. How to use variables, loops, functions to create simple animations and games. Students are typically externally motivated at this stage and require a large amount of help from staff. Scope of platforms is typically well constrained to platforms. Most coding here is done in Javascript (as well as other platforms such as Scratch and Minecraft) Students may start this phase as late as 8th grade.

Phase 3: Integrated Projects, Advanced Math and Robotics

Grades 5-8

Students at this phase learn more advanced math and physics in order to build more sophisticated games, apps, and simulations. They learn about version control, code structure. They learn about multiple number systems (binary, hex), algebra, trigonometry, newtonian physics. They learn computer science concepts such data structures, algorithms, big O notation. At this phase, we encourage students to start using industry standard such as Unity, Git, HTML, Blender, CSS or other tools as necessary.

Students who understand programming fundamentals can proceed to learn basics of robotics. Circuits, sensors, servos, signals, calibration and electronics fundamentals. Projects are typically well defined. Students learn how to solve hardware problems through process of elimination and first principles. We prefer "open platforms" such as Arduino which expose students to a wider array of components, concepts and challenges. Robotics environments typically include Arduino and C programming.

Phase 4: Independent Projects

Grades 6-8

Students define and create independent and original projects. They are able to complete projects themselves. When, they can solve engineering problems from first principles, process of elimination and internet research. They can aid other students to solve individual problems. At the end of this stage, students are prepared for more advanced and intensive opportunities such as paying work, competitions or research projects.