This is an informational web page for the Web Applications course (NSWI142), the Advanced Technologies for Web Applications course (NSWI153). These courses are taught at the Faculty of Mathematics and Physics, Charles University in Prague.
We are in the winter term, so the Web Applications course is currently on.
Please note that this course is not recommended for first-year students. It is recommended for third year!
There are labs ("cvičení") currently scheduled in SIS + one virtual lab (not scheduled). Make sure you are enrolled to one of them and do not change your lab after the semester begins. The virtual lab is designated for students who either repeat the course (and actually did some nontrivial work in the labs last year) and students with special needs. Each lab will have associated group in ReCodEx. Attending labs is not mandatory (yet strongly recommended, see grading).
There is no special software required for this course, only a general IDE (consider using Visual Studio Code), SSH terminal, and any tool capable of SFTP/SCP file transfers. You will be given account on our server Webik, where you can deploy and debug your assignments. Optionally, you might want to consider installing web server (e.g., Apache) PHP 7.3+, Nodejs 12+, and MySQL/MariaDB database system on your PC as well.
You can find here:
For technical reasons, we have dismissed all formal prerequisites of this course. However, we expect that the attendees have the following knowledge.
SELECT subjects.id, subjects.name, students.id, students.name FROM students
JOIN subscribed ON subscribed.studentId = students.id JOIN subjects ON subscribed.subjectId = subjects.id
ORDER BY subjects.name, students.name
The specified knowledge is not (and cannot be) formally required for attending the lectures. However, it might be more difficult (or even impossible) to understand the contents of the lecture.
The criteria for obtaining the credit ("zápočet") and passing the test ("zkouška") are summarized in the following. Please, read them carefully. In case that any rules are not clear, contact us.
The following rules assume that it will be possible to keep at least 10 people together within one room. If the Covid situation gets worse so much that we could not conduct examination in this manner, these rules will have to change.
The credit is awarded for completing all five mandatory home assignments and successfully passing the lab programming test. The credit is required before attending the final test!
Attendance on the course seminar (labs) is not mandatory, but you can receive 1 point for each attendance. You may also receive extra 1 point (i.e., total 2 points for attendance) as a bonus for solving some problems during the labs. On the other hand, you may receive no points at all, if you are present only physically, but not mentally (i.e., when you do not demonstrate sufficient activity related to the contents of the seminar). This matter relies strictly on the judgement of the teacher. You can get up to 24 points in total.
There will be two type of home assignments -- mandatory and regular. You must complete all (five) mandatory assignments to receive a credit. Furthermore, successfully solving any assignment before deadline will be awarded with points and these points will be added to your final test score (i.e., solving assignments might improve your final mark). You may solve mandatory assignments after the deadline to receive the credit (but you will not receive any points for them). The mandatory assignments will worth 12 points in total. The regular assignments will worth 15 points in total.
Please note that the home assignments must pass the ReCodEx tests first, but they are also reviewed by the teachers. The quality of the code is important as its correctness. The teacher may choose to adjust the awarded points in either way (i.e., granting bonus for excellent solutions or penalty for bad code design).
Since it is difficult to test web application development in a limited time, this part of examination stands somewhere in between of regular programming test and home-made semestral work. Later in the semestr we will provide you with a specification of a web application. You can (and should) implement the specification before and take with you for the lab test.
The test dates will be published in SIS and you will be required to subscribe for them once you are ready. During the test in the lab, you would be expected to take your prepared code and modify it (e.g., implement a new feature in the application). We encourage you to use whatever code you have written yourself (including code submitted in home assignments). You may also look up information on the internet. The teacher will verify that your application is working correctly and review the quality of your code. Any issues pointed out by the teacher may be fixed during the test, but the time will be limited (i.e., we strongly recommend to prepare a good code for the test).
The quality of the work will be assessed by the teachers and up to 15 points will be awarded for it. You need at least one point to successfully pass the lab programming test. You may attend the test multiple times, but in cases of limited capacity, first-time attendees have priority over those who already failed the test.
Here is the specification in Czech and in English. Read it carefully, in case of any questions please contact us.
Please note, that the credit is required prior to attending the final test.
The test consists mostly of a simple option checking and filling fragments of text (code). It is designed to assess your overall knowledge of the web technologies instead of detailed syntax/API specifications; however, the basic knowledge of the syntax and language properties (especially JavaScript and PHP) is also necessary. The test will attempt to verify that you generally understand the principles of HTML document processing, element rendering, CSS syntax and rendering principles, JavaScript language fundamentals (including event processing and DOM manipulation), server side scripting (in PHP), HTTP protocol, and basic web application design and security principles.
You can receive up to 50 points from the test. The points are combined with your assignment points from the labs and determine your grade in the following way:
Labs and programming test points must be granted before the test. The points cannot be added to any test retrospectively, since the tests are graded (and thus the final mark is established) immediately after completing the test.
Furthermore, after due consideration, we have decided to give you one more advantage. When attending the exam, you may decide not to submit your test for evaluation. In such case, you will not receive any mark for the test, but you will forfeit one of your three attempts, which are granted by the examination regulations. Be advised, that the number of examination terms is limited and all terms are announced in advance (no extra examination dates due to forfeit attempts will be granted). Also be advised that there will be no examination dates in summer term (especially not in September).
The web application technologies are in constant development. Hence, some information on the slides may become outdated despite our best efforts. If you have any questions or suggestions related to the lectures, please contact us.
Please note that the Power Point slides have notes below which are not visible during regular presentation. These notes typically contain useful remarks and links to related work so do not overlook them.
29.9.2021 4.10.2021 |
Revising web applications fundamentals (web, HTML, HTTP) |
![]() [30.09.2024, 17:36] |
6.10.2021 11.10.2021 |
CSS introduction |
![]() [30.09.2024, 17:36] |
13.10.2021 18.10.2021 |
CSS layout |
![]() [30.09.2024, 17:36] |
20.10.2021 25.10.2021 |
CGI |
![]() [30.09.2024, 17:36] |
27.10.2021 1.11.2021 |
PHP Introduction |
![]() [30.09.2024, 17:36] |
3.11.2021 8.11.2021 |
PHP Language |
![]() [30.09.2024, 17:36] |
10.11.2021 15.11.2021 |
PHP & web applications |
![]() [30.09.2024, 17:36] |
24.11.2021 22.11.2021 |
PHP & Design Patterns & ... |
![]() [30.09.2024, 17:36] |
1.12.2021 29.11.2021 |
JavaScript Introduction |
![]() [30.09.2024, 17:36] |
8.12.2021 6.12.2021 |
JavaScript Language |
![]() [30.09.2024, 17:36] |
15.12.2021 13.12.2021 |
JavaScript and state synchronization |
![]() [30.09.2024, 17:36] |
22.12.2021 5.1.2022 |
Security |
![]() [30.09.2024, 17:36] |
3.1.2021 | No lecture |
This page will hold materials used in labs. Most of the assignments will be only in ReCodEx. If you have any trouble accessing the ReCodEx or you experience problems with the assignments report to your lab teacher(s).
# | Date | Details |
---|---|---|
01. |
29.9.2021 30.9.2021 |
No labs |
02. |
6.10.2021 7.10.2021 |
First labs, introduction, technical issues, HTTP and HTML revision Slides |
03. |
13.10.2021 14.10.2021 |
HTML Forms, CSS Introduction Slides |
04. |
20.10.2021 21.10.2021 |
CSS Slides |
05. |
27.10.2021 4.11.2021 |
CSS Layout Slides |
06. |
3.11.2021 11.11.2021 |
PHP Slides Solution 2,Solution 3,Solution 4,Solution 5 |
07. |
10.11.2021 18.11.2021 |
PHP Language Slides Solution 1,Solution 2,Solution 3,Solution 4 |
08. |
24.11.2021 25.11.2021 |
PHP & MySQL Slides Solution 1,Solution 2 |
09. |
1.12.2021 2.12.2021 |
JavaScript Slides Solution 2 |
10. |
8.12.2021 9.12.2021 |
JavaScript and Web Applications Slides Solution 1,Solution 2 |
11. |
15.12.2021 16.12.2021 |
Slides Solution 1,Solution 2,Solution 3 |
12. | 22.12.2021 | No labs |
13. |
5.1.2022 6.1.2021 |
No labs |
We have gathered several links to materials and web applications that are closely related to the subject. If you detect broken links or you wish to share a good link with your fellow students, please send us an e-mail.
This tab is a bit obsolete. We are planing a revision of the following links. Any suggestions will be appreciated.
<canvas>
tutorialsThis is an old site! Here is the new site.