a

General info

This course is an introduction to modern web development with JavaScript. The main focus is on single page applications implemented with React and supporting them with RESTful web services implemented with Node.js. New for this year's course is a part on GraphQL. GraphQL was developed by Facebook to be an alternative for REST for implementing APIs.

Other topics include debugging applications, configuration, managing runtime environments and NoSQL databases.

Prerequisites

Participants are expected to have good programming skills, basic knowledge of web programming and databases, and mastery of basic use of the Git version management system. You are also expected to have perseverance and a capacity for solving problems and seeking information independently.

Previous knowledge of JavaScript or other course topics is not required.

Course material

The course material is meant to be read one part at a time, reading each part all the way through before moving on to the next one.

The material contains exercises, which are placed so that the preceeding material provides enough information for solving each exercise. You can do the exercises as you encounter them in the material. It can also be beneficial to read all of the material in the part before starting with the exercises.

In many parts of the course, the exercises build one larger application one small piece at a time. Some of the exercise applications are developed through multiple parts.

The course material is based on incrementally expanding example applications, which change from part to part. It's probably best to follow the coding along, and independently make small modifications to the code. The code of the example applications for each step of each part can be found on GitHub.

Taking the course

The course contains nine parts, the first of which is numbered 0 for historical reasons. A part loosely corresponds to one week of studying. The parts are published in a faster phase, however, and the speed of completing the course is quite flexible.

Proceeding from part n to part n+1 is not sensible before good enough know-how of the topics of part n has been achieved. In pedagogic terms, the course uses mastery learning, and the intent is for you to proceed to the next part only after doing enough of the exercises of the previous part.

You are expected to do at least all of the exercises that are not marked with a star(*). Exercises marked with a star count towards your final grade, but skipping them does not prevent you from doing the compulsory exercises in the next part.

The speed of completing the course is quite free, and the exercises can be submitted up until 23:59 10th January 2020.

Statistics on the time used for exercises which have already been submitted on different parts of this course can be found from the submission system.

Grading

The course can be taken as a shorter course worth 3 credits, or as the full course worth 5-8 credits depending on the number of submitted exercises.

The amount of credits and the grade are determined by the number of submitted exercises, so also the exercises without stars count towards your final grade. There is also a course exam, which must be passed. The exam does not count towards your grade.

If you want university credits, save your student ID number to the "my submissions" view in the submission system. To register for university credits that are provided by Open university, you must have a Finnish social security number.

You can download the course certificate from the submission system once you have completed enough exercises for a passing grade. For getting the course certificate, a Finnish social security number is not needed.

3 credits

For three credits, you must submit all compulsory exercises (without stars) for parts 0-3.

For university credits, you also must pass the 3 credit course exam. The exam is done on Moodle. You can access Moodle through the course page of the open university. The last exam date is 10th January 2020. You can take the exam only after submitting all of the required exercises. Note that you must sign up for the exam on 9th January 2020 at the latest.

Exam results can be found from the "my submissions" tab of the submission system no later than 4 weeks after taking the exam (exams might be marked slower during July). Remember to save your student number to the submission system.

The three credit course is graded pass/fail.

For the course certificate, you do not need to attend the course exam or register to the open university course.

The three credit course can later be extended to the 5-8 credit version. If you are working towards 5-8 credits from the beginning, there is no need to take the 3 credit course exam.

5-7 credits

For 5-7 credits the number of credits and the grade are based on the total number of submitted exercises for parts 0-7 (this includes the starred exercises).

Credits and grades are calculated as follows:

exercises credits grade
138 7 5
127 6 5
116 5 5
105 5 4
94 5 3
83 5 2
72 5 1

For university credits the 5-7 credit course also requires passing the course exam. The exam is done on Moodle. You can access Moodle through the course page of the open university. The last possible date for taking the exam is 10th January 2020 Note that you must sign up for the exam on 9th January 2020 at the latest.

You can take the exam only after submitting enough exercises for 5 credits. In practice it is not wise to take the course exam immediately after the critical amount of exercises has been submitted. The exam is the same for 5-7 credits. The exam does not count towards your grade.

