# Webscripting

Welcome to the Webscripting course. This course will give you a better and deeper understanding in how programming languages are used in a web context. JavaScript is a very popular programming language. Besides being the only option if you want to create dynamic webpages in the browser, it also very popular on the server side and even on non web projects. Not only will we see how JavaScript can be used, but we will also take a look at some more general software development principles. This courses is divided in the following chapters:

  • JavaScript programming language: This course expects you to have some knowledge about programming in general, and in this chapter we will take a look at some more specific and more advanced JavaScript language topics. ES6 has introduces many useful features that make JavaScript a very powerful language to tackle almost any problem or challenge.
  • Managing software projects: These days it is impossible to start from scratch. Many useful libraries and frameworks exist to build on. To manage this some techniques and tools exist. Not only will we learn on how to use these tools and techniques, we will also learn on how to build software that can be used as a tool for other or future projects.
  • Frontend development: In a web context, there are two main places that can run code. In this chapter we will focus on how to use JavaScript on the client side. We will take a look at the popular Vue library/framework that will speed up development and provides many solutions to very common problems.
  • Backend development: Many applications depend on a server that provides logic and processes the data. In this chapter we will take a look at the popular Node Express framework that makes it possible to rapidly build and develop backend applications using REST API's. We will take a look on how a database can be used to store and manage data.

Frontend vs backend

# Lifelong learning

The technology domain in general is an ever changing and evolving domain. What you knew yesterday might not apply anymore, what you know today might not applicable tomorrow. Technology improves all the time. It is impossible to create a single course that covers it all. This course functions only as a step to more and other information. This course will provide a solid base to get some understanding in how everything works. Your goals or challenges will quickly surpass what we are able to bring you. Therefore it is important that you learn to gather the information you need for yourself. During the course many pointers to extra sources of learning or information will be provided. Add these sources to your toolbox in order to be successful in the future.

Any fool can know. The point is to understand.

–Albert Einstein

I encourage anyone to play, tinker, hack, experiment, try out new things... This is the easiest way to learn and understand things.

# Contributions

This course is provided on GitHub as an open source project: github.com/sillevl/course-webscripting.

If you want to improve this course simply by correcting spelling errors, improve or add content, feel free to contribute by creating pull requests.

If you are not able to make the changes for yourself, feel free to create an issue.

# Chapters

  1. JavaScript advanced
    1. NodeJS
    2. Arrow functions
    3. Classes
    4. Array and Object methods
    5. Destructuring
    6. Modules
      1. CommonJS
      2. ES6 Modules
    7. Callback hell
    8. Promises
    9. Async/Await
  2. Managing Code
    1. NPM Packages
    2. Semantic Versioning
    3. Readme
    4. Code Style
      1. Linters
    5. TypeScript
  3. Building REST API's (backend)
    1. Node Express
    2. Connecting Databases (ORM)
    3. .env files
  4. Vue.js (frontend)
    1. Vue.js as a library vs framework
    2. Declarative rendering
    3. Conditionals and loops
    4. Handling user input
    5. Single File Components (SFC)
    6. Vue.js lifecycle
    7. Methods
    8. Props
    9. Events

# Exercises

Under construction

# Assignments

Under construction

# Software

In order to follow the examples and create exercises and challenges, the following software should be installed:

Optionaly:

# Organisation

This course will be organized in multiple different ways:

  • On campus sessions: Mostly theory is given. These sessions are scheduled in the class schedule and take place at the campus.
  • Online sessions: Mostly theory is given. These sessions are scheduled in the class schedule and can be followed at home online.
  • Independent learning: Theory that must be processed individually at your own pace. Mostly with a deadline.
  • On campus exercising sessions: Sessions that are scheduled in the class schedule that will focus on the practical side of the course. Many exercises and challenges will be given to process at your own pace or with a deadline. This is the perfect moment to ask questions and get feedback.
  • Independent exercising: Time to continue the challenges and exercises that are provided during the on campus exercising sessions.

# Course Evaluation

For this course you are evaluated in 2 different ways:

  • 50% Written exam: Examination in the dedicated examination period in January.
  • 50% Permanent evaluation: Process and exercise evaluation during the semester. Important: For this part, only 1/3th of the scores can be retaken!

For more information and the official details, please read the courses ECTS document.