Skip to content

dine/curriculum

 
 

Repository files navigation

HackYourFuture Curriculum

Here you can find an overview of the HackYourFuture program. It gives insight in how our program is structured, organized, what you can expect from the modules that we teach and last but not least where we teach and where you can find support during the week. Our half year course is divided into modules that last 3 weeks with exception of the project module that lasts 6 weeks. Below you can find a short listing of the contents and deliverables/learning goals of the different modules. The headers of the different modules link to the actual repositories that are used by teachers to post assignments/reading materials etc. Be aware that some of the modules make use of more than one repository.

When do we teach?

Class on Sunday

Class is every Sunday from 12.00 to approximately 16/16.30.

Online support

During the week students work at home on the given assignments or reading material provided by the teacher. Teachers and mentors are available during the week on Slack to provide support and or answer questions related to the given homework.

How do we teach?

Modules

At HackYourFuture we teach in modules. The modules can be seen as a three week sprint wherein the teachers set clear learning goals for the end of each module. The list of module goals should be used by students to check if they understood all the core concepts of a certain module.

What do we mean by module goals?

Module goals can be read as: "by the end of this module, students should have a familiarity with and basic understanding of the following"

Come prepared!

Students are expected to finish all reading material before class, teachers provide students with reading material (mostly on Wednesdays) introducing the concepts that will be discussed in the upcoming session. Students are expected to always come prepared to the class on Sunday.

What tools do we use?

Github

Our Github repository contains all the specifications and learning goals for the different modules. It's advised to get yourself familiar with Github. How to actually work with Git, a version control system, will be covered during the JavaScript modules. If students did not follow this modules yet they at least should be able to navigate and find course material inside our Github repository.

Slack

Slack is used to communicate between teachers and students during the week. Each class has their own channel in Slack where module specific questions can be asked. We require our students to be active on Slack and ask questions when they get stuck. Students are off course also stimulated to help each other out.

Trello

Trello is where students hand in their homework and also receive feedback on their assignments every week. It's a commonly used tool for project management in workspaces and valuable to know your way around it.

What do we teach?

HTML is the standard markup language for creating Web pages. CSS is a language that describes the style of an HTML document. This module will introduce the basic concepts of HTML5 and CSS. We spend time getting you familiar with your text editor and handy developer tools. After this we will focus on responsive web development. Making responsive websites is an important part of front-end programming. You will learn how to make your websites responsive by using media queries using a “mobile first” approach. Last but not least we will spend time practicing some soft skills that we think are important for becoming a good developer. These include: give and receive feedback to your fellow students, presenting and explaining your work.

Module goals

  • Basic understanding of HTML5 and CSS (DOM, semantic elements)
  • Know how to organize your files
  • Know your way around your text editor
  • Feel comfortable working with the console
  • Properly indent your code
  • Properly naming classes, id's
  • Responsive mobile first development
  • Know "good" and "bad" practices when it comes to HTML
  • Get an understanding of what good resources are on the web
  • Give receive/feedback from/on fellow students
  • Presenting and explaining your work to others

The command line (cli, shell) is the interface between you (the user) and the operating system which interprets your commands and allows the computer to respond to your command. In this module two half day sessions are spend to get students familiar with the command line.

In this repo you can find a very nice overview of some of the fundamental javaScript concepts

Module goals

JavaScript:

  • What is JavaScript and where can you use it for
  • Basic Data Types
    • Strings
    • Numbers
    • Array
  • Values
  • Operators
  • Variables
  • Naming conventions
  • Loops (for and while)
  • Functions
  • Closures
  • Scopes
  • Advanced Data types
    • Objects
  • String and Array Manipulations
  • Basic DOM manipulations
  • Code commenting

CLI:

  • To know the terminal/bash/command line for UNIX based systems.
  • Navigate the file system without using a UI explorer.
  • Copy, rename and move files with terminal commands.
  • Learn output redirection, piping on the terminal.
  • Write basic shell scripts to ease the programming life.

Module goals

JavaScript:

  • JSON
  • Code debugging using the browser
  • Functions + JSON/Arrays
  • Code flow (order of execution)
  • (Capturing user input)
  • Structuring code files
  • Events
  • Callbacks and Promises
  • XHTTP Requests
  • API calls
  • Async VS Sync
  • Polling

