# Foundation

Here you'll learn the fundamentals for how the web works, the basics of programming, and how to start shaping your CV as you develop your tech skills.

## Modules

| Name                                                                                 | Weeks |
| ------------------------------------------------------------------------------------ | ----- |
| [HTML & CSS](/course-content/foundation/html-and-css.md)                             | 1     |
| [Git](/course-content/foundation/git.md)                                             | 1     |
| [Intro to Using AI](/course-content/foundation/intro-to-using-ai.md)                 | 1     |
| [Intro to JavaScript](/course-content/foundation/intro-to-javascript.md)             | 4     |
| [Intro to Web Architecture](/course-content/foundation/intro-to-web-architecture.md) | 1     |
| [Databases](/course-content/foundation/databases.md)                                 | 1     |
| [Intro to Backend](/course-content/foundation/intro-to-backend.md)                   | 1     |
| [Intro to Frontend](/course-content/foundation/intro-to-frontend.md)                 | 1     |
| [Career Training](/course-content/foundation/career-training.md)                     | 2     |
| [Intro to Agile](/course-content/foundation/intro-to-agile.md)                       | 1     |
| [Final project](/course-content/foundation/final-project.md)                         | 3     |

Total: 17 weeks

## Learning Goals Overview

### [HTML & CSS](/course-content/foundation/html-and-css.md)

* [ ] Setup VSCode
* [ ] Round-up the [Pre-Course](/course-content/pre-course.md) materials on HTML and CSS
* [ ] Spend a lot of time with hands-on coding practice
* [ ] Learn to work efficiently with your team members
* [ ] Briefly introduce Figma

### [Git](/course-content/foundation/git.md)

* [ ] Understand what version control is
* [ ] Understand what Git is used for
* [ ] Know the difference between Git and GitHub
* [ ] Successfully install and configure Git
* [ ] Practice command line basics
* [ ] Know how to create a repo, branches, commits and push to GitHub
* [ ] Understand the usual flow for saving and sharing changes

### [Intro to Using AI](/course-content/foundation/intro-to-using-ai.md)

* [ ] AI Literacy:
  * [ ] Describe how Large Language Models (LLMs) work at a basic level.
  * [ ] Explain what Generative AI (AI) is, what it's good at, and its limitations.
  * [ ] Identify appropriate and inappropriate uses of AI in the workplace.
  * [ ] Practice how you can use AI to help you learn effectively, rather than just providing answers.
  * [ ] Recognize common risks related to AI usage, such as bias, copyright, hallucinations, misinformation, and privacy concerns.
  * [ ] Reflect on how AI is changing work and skill expectations (and what we don't know yet!).
* [ ] Prompting:
  * [ ] Apply simple prompting techniques to get useful outputs from GitHub Copilot.
  * [ ] Evaluate AI outputs critically for accuracy and relevance.
  * [ ] Integrate AI prompting alongside other learning resources such as documentation, tutorials, and mentors.
  * [ ] Prompt responsibly to support your learning, in line with HYF guidelines and expectations.

### [Intro to JavaScript](/course-content/foundation/intro-to-javascript.md)

* [ ] Understand what JavaScript is and what it's used for
* [ ] Use basic programming concepts such as variable definitions, types and operators
* [ ] Practice reading and fixing errors
* [ ] Use conditional logic to implement more advanced functionality
* [ ] Write basic functions with parameters and arguments
* [ ] Understand global vs local scope
* [ ] Using objects and arrays to store, access and manipulate more complex data

### [Intro to Web Architecture](/course-content/foundation/intro-to-web-architecture.md)

* [ ] Understand the key components of a web application
* [ ] Know what happens when you enter a URL in a web browser
* [ ] Be able to describe the difference between frontend and backend functionality
* [ ] Describe the role of HTML, CSS and JavaScript
* [ ] Understand what HTTP is and its methods
* [ ] How APIs are provided and used

### [Databases](/course-content/foundation/databases.md)

* [ ] Explain what a database is and why we use them
* [ ] Understand basic relational data terminology: table, row, column, primary key, foreign key
* [ ] Perform basic SQL operations: SELECT, INSERT, UPDATE, DELETE
* [ ] Use simple filtering and sorting techniques
* [ ] Understand simple database design & schemas

### [Intro to Backend](/course-content/foundation/intro-to-backend.md)

* [ ] Introduction to Node.js
  * [ ] [What is node and why node?](https://www.youtube.com/watch?v=pU9Q6oiQNd0)
  * [ ] V8 vs the browser that runs js?
  * [ ] What can you build with Node.js?
    * Utilities
    * Web server
    * Much more
* [ ] Building a simple webserver
  * [ ] Creating simple GET endpoints to return data, including from databases
* [ ] Sending requests
  * [ ] What is Postman
  * [ ] Making GET, POST AND DELETE requests to APIs using Postman
* [ ] Database interaction
  * [ ] What is CRUD (Create, Read, Update, Delete)
  * [ ] CRUD vs REST
  * [ ] Connecting to a database using JavaScript
  * [ ] Executing queries (i.e. CRUD)

### [Intro to Frontend](/course-content/foundation/intro-to-frontend.md)

* [ ] Understand the browser environment
  * [ ] HTML vs CSS vs JS
  * [ ] Client vs server
  * [ ] Where is the script tag being loaded
* [ ] How to use the DOM to implement dynamic functionality
  * [ ] What is it and what do developers use the DOM for?
  * [ ] DOM manipulation
    * [ ] Get elements
    * [ ] Insert elements
    * [ ] Element manipulation (style, innerHTML, text)
    * [ ] Window object
    * [ ] Document object
* [ ] How to use Event Listeners to implement interactivity
  * [ ] Document onload
  * [ ] Click, submit, change, input - Focus on usage
* [ ] Displaying external data
  * [ ] Fetch (No promise explanation! Focus on usage)

### [Intro to Agile](/course-content/foundation/intro-to-agile.md)

* [ ] What is project management and why is it important
* [ ] Understand the main principles and values of Agile
* [ ] Understand the very basics of Scrum
* [ ] Understand how to use a simple tool to manage tasks, backlog, a board, and a simple project workflow
* [ ] Be able to apply basic prioritisation using MoSCoW
* [ ] Feel equipped to apply basic task and project organisation in your next project (e.g. final project)

### [Career Training](/course-content/foundation/career-training.md)

* [ ] Understand where to look for suitable jobs and internships
* [ ] Understand what you should do in order to be an attractive candidate on the Danish job market
* [ ] Learn how to identify and communicate your competencies
* [ ] Understand what HYF can do to support you on your job hunt
* [ ] Know how to assemble an effective CV and LinkedIn profile
* [ ] Learn how to perform well in a screening interview

### [Foundation Project](/course-content/foundation/final-project.md)

* [ ] Practice working in a team on the same project
* [ ] Develop self-guided learning skills (i.e. finding answers to your own problems)
* [ ] Practice building a project from a brief
* [ ] Practice interpreting requirements and making assumptions
* [ ] Developing your own additional requirements (i.e. adding your own flair to the project)
* [ ] Practice breaking big problems down into smaller tasks
* [ ] Managing your own tasks within a tight deadline
* [ ] Understanding how and when to ask for help at the right time
* [ ] Taking a project from idea to completion, including deploying it to the web


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://program.hackyourfuture.dk/course-content/foundation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
