Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

SENG 365 – Web Computing Architectures:

Course Outline, Semester 1 2023

Ben Adams

Version 1.3, 17 February 2023

1 Course aims

Welcome to SENG365, Web Computing Architectures course. This course explores web applications and the underlying distributed application architectures and technologies. Topics will include web fundamentals (HTML, HTTP, CSS, JavaScript), asynchronous events, data persistence, web application architectures, AJAX, web APIs, and web computing.

The course involves a significant amount of practical programming; good programming skills and the ability to pick up new languages quickly are helpful.

2 Course goals

•   Knowledge of the fundamentals of web applications (e.g., HTTP, HTML, CSS).

•    Competence in a server-side runtime environment, e.g. Node.js .

•    Competence in a client-side language, e.g ., JavaScript.

•   Have some understanding of appropriate architectures for web applications, such as 3-tier and MV*.

•   Have some understanding of web services and protocols, such as RESTful and GraphQL.

•    Have some understanding of HTML5 and its significance for the future.

•   Gain basic knowledge of emerging technologies in web applications.

3 Learning outcomes

3.1 Overall

•   Demonstrate the ability to develop simple web applications.

•   Appreciate the challenges encountered when designing web applications .

•   Develop an understanding about the underlying technologies of current web technologies.

•   Appreciate the value of emerging web technologies.

3.2 Specific

•   Understand the architecture of web applications including the limitations imposed by the underlying stateless HTTP protocol.

•   Understand architectures for web applications, e.g., 3-tier, MVC, MVP, and MVVM.

•   Appreciate some of the issues of web application security including an awareness of such attacks as SQL injection, cross-site scripting, and identity theft.

•   Be able to write a simple web application in appropriate well-structured technologies (e.g., JavaScript, Node.JS, Vue.JS, React), using a data source for persistent storage (e.g., MySQL or MongoDB), with data queries and updates.

•   Understand the principles behind AJAX and be able to make simple use of it in a web application.

•    Understand some of the extended capabilities provided by HTML5.

•   Understand how web services work (e.g., SOAP-based, RESTful, GraphQL) and be able to design and implement a simple web service.

4 Course team

The course team comprises:

Course coordinator and lecturer

Ben Adams

Room: Erskine 310

Email: benjamin.adams@canterbury.ac. nz

Phone: 03 369 5710

Senior tutor

Morgan English

Room: Erskine 324

Email: morgan.english@canterbury.ac. nz

Lab tutors

Moses Wescombe

Email: mwe50@uclive.ac.nz

Frederik Markwell

Email: fma107@uclive.ac.nz

5 Teaching schedule

The intention is for the lectures and the labs to align and complement each other. The lectures will provide conceptual material together with examples (e.g., code) to demonstrate or illustrate this material. Inevitably, lectures can only provide an overview or introduction to a topic. The labs will provide the opportunity for practical work relating to  the material introduced in the lectures. Table 1 presents the provisional teaching schedule for the course. Students should see their personal timetable for lecture and lab times.

Table 1: Lecture and lab schedule

Week

Lectures

Lab

1

Introduction to HTTP and JavaScript

Pre-lab 1, 2, 3 on your own time. No tutored lab sessions

2

More JavaScript and asynchronous flow

Lab 1: Introduction to JavaScript, Node.js, and APIs

3

Typescript and data persistence

Lab 2: Persisting Data, Postman              Testing, and Structuring Applications in Node with TypeScript

4

REST and APIs

Lab 2 cont.

5

GraphQL, API Testing

Assignment 1 support

6

Security, Introduction to client-side programming

Assignment 1 support

MID-TERM BREAK

7

Single Page Applications and

Javascript Frameworks

Lab 3: Javascript for the client and interaction with APIs using React

8

React: JSX and Components

Lab 4: Structuring client-side

applications in React

9

React: Event handling, hooks and global state

Lab 5: More information about React

10

SPA Communication with the server

Assignment 2 support

11

Web storage, Progressive web apps

Assignment 2 support

12

Front-end testing, review

Mandatory attendance in lab session to test assignment 2

6 Labs

6.1 Self-study preparatory labs

To take account of the different backgrounds of students in this course we have created self-study labs for students to undertake at the beginning of the course. These labs are  identified on Learn. They cover topics such as version control and Git, and databases.

6.2 Extra-curricular labs

For those who would like to learn more than the course formally covers we have created  additional self-study labs. These will be made available on Learn as the course progresses.

6.3 Scheduled labs

We have developed a series of lab sessions for the scheduled timetable sessions. These are available on Learn.

6.4 Assignment support labs

We have scheduled the labs to provide at least one week in each term for students to explicitly work on their assignments in lab times.

7 Assessment and assessment policy

The assessment will be based on the two assignments and the final exam.

7.1 Schedule for assessment

Type

Worth

Important dates

Assignment 1

30%

Set: Beginning of term 1

Hand-in & drop-dead date:

Friday 31 March, 5pm

Assignment 2

30%

Set: Beginning of term 1 & week 6

Hand-in & drop-dead date:

Friday 26 May, 5pm

Final examination

40%

TBD, during exam period (~2 hrs)

7.2 NO extended ‘drop-deaddate on assignments

Due to the way that we test the assignments, the constraints of other assessments on the  course, and that we want to give students as much time to do the assignments as possible, there are no one-week extensions for the assignments. If we introduced a one-week ‘drop- dead’ date we would need to pull the hand-in forward by one week to accommodate the   ‘drop-dead’ date. We would rather just give all students the extra week.

7.3 Assessment policy

The Computer Science department has the following grading policy.

1.   In order to pass a course, you must meet the absolute passing mark for the class; i.e. the weighted sum of all your scored items must meet the absolute passing mark set for the class. Marks are sometimes scaled to achieve consistency between courses    from year to year. Specific passing marks are therefore set on a class-by-class basis.  For example, a total mark of 50% would typically be required to achieve a C- pass; although this may vary. Passing a course with a C- indicates that we believe that you have just mastered the relevant material. Your ranking in the class may be a more     useful indicator of your progress; students ranked above you will receive higher grades, and vice versa.

2.   You must average at least 50% on the invigilated assessment items. (Invigilated        assessment items are those completed under exam conditions, such as oral and written exams and lab tests.) If you achieve less than 50% over these items, you will receive a D, or E, depending on your marks.

8 Reference material

Information relating to this course can be found on the SENG365 Learn site. Class notices and course notes will also be distributed via Learn. References to recommended reading (mostly web-based) will be given in lectures and labs.