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)