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 and GraphQL web services implemented with Node.js. New for this year's course are parts on TypeScript, React Native and Continuous integration.

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 preceding material provides enough information for solving each exercise. You can do the exercises as you encounter them in the material, but 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 code along while making small modifications independently. The code of the example applications for each step of each part can be found on GitHub.

Taking the course

The course contains eleven parts, the first of which is numbered 0 for historical reasons. A part corresponds loosely to one week (averaging 15-20 hours) of studying, but the speed of completing the course is 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 you are only intended to proceed to the next part 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 an asterisk(*). Exercises marked with an asterisk 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 flexible, and exercises can be submitted until 23:59 EET on 15 February 2021.

After that, submission system shall be closed for two weeks until 2021 edition will start 15.3.2021. There will not be much changes, so you can just keep coding!

However, note that the deadline for taking exam for University of Helsinki credits is 10.1.2020.

Exercise completion time statistics can be found via the submission system.

Grading

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

The number of credits and the final grade are determined by the number of submitted exercises, including those that are not marked with an asterisk.

If you would like university credits, there is also a course exam which does not count towards your final grade, but must be passed. To register for university credits that are provided by Open University, you must have a Finnish social security number.

Once you have completed enough exercises for a passing grade, you can download the course certificate from the submission system. A Finnish social security number is not required.

3 credits

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

For university credits, the three credit course also requires passing the course exam. The exam is done on Moodle, which can be accessed via the Open University course page once you have signed up for the exam.

The last possible date for taking the exam is 10 January 2021. Note that you must sign up for the exam by 9 January 2021, at the latest. It is also possible to take the exam in the 2021 edition of the course starting 15th March 2021.

Exam results can be found from the my submissions tab of the submission system no later than four weeks after taking the exam, but bear in mind that exams may be corrected slower during July. Remember to save your student number in the submission system!

The three credit course is graded pass/fail.

You do not need to attend the course exam or register to the Open University course in order to obtain the course certificate.

The three credit course can later be extended to the 5-9 credit version, but if you are working towards 5-9 credits from the beginning, there is no need to take the three 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 (including exercises marked with an asterisk).

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 three credit course also requires passing the course exam. The exam is done on Moodle, which can be accessed via the Open University course page once you have signed up for the exam.

The last possible date for taking the exam is 10 January 2021. Note that you must sign up for the exam by 9 January 2021, at the latest. It is also possible to take the exam in the 2021 edition of the course starting 15th March 2021.

You can only take the exam after submitting enough exercises for five credits. It is not wise in practice to take the exam immediately after submitting the critical number of exercises. The exam is the same for 5-9 credits and does not count towards your grade.

Exam results can be found from the my submissions tab of the submission system no later than four weeks after taking the exam, but bear in mind that exams may be corrected slower during July. Remember to save your student number in the submission system!

You do not need to attend the course exam or register to the Open University course in order to obtain the course certificate.

8 and 9 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.

By submitting at least 24/27 of the exercises for part 9 of the course, TypeScript, you can get one additional credit. It is recommended that you complete parts 0-7 before taking part 9.

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

React Native part's credits

By submitting exercises for part 10 of the courses, React Native, you can earn either one or two additional credits. Earning one credit requires you to submit at least 19 exercises whereas earning two credits requires you to submit at least 26 exercises. More information about the part's prerequisites, exercise submission and credits can be found in the part 10.

Continuous integration part's credits

By submitting exercises for part 11 of the courses, Continuous integration/delivery, you can earn one additional credit. Earning the credit requires you to submit all of the 22 exercises of the part.

More information about the part's prerequisites and exercise submission can be found in the part 11.

How to get your credits

Note that in order to receive university credits, you need a Finnish social security number.

If you want to receive credits, save your University of Helsinki student number to the exercise submission system

fullstack content

If you are not a student at the University of Helsinki, you can get a student number by registering for the course through Open University.

You will receive your credits after you have submitted enough exercise for a passing grade, passed the exam and let us know through the exercise submission system that you have completed the course:

fullstack content

You can view your grade in Weboodi approximately four weeks after notifying us.