Exam results can be found from the "my submissions" tab of the submission system not later than 4 weeks after taking the exam (exams might be marked slower during July). Remember to save your student number to the submission system.

For the course certificate, you do not need to attend to the course exam or register to the open university course.

8 credits

By submitting at least 22/26 of the exercises for part 8 of the course, GraphQL, you can get one additional credit. Part 8 can be done any time after part 5, because its contents are independent from parts 6 and 7.

Exercises in part 8 do not count towards the grade for the 5-7 credit course.

Course certificate

Even if you do not register to Open university course and take the exam, you can download the course certificate from the submission system once you have completed enough exercises for a passing grade. For getting the certificate, a Finnish social security number is not needed.

fullstack content

Expanding a previously completed course

If you have already taken the course either as a MOOC or as a University Course, you can now expand your course.

You can substitute parts of this course with parts you have previously submitted. For example, if you have previously completed the 3-credit course, you can substitute parts 0-3 of this course with the parts you have previously completed. You can only substitute parts in sequence, so you cannot for example substitute parts 0 and 2 but now complete part 1.

You can only substitute whole parts. For example, if you have previously done 50% of the exercises for a part, you cannot substitute those exercises but need to start over that part on this course.

"Credit transfer" of previously completed parts happens in the my submissions tab of the submission system.

If you have previously passed the course exam (excluding the exam for 3-credit course) and you are now expanding your course, you do not have to do the exam again.

Submitting exercises

The exercises are submitted through GitHub and marking the exercises as done on the submission system.

If you are submitting exercises from different parts to the same repository, use some sensible system for naming your directories. You can of course create a new repository for each part. If you are using a private repository, add mluukkai as a collaborator.

Exercises are submitted one part at a time. When you have once submitted exercises for a part, you can no longer submit any more exercises for that part.

The MOSS system for detecting plagiarism is used to check exercises submitted to GitHub. If code from model answers is found on GitHub, or if multiple students hand in the same code, the situation is handled according to the policy on plagiarism of the University of Helsinki.

Many of the exercises build a larger application bit by bit. In these cases, submitting only the completed application is enough. You can make a commit after each exercise, but that is not compulsory.

Full stack project

A Full stack project worth 1-10 credits will be available through the Open University.

For the project, an application is implemented in React and/or Node. Implementing a mobile application in React Native is also possible.

The number of credits is based on hours of work done. One credit is approximately 17.5 hours of work. The work is graded pass/fail.

It is possible to complete the project as a pair or a group.

For more information, see the open university page.

Interview promise

Our collaborators Houston Inc, Terveystalo, Elisa and Konecranes have given a promise of a job interview for everyone who completes the course and the project work with maximum credits (8 + 10).

This means that the student can, if they so choose, sign up for a job interview with a collaborator who has given the promise. The teacher of the course, Matti Luukkainen, will send instructions to the student after the courses have been completed with maximum credits.

Before you start

Using the Chrome browser is recommended for this course, because it provides the best tools for web development. Another alternative is the Developer Edition of Firefox, which provides the same range of features.

The course exercises are submitted to GitHub, so Git must be installed and you should know how to use it. Instructions for Git can be found in this tutorial.

Install some sensible text editor that supports web development. Visual Studio Code is highly recommended.

Don't code with nano, Notepad or Gedit. NetBeans isn't very good for web development either. It is also rather heavy in comparison to Visual Studio Code.

Also install Node.js. The material has been done with version 10.0, so don't install anything older than that. If you already happen to have Node installed, anything newer than 8.0 should work just fine. Installation instructions are here.

Node package manager npm will be automatically installed with Node. We will be using npm actively throughout the course. Node also comes with npx, which we'll need a few times.

Typos in the material

If you find a typo in the material, or something has been expressed unclearly, or is simply bad grammar, do a pull request to the course material in repository https://github.com/fullstackopen-2019/fullstackopen-2019.github.io. For example, the markdown source code of this page can be found in the repository at https://github.com/fullstackopen-2019/fullstackopen-2019.github.io/edit/source/src/content/0/en/part0a.md

At the bottom of each part of the material is a link Propose changes to material. By clicking the link you can edit the source code of the page.