Databases and Web Programming

Computer Science 334

Rekenaarwetenskap 334

Course Summary

This course will focus on the building blocks of the web, followed by hands-on development of user facing front-ends and server side back-ends. We will also look at databases (relational and NoSQL) in detail.

Announcements

Projects

Course Summary

This course will focus on the building blocks of the web, followed by hands-on development of user facing front-ends and server side back-ends. We will also look at databases (relational and NoSQL) in detail.

Instructor

Prof Brink van der Merwe, brinkvdmgmail dot com

Textbook

We will use Database System Concepts 7th Edition, by Abraham Silberschatz, as textbook, but we will only start using this book after a few weeks. I will also make use of slides from the book Fundamentals of Web Development 2nd Edition by Randy Connolly, Ricardo Hoar, especially in the first few weeks of the course, but it is not required to get a copy of this book. Other freely available relevant web resources will be pointed out as the course goes along.
Additional reading resources that will help bolster your practical background understanding of the course content.
  • W3Schools W3Schools is a web developer information website, with tutorials and references relating to and covering many aspects of web programming.
  • Full Stack Python Flask is a Python web framework built with a small core and easy-to-extend philosophy.
  • CSS: Cascading Style Sheets MDN web docs on CSS

Lecture and Tutorial Times and Venues

The lecture times are as follows:
  • Mondays 12:00–12:50
  • Wednesdays 8:00–8:50
  • Fridays 9:00–9:50
There is a tutorial every week in Narga D: Tue 10:00–12:50

Schedule

Rough outline: First month - introduction and front-end techologies. After this, a month of back-end technologies followed by a detailed discussion on databases for the remainder of the course.

Tests, projects, distribution of marks.

50% for test and exam, 25% each. Test, i.e. A1, 6 April 17:30. Exam, ie. A2, 18 June at 9:00. Projects will contribute 50% of the final mark (Project 1: 25%, Project 2: 25%). If you miss a text, exam or a project handin due to an official university excuse, a comprehensive theory exam, during the 2nd exam opportunity (i.e. A3, 2 July at 9:00), will be used to replace this mark. The 2nd exam opportunity can also be used by anyone with a mark below 50% at that stage - in this case, the lowest mark will be replaced by the A3 mark and the final mark will be capped at 50%.

Prerequisites

Computer Science 214; for programmes in Engineering: Computer Science E214 and Computer Systems 245

Learning outcomes

After completing this course you should be able to: 1. define modern protocols and systems used on the Web (such as Unix, Apache, HTML, HTTPS, SFTP, Git, URLs, CSS, Javascript, JSON) 2. explain the functions of clients and servers on the Web, and describe the strengths and weaknesses of the client-server internet approaches to web design and implementation 3. program, access, and manipulate data through the adoption of accepted standards, mark-up languages, client-side programming, and server-side programming 4. design and implement an interactive web site(s) with regard to issues of usability, accessibility and internationalisation 5. design and implement a client-server internet application that accommodates specific requirements and constraints, based on analysis, modelling or requirements specification 6. justify and explain particular internet application concepts, relevant alternatives and decision recommendations, including design considerations for internet security 7. be familiar with the Flask micro framework 8. know when to use a relational database and when to use a NoSQL database

Lecture slides

See SunLearn.

Material from class

See SunLearn.

Teaching assistants

Andrei Dreyer, Gareth Dalton, Lauren Abrahall, Julian Munz, Liné Dorfling, Alex Oxley

Class Reps

2021 Website