Course certificate

Even if you do not register to Open University for the exam, you can still 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.

Expanding on a previously completed course

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

Expanding on Full stack open 2019

You can just pick up where you left off! If you wish to resubmit a whole part, please contact the course personnel via email or Telegram @mluukkai, with your GitHub username and which parts you would like to have deleted from your submissions.

Expanding on other instances of this course

You can substitute parts of this course with parts you have previously submitted. For example, if you have previously completed the three 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 substitute, for example, parts 0 and 2 but not complete part 1.

You can only substitute whole parts. For example, if you have previously submitted 50% of exercises in a part, you cannot substitute those exercises - you would need to start over on that part of the 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 the three credit course), and are now expanding your course, you do not have to do the exam again.

Changes since last year

  • There are only minor changes to parts 0-4.
  • Part 5d, end-to-end testing using the Cypress.io library, is almost completely new material. Using custom hooks has been moved from part 5 to part 7 with some new content.
  • Part 6, which is about Redux, concentrates on the new, hook-based, Redux API.
  • The material on react-router in part 7 has also been updated to use Hook API. Semantic UI React has been replaced with the MaterialUI library due to lack of maintenance.
  • Part 8 on GraphQL has major updates, especially on Apollo Client, which finally has stable Hook-based APIs.
  • Part 9 on TypeScript, part 10 on React Native and part 11 on CI/CD are completely new.

Last year's course material can be found here.

Submitting exercises

The exercises are submitted through GitHub and marking them 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. Once you have submitted exercises for a part, you can no longer submit any more exercises for that part.

A system for detecting plagiarism is used to check exercises submitted to GitHub. If code is found from model answers or 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.

Sign up for the exam

For official university credits you need to pass the course exam that is done in Open University Moodle. Note that it is only possible to register for the exam if you have a Finnish social security number or you are able to register for the course in Helsinki in person!

Follow the instructions below to gain access to the course Moodle space:

  • Enroll on the course through Open University by 9 Jan 2021 here
  • You will receive the Moodle-link and the course key through email within 24 hours after course registration.
  • User ID. Do you study at University of Helsinki or other HAKA member institution?

    • If yes, use your username and password to log in to Moodle.
    • If no, please activate your University of Helsinki user ID to access Moodle. You will receive more information on the user ID after registration through email.
  • Sign into the Moodle space with your University of Helsinki / HAKA user ID and the enrolment key.
  • After course enrollment, save your University of Helsinki student ID number to the my submissions tab in the submission system.
  • If you used your institution’s HAKA identification to log in to Moodle, please send a message to avoin-student@helsinki.fi and ask for your University of Helsinki student ID.

    • Send the message from the same email address you used for course enrollment.
    • Include your full name, date of birth, name of the course in the email.

Please note!

  • You only need the Moodle access for the exam, not for accessing the course certificate.
  • Credits for the course are only available to students who have successfully registered for the course through the Open University and completed the course according to the instructions.

Electronic enrollment is available if you meet one of the following criteria:

You have a Finnish personal identity number (format: xxxxxxxx-xxxx), or an online banking ID, or

After course enrollment: Note that you also have to save your student ID number to the my submissions tab in the submission system . If you used your institution’s HAKA identification to log in to Moodle, please send a message to avoin-student@helsinki.fi and ask for your University of Helsinki student ID.

Include your full name, email address used for enrollment, date of birth, and the name of the course in the email.

Full stack project

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

For the project, an application is implemented in React and/or Node, though 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 and Smartly.io, have given the promise of a job interview for everyone who completes the course and the project work with maximum credits (9 + 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.

You need to be a resident of Finland in order to participate in these interviews.

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.18, so don't install anything older than that. Installation instructions are here.

Node package manager npm will be automatically installed with Node.js. We will be actively using npm 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 the repository. For example, the markdown source code of this page can be found in the repository at https://github.com/fullstack-hy2020/fullstack-hy2020.github.io/edit/source/src/content/0/en/part0a.md

At the bottom of each part of the material is a link to propose changes to material. You can edit the source code of the page by clicking on the link.