COMP6080 Web Front-end Programming
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit
Course Outline
Contents
1. Course Details
2. Course Summary
3. Philosophy of teaching web-based front-ends
4. Teaching Strategies
5. Assessment
6. Schedule / Timetable
7. Student Conduct
8. Resources for Students
9. Course Evaluation and Development
1. Course Details
Find information relating COVID-19 and this offering here and here.
Course Code |
COMP6080 |
Course Title |
Web Front-end Programming |
Convenor |
Hayden Smith |
Admin |
Hayden Smith |
Units of Credit |
6 |
Course Website |
This website! |
Handbook Entry |
http://www.handbook.unsw.edu.au/undergraduate/courses/current/COMP6080.html |
2. Course Summary
COMP6080 aims to develop your confidence in building modern web-based applications to industry standards. This occurs through the introduction of a range of basic concepts
surrounding HTML, CSS, Vanilla Javascript, Javascript Declarative Frameworks, UI/UX
Principles, Accessibility, Network & Asynchronous Programming, Front-end Testing, and other basic infrastructure.
This course has a heavy emphasis on industry voices, and as such a number of lectures will be given by current front-end developers from industry. These lectures primarily come from employees at Canva, a Sydney-based technology company that does a lot of work with front- end technologies.
COMP6080 is a challenging course. Front-end development is unlike most things you've
experienced at university before. You will find the individual problems you solve much simpler than other level 6 courses, but the time you will feel that you spend on the aggregate of these issues will feel larger. A number of students will find this course quite time consuming if they're hoping to achieve a high mark. We'd encourage you to reflect on this fact before you enrol in the course.
2.1. Assumed Knowledge
COMP6080 assumes that you have satisfactorily completed COMP1531 and COMP2521. The main areas of knowledge you'll need from these courses are:
A high level understanding of how interpreted scripting languages work (e.g. python), in terms of inputs, interpretation, loose typing, etc
Confident use of GIT as a version management tool
Basics of HTTP protocol and interacting with web browsers
Postgraduate students will need to familiarise themselves with git, specifically, if not already confident, check out the resources here. We have also provided a lab0 on the tutorials &
exercises page that we encourage everyone who hasn't completed COMP1531 to complete prior to the beginning of the course. Basic competency in git is an expectation in COMP6080.
2.2. Course Learning Outcomes
After completing this course, students will be able to:
1. CLO1 : Able to apply Javascript semantics to design, construct, test and debug programs holistically
2. CLO2 : Construct programs for web-front end with HTML, CSS, and DOM manipulation
3. CLO3 : Use Javascript and CSS frameworks to allow more efficient integration of existing code and components into a final product
4. CLO4 : Build stable applications that utilise concurrent programming through use of Javascript's asynchronous programming techniques
5. CLO5 : Design and build interfaces that focus on best user experience and accessible design practices
3. Philosophy of teaching web-based front-end
3.1. Challenges of teaching front-end
The challenges of teaching front-end in a finite time period are related to the size and scope of knowledge around modern web front-end. Building even the most basic modern web app
requires an extreme breadth and depth of abstractions that take typical developers years to become very comfortable with.
Teaching front-end is also challenging due to the rapid advances that are made in the world of web (a good thing), which leads to sprawling and conflicting resources across the internet. This can lead to learning inconsistent or sub-standard practices and programming patterns.
To teach only declarative frameworks (e.g. ReactJS) as an introduction creates the problem of producing capable students who can rapidly produce work, but do so without the fundamental understanding to grow and apply their skills sustainably and with accountability. However, to
teach only Vanilla Javascript would neglect the reality that nearly all students in this course will inevitably not be building actual applications with Vanilla Javascript.
3.2. Approach to teaching
This course is about spending a term learning both Vanilla Javascript (Javascript without
abstractions) and Javascript Declarative Frameworks (specifically ReactJS). The term will
begin with a heavy focus on HTML/CSS, and have topics of UI/UX, Accessibility, and Testing, trickled throughout. The course will be very heavy Vanilla JS to start while slowly tapering off, and will be very light on ReactJS at the start before rapidly getting into more depth.
3.3. What isn't included
There will be a number of people who feel strongly about the exclusion of particular topics from the course, such as typescript or more complex state managers (redux, mobx). Often when
topics are omitted it's because they aren't fundamentalknowledge in the limited weeks this course is offered in.
We've compiled an FAQ to answer these questions. If you still have further questions or comments, we'd encourage you to use the forum linked in the sidebar.
Students with prerequisite knowledge in this course should understand that this is an
introductory course with very limited assumed knowledge, and as such, is not a course to
extent an already firm foundation of knowledge. If you are already quite competent in the areas taught in this course, please be patient as we will be moving quite slowly by your standards. If this is something that you feel may be frustrating, it may be more appropriate with your skill-set to find a more stimulating course.
4. Teaching Strategies
This course uses the standard set of practice-focused teaching strategies employed by most
CSE foundational courses:
Lectures
Tutorials
Exercises
· Help Sessions
Assignments
Final Exam
4.1. Lectures
Lectures will be used to present the theory and practice of the techniques in this course.
Although the lectures will primarily focus on the key concepts of software engineering, some lectures will also include practical demonstrations. Lecture slides will be available on the course web page.
On a typical week we will only have the live Monday lecture (2 hours). The live Monday lecture will be replaced by approximately 2 hours of pre-recorded lectures to watch each week. Please note:
It's critical that you watch the 2 hours of pre-recorded lectures each week prior to the Monday lecture
The length of pre-recorded and live lectures may vary week to week, but the intention is to keep the average weekly duration at 4 hours across the term.
· In general, industry driven lectures are more likely to be in the pre-recorded format
Lecture notes for the live lectures may only be released a day or two before the lecture. This is because as part of the teaching strategy for this course the live lectures are
designed to essentially "supplement" and "round-off" the pre-recorded lectures, so it's natural to wait for some feedback from students before over-planning these.
You can see the schedule for lectures here, and the list of lecture videos and content here.
Because lectures will be delivered from a range of people, it's important that students are prepared for differences in slide format and teaching style.
4.2 Tutorials
Tutorials are 1 hour lessons every week that help clarify ideas from lectures and work through exercises based on the lecture material. You should make sure that you use them effectively by examining in advance the material to be covered in each week's tutorial, by asking questions,
by offering suggestions and by generally participating.
Tutorial activities can be found by going to the tutorials page. Tutorial solutions are available on the solution branch of the exercises gitlab repo. Tutorials do not contribute to your final mark.
Tutorials will be run via Zoom.
4.3. Help Sessions
Help sessions are unprepared drop-in "clinics" where students and groups can go to seek help about course related matters, whether that be the project, tutorials, or exercises. Current tutors or lab assistants will supervise each help session.
Help sessions will be run via Zoom.
A timetable for help sessions can be found here.
4.4. Assignments
There will be a series of assignments which will run through the teaching period from weeks 1- 10 and contributes to 80% of the overall course mark.
Assignments will be the platform you have to study and learn the material in substantially more depth. Your assignments will be completed via gitlab.
The intention is that the third assignment will be completed in a pair. You are able to opt out of this and work alone (at your own expense!). You can choose your pair, otherwise we will assign you a partner. You can pair up with any student in the course.
Information on assignments can be found in the links in section 5 (Assessment).
4.6. Final Exam
There will be a centrally timetabled final exam which will in your UNSW exam timetable. The exam may contain a mixture of multiple choice questions, short answer questions, and
programming exercises. More specific details of the exam will be provided through the course.
If you cannot attend the final exam because of illness or misadventure, then you must submit a Special Consideration request, with documentation, through MyUNSW within 72 hours of the
start of the exam exam. If your request is reasonable, then you will be awarded a
Supplementary Exam. No supplementary exams will be provided for students who score marks 49 or below on grounds of being "close" to a pass.
Information on the final exam can be found in the links in section 5 (Assessment).
5. Assessment
Assess Weighting Due Date Individual/Pair Link
Ass 1 |
15% |
Week 3, Monday |
Individual |
VIEW |
Ass 3 |
30% |
Week 7, Monday |
Individual |
|
|
Ass 4 |
30% |
Week 10, Wednesday |
Pair (see below) |
|
|
Exam
|
20% |
Exam Period |
Individual |
|
|
For pair assignments, you complete them a pair of your choice. If you don't have a pair, we will find one for you. You can also choose to work alone (this is something we arguably should not offer, but we do because we know there are exceptional circumstances), but we strongly do not recommend this as the workload is much higher for an individual. If the workload is a concern, work as a pair (how it's designed). Nominations for your pair (or to work alone) must be complete by the end of week 2. Information about this will be distributed in weekly notices. Pairs will be required to contribute regularly to gitlab and in reasonably equal contributions as we still assess contributions individually (there is no blanket group mark assigned). Failure to do so may result in a loss of marks. |
6. Course Schedule / Timetable
The timetable for this course is outlined clearly in the timetable for lectures, tutorials, and help sessions.
The content schedule is outlined below:
Week 1
Course Overview
Intro to Git
HTML Fundamentals
Image Types
CSS Rules
More Tags
CSS Formatting
CSS Layouts
Flexbox
SVGs
Pre-processors
zindex
CSS Showcase
Fonts
Week 2
Demo: HTML/CSS Page
Mobile CSS
· Using CSS Frameworks
CSS Grids
Dev Tools
Javascript Intro (compared to C)
· Javascript Language Features & Syntax
· Javascript Advanced Functions
· The Javascript Ecosystem
· Node Package Manager
NPM Advanced
Week 3
Demo: Javascript - NodeJS
Introduction
DOM
Events
Javascript Closures
Forms
· Local Storage
Week 4
Demo: Javascript - Browser
Events & Callbacks
Promises
Await / Async
AJAX
XMLHttpRequest (XHR)
Fetch
· JSON & Data-interchange formats
Understand HTTP Servers
Week 5
Demo: Ass2 - Async & Planning
UI Fundamentals
2023-09-12