Skip to content

ebdemir/Web-Teaching

ย 
ย 

Repository files navigation

CSE1500: Web and Database Technology

Build Status

The Web technology materials and resources of the 2019/20 Web and Database Technology course at TU Delft are listed here.

They were initially created for the 2018/19 edition of the course and have been updated for this year's edition.

The database materials (lectures/assignments) are not included here! You can find them on Brightspace! Due to the many code examples in the web technology lectures we opted to maintain the materials in a GitHub repository.

Table of Contents

Course instructors

The responsible instructors are Associate Professors Claudia Hauff (web) and Professor Alessandro Bozzon (databases). The responsible instructors can be reached at cse1500-ewi@tudelft.nl.

The web technology werkcolleges are led by Assistant Professor Juliรกn Urbano. Azqa Nadeem covers some of the werkcolleges as well, will teach the web security lecture and is responsible for the web technology teaching assistants.

Web technology course book

The course book for the web technology part is Learning Web App Development by Semmy Purewal. This book covers HTML, CSS, JavaScript and Node.js/Express - exactly the technologies we cover in this course. The book is written for learners without any prior knowledge in these technologies. This book was published in 2014. This could be considered a feature or a bug ... we consider it a feature, as it means that a lot of the recently incorporated changes in the JavaScript language are not part of the book. Given that we only have one lecture to introduce the JavaScript language itself, the coverage of the JavaScript language in the book is sufficient and complete enough to allow everyone to start coding!

The book also covers version control basics (git to be specific) which can be ignored for the purposes of our lectures. You will learn all about git in the academic quarters that follow!

Web course book

Tooling

Recommended

Visual Studio Code (VSC) is the strongly recommended development environment for the web technology assignments. It is a free and open-source IDE available for all major operating systems. It was originally designed to support Node.js programmers (a server-ยญside JavaScript framework we use in this class), but now has extensions for many programming languages. Best of all, Visual Studio Code itself is written in JavaScript!

Visual Studio Code

VSC offers many extensions. You can find a guide on how to browse and install them here. A list with all kinds of "delightful" extensions can be found here. Since this may be a bit overwhelming, we made a short list of the extensions we recommend to install for this course. For the programming assignments we strongly recommend the VS Live Share extension for those students that do not want to dive into git yet!

  • ESLint, the most popular linting utility for JavaScript (a linter is a tool that analyzes source code to flag potentially poor code such as unused variables) - use it to improve your code.
  • Bracket Pair Colorizer does what the name suggests.
  • Quokka.js - a great tool to try out JavaScript snippets without hassle.
  • VS Live Share - a collaborative real-time coding extension (especially useful if a student team works mostly remotely).
  • Material Icon Theme to make finding the file you are after in your app directory a bit easier.
  • If you like to add TODOs to your code, try Todo Tree, it makes sure you don't overlook any of your TODOs!
  • Finally, a good theme for your IDE to make coding more enjoyable is also not a bad idea. Dracula is a popular one. Cobalt2 is also nice. If you want to pick based on visuals, head over to https://vscodethemes.com/.

If you need to be convinced about why Visual Studio Code is a great IDE to use, check out this podcast by Wes Bos and Scott Tolinski on this very topic.

Browser developer tools are built into all modern browsers; familiarize yourself with the developer tools of your favorite browser. In our lectures, we will showcase Firefox's developer tools - an elaborate description of them can be found at MDN.

If you are new to team programming, and want to use VSC's features efficiently, read our guide.

Required

The latest stable version of Node.js.

Two modern web browsers such as Chrome, Firefox, Edge, etc. to test your project code across browser implementations.

Telnet (for Assignment 4).

Course grading

grading

Passing requirements: the overall grade must be 5.8 or higher AND the midterm grade must be at least a 5 AND the final exam grade must be at least a 5 in accordance with TU Delft's exam regulations.

Assignments are done in pairs of two students and are graded by student assistants in a binary manner (pass or fail). There are six assignments in total, three cover database topics and three cover web technology topics. While the assignments together make up only 20% of the final grade and are not required, we strongly recommend to tackle the assignments - they cover a lot of exam materials in a practical manner!

We have two assessment moments: one for the database assignments and one for the web technology assignments. The assessment is interview-based. Each assessment moment can yield anything between 3x pass and 3x no-pass. The grading is conducted per student.

The table below shows how the number of passes (maximum 6: 3x database and 3x web) are converted to the assignment grade:

Number of passes Grade
6 10.0
5 8.3
4 6.7
3 5.0
2 3.3
1 1.7
0 0.0

Course topics

Both databases and web are covered in eight lectures each. The midterm covers only database topics. The final covers only web technology topics.

