Comment on page


Hello! And welcome to the HackYourFuture Belgium Curriculum.

Programming is Communication

Software creates a complicated series of communications between developers, computers, users and society in general. This diagram gives a simplified overview of the different channels of communication you'll explore while at HYF Belgium:
rhetorical situation

Layers of Skills

Software Development is a many layered skill. One way to break it down is to think of these layers:
  1. 1.
    Source Code: The basic literacy of programming
    • Learning the key words (vocabulary) and syntax (grammar) for your programming language
    • Being able to read your code out loud, tracing it's execution as a computer would
    • Understanding what the developer wanted to say with their code
    • Welcome to JS will focus on these skills_
  2. 2.
    Machine Instructions: The basic mechanics of programming
    • Understanding the life-cycle of your program
    • Understand how the computer will interpret your source code to create a running program
    • Understand what about your code matters to the computer, and what matters to people
    • Fixing syntax errors that occur when you try to run your code
    • Predicting which lines of code will be executed in which order
    • Predicting how each line of code will change what is stored in program memory
    • Reading error messages & callstacks to fix fix semantic errors that occur when you run your code
    • Debugging will focus on these skills_
  3. 3.
    Problem Solving & Algorithms: Breaking down large problems to be solved in small steps
    • Understanding a coding challenge and being able to break it down in different ways
    • Determining which solution strategies are correct for which types of problems
    • Understanding how test cases are used to describe your solution strategy
    • Identifying the best language feature to use with your strategy
    • Reading test cases to understand how code is supposed to behave
    • Using Test Cases to structure your solution design process (Test Driven Development)
    • Identifying and isolating mistakes in your code by reading failing test cases
    • Demonstrating your code does what you think it does by passing test cases
    • Behavior, Strategy, Implementation Module will focus on these skills
  4. 4.
    Software Design: Organizing smaller pieces of code into full software solutions
    • Every module starting with Separation of Concerns will focus on these skills
  5. 5.
    Planning and Collaborating: Breaking down large problems into tasks that can be shared
    • This is introduced in the Agile Develompent module and practiced in every other module
  6. 6.
    Context: Who uses a program, what is it's impact, and where did it come from?
    • Real people will use your software, is it accessible to them?
    • Your software exists in a society, what it's impact on others?
    • Someone planned and build your software, what were their motivations?

The Modules

Our curriculum is constantly evolving, check out your class repository to see which modules and lesson plans your class will be studying.