### Augmented Remote Teaching, Learning, and Assessment policy
Augmented Type 2 and 3 will be followed for lectures and practicals and tests and exams will be invigilated and sit-down. For practicals, coding projects will be handed in on the git server of Computer Science. - Type 2: Asynchronous provision of material and f2f learning opportunities (with limited number of students in venue) are used to explain pre-recorded material. - Type 3: Asynchronous provision of material and f2f learning opportunities (with limited number of students in venue) are used for question and answer sessions.
### Course Summary
This course will focus on the building blocks of the web, followed by hands-on development of user facing front-ends and server side back-ends. We will also look at databases (relational and NoSQL) in detail.
### Announcements ### Projects - **Project 1** Description (updated: 24/03/2021). Thanks Andrei for writing this project spec. Must make use of the Computer Science Gitlab server with regular commits. Due date: 12 April at 23:59 - **Project 2** Description (updated: 10/05/2021). [Clarified top 5 most contacted EMPLOYEES for Employee Query] Project spec for the second project. Marking rubric and what needs to be in the report have been added. Please make use of a students shared repo. Each group member should complete the Peer Rating form and email it to brinkvdm at gmail dot com with the subject heading "Peer Rating". Due date: 14 May at 23:59 - **Project 3** Description (updated: 09/06/2021). [Removed halving of marks if API is not restricted under "Restrict API Access" marks] Please make use of a shared student repo, similar to Project 2. Due date: 15 June 2021 at 10:00, i.e. when the practical starts and the video and report, 21 June at 23:59. Each group member should complete the Peer Rating form and email it to brinkvdm at gmail dot com with the subject heading "Peer Rating". ### Test and Exam Dates - Test: 20 April at 10:00 - Exam 1 (A2): 16 July at 10:00, online. Only on the part covered after the test. - Exam 2 (A3): 23 July at 10:00. Comprehensive exam. For those that missed the test, exam 1, i.e. A2, or a project with a valid university excuse. This will be online. ### Instructor Prof Brink van der Merwe, brinkvdmgmail dot com ### Textbook
We will use Database System Concepts 7th Edition, by Abraham Silberschatz, as textbook, but we will only start using this book after a few weeks. I will also make use of slides from the book Fundamentals of Web Development 2nd Edition by Randy Connolly, Ricardo Hoar, especially in the first few weeks of the course, but it is not required to get a copy of this book. Other freely available relevant web resources will be pointed out as the course goes along.
### Recommended Reading and Watching
Additional reading resources that will help bolster your practical background understanding of the course content.
### Lecture and Tutorial Times and Venues
The lecture times are as follows, with all lectures in A407 main engineering:
  • Mondays 12:00–12:50
  • Wednesdays 8:00–8:50
  • Fridays 9:00–9:50
There is a tutorial every week in Narga D: Tue 10:00–12:50
### Schedule Rough outline: First month - introduction and front-end techologies. After this, a month of back-end technologies followed by a detailed discussion on databases for the remainder of the course. ### Tests, projects, distribution of marks. 50% for test and exam, 25% each. Projects will contribute 50% of the final mark (Project 1: 10%, Project 2: 20%, Project 3: 20%). If you miss a text, exam or a project handin due to an official university excuse, a comprehensive theory exam, during the 2nd exam opportunity, will be used to replace this mark. ### Plagiarism
The plagiarism policy of the university (as described in the General Yearbook and related documents) will be strictly enforced in this course. Please familiarize yourself in detail with this policy. In short, plagiarism occurs when you present (parts of) another person’s work as if it were your own and when you allow someone else to present your work as their own. This includes work published in books or on the internet, as well as code written by fellow students. All submitted work is tested automatically by a plagiarism detection program, and all students that violate the rules will face disciplinary action.
### Prerequisites
Computer Science 214; for programmes in Engineering: Computer Science E214 and Computer Systems 245
### Learning outcomes
After completing this course you should be able to: 1. define modern protocols and systems used on the Web (such as Unix, Apache, HTML, HTTPS, SFTP, Git, URLs, CSS, Javascript, JSON) 2. explain the functions of clients and servers on the Web, and describe the strengths and weaknesses of the client-server internet approaches to web design and implementation 3. program, access, and manipulate data through the adoption of accepted standards, mark-up languages, client-side programming, and server-side programming 4. design and implement an interactive web site(s) with regard to issues of usability, accessibility and internationalisation 5. design and implement a client-server internet application that accommodates specific requirements and constraints, based on analysis, modelling or requirements specification 6. justify and explain particular internet application concepts, relevant alternatives and decision recommendations, including design considerations for internet security 7. be familiar with the Flask micro framework 8. know when to use a relational database and when to use a NoSQL database
### Lecture slides See SunLearn. ### Material from class See SunLearn. ### Teaching assistants David Baker Effendi, Andrei Dreyer, Liam Louw, Marc Elliot, Razeen Bahadoor ### Class Reps Ryan Pretorius, Nikita Smal

2020 Website

Term 2