Breaking Down CodeEasy's Strategy for Programming education Success.
CodeEasy utilizes a unique set of rules in its curriculum design, setting it apart from traditional programming platforms and tutorials. Our distinct factors include adventure stories, non-sequential presentations of educational topics, and the effective blend of theory and practice.
One Step at a Time
At CodeEasy, students are given only the essential information needed to complete a task. For example, a traditional approach to teaching data types presents a comprehensive table, like so:
This method, backed by the idea of providing all available information, is common in many programming books and tutorials. While we at CodeEasy support this approach for deep dives into specific topics, we believe it can be overwhelming for beginners. Instead, we select one concept, such as 'int', and focus on it. After students master 'int', we assign practical tasks. Only after these tasks are successfully completed do we introduce new theoretical concepts. This way, learning follows a spiral pattern:
Practice, Practice, and... Practice
Practice lies at the core of CodeEasy's teaching methodology. No matter how much computer science theory you've amassed, you're only a programmer once you can solve standard tasks in at least one programming language. Every theoretical concept explained in CodeEasy's lessons is immediately followed by practical application; we don't wait until the end of the lesson. Task complexity increases incrementally. To solve the first task, usually, copying the example from the lesson with minimal changes is enough, while solving the last task requires applying all learned concepts from the lesson and usually previous lessons.
All tasks are automated, freeing teachers from checking solutions manually. Once the student's solution meets CodeEasy's criteria, the task is marked as successfully solved. Metrics such as progress percentage, grades, and automatic course complexity adjustment are calculated based on the students' task performances.
Alternative to Python
Python is a great language for beginners but is not the only option. As a teacher, you may have various reasons to not choose Python. These could range from Python being a high-level, non-statically typed language to its environmental impact. Often, Python is chosen simply because most teachers are familiar with it, and the existing study process is adjusted accordingly. At CodeEasy, we aim to offer teachers and school administrators the freedom to choose Python, C#, JavaScript, or any other preferred language. The choice of technology to teach should consider not just pedagogical reasoning but also local job market trends.
We launched with our first programming language - C#, and plan to add Python and JavaScript soon.
Making Sense of Complexity
When I was studying sorting algorithms at university, our teacher asked us to code 10 different sorting algorithms to understand their workings. I diligently coded several and got a good grade. While I understood how they worked, I didn't grasp why so many existed. A few years later, I took Algorithms 1 and 2 courses by Robert Sedgewick. He not only explained how the algorithms worked but also why they were invented. This context greatly aids understanding and retention. This is the principle behind how we use adventure stories in CodeEasy. Our main character, Teo, encounters problems in the story that require the use of new programming structures, providing context for when and why certain skills or algorithms should be used.
Authored by Experienced Software Developers
The tech world evolves rapidly, making it challenging for educators to keep up. Conversely, many developers lack pedagogical skills, struggling to effectively explain what and why they do things. We believe that the best education results from a partnership between pedagogical expertise and industry knowledge. That's why all our courses are crafted by software developers with at least five years of industry experience, in close cooperation with college teachers.
Follows Best Practices
Every problem in programming can be solved in various ways. Some methods, considered as industry best practices, are more commonly used than others. With our industry knowledge, we've designed CodeEasy to focus on technologies and approaches that align with these "best practices". This concept is highly subjective and difficult to define concretely. For each task, we include an example solution from our teachers that adheres to all the standards we uphold, such as naming conventions, commenting, memory usage, computational complexity, etc.
The attention span of today's teenagers is notoriously short. As platforms like Instagram and TikTok compete for their time, we aim to engage them in programming theory. This presents a unique challenge.
We've merged an adventure story with programming theory to accomplish several objectives:
- Alleviate fear: We remove the stigma around "that terrifying programming thing that is super complicated and I will never get it". Instead, we invite them to immerse themselves in a story, where programming concepts are introduced gradually.
- Make learning enjoyable: By including memes, programming jokes, and captivating storylines, we show that programming can be fun and entertaining.
- Provide context: The story creates situations where students must learn new concepts. This not only makes theory more relatable but also tasks more meaningful.
- Encourage reading: Watching videos can be useful, but reading large amounts of code is a daily necessity for software developers. Engaging with our story requires reading, thus setting a foundation for studying this discipline.
CodeEasy is not intended as a substitute for teachers.
Contrary to what some might think, our aim is not to eliminate the need for computer science educators. Instead, CodeEasy is designed to facilitate the teaching process, equip teachers with the necessary tools, and maximize their time efficiency. By employing CodeEasy, teachers can devote more time to individualized student attention, answer unique questions, and collaboratively work on larger projects like games or websites.