Course Summary
Announcements
- Peer rating form for project 2. Each group member should email me their completed peer rating form on or before 20 May, with the subject heading: rw334 peer rating group #number. Please remember to also rate yourself.
- Lecture venues in main engineering: Mon A204, Wed A305, Fri A403B. Pracs: Tue Narga D
- A2 venue: VD Sterr 1011 and VD Sterr 1031
- A3 venue: Main Engineering A521
Projects
-
Project 1 Description (updated: 03/03/2022). Thanks Andrei for writing this project spec. Students must make use of the Computer Science Gitlab server with regular commits. Due date: 21 March at 23:59
-
Project 2 Description (updated: 04/05/2022). Students must make use of the Computer Science Gitlab server with regular commits. Due date: code - 16 May at 23:59 for code; report - 20 May at 23:59 and no marks will be deducted if handed in before 23 May at 23:59.
Course Summary
Instructor
Prof Brink van der Merwe, brinkvdmgmail dot com
Textbook
Recommended Extra Reading
- 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
- Mondays 12:00–12:50
- Wednesdays 8:00–8:50
- Fridays 9:00–9: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
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 databaseLecture slides
See SunLearn.
Material from class
See SunLearn.
Teaching assistants
Andrei Dreyer, Gareth Dalton, Lauren Abrahall, Julian Munz, Liné Dorfling, Alex Oxley
Class Reps
- Engineering: Arno Botha
- BSc/BComm: Sean van Wyk
2021 Website
- W3Schools W3Schools is a web developer information website, with tutorials and references relating to and covering many aspects of web programming.
- Joel Spolsky on Software Know About Unicode and Character Sets (No Excuses!)
- 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
- Mondays 12:00–12:50
- Wednesdays 8:00–8:50
- Fridays 9:00–9:50
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.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 database2020 Website
Term 2
- Textbook term 2: Fundamentals of Database Systems Global Edition By Ramez Elmasri and Shamkant B. Navathe, Edition: 7.
- Week 1: Chapter 1 and Chapter 2 of Fundamentals of Database Systems. Go through the review questions of Chapters 1 and 2 - see SunLearn. Work on the database with sample queries on SunLearn. Wrap up work on project 2 and start working on project 3.
- Week 2: See SunLearn for practical. Also watch (supplementary - not required) Database Lesson #1 of 8 - Introduction to Databases, Logical Database Design and E-R Diagrams and Database Lesson #4 of 8 - Data Modeling and the ER Model.
- Week 3: Watch (supplementary - not required) Database Lesson #2 of 8 - The Relational Model. Read Chapter 3 of Fundametals of Database Systems. See SunLearn for more content to work through during week 3.
- Week 4: Video (supplementary - not required) and Slides on the relational algebra. Also see SunLearn for a practical on PostgreSQL, SQLAlchemy and Flask. Read also the content at the following links wrt design patterns:
- Week 5:
- Work through the non-premium design pattern content at Refacturing Guru. Go through the Java versions of the code examples.
- Project 3 related, have a look at:
- Design pattern slides from Friday's lecture.
- Agile: The Agile Coach and have a look at the video (not required watching) What is Agile?
- Testing: Unit tests with Mockito - Tutorial, How to Start Unit Testing Your JavaScript Code and Unit Testing in JavaScript with Mocha.
- The Relational Data Model and Relational Database Contraints
- Week 6: Basic SQL
- Week 6: More SQL
- Week 6: Relational Algebra
- Week 6: Normalization
- Week 7:
- Web resources explaining B-trees and indexes:
- Video resources (that is not required watching) on normalization, data types and indexes: