SENG 365 – Web Computing Architectures: Course Outline, Semester 1 2023
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-dead’ date 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.
2023-03-22