Git:

  • Have an understanding of problems for developers working together on software
  • Have an understanding of the need for version control software
  • Have an understanding of what GIT is and what problem it solves.
  • Understand what a commit is and how it represents a certain unit of work
  • Know how to create a new repository using clone and init
  • Know how to add / remove files to that new repository
  • Know how to commit and push files in that new repository.
  • Have an understanding of branches and how they can be used.
  • Know what a remote is and know how to retrieve remote information from git: git remote [show] [-v] [-vv]
  • Know what the difference between the three types of branches are: : local, local tracking, remote tracking.
  • Know how to navigate between branches and what git commands to use for them.
  • Have an understanding of what HEAD means.

Module goals

JavaScript:

  • (re)writing data structures (in JSON)
  • Map, reduce filter Reading Week 7 Homework Week 7
  • Closures
  • Promises
  • Test Driven Development

GIT

  • Git Workflow

Node.js is a server-side platform built on Google Chrome's JavaScript Engine (V8 Engine).For almost any web application, it is essential to have a backend. The backend is a place where we, the developers, can store our data, communicate with users and let the users communicate with us, do smart things like calculations, data processing etc.

There are many languages for this. We might've heard of Java, C, C++, Go, Python, Ruby, PHP and the list goes on.

There are two reasons why we at HYF choose Node.JS over others:

  1. You already know JavaScript, so it's easier to get started than other languages
  2. Node.js is great for making web APIs because it is asynchronous by nature and thus allows for high input/output. By this we mean that it allows many users to make very light requests at the same time.

What will we learn?

  • What is Node.js?
  • Using Node Package Manager (NPM)
  • Using require to include modules
  • Using http to handle http requests and respond
  • Using fs to read from and write to files.
  • Using process to read arguments from the CLI
  • Using express to make a RESTful API

There are millions of web applications and native (iOS/Android) out there. Now, say, today we want to create our own application, and we want it to be awesome and modern and at least as good as all those others. If you know how to write JavaScript, you have what it takes to write ANY web application that's out there. Literally. ANY. Remember, everyone running a web application must follow the same rules, and use the exact same building blocks: HTML/CSS/JavaScript. So why should we learn Angular? First, why use any library or framework at all? Answer: >99% of all the things you want to do have been done before (no worries, that 1% will still be enough to be unique). >99% of all the problems you run into have been solved by others before you. Fortunately, the world of software has been built with sharing and freedom in its heart. So we can Stand on the Shoulders of Giants.

Module goals

  • How to use a Transpiler to convert ES6 into browser-safe JavaScript
  • How to use a Bundler to combine multiple modules into one, browser-safe file
  • How to use a TypeScript transpiler to convert TypeScript into browser-safe JavaScript
  • What is a Model?
  • What is a View?
  • How to setup an Angular application using the Angular CLI
  • How to create Components, component controllers and component templates using Angular.
  • How to create Services using Angular.

What is a database? A place to store “things”. Could be as simple as a phone book (physical) or as complex as storing all the inventory for Amazon.com. Why use databases? Easier than having data all over the place. Puts the problem of collecting, storing, sorting and searching data in a single place. There are two primary types of database systems - relational and NoSQL. Relational databases have tables that relate to one another and can be “joined” ACID vs BASE

Module goals By the end of this module, students should have a familiarity with and basic understanding of the following:

  • Entities
  • The relational model
  • The Structured Query Language (SQL)
  • The construction of a database system
  • MySQL as an example of a relational database system
  • Non-relational data and NoSQL
  • MongoDB as an example of a NoSQL database

In this module students work together in a team on a predefined project. The goal of this module is to combine all your acquired skills from the last modules into a project. In this course requirement analysis and project management are core themes while building a full-stack project.

Module goals

  • Build a full-stack project, using all the different technologies you've acquired during the HackYourFuture program.
  • Show that you can work and function in a team
  • Get familiar working with Scrum
  • Get your CV and LinkedIn ready for when you are ready to go to interviews
  • Get an understanding of how (technical) interviews go in the Dutch job market

Our curriculum is subject to CC BY copyright. This means you can freely use our materials, but just make sure to give us credit for it:)

About

Overview of the HackYourFuture program.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published