Study Guide
This study guide contains information about the implementation of the course. If you ever have any question about something in the course, look for the answer in this study guide or one of the other pages it refers to. If you can't find the answer to your question, email the course coordinator.
- Course name
- Web Development - Advanced Concepts
- Ladok code
- TFWN19
- Credits
- 7.5
- Year
- 2023
- Course coordinator
- Peter Larsson-Green
- Examiner
- Jérôme Landré
- Canvas Room
- Web Development - Advanced Concepts
Introduction
Building a good web application is not as easy as it used to be. When we first got the web, all the webpages on a website were simply static HTML files. Everything the web application needed to do was to wait for an HTTP request from a web browser and then send back the requested HTML file in an HTTP response.
Then websites got more dynamic. Users could create accounts on the websites and create their own resources (blog posts, messages, articles, etc.) other users then could fetch and display in their web browsers. We needed to start worrying about sessions, authentication, authorization and security in general, and the code we wrote got bigger, more complex and harder to maintain. Implementing a web application was no longer straight forward.
Then some websites got so popular that running them on a single computer was not enough; web browsers sent more HTTP requests to the web application than the web application had time to handle. We needed to start worrying about the performance of our web application; how good it could scale, how fast it could send back an HTTP response, etc. Web applications now needed to be built with an architecture in mind.
Then we got Android and iOS devices, and users wanted to be able to use smartphone apps to access the content on our websites instead of using web browsers. But apps don't render HTML code, only web browsers do that. The apps needed a way to just fetch the data from our web applications, so we added Application Programming Interfaces (APIs) to our web applications.
Today, good web applications are no longer straight forward to implement, but in this course you will learn and get hands-on experience of implementing your own scalable and good web application.
Pre-requisites
At course start you are expected to already possess knowledge corresponding to the pre-requisite courses shown in below.
Teachers
Peter Larsson-Green
Course coordinator, lecturer, lab assistant. Has studied and followed the development of the web since 2004 and received his Master of Science in Computer Science at Linköping University in 2014. He has been working as programming teacher (part time) since 2010 at both Linköping University and Jönköping University.
- Email: Peter.Larsson-Green@ju.se
- Phone: 036 - 10 17 35
- Website
Jérôme Landré
Examiner, lab assistant. Assistant Professor.
- Email: jerome.landre@ju.se
- Website
Intended Learning Outcomes
The intended learning outcomes of the course are found in the Course Syllabus. Below is a table showing how the examination tests cover the intended learning outcomes and which teaching activity helping you learn which intended learning outcome.
Intended Learning Outcome | Examined Elements | Learning Activities |
---|---|---|
Display knowledge of the need for, and the use of, Content Delivery Networks | Written Examination | Lecture: Content Delivery Networks |
Display knowledge of the challenges inherent in and technologies used for the construction of scalable web applications (NOSQL databases, horizontal scaling with session management, data partitioning and sharding, etc.) | Written Examination | Lecture: Scaling Web Applications Lecture: Scaling Databases Tutorial |
Display the ability to use JavaScript to manipulate a web page's Document Object Model | Laboratory Work Written Examination | Lecture: Client-side JavaScript Lecture: Document Object Model Tutorial |
Display the ability to program against commonly used JavaScript libraries | Project Work | Various npm packages introduced in the course |
Display the ability to construct web pages that interact with other web systems using REST/JSON, OAuth, etc. | Project Work Written Examination | Lecture: REST API Basics Lecture: REST API in Express Lecture: REST API Authorization Lecture: JSON Web Tokens Lecture: Third-Party Authentication Lecture: AJAX Lecture: Same-Origin Policy & Cross-Origin Resource Sharing Tutorial |
Display the ability to use advanced web client APIs such as web storage, web workers, web components, WebAssembly, etc. | Project Work | Lecture: AJAX Tutorial |
Display the ability to configure and use containers for development, testing, and deployment environments | Project Work Written Examination | Lecture: Docker Basics Tutorial |
Demonstrate the ability to evaluate the security of web applications | Project Work Written Examination | Lecture: REST API Authorization Lecture: JSON Web Tokens Lecture: Same-origin Policy & Cross-origin Resource Sharing |
Learning Activities
Here are short introduction to the learning activities offered in the course.
Recorded Lectures
In the beginning of some weeks you will be encouraged to view some pre-recorded lectures (or read some text). These will be quite theoretical and will teach you new things you can use when building a website.
Tutorials
Some weeks there will be a tutorial session where the teacher will show you how to use what has been taught in the pre-recorded lectures in practice.
Lab Sessions
Each week you may attend a four hours long lab session. Some of the lab sessions have been scheduled in ordinary classrooms, and for those sessions you have to bring your own laptop to work on. If you can't do that, make sure to come to a lab session scheduled in a computer room.
Select which lab session you want to attend by joining the corresponding Lab Group on Canvas. Feel free to show up at and attend other lab sessions too if there's room for it, but you may only join one Lab Group on Canvas.
Examination Tests
The course contains three examination tests.
1. Written Examination
2.5 credits, graded Fail
, 3
, 4
, and 5
. More information is available on the Written Examination page.
2. Laboratory Work
1 credit, graded Fail
and Pass
. More information is available on the Laboratory Work page.
3. Project Work
4 credits, graded Fail
, 3
, 4
and 5
. More information is available on the Project Work page.
Re-examination
below shows the study and exam periods during a year. The small yellow circle sectors shows when the (re-)examinations are offered in this course (at the re-exam periods in June and August).
If you need to know a precise date and time for the re-examination in advance, email the course coordinator at peter.larsson-green@ju.se
. An announcement on Canvas with more information will be posted soon before the re-examination periods for this course.
The project work will only be graded 3/U (U=fail) at re-examination.
If you haven't passed some examination tests after the three examination opportunities (ordinary + 2 re-exam) you need to re-take those tests the next time the course run. Note that the instructions for those tests might have changed the next time the course run, and that you should take them according to the new instructions.
Final grade
To receive a final grade in the course you need to pass all examination tests. The final grade will be based on the lowest grade of the Project Work
and the Written Examination
, but these grades will also be marked as weak or strong. If one of the grades is lower than the other and has been marked as strong, the final grade will be the lower grade + 1. For example, a strong 3 and a weak 4 gives you 4 as the final grade, while a weak 3 and a strong 5 gives you 3 as the final grade. For the Written Examination
, 50% of max score is a strong 3, and 70% of max score is a strong 4.
Course Literature and Other Teaching Aids
- Eloquent JavaScript 3rd edition by Marijn Haverbeke
- The Twelve-Factor App
- Web API Design: Crafting Interfaces that Developers Love
Time Plan
A time plan is available on the Time Plan page.