Week Monday Wednesday Thursday
2.1 Introduction to databases Relational database systems ---
2.2 Design of relational database systems SQL 1 ---
2.3 SQL 2 NoSQL: graph stores ---
2.4 NoSQL: document stores SQL (advanced) ---
2.5 --- --- Midterm exam
2.6 HTTP HTTP/HTML5 ---
2.7 JavaScript Node.js ---
2.8 CSS Node.js (advanced) ---
2.9 Cookies and sessions Web security ---
2.10 Final exam --- ---

Web technology tutorials

We offer three tutorials (interactive sessions to solve small problems) for interested students - these tutorials are optional and do not count towards the 140 hours of this course:

  • Week 2.7: JavaScript
  • Week 2.8: Node.js
  • Week 2.9: old exam questions

Check the MyTimeTable app to determine which tutorial session to attend!

Sample exams

Until (and including) the 2017/18 edition, the web and database topics were interwoven (usually 1 lecture of web and 1 lecture of database topics per week) and thus for most years, the midterm and final exams also contain questions on both topics. For the 2019/20 edition, the final exam will contain about 40 multiple choice questions on the web technology topics.

Exam topics are all topics covered in the lectures and the required readings. Content of the recommended activitivies/readings that goes beyond what is covered in the lectures/course book is not exam material.

Assignments & assessment

There are six assignments in this course in total.

Assignments are worked on in teams of 2 students. We do not allow larger teams; we do not allow teams of 1.

Assignments 1-3 cover database topics and can be found on Brightspace. Assignments 4-6 cover web technology topics:

Assessment: the three web assignments are assessed in a single interview session with a TA; the interview lasts 20-25 minutes. Each of the three assignments can be passed or failed (binary judgment, there are no grade levels) on an individual basis. The assessment rubric for the web assignments is available here. The assessment takes place during week 2.9.

All assignments must be submitted in Brightspace before your assessment timeslot, and in any case no later than January 22, 2020 at 23:30 (hard deadline). All submissions are timestamped. Late submissions (or re-submissions) will not be assessed. We are going to check if your submitted work is consistent with the one used for assessment.

FYI, in previous years, roughly 90% of groups attempted and passed the first assignment, about 60% of groups passed two assignments and about 30% of groups all three assignments.

Demo application

A demo board game application (a word guesser) is available as well. It has has been implemented along the lines of the assignments.

The demo app, just as listed in this year's board game project, consists of two screens, a splash screen:

splash screen

and a game screen:

splash screen

Interactive web technology exercises

Students who do not have a lot of prior knowledge often struggle to get started. Here is a list of useful interactive exercises and how they match up with each lecture. Each of these exercises is small, taking just a few minutes (sometimes less than a minute) to solve.

Twitter accounts to follow

Twitter is a great resource to hear the latest and greatest about the web stack. Here is a list of accounts we recommend to follow

Web development resources

The practical assignments of this work often require looking up Web development specifics. Two good resources, in general, for Web engineering are Mozilla's MDN portal and Google's Web Fundamentals.

MDN Google Fundamentals

Lecture material types

materials

For each lecture we provide a range of materials:

  • Required readings: most of the required readings are book chapters of the web course book. The book introduces each technology from scratch. The lectures go beyond what is covered in the book and assume that you have read the corresponding book chapter(s) before the lecture.
  • Recommended activities: activities that we think will help you get a better grasp of the different web technologies. Activities are either programming exercises or podcasts (there are some great ones out there!). Don't see those as a complete list to work through, that is impossible given the time!
  • Recommended readings: these may be tweets, blog posts or book chapters that help you understand some of the introduced concepts better; again, do not attempt to read all of the materials.
  • Relevant scientific publications: we are often asked why this kind of course is part of the computer science curriculum. Isn't this "just" programming? To showcase how web technologies are researched, we here list a number of scientific publications that contribute to our understanding of (the use of) web technologies.

If you are interested in knowing what other universities teach in terms of web technologies, take a look at this list of courses with a web focus.

Web lectures

All lecture transcripts and assigments (which were developed in Markdown) were automatically converted to PDF format, for those students preferring PDFs. Warning: due to the automatic conversion not all pages will look great. You can find them in the generatedPDFs folder here on GitHub.

Lectures 1-8 cover database topics and can be found on Brightspace.

Lecture 9

The lecture covers HTTP (intro slides, lecture slides, transcript).

Lecture 10

This lecture covers web design and HTML5 (lecture slides, transcript).

Lecture 11

This lecture covers client-side JavaScript (lecture slides, transcript).

Lecture 12

This lecture covers Node.js (lecture slides, transcript).

Lecture 13

This lecture covers CSS (lecture slides, transcript).

Lecture 14

This lecture covers advanced Node.js concepts (lecture slides, transcript).

Lecture 15

This lecture covers cookies and sessions (lecture slides, transcript).

Lecture 16

This lecture covers web security topics (lecture slides), (transcript).

About

Overview of CSE1500 (Web technology part)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 99.9%
  • Other 0.1%