This course will focus on the design and development of complex web applications and systems, from browser to web servers and databases. We will learn basic and advanced principles on client-side and server-side development, web security, and how to design complex and dynamic systems.
Upon completion of this course, students will be able to:
-
Design and develop full-stack web applications.
-
Design large web systems.
-
Understand front-end principles - How does the browser work and what effects a web app's performance.
-
Proficiently develop web apps using HTML, CSS, JS, TS, React, Async Programming and more...
-
Understand back-end principles - How does a web server work, HTTP/HTTPS and other web protocols, cookies & sessions, authentication, microservices architectures and event-driven architectures.
-
Gain basic knowledge about databases, web security, scaling, and ci/cd principles.
Grading Policy
Students will be graded for:
-
3 homework assignments.
-
A fullstack final project & presentation.
All of the above will be submitted in pairs.
Workshops
Throughout the semester we will conduct 3 workshops as seperate sessions from the lectures. In each workshop you will be given a coding assignment, meant to help you getting started with class
topics relevant to your homework and final project.
These workshops are essential for understanding the course' materials, we highly encourage you to actively participate.
Pre-required courses
(234122 - Introduction to Systems Programming and 236363 - Databases) or (234124 - Introduction to Systems Programming and 236363 - Databases)
Syllabus
1 Intro
OSI Model, TCP/UDP, HTTP, Client-Server communication
3 Async JS
More Javascript, Async programming, The event loop, CRP
5 Basic Backend
How Backend application works, REST API
7 Security, Databases
Clined & Server side attacks, DB concepts in Backend apps
9 Scaling Systems I
ACID, Databases in large systems, CAP theorem
11 Advanced Topics I
Performance, Web Workers, Web Assembly
2 Basic Frontend
Browser & DOM, HTML, CSS, Basic Javascript.
4 Advanced Frontend & React
Typescript, NPM, Bundlers, React
6 Authentication
Passwords, TLS, Cookies, Tokens
8 Microservices & Message Brokers
Microservices & Event-driven architecture
10 Scaling Systems II
Caching, Deployment & Cloud, Virtualization & Containers
12 Advanced Topics II
Web Sockets, SSR, RPC & gRPC
-
Will the course be recorded? Will there be live Zoom lectures?The course will be recorded. There will be no live lectures via Zoom.
-
Tell us more about the final projectThe project is based on the basics of home exercises and workshops and includes the establishment of a complex web system Its submission and presentation will be until the end of the semester, meaning it will not be transferred to the exam period. All the material needed to work on the project will be delivered before the publication of the exercise and there will be a lot of time to work on it. Still, the exercise is relatively complex, and we will accompany you during reception hours and dedicated workshops. You will have to submit the project for review and also present it to the lecturer, and during the presentation, you will be tested on its planning and execution, and on other topics that will be studied in the course.
-
Can you elaborate more on the assignments in the course?3 homework assignments in the first part of the semester to learn Frontend and Backend basics, including new technologies. The final project, which will accompany the second part of the course, and it will include developing a more complex web system while implementing the tools that will be learned during the course.
-
Is there pre-required courses?(234122 - Introduction to Systems Programming and 236363 - Databases) or (234124 - Introduction to Systems Programming and 236363 - Databases) Operating systems and algorithms are not formal prerequisites, but their basics are important for a deep understanding of the material. Apart from that, no prior knowledge is required.
-
How will the lectures and tutorials be conducted? How many teaching hours per week are there?There will be 3 hours of lecture a week (throughout most of the semester), dedicated for theoretical and practical material. There will be no tutorials, however some of the lectures will include a live-coding session, for more hands-on practice. We will conduct 3 workshops, 2-hours long each. As some of the lectures will be shorter, there will be an average of 3 academic hours per week (including workshop time).