Our Teaching Philosophy
The overall goals of Code12 are to:
- Concentrate on the fundamental building blocks of computer programming.
- Start with procedural programming then introduce simple objects in an intuitive way.
- Encourage experimentation and independent work rather than just following patterns.
Learning Fundamentals: Sometimes Less is More
Code12's goal is to allow students to concentrate on learning, practicing, and problem-solving with the fundamental building blocks of computer programming, while removing the typical barriers that a traditional Java development environment causes (including confusing error messages and complex object-oriented structure).
Code12 is named after the 12 basic programming concepts that we feel are vital for introductory students to learn and practice:
- Function Calls
- Comments
- Variables
- Expressions
- Function Return Values
- If-else
- Object Data Fields
- Object Method Calls
- Function Definitions
- Function Parameters
- Loops
- Arrays
Code12 is designed to teach these 12 programming concepts, ideally in this order, using the Java language in a way that transitions meaningfully to full Java and and an understanding of both procedural and object-oriented programming over time. The Code12 documentation also includes examples and short lessons for these concepts.
Intentionally omitted is class definitions and object-oriented design, as we strongly feel that this should be left until after students have a grounding in the concepts above and as much practice as possible with general programming and problem solving. Nevertheless, you can't get far in Java without some object-oriented programming, so Code12 is designed to provide that transition without needing to switch programming languages completely.
New programmers cannot learn everything at once, so Code12 allows students to progress through the basics without being confused or distracted by other complexities that they haven't learned yet or don't yet understand. To do this, Code12:
- Implements only a subset of the the Java language, significantly improving syntax error messages.
- Checks and enforces indentation, brace style, and other conventions, drastically improving the reporting of structural errors and flagging many common errors.
- Has an adjustable syntax level (corresponding to the progression of concepts 1-12 above), to eliminate error messages that presume knowledge of language concepts that the student has not learned yet.
- Includes a simple and fun API that requires no understanding of object-oriented concepts to get started with, then introduces simple objects in an intuitive way.
- Doesn't require (or use) the Java Class Library, Java Runtime Environment, or Java Development Kit.