├── _config.yml ├── assets ├── css │ └── style.scss └── scripts │ ├── requirements.txt │ ├── pytest.ini │ ├── README.md │ └── update_week.py ├── package.json ├── kinks ├── level-5 │ ├── cm-2040-databases-networks-and-the-web │ │ └── README.md │ └── cm-2005-object-oriented-programming │ │ └── README.md ├── level-4 │ ├── cm-1010-introduction-to-programming-ii │ │ └── README.md │ ├── cm-1035-algorithms-and-data-structures-i │ │ └── README.md │ ├── cm-1030-how-computers-work │ │ └── README.md │ ├── cm-1020-discrete-mathematics │ │ └── README.md │ └── cm-1040-web-development │ │ └── README.md └── README.md ├── LICENSE ├── showcase └── README.md ├── _sass └── rouge-monokai-dark.scss ├── modules ├── level-6 │ ├── cm-3025-virtual-reality │ │ └── README.md │ ├── cm-3040-physical-computing-iot │ │ └── README.md │ ├── cm-3020-artificial-intelligence │ │ └── README.md │ ├── cm-3055-interaction-design │ │ └── README.md │ ├── cm-3030-games-development │ │ └── README.md │ ├── cm-3005-data-science │ │ └── README.md │ ├── cm-3065-intelligent-signal-processing │ │ └── README.md │ ├── cm-3015-machine-learning-neural-networks │ │ └── README.md │ ├── phys-computing-iot │ │ └── README.md │ ├── web-mobile-dev │ │ └── README.md │ ├── cm-3035-advanced-web-development │ │ └── README.md │ ├── games-dev │ │ └── README.md │ ├── user-experience │ │ └── README.md │ ├── ml-ai │ │ └── README.md │ ├── virtual-reality │ │ └── README.md │ ├── cm-3010-databases-advanced-data-techniques │ │ └── README.md │ ├── cm-3060-natural-language-processing │ │ └── README.md │ ├── cm-3045-3d-graphics-animation │ │ └── README.md │ ├── cm-3070-final-project │ │ └── README.md │ ├── data-science │ │ └── README.md │ └── cm-3050-mobile-development │ │ └── README.md ├── level-5 │ ├── cm-2030-graphics-programming │ │ └── README.md │ ├── cm-2040-databases-networks-and-the-web │ │ └── README.md │ ├── cm-2025-computer-security │ │ └── README.md │ ├── cm-2010-software-design-and-development │ │ ├── README.md │ │ └── reading_list.md │ ├── cm-2005-object-oriented-programming │ │ └── README.md │ ├── cm-2045-professional-practice-for-computer-scientists │ │ └── README.md │ ├── cm-2015-programming-with-data │ │ └── README.md │ └── cm-2020-agile-software-projects │ │ └── README.md └── level-4 │ ├── cm-1015-computational-mathematics │ └── README.md │ ├── cm-1030-how-computers-work │ └── README.md │ ├── cm-1010-introduction-to-programming-ii │ └── README.md │ ├── cm-1040-web-development │ └── README.md │ └── cm-1035-algorithms-and-data-structures-i │ └── README.md ├── online-courses └── paid │ └── README.md ├── job-opportunities └── README.md ├── subreddit ├── README.md ├── rpl-guide.md ├── resources-links │ ├── links-reddit-sidebar-olddesign.md │ └── links-reddit-sidebar-redesign.md ├── interview-david-c.md ├── formative-summative.md ├── legal-protections.md └── fees-guide.md └── after-uol └── README.md /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate 2 | plugins: 3 | - jemoji 4 | -------------------------------------------------------------------------------- /assets/css/style.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | @import "jekyll-theme-slate"; -------------------------------------------------------------------------------- /assets/scripts/requirements.txt: -------------------------------------------------------------------------------- 1 | hypothesis==6.23.2 2 | pytest==6.2.5 3 | pytest-cov==3.0.0 -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "all-contributors-cli": "^6.20.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /assets/scripts/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | addopts = -rsxX --showlocals --tb=short --strict-markers --cov-report term-missing:skip-covered --cov=. 3 | testpaths = . 4 | xfail_strict = true 5 | -------------------------------------------------------------------------------- /assets/scripts/README.md: -------------------------------------------------------------------------------- 1 | # Using this script 2 | 3 | Install dependencies (preferably inside a [virtual environment](https://docs.python.org/3/library/venv.html)): 4 | 5 | cd assets/scripts 6 | pip install -r requirements.txt 7 | 8 | # or: 9 | pip install -r assets/scripts/requirements.txt 10 | 11 | Run the test suite: 12 | 13 | cd assets/scripts 14 | pytest 15 | 16 | # or: 17 | pytest assets/scripts 18 | 19 | Update the next semester start date: 20 | 21 | - Set the `semester_start_date` parameter of the `main` function to a new date. 22 | - Execute the script from the root directory: 23 | 24 | python assets/scripts/update_week.py 25 | -------------------------------------------------------------------------------- /kinks/level-5/cm-2040-databases-networks-and-the-web/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | # Table of contents 4 | 5 | - [Unable to generate a link for the midterm](#unable-to-generate-a-link-for-the-midterm) 6 | 7 | # Databases, Networks and the Web - Reported problems 8 | 9 | ## Unable to generate a link for the midterm 10 | 11 | In Coursera, you may face the message _"Error updating shared link"_ when trying to generate a link for the midterm. A possible solution is described as follows: 12 | 13 | 1. Open the lab environment in Coursera. 14 | 2. Make sure you have a backup of your files from the lab: **you _may_ lose your work in step 4**! 15 | 3. Click **Help** in the top-right corner (_not_ the "Help" menu inside VS Code, the one from Coursera). 16 | 4. Under the heading _"UPDATE LAB TO THE LATEST VERSION"_, click _"Get latest version"_. 17 | -------------------------------------------------------------------------------- /kinks/level-4/cm-1010-introduction-to-programming-ii/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | # Table of contents 4 | 5 | - [Table of contents](#table-of-contents) 6 | - [Introduction to programming II - Reported problems](#introduction-to-programming-ii---reported-problems) 7 | - [Case studies](#case-studies) 8 | - [Data visualizer](#data-visualizer) 9 | - [4.103](#4103) 10 | 11 | # Introduction to programming II - Reported problems 12 | 13 | This page is about the [Introduction to programming II module](../../../modules/level-4/cm-1010-introduction-to-programming-ii/). 14 | 15 | ## Case studies 16 | 17 | ### Data visualizer 18 | 19 | #### 4.103 20 | 21 | _"I think there might be a bug in `TechDiversityRace` `this.destroy()` when it calls `removeElements()`. This seems to remove the gallery from the main canvas. A possible workaround is to call `this.select.remove()`."_ - Ray Stinson 22 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Sébastien Lavoie 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /kinks/level-4/cm-1035-algorithms-and-data-structures-i/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | # Table of contents 4 | 5 | - [Table of contents](#table-of-contents) 6 | - [Algorithms and Data Structures I - Reported problems](#algorithms-and-data-structures-i---reported-problems) 7 | - [Week 6](#week-6) 8 | - [3.3.4 Using stacks to check for palindrome words](#334-using-stacks-to-check-for-palindrome-words) 9 | - [3.4.4 Using stacks to check html tags](#344-using-stacks-to-check-html-tags) 10 | 11 | # Algorithms and Data Structures I - Reported problems 12 | 13 | This page is about the [Algorithms and Data Structures I module](../../../modules/level-4/cm-1035-algorithms-and-data-structures-i/). 14 | 15 | ## Week 6 16 | 17 | ### 3.3.4 Using stacks to check for palindrome words 18 | 19 | - The widget has been designed to be compatible with Google Chrome. For instance, some highlighting functions during the initial tutorial do not work as expected on Firefox. 20 | 21 | ### 3.4.4 Using stacks to check html tags 22 | 23 | - The same issue as in 3.3.4 is present: Google Chrome is the preferred web browser. 24 | -------------------------------------------------------------------------------- /kinks/level-4/cm-1030-how-computers-work/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | # Table of contents 4 | 5 | - [Table of contents](#table-of-contents) 6 | - [How computers work - Reported problems](#how-computers-work---reported-problems) 7 | - [Week 2](#week-2) 8 | - [Review quiz (unverified)](#review-quiz-unverified) 9 | - [Week 6](#week-6) 10 | - [Lesson 6.1 Compression](#lesson-61-compression) 11 | - [Week 7](#week-7) 12 | - [Lesson 7.1](#lesson-71) 13 | - [Video: CPU and memory](#video-cpu-and-memory) 14 | 15 | # How computers work - Reported problems 16 | 17 | This page is about the [How Computers Work module](../../../modules/level-4/cm-1030-how-computers-work/). 18 | 19 | ## Week 2 20 | 21 | ### Review quiz (unverified) 22 | 23 | - The answer to question 2 should be `yes`. 24 | - The answer to question 19 should be `yes and`. 25 | 26 | ## Week 6 27 | 28 | ### Lesson 6.1 Compression 29 | 30 | - Video: Compression - It loops the whole introduction twice up until around 31 | 2m30s mark. 32 | 33 | ## Week 7 34 | 35 | ### Lesson 7.1 36 | 37 | #### Video: CPU and memory 38 | 39 | - There is no audio from 5:26. 40 | -------------------------------------------------------------------------------- /kinks/level-4/cm-1020-discrete-mathematics/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | # Table of contents 4 | 5 | - [Table of contents](#table-of-contents) 6 | - [Discrete Mathematics - Reported problems](#discrete-mathematics---reported-problems) 7 | - [Week 10](#week-10) 8 | - [5.212 Domino logic gates simulation](#5212-domino-logic-gates-simulation) 9 | - [Firefox browser](#firefox-browser) 10 | 11 | # Discrete Mathematics - Reported problems 12 | 13 | This page is about the [Discrete Mathematics module](../../../modules/level-4/cm-1020-discrete-mathematics/). 14 | 15 | ## Week 10 16 | 17 | ### 5.212 Domino logic gates simulation 18 | 19 | #### Firefox browser 20 | 21 | If the simulation fails to load, it can occur due to the hardware acceleration option being disabled. To enable it, go to the preferences (you can type `about:preferences` in the URL bar): then, under **General** tab, search for **Performance** and uncheck the option `Use recommended performance settings`. By doing so, the option `Use hardware acceleration when available` will appear below it. Make sure it is enabled for this domino simulation. For more information on browser compatibility and how to fix possible issues, see [this answer](https://superuser.com/a/836833/1032549) on Superuser.com. 22 | -------------------------------------------------------------------------------- /kinks/level-4/cm-1040-web-development/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | # Table of contents 4 | 5 | - [Table of contents](#table-of-contents) 6 | - [Web Development - Reported problems](#web-development---reported-problems) 7 | - [Week 6](#week-6) 8 | - [Lecture: 3.3.10 HTML media tags](#lecture-3310-html-media-tags) 9 | - [Practice Quiz: 3.3.11 Review information](#practice-quiz-3311-review-information) 10 | - [Week 15](#week-15) 11 | - [Practice quiz 8.1.6, 8.2.2 and 8.2.5](#practice-quiz-816-822-and-825) 12 | 13 | # Web Development - Reported problems 14 | 15 | This page is about the [Web Development module](../../../modules/level-4/cm-1040-web-development/). 16 | 17 | ## Week 6 18 | 19 | ### Lecture: 3.3.10 HTML media tags 20 | 21 | - Video: The video appears with all sorts of white dots all over. It looks 22 | like the professor is in a snowball. 23 | 24 | ### Practice Quiz: 3.3.11 Review information 25 | 26 | - The `width` attribute is _not_ a global attribute. 27 | - The `png` file extension _is_ from image files. 28 | - The `jog` file extension should not be selected because it doesn't really 29 | exist. Unless it's a typo for `jpg` or `jpeg`. 30 | - The `bmp` file extension _is_ from image files. 31 | 32 | ## Week 15 33 | 34 | ### Practice quiz 8.1.6, 8.2.2 and 8.2.5 35 | 36 | - Some questions ask for true or false answers, but give the options `1` and `0`. Those options should be `true` and `false`, respectively. 37 | -------------------------------------------------------------------------------- /showcase/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../README.md) 2 | 3 | # Showcase 4 | 5 | The following list is a showcase of student-built applications, technologies, frameworks, and research that other students and faculty may find useful. 6 | 7 | ### Table of contents 8 | 9 | - [Educational](#educational) 10 | - [Tools](#tools) 11 | 12 | --- 13 | 14 | ## Educational 15 | 16 | - [Coding Rooms](https://codingrooms.com/) - Virtual classrooms for teaching coding that let you see all your students' code in real-time with multi-language support, audio, video, and presentation uploads, by [Sasha Varlamov (BSc CS - ML/AI program)](https://github.com/svarlamov). 17 | 18 | ## Tools 19 | 20 | - [BSc Computer Science - Degree Planner](https://docs.google.com/spreadsheets/d/1tne-S59tVIY14KZ63Sr7VXlZ6DxX_JY2rIbZFsGEnvQ/edit#gid=159070449) - Plan your degree and calculate your grades with this one neat and simple-to-use tool. By [Arjun Muralidharan](https://github.com/arjunmuralidharan). 21 | - [UoL Coursera Grades](https://chrome.google.com/webstore/detail/uol-coursera-grades/dhpmaakdfkbiagigolpmjdiancfhhick) - _"The extension is useful for seeing unofficial grades for midterm and final projects. You must use the "New Experience" UI for this to work properly. When on the home calendar page, you will see a button that will display any grades that have yet to be officially released."_ By [Spencer Eick](https://github.com/eicksl). 22 | - [UoL Grades Calculator](https://github.com/sglavoie/uol-grades-calculator) - Grades calculator for this BSc Computer Science at the University of London, by [Sébastien Lavoie](https://github.com/sglavoie). 23 | -------------------------------------------------------------------------------- /_sass/rouge-monokai-dark.scss: -------------------------------------------------------------------------------- 1 | .highlight table td { padding: 5px; } 2 | .highlight table pre { margin: 0; } 3 | .highlight, .highlight .w { 4 | color: #f8f8f2; 5 | background-color: #272822; 6 | } 7 | .highlight .err { 8 | color: #272822; 9 | background-color: #f92672; 10 | } 11 | .highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cpf, .highlight .c1, .highlight .cs { 12 | color: #75715e; 13 | } 14 | .highlight .cp { 15 | color: #f4bf75; 16 | } 17 | .highlight .nt { 18 | color: #f4bf75; 19 | } 20 | .highlight .o, .highlight .ow { 21 | color: #f8f8f2; 22 | } 23 | .highlight .p, .highlight .pi { 24 | color: #f8f8f2; 25 | } 26 | .highlight .gi { 27 | color: #a6e22e; 28 | } 29 | .highlight .gd { 30 | color: #f92672; 31 | } 32 | .highlight .gh { 33 | color: #66d9ef; 34 | background-color: #272822; 35 | font-weight: bold; 36 | } 37 | .highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv { 38 | color: #ae81ff; 39 | } 40 | .highlight .kc { 41 | color: #fd971f; 42 | } 43 | .highlight .kt { 44 | color: #fd971f; 45 | } 46 | .highlight .kd { 47 | color: #fd971f; 48 | } 49 | .highlight .s, .highlight .sb, .highlight .sc, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 { 50 | color: #a6e22e; 51 | } 52 | .highlight .sa { 53 | color: #ae81ff; 54 | } 55 | .highlight .sr { 56 | color: #a1efe4; 57 | } 58 | .highlight .si { 59 | color: #cc6633; 60 | } 61 | .highlight .se { 62 | color: #cc6633; 63 | } 64 | .highlight .nn { 65 | color: #f4bf75; 66 | } 67 | .highlight .nc { 68 | color: #f4bf75; 69 | } 70 | .highlight .no { 71 | color: #f4bf75; 72 | } 73 | .highlight .na { 74 | color: #66d9ef; 75 | } 76 | .highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mx { 77 | color: #a6e22e; 78 | } 79 | .highlight .ss { 80 | color: #a6e22e; 81 | } 82 | -------------------------------------------------------------------------------- /modules/level-6/cm-3025-virtual-reality/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Virtual Reality (CM3025)](#virtual-reality-cm3025) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Resources](#resources) 10 | - [:heart: Notes](#heart-notes) 11 | 12 | --- 13 | 14 | ## Virtual Reality (CM3025) 15 | 16 | The module will combine the theory and psychology of VR with practical 17 | development skills. You will learn the skills needed to design 18 | compelling VR environments and the skills that apply to creative 19 | practice, science and industry. 20 | 21 | This module aims to give you the skills needed to develop VR. These 22 | skills include understanding the basic theory of presence in VR, 23 | which underlies the basic design principles. You will also learn 24 | practical development skills, using an appropriate 3D engine to create 25 | interactive virtual environments. These skills will include creating 26 | 3D environments, designing and implementing 3D interaction for VR and 27 | building social VR experiences with interactive virtual characters. 28 | 29 | ### Professor(s) 30 | 31 | - Dr. Marco Gillies 32 | - Dr. Sylvia Pan 33 | 34 | ### Topics covered 35 | 36 | - Introduction to Virtual Reality: History of VR, VR Hardware and applications 37 | - Presence: the three illusions of VR 38 | - 3D graphics for VR 39 | - Immersive Sound for VR 40 | - Interaction Design in VR 41 | - Navigation 42 | - Object Interaction and physics 43 | - Virtual Characters 44 | - Social VR 45 | - Developing a VR project 46 | 47 | ### Assessment 48 | 49 | Coursework only (Type III) 50 | 51 | ### Syllabus 52 | 53 | - [Syllabus](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM3025_VR.pdf) 54 | 55 | ### Resources 56 | 57 | #### :heart: Notes 58 | 59 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-6/virtual-reality). 60 | -------------------------------------------------------------------------------- /modules/level-6/cm-3040-physical-computing-iot/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Physical Computing and the Internet of Things (CM3040)](#physical-computing-and-the-internet-of-things-cm3040) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Syllabus](#syllabus) 10 | - [Resources](#resources) 11 | - [:heart: Notes](#heart-notes) 12 | 13 | --- 14 | 15 | ## Physical Computing and the Internet of Things (CM3040) 16 | 17 | This course provides an introduction to the development and programming 18 | of hardware devices that can sense and act in the environment. The 19 | course will explain and demonstrate how the environment, which is 20 | inherently continuous, can be monitored by analogue electrical and 21 | mechanical sensors, then captured and analysed using a computer, which 22 | is a discrete system. A focus of this course is the interface between 23 | the digital and the analogue. 24 | 25 | This study encompasses basic physics, electronics, programming and 26 | software engineering. The practical objective of this course is the 27 | development of the skills needed for designing and building interactive 28 | physical devices. 29 | 30 | ### Professor(s) 31 | 32 | - Dr. Darpan Triboan 33 | 34 | ### Topics covered 35 | 36 | - Electricity and circuits 37 | - Microcontrollers 38 | - Sensors 39 | - Physical Interaction Design 40 | - Physical Computing Projects 41 | - Motors and actuators 42 | - Communications protocols 43 | - Networked Devices 44 | - Bodily monitoring 45 | - Robots 46 | 47 | ### Assessment 48 | 49 | Coursework only (Type III) 50 | 51 | ### Syllabus 52 | 53 | - [Syllabus](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM3040_IOT.pdf) 54 | 55 | ## Resources 56 | 57 | ### :heart: Notes 58 | 59 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-6/physical-computing-and-internet-of-things). 60 | -------------------------------------------------------------------------------- /online-courses/paid/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../README.md) 2 | 3 | # Paid online courses 4 | 5 | # Table of contents 6 | 7 | - [Paid online courses](#paid-online-courses) 8 | - [Table of contents](#table-of-contents) 9 | - [Subscription-based](#subscription-based) 10 | - [Pay per course](#pay-per-course) 11 | 12 | --- 13 | 14 | # Subscription-based 15 | 16 | - [ACM - Association for Computing Machinery](https://www.acm.org/membership) \* [Includes access to O'Reilly, ScienceDirect and Skillsoft learning platforms](https://learning.acm.org/e-learning). - _"ACM, the world's largest educational and scientific computing society, delivers resources that advance computing as a science and a profession."_ 17 | - [O'Reilly Safari Books Online](https://learning.oreilly.com) - _"Gain technology and business knowledge and hone your skills with learning resources created and curated by O'Reilly's experts: live online training, video, books, conferences, our platform has content from 200+ of the world’s best publishers."_ 18 | - [PluralSight](https://www.pluralsight.com) - _"The technology learning platform that provides web development, IT certification and ondemand training that helps your career and your business move forward with the right technology and the right skills."_ 19 | - [The Great Courses Plus](https://www.thegreatcoursesplus.com) - _"Access a world of knowledge. Unlimited video learning with the world's greatest professors at The Great Courses Plus."_ 20 | - [Treehouse](https://teamtreehouse.com) - _"Treehouse [...] is an online technology school that offers beginner to advanced courses in web design, web development, mobile development and game development taught by team of expert teachers. Its courses are aimed at beginners looking to learn coding skills for a career in the tech industry."_ ([from Wikipedia]()) 21 | 22 | # Pay per course 23 | 24 | - [Udacity](https://www.udacity.com) - _"Advance your career with online courses in programming, data science, artificial intelligence, digital marketing, and more. Built with industry leaders."_ 25 | - [Udemy](https://www.udemy.com) - _"Study any topic, anytime. Choose from thousands of expert-led courses now."_ 26 | -------------------------------------------------------------------------------- /kinks/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../README.md) 2 | 3 | # Table of contents 4 | 5 | - [Table of contents](#table-of-contents) 6 | - [Kinks found in Level 4 modules](#kinks-found-in-level-4-modules) 7 | - [Kinks found in Level 5 modules](#kinks-found-in-level-5-modules) 8 | - [Note to future students](#note-to-future-students) 9 | 10 | --- 11 | 12 | # Kinks found in Level 4 modules 13 | 14 | - [Algorithms and Data Structures I](../kinks/level-4/cm-1035-algorithms-and-data-structures-i/README.md) 15 | - [Discrete Mathematics](../kinks/level-4/cm-1020-discrete-mathematics/README.md) 16 | - [How Computers Work](../kinks/level-4/cm-1030-how-computers-work/README.md) 17 | - [Introduction to Programming I](../kinks/level-4/cm-1005-introduction-to-programming-i/README.md) 18 | - [Introduction to Programming II](../kinks/level-4/cm-1010-introduction-to-programming-ii/README.md) 19 | - [Web Development](../kinks/level-4/cm-1040-web-development/README.md) 20 | 21 | # Kinks found in Level 5 modules 22 | 23 | - [Databases, Networks and the Web](../kinks/level-5/cm-2040-databases-networks-and-the-web/README.md) 24 | - [Object Oriented Programming](../kinks/level-5/cm-2005-object-oriented-programming/README.md) 25 | 26 | As a great complimentary resource, don't forget to check out the `#bugs` channel on Slack. 27 | 28 | # Note to future students 29 | 30 | The information contained in this "kinks" section may not reflect the current state of the modules. Problems are being reported mainly by students from the first cohort to enroll in each of those modules and those problems may be fixed later down the road once the first batch of students is no longer part of those modules. 31 | 32 | Bugs that come up at the beginning of the modules will probably not be listed here as they often disappear after a short while. Above all, this section will strive to document errors in videos or other resources that may require more time to find a fix on their own. 33 | 34 | If you find information that's inaccurate, please do not hesitate to :lock: **[reach out on Slack](https://londoncs.slack.com/)** (students only), **[open a new issue](https://github.com/world-class/REPL/issues/new)** or **[send a pull request](https://github.com/world-class/REPL/pulls)**! Your help is very much appreciated so that we can keep this repository useful to as many students as possible :wink:. 35 | -------------------------------------------------------------------------------- /modules/level-6/cm-3020-artificial-intelligence/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Artificial Intelligence (CM3020)](#artificial-intelligence-cm3020) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Past exams](#past-exams) 10 | - [Syllabus](#syllabus) 11 | - [Resources](#resources) 12 | - [:heart: Notes](#heart-notes) 13 | 14 | --- 15 | 16 | ## Artificial Intelligence (CM3020) 17 | 18 | This module is focused on Artificial Intelligence techniques. You 19 | will understand the historical development of Artificial Intelligence 20 | including search, vision and planning. You will become familiar with 21 | the foundations of agent-based approaches to software design, decision 22 | making and problem solving including under uncertainty. You will have an 23 | opportunity to apply Artificial Intelligence techniques to particular 24 | problems such as game playing and decision making. 25 | 26 | ### Professor(s) 27 | 28 | - Dr. Larisa Soldatova 29 | - Dr. Matthew Yee-King 30 | 31 | ### Topics covered 32 | 33 | - Historical overview of Artificial Intelligence. 34 | - Intelligent agents and environments (Part 1) 35 | - Intelligent agents and environments (Part 2) 36 | - Problem solving 37 | - Knowledge representation, ontologies 38 | - Uncertain knowledge and reasoning under uncertainty. 39 | - Games and optimal decisions in games (Part 1) 40 | - Games and optimal decisions in games (Part 2) 41 | - Robotics 42 | - Advanced Topics in AI 43 | 44 | ### Assessment 45 | 46 | One two-hour unseen written examination and coursework (Type I) 47 | 48 | ### Past exams 49 | 50 | [See past exams here](https://github.com/world-class/binary-assets/tree/master/modules/cm3020-ai/past-exams). 51 | 52 | ### Syllabus 53 | 54 | - [Syllabus](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM3020_AI.pdf) 55 | 56 | ## Resources 57 | 58 | ### :heart: Notes 59 | 60 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-6/artificial-intelligence). 61 | 62 | ### Reinforcement Learning / Deep RL: 63 | - [Deep RL Course](https://huggingface.co/learn/deep-rl-course/unit0/introduction). - Hugging Face 64 | 65 | ### Genetic Algorithms: 66 | - [Hands-On Genetic Algorithms with Python - Second Edition](https://learning.oreilly.com/library/view/hands-on-genetic-algorithms/9781805123798/). - Eyal Wirsansky 67 | -------------------------------------------------------------------------------- /modules/level-6/cm-3055-interaction-design/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Interaction Design [CM3055]](#interaction-design-cm3055) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Module specification](#module-specification) 10 | - [Syllabus](#syllabus) 11 | - [Resources](#resources) 12 | - [:heart: Notes](#heart-notes) 13 | - [Mock Papers](#mock-papers) 14 | 15 | --- 16 | 17 | ## Interaction Design [CM3055] 18 | 19 | When taking this module, you will examine the notion of 'interaction 20 | with technology'. You will focus on the concepts behind modern user 21 | experience design and production. You will gain a solid grasp and 22 | practical experience of the process which allows the creation of 23 | interactive systems. This process involves specification, design, 24 | prototyping and evaluation. You will examine several design approaches 25 | and techniques, and consider how they enable usability engineering. You 26 | will learn how to evaluate interactive systems against criteria such as 27 | efficiency and usability. You will examine issues of accessibility from 28 | the perspective of different populations. 29 | 30 | ### Professor(s) 31 | 32 | - Dr. Sarah Wiseman 33 | - Dr. Sean McGrath 34 | 35 | ### Topics covered 36 | 37 | - History of HCI. 38 | - Usability and Principles of design. 39 | - User-centred design techniques. 40 | - Evaluation of interaction design. 41 | - Evaluation of interaction design part 2 42 | - Designing for different users. 43 | - Design case studies. 44 | - Design case studies part 2 45 | - Tools and techniques that support interaction development. 46 | - Current trends in interaction design and HCI. 47 | 48 | ### Assessment 49 | 50 | One two-hour unseen written examination and coursework (Type I) 51 | 52 | ### Module specification 53 | 54 | - [Module specification](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM3055_ID-Module-Spec.pdf) 55 | 56 | ### Syllabus 57 | 58 | - [Syllabus](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM3055_ID.pdf) 59 | 60 | ### Resources 61 | 62 | #### :heart: Notes 63 | 64 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-6/interaction-design). 65 | 66 | #### Mock papers 67 | - [Past exams](https://github.com/world-class/binary-assets/tree/master/modules/cm3055-id) 68 | -------------------------------------------------------------------------------- /modules/level-5/cm-2030-graphics-programming/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | # Table of contents 4 | 5 | - [Professor(s)](#professors) 6 | - [Topics covered](#topics-covered) 7 | - [Assessment](#assessment) 8 | - [Module specification](#module-specification) 9 | - [Syllabus](#syllabus) 10 | - [Resources](#resources) 11 | - [Complementary learning](#complementary-learning) 12 | - [:heart: Notes](#heart-notes) 13 | 14 | --- 15 | 16 | # Graphics Programming 17 | 18 | This module aims to show you how to work with images in a variety of 19 | ways. You will learn how to synthesise graphics and how to process 20 | visual signals. You will learn about the mathematical ideas that 21 | underpin digital representations of graphics; how digital media files 22 | represent graphics, and how to handle and manipulate them; and the 23 | basics of working with simulated physics and 3D graphics. 24 | 25 | ## Professor(s) 26 | 27 | - Dr. Theo Papatheodorou 28 | 29 | ## Topics covered 30 | 31 | - Introduction to graphics 32 | - Coordinate transformations 33 | - Number generators: noise/sine 34 | - Images, pixels, colors 35 | - Image processing 36 | - Computer Vision: introduction 37 | - Computer Vision: advanced 38 | - Simulating physical systems 39 | - 3D graphics 40 | - Recap and review 41 | 42 | ## Assessment 43 | 44 | Coursework only (Type II) 45 | 46 | ## Module specification 47 | 48 | - [Module specification (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM2030_GP-Module-Spec.pdf) 49 | 50 | ## Syllabus 51 | 52 | - [Syllabus PDF (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM2030_GP.pdf) 53 | 54 | ### Primary programming language 55 | 56 | JavaScript 57 | 58 | ## Resources 59 | 60 | ### Complementary learning 61 | 62 | - [Collision Detection](https://github.com/jeffThompson/CollisionDetection) - Uses [Processing](https://github.com/processing-js/processing-js) (deprecated), which is similar to but not the same as [p5js](https://p5js.org). _"This book explains the algorithms behind [...] collisions using basic shapes like circles, rectangles, and lines so you can implement them into your own projects."_. 63 | - [Image Processing in p5.js](https://idmnyu.github.io/p5.js-image/) - _"Basic setup, filters, layers, animation setup, blur, edge detection."_ 64 | 65 | ### :heart: Notes 66 | 67 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-5/graphics-programming). 68 | -------------------------------------------------------------------------------- /modules/level-6/cm-3030-games-development/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Games Development (CM3030)](#games-development-cm3030) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Module specification](#module-specification) 10 | - [Syllabus](#syllabus) 11 | - [Resources](#resources) 12 | - [:heart: Notes](#heart-notes) 13 | 14 | ## Games Development (CM3030) 15 | 16 | This module will introduce you to i) industry standard tools for 17 | game development, such as game engines, and ii) the process of game 18 | development, including prototyping and playtesting. You will undertake 19 | a short series of game development projects, each lasting a set number 20 | of weeks and with a specific brief. For each project, you will propose 21 | a game that fits the brief, and then you will implement it. You are 22 | expected to deliver the proposed game and document it thoroughly. 23 | Through this process, you will develop an awareness of intended audience 24 | and the use of media for documentation. 25 | 26 | Contemporary video game production draws on a range of techniques from 27 | artificial intelligence (AI) to perform tasks such as controlling 28 | virtual agents and generating novel game content. This module will also 29 | introduce crucial game AI concepts. Compared to mainstream AI, the 30 | emphasis is less on optimal problem solving and more on entertaining the 31 | player with limited computational resources. This module gives students 32 | practical experience of programming game AI systems and an understanding 33 | of the relevant theory. 34 | 35 | ### Professor(s) 36 | 37 | - Dr. Tom Cole 38 | 39 | ### Topics covered 40 | 41 | - Introduction to game development, the games industry and game engines 42 | - Creating sprite based 2D 43 | - Scripting game interaction 44 | - 2D physics and collision 45 | - Game Design 46 | - Developing a Game project 47 | - State Machines 48 | - Pathfinding 49 | - Behaviour Trees 50 | - Recap and review 51 | 52 | ### Assessment 53 | 54 | Coursework only (Type III) 55 | 56 | ### Module specification 57 | 58 | - [Module specification](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM3030_GD-Module-Spec.pdf) 59 | 60 | ### Syllabus 61 | 62 | - [Syllabus](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM3030_GD.pdf) 63 | 64 | ### Resources 65 | 66 | #### :heart: Notes 67 | 68 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-6/games-development). 69 | -------------------------------------------------------------------------------- /job-opportunities/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../README.md) 2 | 3 | # Job Opportunities 4 | 5 | # Table of contents 6 | 7 | - [Job Opportunities](#job-opportunities) 8 | - [Table of contents](#table-of-contents) 9 | - [Job readiness](#job-readiness) 10 | - [Awesome Interviews](#awesome-interviews) 11 | - [Work: Remote options](#work-remote-options) 12 | - [Awesome Remote Job](#awesome-remote-job) 13 | - [Awesome Job Boards](#awesome-job-boards) 14 | - [Finding opportunities](#finding-opportunities) 15 | - [Freelancing](#freelancing) 16 | 17 | # Job readiness 18 | 19 | - See [Websites > Programming > Coding challenges](../websites/README.md#coding-challenges) for direct opportunities to practice solving real-world interview questions and relevant CS problems. 20 | - See [Websites > Programming > Interview preparation](../websites/README.md#interview-preparation) for examples of interview questions from big tech companies such as Facebook, Google and Microsoft. 21 | 22 | ## [Awesome Interviews](https://github.com/MaximAbramchuck/awesome-interview-questions) 23 | 24 | > A curated list of lists of technical interview questions. — [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) 25 | 26 | --- 27 | 28 | # Work: Remote options 29 | 30 | ## [Awesome Remote Job](https://github.com/lukasz-madon/awesome-remote-job) 31 | 32 | > A curated list of awesome [remote working](https://en.wikipedia.org/wiki/Telecommuting) resources. — [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) 33 | 34 | ## [Awesome Job Boards](https://github.com/tramcar/awesome-job-boards) 35 | 36 | > A curated list of awesome niche job boards. — [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) 37 | 38 | ## Finding opportunities 39 | 40 | - :heart: [A curated list of awesome remote jobs and resources](https://github.com/lukasz-madon/awesome-remote-job) - Articles, videos, books, job boards, interviewing, companies with "remote DNA" and much more. 41 | - [50 remote tech companies hiring now for remote jobs](https://www.diygenius.com/remote-jobs/) (Updated: April 3rd, 2020) 42 | - [Dynamite Jobs](https://dynamitejobs.co/) 43 | - [Remote only](https://remoteonly.org/) 44 | - [Remote](https://remote.com/) 45 | - [We Work Remotely](https://weworkremotely.com/) 46 | 47 | ## Freelancing 48 | 49 | - [Guru](https://www.guru.com/) 50 | - [Toptal](https://www.toptal.com/) 51 | -------------------------------------------------------------------------------- /modules/level-6/cm-3005-data-science/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | #### Table of contents 4 | 5 | - [Data Science (CM3005)](#data-science-cm3005) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Module specification](#module-specification) 10 | - [Recognition of Prior Learning](#recognition-of-prior-learning) 11 | - [Syllabus](#syllabus) 12 | - [Resources](#resources) 13 | - [:heart: Notes](#heart-notes) 14 | - [Reading list](#reading-list) 15 | 16 | --- 17 | 18 | ## Data Science (CM3005) 19 | 20 | By taking this module, you will gain a data science skillset. With 21 | these skills, you will be able to write computer programs that can 22 | read, process and analyse textual and numerical data. You will be able 23 | to generate plots and interactive visualisations of data. You will 24 | understand how to apply statistical methods to the interpretation of 25 | results. You will be able to use data analysis in the decision-making 26 | process. You will also learn about a range of application domains for 27 | data science. 28 | 29 | ### Professor(s) 30 | 31 | - Dr. Tony Russel-Rose 32 | 33 | ### Topics covered 34 | 35 | - Introduction and development environment 36 | - Working with different types of data 37 | - Correlation and regression 38 | - Distributions and significance 39 | - Processing text data 40 | - Decision making based on data analysis: from correlation to causation 41 | - Introduction to data visualisation 42 | - Time-series data visualisation 43 | - Scientific data visualisation 44 | - Case studies: different contexts for data analysis 45 | 46 | ### Assessment 47 | 48 | One two-hour unseen written examination and coursework (Type I) 49 | 50 | ### Module specification 51 | 52 | - [Module specification](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM3005_DS-Module-Spec.pdf) 53 | 54 | ### Recognition of Prior Learning 55 | 56 | - At the time of this writing, you can apply for [automatic RPL](https://london.ac.uk/applications/how-apply/recognition-prior-learning/recognition-and-accreditation-prior-learning-3) for this module if you obtain the [IBM Data Science Professional Certificate](https://www.coursera.org/professional-certificates/ibm-data-science). 57 | 58 | ### Syllabus 59 | 60 | - [Syllabus](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM3005_DS.pdf) 61 | 62 | ### Primary programming language 63 | 64 | Python 65 | 66 | ### Resources 67 | 68 | #### :heart: Notes 69 | 70 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-6/data-science). 71 | 72 | #### Reading list 73 | 74 | - [Reading list](https://github.com/world-class/binary-assets/blob/master/modules/cm3005-ds/CM3005_reading_list.pdf) 75 | -------------------------------------------------------------------------------- /modules/level-6/cm-3065-intelligent-signal-processing/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Intelligent Signal Processing (CM3065)](#intelligent-signal-processing-cm3065) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Module specification](#module-specification) 10 | - [Syllabus](#syllabus) 11 | - [Resources](#resources) 12 | - [:heart: Notes](#heart-notes) 13 | 14 | --- 15 | 16 | ## Intelligent Signal Processing (CM3065) 17 | 18 | This module aims to provide you with a broad experience of digital 19 | signal processing techniques and applications. You will study how audio 20 | and video signals can be captured and processed by a computer program. 21 | You will learn about time domain and frequency domain representations 22 | and processing. You will learn how you can extract information from 23 | audio signals. You will implement movement and face detection systems 24 | that work with live camera input. 25 | 26 | ### Professor(s) 27 | 28 | - Dr. Francisco Marti Perez 29 | 30 | ### Topics covered 31 | 32 | - Capturing representing and processing audio signals 33 | - LTI systems and impulse responses 34 | - Frequency domain representations 35 | - Extracting features from signals 36 | - Speech recognition 37 | - Capturing, representing and processing camera input 38 | - Computer vision: movement detection 39 | - Computer vision: face detection 40 | - Compressing signals 41 | 42 | ### Assessment 43 | 44 | Coursework only (Type II) 45 | 46 | ### Module specification 47 | 48 | - [Module specification](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM3065_ISP-Module-Spec.pdf) 49 | 50 | ### Syllabus 51 | 52 | - [Syllabus](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM3065_ISP.pdf) 53 | 54 | ### Primary programming language 55 | 56 | Python & JavaScript 57 | 58 | ### Resources 59 | 60 | #### :heart: Notes 61 | 62 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-6/intelligent-signal-processing). 63 | 64 | #### Textbooks used in the module 65 | 66 | - Collins, N. Introduction to computer music. (Chichester: John Wiley & Sons, 2010). 67 | - Downey, A.B. Think DSP − Digital Signal Processing in Python. (Needham: Green Tea Press, 2014). 68 | - Hosken, D. W. An introduction to music technology. (New York: Routledge, 2011). 69 | 70 | #### Complimentary resources 71 | - [Digital Signals Theory](https://brianmcfee.net/dstbook-site/content/intro.html). - Prof. Dr. Brian McFee. 72 | 73 | #### Libraries and other tools 74 | 75 | - [p5.js, p5.sound, p5.speech](https://p5js.org/libraries/) 76 | - [Audacity](https://manual.audacityteam.org/) 77 | - [Mozilla DeepSpeech](https://deepspeech.readthedocs.io/en/r0.9/) 78 | - [OpenCV](https://docs.opencv.org/4.6.0/d1/dfb/intro.html) 79 | - [ffmpeg](https://ffmpeg.org/) 80 | -------------------------------------------------------------------------------- /modules/level-6/cm-3015-machine-learning-neural-networks/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | #### Table of contents 4 | 5 | - [Machine Learning and Neural Networks (CM3015)](#machine-learning-and-neural-networks-cm3015) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Module specification](#module-specification) 10 | - [Recognition of Prior Learning](#recognition-of-prior-learning) 11 | - [Past exams](#past-exams) 12 | - [Syllabus](#syllabus) 13 | - [Resources](#resources) 14 | - [:heart: Notes](#heart-notes) 15 | - [Textbooks used in this Module](#textbooks-used-in-this-module) 16 | 17 | --- 18 | 19 | ## Machine Learning and Neural Networks (CM3015) 20 | 21 | This module provides a broad view of machine learning and neural 22 | networks. You will learn how to solve common machine learning problems 23 | such as regression, classification, clustering, matrix completion and 24 | pattern recognition. You will learn about neural networks and how they 25 | can be trained and optimised, including an exploration of deep neural 26 | networks. You will learn about machine learning and neural network 27 | software libraries that allow you to develop machine learning systems 28 | rapidly, and you will learn how to verify and evaluate the results. 29 | 30 | ### Professor(s) 31 | 32 | - Dr. Jamie Ward 33 | - Dr. Tim Blackwell 34 | 35 | ### Topics covered 36 | 37 | - Regression and classification 38 | - Features and distances 39 | - Supervised clustering 40 | - Evaluation: accuracy, precision, recall and cross validation 41 | - Dimensional reduction: principal component analysis 42 | - Matrix completion 43 | - Unsupervised clustering 44 | - Multi-Layer Perceptrons and back progagation 45 | - Network optimisers 46 | - Deep and recurrent networks 47 | 48 | ### Assessment 49 | 50 | Coursework only (Type II). 51 | 52 | ### Module specification 53 | 54 | - [Module specification](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM3015_MLNN-Module-Spec.pdf) 55 | 56 | ### Recognition of Prior Learning 57 | 58 | - At the time of this writing, you can apply for [automatic RPL](https://london.ac.uk/applications/how-apply/recognition-prior-learning/recognition-and-accreditation-prior-learning-3) for this module if you obtain the [IBM AI Engineering Professional Certificate](https://www.coursera.org/professional-certificates/ai-engineer). 59 | 60 | ### Past exams 61 | 62 | - [See past-exams/cm3015-mlnn at binary-assets](https://github.com/world-class/binary-assets/tree/master/modules/cm3015-mlnn/past-exams). 63 | 64 | ### Syllabus 65 | 66 | - [Syllabus](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM3015_MLNN.pdf) 67 | 68 | ### Primary programming language 69 | 70 | Python 71 | 72 | ### Resources 73 | 74 | #### :heart: Notes 75 | 76 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-6/machine-learning-and-neural-networks). 77 | 78 | #### Textbooks used in this Module 79 | 80 | - [Deep Learning with Python (1st ed)](https://ebookcentral.proquest.com/lib/londonww/detail.action?docID=6642860); Chollet, François (2017); Manning, New York. 81 | -------------------------------------------------------------------------------- /modules/level-5/cm-2040-databases-networks-and-the-web/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Databases, Networks and the Web](#databases-networks-and-the-web) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Mock exam](#mock-exam) 10 | - [Module specification](#module-specification) 11 | - [Reading list for this course](#reading-list-for-this-course) 12 | - [Past exams](#past-exams) 13 | - [Syllabus](#syllabus) 14 | - [Resources](#resources) 15 | - [Kinks to be aware of](#kinks-to-be-aware-of) 16 | - [:heart: Notes](#heart-notes) 17 | - [Websites](#websites) 18 | 19 | --- 20 | 21 | ## Databases, Networks and the Web 22 | 23 | In this module, you will learn theory and practical skills focused 24 | on the modern web, internet and client-server applications. You will 25 | learn about relational database systems, mainly from a development 26 | perspective, emphasising issues related to data modelling and 27 | database implementation in SQL. You will learn how to model data in a 28 | database, retrieve data from the database and provide access to data 29 | through dynamic websites. In particular, you will learn about the 30 | Relational Model, Query processing, and socket architectures to enable 31 | communication. 32 | 33 | ### Professor(s) 34 | 35 | - Dr. Elaheh Homayounvala 36 | 37 | ### Topics covered 38 | 39 | - Networking concepts 40 | - Building Simple socket clients and servers 41 | - Building an HTTP server 42 | - Generating web pages from data using templates 43 | - Relational Databases 44 | - Querying a database 45 | - Representing data in a database 46 | - Representing data in a database pt 2 47 | - Revision of HTML and CSS 48 | - Building a dynamic website 49 | 50 | ### Assessment 51 | 52 | One two hour unseen written examination and coursework (Type I) 53 | 54 | ### Mock exam 55 | 56 | [See the `binary-assets` repository](https://github.com/world-class/binary-assets/tree/master/modules/cm2040-dnw). 57 | 58 | ### Module specification 59 | 60 | - [Module specification (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM2040_DNW-Module-Spec.pdf) 61 | 62 | ### Reading list for this course 63 | 64 | - [Reading list for this course](https://github.com/world-class/binary-assets/blob/master/modules/cm2040-dnw/CM2040_DNW-reading-list.pdf) 65 | 66 | ### Past exams 67 | 68 | [See past exams here](https://github.com/world-class/binary-assets/tree/master/modules/cm2040-dnw/past-exams). 69 | 70 | ### Syllabus 71 | 72 | - [Syllabus PDF (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM2040_DNW.pdf) 73 | 74 | ### Primary programming language 75 | 76 | JavaScript 77 | 78 | ### Resources 79 | 80 | #### Kinks to be aware of 81 | 82 | - [List of reported errors and bugs with the module](../../../kinks/level-5/cm-2040-databases-networks-and-the-web/). 83 | 84 | #### :heart: Notes 85 | 86 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-5/databases-networks-and-the-web). 87 | 88 | #### Websites 89 | 90 | - [SQL Zoo - for interactive SQL practice problems](https://sqlzoo.net/) 91 | -------------------------------------------------------------------------------- /modules/level-6/phys-computing-iot/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | # _Physical Computing and the Internet of Things_ specialism modules 4 | 5 | ### Databases and Advanced Data Techniques 6 | 7 | This module aims to show you how to work with data in your computer 8 | programs. You will learn how to use SQL and NoSQL databases to store 9 | tabular data and documents. You will learn about the ethics of gathering 10 | and processing data and why it is important to consider issues around 11 | data security. You will learn about open data resources, and how you can 12 | access them from your computer programs. You will learn about audio and 13 | video data, and the challenges of working with this kind of data. 14 | 15 | ### Advanced Web Development 16 | 17 | Advanced Web Development teaches you how to build dynamic, data-driven 18 | websites using databases, front-end frameworks and server-side 19 | programming. You'll develop the skills needed for full stack web 20 | development work and develop a web developer skillset, enabling you 21 | to build and deploy complete, data-driven websites. You'll consider 22 | different technologies for client-side web development such as HTML, 23 | CSS, JavaScript and templates. You'll explore methods for developing 24 | server-side web applications, by building web-accessible wrappers 25 | around databases, consider scalability issues and learn about web app 26 | configuration and deployment. 27 | 28 | ### Physical Computing and the Internet of Things 29 | 30 | Studying this module will introduce the technology involved in the 31 | development and programming of hardware devices that can sense and act 32 | in the environment. It explains and demonstrates how the environment, 33 | which is inherently continuous, can be monitored by analogue electrical 34 | and mechanical sensors, then captured and analysed using a computer, 35 | which is a discrete system. A focus of this module is the interface 36 | between the digital and the analogue. You'll learn basic physics, 37 | electronics, programming and software engineering. The module's 38 | practical objective is the development of the skills needed for 39 | designing and building interactive physical devices. 40 | 41 | ### Interaction Design 42 | 43 | In this module, you'll examine the notion of ‘interaction with 44 | technology'. You will focus on the concepts behind modern UX design 45 | and production and gain a solid grasp and practical experience of 46 | the process which allows the creation of interactive systems. This 47 | process involves specification, design, prototyping and evaluation. 48 | You'll examine several design approaches and techniques and consider 49 | how they enable usability engineering. You'll learn how to evaluate 50 | interactive systems against criteria such as efficiency and usability. 51 | You'll examine accessibility issues from the perspective of different 52 | populations. 53 | 54 | ### Intelligent Signal Processing 55 | 56 | Studying Intelligent Signal Processing will provide a broad experience 57 | of digital signal processing techniques and applications. You will 58 | study how programs can capture and process audio and video signals. 59 | You'll learn about time domain and frequency domain representations 60 | and processing and how you can extract information from audio signals. 61 | You'll implement movement and face detection systems that work with 62 | live camera input. 63 | -------------------------------------------------------------------------------- /modules/level-6/web-mobile-dev/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | # _Web and Mobile Development_ specialism modules 4 | 5 | ### Databases and Advanced Data Techniques 6 | 7 | This module aims to show you how to work with data in your computer 8 | programs. You will learn how to use SQL and NoSQL databases to store 9 | tabular data and documents. You will learn about the ethics of gathering 10 | and processing data and why it is important to consider issues around 11 | data security. You will learn about open data resources, and how you can 12 | access them from your computer programs. You will learn about audio and 13 | video data, and the challenges of working with this kind of data. 14 | 15 | ### Advanced Web Development 16 | 17 | Advanced Web Development teaches you how to build dynamic, data-driven 18 | websites using databases, front-end frameworks and server-side 19 | programming. You'll develop the skills needed for full stack web 20 | development work and develop a web developer skillset, enabling you 21 | to build and deploy complete, data-driven websites. You'll consider 22 | different technologies for clientside web development such as HTML, 23 | CSS, JavaScript and templates. You'll explore methods for developing 24 | server-side web applications, by building web-accessible wrappers 25 | around databases, consider scalability issues and learn about web app 26 | configuration and deployment. 27 | 28 | ### 3D Graphics and Animation 29 | 30 | This module covers advanced methods used in current state-of-the-art 31 | graphics and animation systems. It includes mathematical foundations, 32 | computational techniques and their use in creative practice. In this 33 | module, you'll learn how to write programs that generate animated 34 | 3D graphics. There are several distinct study areas: 3D modelling and 35 | animation, the graphics pipeline, simulation of physics and shader 36 | programming. You'll study a range of examples and learn how to program 37 | graphics in contemporary graphical software for different applications. 38 | 39 | ### Mobile Development 40 | 41 | The Mobile Development module aims to give you the fundamental 42 | understanding and skills needed to develop mobile applications. By 43 | studying this module, you will learn the principles of effective mobile 44 | user interface design and how to design and build user interfaces. 45 | You'll learn about datadriven mobile apps, and how you can integrate 46 | an app with a data source. You'll learn about the mobile development 47 | ecosystem and how to develop, run and test your applications. You'll 48 | work with various sensors available on mobile devices using built-in 49 | application programming interfaces. The style of the module is 50 | practical, focusing on developing working apps. 51 | 52 | ### Interaction Design 53 | 54 | In this module, you'll examine the notion of ‘interaction with 55 | technology'. You will focus on the concepts behind modern UX design 56 | and production and gain a solid grasp and practical experience of 57 | the process which allows the creation of interactive systems. This 58 | process involves specification, design, prototyping and evaluation. 59 | You'll examine several design approaches and techniques and consider 60 | how they enable usability engineering. You'll learn how to evaluate 61 | interactive systems against criteria such as efficiency and usability. 62 | You'll examine accessibility issues from the perspective of different 63 | populations. 64 | -------------------------------------------------------------------------------- /subreddit/README.md: -------------------------------------------------------------------------------- 1 | # About these Markdown files 2 | 3 | This is the canonical source for /u/Yangchenghu's series of Reddit posts on 4 | [/r/UniversityOfLondonCS](https://www.reddit.com/r/UniversityOfLondonCS). Each 5 | post is an explanatory document or guide to some aspect of the programme, or 6 | student life in general. 7 | 8 | Note that while /u/Yangchenghu has made other posts on the subreddit, this 9 | repository will only hold the in-depth guides and documents. 10 | 11 | Future posts will be released first on 12 | [/r/UniversityOfLondonCS](https://www.reddit.com/r/UniversityOfLondonCS), and 13 | then added to REPL on the same day. 14 | 15 | ## Index of posts 16 | 17 | Note: this index is copied from `./resources-links/links-reddit-sticky.md`, with the URL links replaced with Markdown links. For links to the original reddit posts, please see `./resources/links-reddit-stick.md` [available here](resources-links/links-reddit-sticky.md) 18 | 19 | - [**Beginner's Guide to Grades, Projects, Exams, and Award Qualifications at UoL's CompSci BSc**](grades-guide.md): A good overview of how the academic structure of the degree works, plus examples of past mid-terms and exam papers. 20 | - [**Thoughts on UoL's BSc in Computer Science - A Comprehensive Review**](uol-review.md): In-depth review of /u/Yangchenghu's experiences as a first cohort student, with screenshots of the Virtual Learning Environment and Slack. 21 | - [**Let's Talk About The Balance of Formative Coursework versus Summative Assessments**](formative-summative.md): Explains how grades and optional assignments work, which segues into a more philosophical discussion on self-driven learning. 22 | - [**Legal Protections for the Distance-Learning Student: The Rights and Protections you are Entitled To**](legal-protections.md): Gives a overview of the Student Terms and Conditions document, and outlines the rights to refund and withdrawl. 23 | - [**Everything You Want to Know about the Institutional Accreditation of the University of London et al**](accreditation.md): A VERY detailed and source-heavy document with many links, detailing the accreditation of the course programme. 24 | - [**Applying for a Recognition of Prior Learning: Or How to Save £400 to £600 GBP**](rpl-guide.md): A student post which explains what RPLs are, and walks you through the process of getting a RPL via Coursera's Google IT Cert. 25 | - [**Interview with David C.**](interview-david-c.md) An interview with a student on their experiences in the programme 26 | - [**Guide to Module Prerequisites & Progression: How to Avoid Being 'Progression-Blocked' due to Missing Prerequisites, and a Suggested Module Schedule**](progression.md): An explanation of the University of London's progression rules and prerequisites, as well as a suggested schedule for new students. 27 | - [**How Much Does this Degree Cost? A FAQ and Guide to the Tuition of the University of London's BSc in Computer Science**](fees-guide.md): A FAQ and Guide to the fees schedule, with example calculations, as well as links to all the official sources concerning tuition. 28 | ## About resources-links 29 | 30 | The `links-reddit-sticky.md` is the main document of useful resources and links. 31 | Other documents within the `./resources-links/` directory are derived from the 32 | main document, oftentimes abridged or otherwise re-formatted for their specific 33 | location. 34 | 35 | --- 36 | 37 | Original location on GitHub: [https://github.com/world-class/REPL/tree/master/subreddit](https://github.com/world-class/REPL/tree/master/subreddit) 38 | -------------------------------------------------------------------------------- /modules/level-5/cm-2025-computer-security/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Computer Security](#computer-security) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Mock exams](#mock-exams) 10 | - [Module specification](#module-specification) 11 | - [Past exams](#past-exams) 12 | - [Syllabus](#syllabus) 13 | - [Resources](#resources) 14 | - [Documents](#documents) 15 | - [:heart: Notes](#heart-notes) 16 | - [Websites](#websites) 17 | - [YouTube](#youtube) 18 | - [Reading list](#reading-list) 19 | 20 | --- 21 | 22 | ## Computer Security 23 | 24 | This module aims to provide you with an understanding of the need for 25 | computer security and the technologies that support it. It has both a 26 | theoretical component that will teach you mathematical underpinnings 27 | of security systems and a practical element that will help you 28 | discover the pitfalls of security design and to comprehend the 29 | mathematics underlying the protocols by programming small examples. 30 | 31 | ### Professor(s) 32 | 33 | - Dr. Matthew Yee-King 34 | - Dr. Robert Zimmer 35 | 36 | ### Topics covered 37 | 38 | - Security threats 39 | - Social Issues in Computer Security 40 | - Access Control and Authentication 41 | - Security Models 42 | - Operating System Security 43 | - Network security 44 | - Cryptography 45 | - Cryptographic protocols and key management 46 | - Public Key Cryptography 47 | - Blockchain protocols 48 | 49 | #### Assessment 50 | 51 | One two hour unseen written examination and coursework (Type I) 52 | 53 | #### Mock exams 54 | 55 | [See past exams here](https://github.com/world-class/binary-assets/tree/master/modules/cm2025-csec). 56 | 57 | #### Module specification 58 | 59 | - [Module specification (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM2025_CS-Module-Spec.pdf) 60 | 61 | #### Past exams 62 | 63 | [See past exams here](https://github.com/world-class/binary-assets/tree/master/modules/cm2025-csec/past-exams). 64 | 65 | #### Syllabus 66 | 67 | - [Syllabus PDF (October 2020)](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM2025_CS.pdf) 68 | 69 | #### Resources 70 | 71 | ##### Documents 72 | 73 | [Public-Key Cryptography RSA Attacks against RSA](https://github.com/world-class/binary-assets/blob/master/modules/cm2025-csec/Public-Key_Cryptography_RSA_Attacks_against_RSA.pdf) - From www.lri.fr. 74 | 75 | ##### :heart: Notes 76 | 77 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-5/computer-security). 78 | 79 | ##### Websites 80 | 81 | - [RSA Encryption](https://brilliant.org/wiki/rsa-encryption/) - Brilliant.org. 82 | - [Euler's Theorem](https://brilliant.org/wiki/eulers-theorem/) 83 | - [Euler's Totient Function](https://brilliant.org/wiki/eulers-totient-function/) 84 | - [Fermat's Little Theorem](https://brilliant.org/wiki/fermats-little-theorem/) 85 | 86 | ##### YouTube 87 | 88 | - [How the RSA algorithm works, including how to select d, e, n, p, q, and φ (phi)](https://www.youtube.com/watch?v=Z8M2BTscoD4) - Anthony Vance. 89 | - [Public Key Cryptography: RSA Encryption Algorithm](https://www.youtube.com/watch?v=wXB-V_Keiu8) - Art of the Problem. 90 | - [RSA algorithm step by step example](https://www.youtube.com/watch?v=j2NBya6ADSY) - shad sluiter. 91 | 92 | ##### Reading list 93 | 94 | - [Reading list](./reading_list.md) 95 | -------------------------------------------------------------------------------- /modules/level-4/cm-1015-computational-mathematics/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Computational Mathematics](#computational-mathematics) 6 | - [Professor(s)](#professors) 7 | - [Topics previously covered (numerical mathematics)](#topics-previously-covered-numerical-mathematics) 8 | - [Assessment](#assessment) 9 | - [Module specification](#module-specification) 10 | - [Past exams](#past-exams) 11 | - [Syllabus](#syllabus) 12 | - [Resources](#resources) 13 | - [Complementary learning](#complementary-learning) 14 | - [Reading List](#reading-list) 15 | - [:heart: Notes](#heart-notes) 16 | - [Numerical Mathematics (earlier iteration of the module)](#numerical-mathematics-earlier-iteration-of-the-module) 17 | 18 | --- 19 | 20 | ## Computational Mathematics 21 | 22 | This module helps you hone your skills in thinking abstractly. It also 23 | introduces you to many of the standard continuous models used to help 24 | understand and design computational systems. Through this module, you 25 | will develop the fundamental computational mathematical tools that 26 | will support you throughout the BSc programme. Particular attention is 27 | paid to notions of experimentation, reasoning, and generalisation. By 28 | taking this module, you will learn a wide range of the computational 29 | mathematical concepts and techniques that underpin Computer Science. 30 | In particular, you will study number systems, special functions, 31 | graphing and linear algebra. 32 | 33 | ## Professor(s) 34 | 35 | - Dr. Sarah Santos 36 | 37 | ## Topics previously covered (numerical mathematics) 38 | 39 | - Number bases and modular arithmetic 40 | - Sequences and Series 41 | - Graph Sketching and Kinematics 42 | - Angles, Triangles and Trigonometry 43 | - Trigonometric functions 44 | - Exponential and logarithmic functions 45 | - Calculus: Limits and differentiation 46 | - Vectors and Matrices 47 | - Linear Transformations 48 | - Introduction to Combinatorics and Probability 49 | 50 | ## Assessment 51 | 52 | One two hour unseen written examination and coursework (Type I) 53 | 54 | ## Module specification 55 | 56 | - [Module specification (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM1015_CM-Module-Spec.pdf) 57 | 58 | ## Past exams 59 | 60 | [See past exams here](https://github.com/world-class/binary-assets/tree/master/modules/cm1015-cm/past-exams). 61 | 62 | ## Syllabus 63 | 64 | - [Syllabus PDF (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM1015_CM.pdf) 65 | 66 | ## Resources 67 | 68 | ### Complementary learning 69 | 70 | - [Saylor Academy](https://learn.saylor.org/course/index.php?categoryid=13) - _"Explore the real-world applications of mathematics through algebra, calculus, statistics, and geometry. You can earn a free certificate of completion for any of these online Mathematics courses, or use many of them to earn credit in leading college programs."_ 71 | 72 | ### Reading List 73 | 74 | - [Computational Mathematics Weekly Reading List PDF (April 2020)](https://github.com/world-class/binary-assets/blob/master/modules/cm1015-cm/cm_weekly_reading_list.pdf) 75 | 76 | ### :heart: Notes 77 | 78 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-4/computational-mathematics). 79 | 80 | #### Numerical Mathematics (earlier iteration of the module) 81 | 82 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-4/numerical-mathematics). 83 | -------------------------------------------------------------------------------- /modules/level-6/cm-3035-advanced-web-development/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Advanced Web Development (CM3035)](#advanced-web-development-cm3035) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Module specification](#module-specification) 10 | - [Syllabus](#syllabus) 11 | - [Resources](#resources) 12 | - [Complementary learning](#complementary-learning) 13 | - [YouTube](#youtube) 14 | - [:heart: Notes](#heart-notes) 15 | 16 | --- 17 | 18 | ## Advanced Web Development (CM3035) 19 | 20 | Through this module, you will learn how to build dynamic, data-driven 21 | websites using databases, front-end frameworks and server-side 22 | programming. This module provides the skill set required to do full 23 | stack web development work. By studying this module, you will develop 24 | a web developer skill set that enables you to understand how to build 25 | and deploy complete, data-driven websites. You will consider several 26 | different technologies for client side-web development such as HTML, 27 | CSS, JavaScript and templates. You will explore methods for developing 28 | server-side web applications, by building web-accessible wrappers around 29 | databases. You will consider issues of scalability, and learn about web 30 | application configuration and deployment. 31 | 32 | ### Professor(s) 33 | 34 | - Dr. Daniel Buchan 35 | 36 | ### Topics covered 37 | 38 | - The web stack: clients, web servers and databases 39 | - Advanced features of HTML, CSS and Templates 40 | - Deploy a website 41 | - Basic databases and data schemas for a website 42 | - Build a CRUD/ RESTFul API 43 | - Build a CRUD/ RESTFul API pt 2 44 | - Build a websocket server 45 | - User authentication and security 46 | - Working with external APIs 47 | - Scalability 48 | 49 | ### Assessment 50 | 51 | Coursework only (Type II) 52 | 53 | ### Module specification 54 | 55 | - [Module specification](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM3035_AWD-Module-Spec.pdf) 56 | 57 | ### Syllabus 58 | 59 | - [Syllabus](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM3035_AWD.pdf) 60 | 61 | ### Primary programming language 62 | 63 | Python 64 | 65 | ### Resources 66 | 67 | #### Complementary learning 68 | 69 | ##### YouTube 70 | 71 | - [Build a Django DRF app and React Front-end - Part-1](https://www.youtube.com/watch?v=soxd_xdHR0o) - Very Academy 72 | - [Build a Django DRF Quiz API - Part-2](https://www.youtube.com/watch?v=EWJ2-xkfvXI) - Very Academy 73 | - [JWT Token Authentication with React - Part-3](https://www.youtube.com/watch?v=AfYfvjP1hK8) - Very Academy 74 | - [Viewsets and Routers with React Front-end Example - Part-4](https://www.youtube.com/watch?v=dCbfOZurCQk) - Very Academy 75 | - [API Schema and Documentation Generation - Part-5](https://www.youtube.com/watch?v=-nuobfiU49Q) - Very Academy 76 | - [Filters and Search features - Part-6](https://www.youtube.com/watch?v=3Qdy-FvUEcY) - Very Academy 77 | - [CRUD with React Front-end - Part-7](https://www.youtube.com/watch?v=Hxadcs7v1NY) - Very Academy 78 | - [Image Uploading / Handling with React Front-end - Part-8](https://www.youtube.com/watch?v=V2zaeqFSSTE) - Very Academy 79 | - [Django Rest Framework Course - Social Logins with React and DRF - Part-9](https://www.youtube.com/watch?v=wlcCvzOLL8w) - Very Academy 80 | 81 | #### :heart: Notes 82 | 83 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-6/advanced-web-development). 84 | -------------------------------------------------------------------------------- /modules/level-4/cm-1030-how-computers-work/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [How Computers Work](#how-computers-work) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Module specification](#module-specification) 10 | - [Past exams](#past-exams) 11 | - [Recognition of Prior Learning](#recognition-of-prior-learning) 12 | - [Syllabus](#syllabus) 13 | - [Resources](#resources) 14 | - [Essential reading](#essential-reading) 15 | - [Kinks to be aware of](#kinks-to-be-aware-of) 16 | - [:heart: Notes](#heart-notes) 17 | 18 | --- 19 | 20 | ## How Computers Work 21 | 22 | How Computers Work helps you understand and interact with computer 23 | systems. The module will teach you how to use knowledge about 24 | computational processes to analyse and explain the behaviour of computer 25 | systems. It will use the concept of a Notional Machine, an abstract 26 | representation of the functioning of a computer system, to help you to 27 | reason about computer systems and predict their behaviour. You'll also 28 | learn about typical computer system architectures, basic networking and 29 | network services such as databases. 30 | 31 | ### Professor(s) 32 | 33 | - Dr. Marco Gillies 34 | 35 | ### Topics covered 36 | 37 | - Introduction to Computer Science and Notional Machines 38 | - Notional machines of web applications 39 | - Data representations, data storage, compression 40 | - Computer Architecture and Machine Language 41 | - Operating Systems 42 | - Operating System processes 43 | - Networks 44 | - The internet 45 | - Data and Databases 46 | - Machine Learning 47 | 48 | ### Assessment 49 | 50 | One two hour unseen written examination and coursework (Type I) 51 | 52 | ### Module specification 53 | 54 | - [Module specification (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM1030_HCW-Module-Spec.pdf) 55 | 56 | ### Past exams 57 | 58 | [See past exams here](https://github.com/world-class/binary-assets/tree/master/modules/cm1030-hcw/past-exams). 59 | 60 | ### Recognition of Prior Learning 61 | 62 | - At the time of this writing, you can apply for [automatic RPL](https://london.ac.uk/applications/how-apply/recognition-prior-learning/recognition-and-accreditation-prior-learning-3) for this module if you obtain the [Google IT Support Professional Certificate](https://www.coursera.org/professional-certificates/google-it-support). 63 | 64 | ### Syllabus 65 | 66 | - [Syllabus PDF (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM1030_HCW.pdf) 67 | 68 | ### Resources 69 | 70 | #### Essential reading 71 | 72 | _"The essentials readings for this course will come from the following text book, which you will be able access from within some lessons on Coursera platform:_ 73 | 74 | _**Brookshear, J.G. and D. Brylow Computer science: an overview. (Harlow: Pearson Education, 2015) 12th edition (Global edition).**_ 75 | 76 | _This course does not require you to read the whole book; you will be given specific readings for each topic from these texts are listed with direct links on the Readings page for each topic._ 77 | 78 | _You will also be asked to do some independent research from online sources or using the University of London digital library."_ 79 | 80 | #### Kinks to be aware of 81 | 82 | - [List of reported errors and bugs with the module](../../../kinks/level-4/cm-1030-how-computers-work/). 83 | 84 | #### :heart: Notes 85 | 86 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-4/how-computers-work). 87 | -------------------------------------------------------------------------------- /modules/level-6/games-dev/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | # _Games Development_ specialism modules 4 | 5 | ### Artificial Intelligence 6 | 7 | Focusing on Artificial Intelligence (AI) techniques, you will learn the 8 | historical development of AI including search, vision and planning. You 9 | will become familiar with the foundations of agent-based approaches to 10 | software design, decision making and problem solving including under 11 | uncertainty. You will have an opportunity to apply AI techniques to 12 | particular problems such as game playing and decision making. 13 | 14 | ### Virtual Reality 15 | 16 | The Virtual Reality (VR) module combines the theory and psychology of VR 17 | with practical development skills. You'll learn the skills needed to 18 | design compelling VR environments and the skills that apply to creative 19 | practice, science and industry. This module gives you the skills needed 20 | to develop VR, including understanding the basic theory of presence in 21 | VR, which underlies the basic design principles. Using a 3D engine to 22 | create interactive virtual environments, you'll also learn practical 23 | development skills, including creating 3D environments, designing and 24 | implementing 3D interaction for VR and building social VR experiences 25 | with interactive virtual characters. 26 | 27 | ### Games Development 28 | 29 | This module introduces you to i) industry standard tools for game 30 | development, such as game engines, and ii) the process of game 31 | development, including prototyping and playtesting. You will undertake a 32 | series of game development projects, each lasting a few weeks and with 33 | a specific brief. For each project, you'll propose a game that fits 34 | the brief then deliver the game and document it thoroughly. Through this 35 | process, you'll develop an awareness of intended audience and the use 36 | of media for documentation. Contemporary video game production draws on 37 | a range of techniques from AI to perform tasks like controlling virtual 38 | agents and generating novel content. This module also introduces crucial 39 | game AI concepts. Compared to mainstream AI, the emphasis is less on 40 | optimal problem-solving and more on entertaining the player with limited 41 | computational resources. This module provides practical experience of 42 | programming game AI systems and an understanding of the relevant theory. 43 | 44 | ### 3D Graphics and Animation 45 | 46 | This module covers advanced methods used in current state-of-the-art 47 | graphics and animation systems. It includes mathematical foundations, 48 | computational techniques and their use in creative practice. In this 49 | module, you'll learn how to write programs that generate animated 50 | 3D graphics. There are several distinct study areas: 3D modelling and 51 | animation, the graphics pipeline, simulation of physics and shader 52 | programming. You'll study a range of examples and learn how to program 53 | graphics in contemporary graphical software for different applications. 54 | 55 | ### Interaction Design 56 | 57 | In this module, you'll examine the notion of ‘interaction with 58 | technology'. You will focus on the concepts behind modern UX design 59 | and production and gain a solid grasp and practical experience of 60 | the process which allows the creation of interactive systems. This 61 | process involves specification, design, prototyping and evaluation. 62 | You'll examine several design approaches and techniques and consider 63 | how they enable usability engineering. You'll learn how to evaluate 64 | interactive systems against criteria such as efficiency and usability. 65 | You'll examine accessibility issues from the perspective of different 66 | populations. 67 | -------------------------------------------------------------------------------- /modules/level-4/cm-1010-introduction-to-programming-ii/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | # Table of contents 4 | 5 | - [Introduction to Programming II](#introduction-to-programming-ii) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Module specification](#module-specification) 10 | - [Syllabus](#syllabus) 11 | - [Resources](#resources) 12 | - [Articles](#articles) 13 | - [Case studies](#case-studies) 14 | - [Music visualizer](#music-visualizer) 15 | - [Essential reading](#essential-reading) 16 | - [Getting started with HTML](#getting-started-with-html) 17 | - [Kinks to be aware of](#kinks-to-be-aware-of) 18 | - [:heart: Notes](#heart-notes) 19 | 20 | --- 21 | 22 | ## Introduction to Programming II 23 | 24 | By taking this module, you will enhance your programming skills 25 | through the development of a project. You will learn about producing 26 | maintainable code, defensive coding techniques, program testing 27 | techniques, cyclical approaches to software development, encapsulation, 28 | developing code across multiple files and using third-party libraries. 29 | 30 | ## Professor(s) 31 | 32 | - Dr. Edward Anstead 33 | - Dr. Simon Katan 34 | 35 | ## Topics covered 36 | 37 | - Introduction to the project, 38 | - Case study 1: Click & Point Adventure 39 | - Case study 2: Interactive data visualisation 40 | - Case study 3: Mobile Drawing App 41 | - Planning your project: an iterative approach 42 | - Libraries and APIs 43 | - Structuring large programmes 44 | - Maintainable code 45 | - Testing and debugging 46 | - Completing your project 47 | 48 | ## Assessment 49 | 50 | Coursework only (Type III) 51 | 52 | ## Module specification 53 | 54 | - [Module specification (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM1010_ITP2-Module-Spec.pdf) 55 | 56 | ## Syllabus 57 | 58 | - [Syllabus PDF (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM1010_ITP2.pdf) 59 | 60 | ### Primary programming language 61 | 62 | JavaScript 63 | 64 | ## Resources 65 | 66 | ### Articles 67 | 68 | - [Understanding Automatic Semicolon Insertion in JavaScript](http://www.bradoncode.com/blog/2015/08/26/javascript-semi-colon-insertion/) 69 | - [Your Guide to Semicolons in JavaScript](https://news.codecademy.com/your-guide-to-semicolons-in-javascript/) 70 | 71 | ### Case studies 72 | 73 | #### Music visualizer 74 | 75 | - [But what is the Fourier Transform? A visual introduction](https://www.youtube.com/watch?v=spUNpyF58BY) - YouTube video - 3Blue1Brown 76 | 77 | ### Essential reading 78 | 79 | _"There is no required textbook for this course. Listed below are some books to supplement some of the material covered in this course."_ 80 | 81 | - **Getting Started with p5.js Lauren McCarthy, Casey Reas, and Ben Fry** 82 | - **The Pragmatic Programmer – Your Journey to Mastery, by David Thomas, Andrew Hunt** 83 | - **Coders at Work: Reflections on the Craft of Programming, by Peter Seibel** 84 | 85 | ### Getting started with HTML 86 | 87 | - [Getting started with the web](https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web) 88 | - [HTML5 tutorial](https://www.w3schools.com/html/default.asp) 89 | - [Responsive website basics: code with HTML, CSS, and JavaScript](https://www.coursera.org/learn/website-coding) (Coursera) 90 | 91 | ### Kinks to be aware of 92 | 93 | - [List of reported errors and bugs with the module](../../../kinks/level-4/cm-1010-introduction-to-programming-ii/). 94 | 95 | ### :heart: Notes 96 | 97 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-4/introduction-to-programming-ii). 98 | -------------------------------------------------------------------------------- /modules/level-6/user-experience/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | # _User Experience_ specialism modules 4 | 5 | ### Virtual Reality 6 | 7 | The Virtual Reality (VR) module combines the theory and psychology of VR 8 | with practical development skills. You'll learn the skills needed to 9 | design compelling VR environments and the skills that apply to creative 10 | practice, science and industry. This module gives you the skills needed 11 | to develop VR, including understanding the basic theory of presence in 12 | VR, which underlies the basic design principles. Using a 3D engine to 13 | create interactive virtual environments, you'll also learn practical 14 | development skills, including creating 3D environments, designing and 15 | implementing 3D interaction for VR and building social VR experiences 16 | with interactive virtual characters. 17 | 18 | ### Advanced Web Development 19 | 20 | Advanced Web Development teaches you how to build dynamic, data-driven 21 | websites using databases, front-end frameworks and server-side 22 | programming. You'll develop the skills needed for full stack web 23 | development work and develop a web developer skillset, enabling you 24 | to build and deploy complete, data-driven websites. You'll consider 25 | different technologies for clientside web development such as HTML, 26 | CSS, JavaScript and templates. You'll explore methods for developing 27 | server-side web applications, by building web-accessible wrappers 28 | around databases, consider scalability issues and learn about web app 29 | configuration and deployment. 30 | 31 | ### Physical Computing and the Internet of Things 32 | 33 | Studying this module will introduce the technology involved in the 34 | development and programming of hardware devices that can sense and act 35 | in the environment. It explains and demonstrates how the environment, 36 | which is inherently continuous, can be monitored by analogue electrical 37 | and mechanical sensors, then captured and analysed using a computer, 38 | which is a discrete system. A focus of this module is the interface 39 | between the digital and the analogue. You'll learn basic physics, 40 | electronics, programming and software engineering. The module's 41 | practical objective is the development of the skills needed for 42 | designing and building interactive physical devices. 43 | 44 | ### Mobile Development 45 | 46 | The Mobile Development module aims to give you the fundamental 47 | understanding and skills needed to develop mobile applications. By 48 | studying this module, you will learn the principles of effective mobile 49 | user interface design and how to design and build user interfaces. 50 | You'll learn about datadriven mobile apps, and how you can integrate 51 | an app with a data source. You'll learn about the mobile development 52 | ecosystem and how to develop, run and test your applications. You'll 53 | work with various sensors available on mobile devices using built-in 54 | application programming interfaces. The style of the module is 55 | practical, focusing on developing working apps. 56 | 57 | ### Interaction Design 58 | 59 | In this module, you'll examine the notion of ‘interaction with 60 | technology'. You will focus on the concepts behind modern UX design 61 | and production and gain a solid grasp and practical experience of 62 | the process which allows the creation of interactive systems. This 63 | process involves specification, design, prototyping and evaluation. 64 | You'll examine several design approaches and techniques and consider 65 | how they enable usability engineering. You'll learn how to evaluate 66 | interactive systems against criteria such as efficiency and usability. 67 | You'll examine accessibility issues from the perspective of different 68 | populations. 69 | -------------------------------------------------------------------------------- /modules/level-6/ml-ai/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | - [List of free deep learning ebooks](#list-of-free-deep-learning-ebooks) 4 | - [List of deep learning courses](#list-of-deep-learning-courses) 5 | - [Modules in the specialism](#modules-in-the-specialism) 6 | - [Databases and Advanced Data Techniques](#databases-and-advanced-data-techniques) 7 | - [Machine Learning and Neural Networks](#machine-learning-and-neural-networks) 8 | - [Artificial Intelligence](#artificial-intelligence) 9 | - [Intelligent Signal Processing](#intelligent-signal-processing) 10 | - [Natural Language Processing](#natural-language-processing) 11 | 12 | _Machine Learning and Artificial Intelligence_ specialism modules 13 | 14 | ## List of free deep learning ebooks 15 | 16 | - [Best Deep Learning Books](https://blog.floydhub.com/best-deep-learning-books-updated-for-2019/#deep-learning), by Alessio Gozzoli (updated March 1st, 2019) 17 | 18 | ## List of deep learning courses 19 | 20 | - [Best Deep Learning Courses](https://blog.floydhub.com/best-deep-learning-courses-updated-for-2019/), by Alessio Gozzoli (updated March 8th, 2019) 21 | 22 | ## Modules in the specialism 23 | 24 | ### Databases and Advanced Data Techniques 25 | 26 | This module aims to show you how to work with data in your computer 27 | programs. You will learn how to use SQL and NoSQL databases to store 28 | tabular data and documents. You will learn about the ethics of gathering 29 | and processing data and why it is important to consider issues around 30 | data security. You will learn about open data resources, and how you can 31 | access them from your computer programs. You will learn about audio and 32 | video data, and the challenges of working with this kind of data. 33 | 34 | ### Machine Learning and Neural Networks 35 | 36 | This module provides a broad view of machine learning and neural 37 | networks. You'll learn how to solve common machine learning problems 38 | such as regression, classification, clustering, matrix completion and 39 | pattern recognition. You'll explore how neural networks can be trained 40 | and optimised. You'll learn how to develop machine learning systems 41 | rapidly, and you will learn how to verify and evaluate the results. 42 | 43 | ### Artificial Intelligence 44 | 45 | Focusing on Artificial Intelligence (AI) techniques, you will learn the 46 | historical development of AI including search, vision and planning. You 47 | will become familiar with the foundations of agent-based approaches to 48 | software design, decision making and problem solving including under 49 | uncertainty. You will have an opportunity to apply AI techniques to 50 | particular problems such as game playing and decision making. 51 | 52 | ### Intelligent Signal Processing 53 | 54 | Studying Intelligent Signal Processing will provide a broad experience 55 | of digital signal processing techniques and applications. You will 56 | study how programs can capture and process audio and video signals. 57 | You'll learn about time domain and frequency domain representations 58 | and processing and how you can extract information from audio signals. 59 | You'll implement movement and face detection systems that work with 60 | live camera input. 61 | 62 | ### Natural Language Processing 63 | 64 | Natural Language Processing (NLP) provides a grounding in both 65 | rule-based and statistical approaches to NLP, combining theoretical 66 | study with hands-on work employing widely used software packages. The 67 | module focuses on text processing and you'll learn about how to work 68 | with text-based natural language in your programs. You'll explore 69 | grammars and how they can be used to analyse text. You'll learn how 70 | to use statistical analysis to extract information from and classify 71 | text. You'll use appropriate programming libraries to implement NLP 72 | workflows. 73 | -------------------------------------------------------------------------------- /modules/level-6/virtual-reality/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | # _Virtual Reality_ specialism modules 4 | 5 | ### Virtual Reality 6 | 7 | The Virtual Reality (VR) module combines the theory and psychology of VR 8 | with practical development skills. You'll learn the skills needed to 9 | design compelling VR environments and the skills that apply to creative 10 | practice, science and industry. This module gives you the skills needed 11 | to develop VR, including understanding the basic theory of presence in 12 | VR, which underlies the basic design principles. Using a 3D engine to 13 | create interactive virtual environments, you'll also learn practical 14 | development skills, including creating 3D environments, designing and 15 | implementing 3D interaction for VR and building social VR experiences 16 | with interactive virtual characters. 17 | 18 | ### Games Development 19 | 20 | This module introduces you to i) industry standard tools for game 21 | development, such as game engines, and ii) the process of game 22 | development, including prototyping and playtesting. You will undertake a 23 | series of game development projects, each lasting a few weeks and with 24 | a specific brief. For each project, you'll propose a game that fits 25 | the brief then deliver the game and document it thoroughly. Through this 26 | process, you'll develop an awareness of intended audience and the use 27 | of media for documentation. Contemporary video game production draws on 28 | a range of techniques from AI to perform tasks like controlling virtual 29 | agents and generating novel content. This module also introduces crucial 30 | game AI concepts. Compared to mainstream AI, the emphasis is less on 31 | optimal problem-solving and more on entertaining the player with limited 32 | computational resources. This module provides practical experience of 33 | programming game AI systems and an understanding of the relevant theory. 34 | 35 | ### 3D Graphics and Animation 36 | 37 | This module covers advanced methods used in current state-of-the-art 38 | graphics and animation systems. It includes mathematical foundations, 39 | computational techniques and their use in creative practice. In this 40 | module, you'll learn how to write programs that generate animated 41 | 3D graphics. There are several distinct study areas: 3D modelling and 42 | animation, the graphics pipeline, simulation of physics and shader 43 | programming. You'll study a range of examples and learn how to program 44 | graphics in contemporary graphical software for different applications. 45 | 46 | ### Mobile Development 47 | 48 | The Mobile Development module aims to give you the fundamental 49 | understanding and skills needed to develop mobile applications. By 50 | studying this module, you will learn the principles of effective mobile 51 | user interface design and how to design and build user interfaces. 52 | You'll learn about datadriven mobile apps, and how you can integrate 53 | an app with a data source. You'll learn about the mobile development 54 | ecosystem and how to develop, run and test your applications. You'll 55 | work with various sensors available on mobile devices using built-in 56 | application programming interfaces. The style of the module is 57 | practical, focusing on developing working apps. 58 | 59 | ### Interaction Design 60 | 61 | In this module, you'll examine the notion of ‘interaction with 62 | technology'. You will focus on the concepts behind modern UX design 63 | and production and gain a solid grasp and practical experience of 64 | the process which allows the creation of interactive systems. This 65 | process involves specification, design, prototyping and evaluation. 66 | You'll examine several design approaches and techniques and consider 67 | how they enable usability engineering. You'll learn how to evaluate 68 | interactive systems against criteria such as efficiency and usability. 69 | You'll examine accessibility issues from the perspective of different 70 | populations. 71 | -------------------------------------------------------------------------------- /modules/level-5/cm-2010-software-design-and-development/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Software Design and Development](#software-design-and-development) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Module specification](#module-specification) 10 | - [Past exams](#past-exams) 11 | - [Syllabus](#syllabus) 12 | - [Resources](#resources) 13 | - [Design patterns](#design-patterns) 14 | - [Module cohesion and coupling](#module-cohesion-and-coupling) 15 | - [Secure coding practices](#secure-coding-practices) 16 | 17 | --- 18 | 19 | ## Software Design and Development 20 | 21 | This module aims to advance your software development skills so that 22 | you can write more robust and complicated programs. You will learn 23 | how to use a range of programming techniques that will allow you to 24 | deal with unwanted or unexpected events that might happen when your 25 | application is running. You will use defensive coding to check data 26 | before processing it, and exception handling to gracefully manage 27 | unforeseen or unwanted occurrences. You will learn how to discuss 28 | program structure concerning cohesion (how to meaningfully organise 29 | code into modules) and coupling (how to define the interactions 30 | between different parts of the program). You will learn about 31 | test-driven development, where you write tests for your code, and 32 | write the code itself, in parallel. You will also learn how to use 33 | software versioning tools to manage a software project as it develops. 34 | 35 | ## Professor(s) 36 | 37 | - Dr. Matthew Yee-King 38 | 39 | ## Topics covered 40 | 41 | - Language primer 1: variables and conditionals 42 | - Language primer 2: control flow 43 | - Language primer 3: functions 44 | - Version Control 45 | - Collaboration using version control 46 | - Module coupling and cohesion 47 | - Unit Testing 48 | - Test driven development 49 | - Defensive coding 50 | - Exception handling 51 | 52 | ## Assessment 53 | 54 | One two hour unseen written examination and coursework (Type I) 55 | 56 | ## Module specification 57 | 58 | - [Module specification (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM2010_SDD-Module-Spec.pdf) 59 | 60 | ## Past exams 61 | 62 | [See past exams here](https://github.com/world-class/binary-assets/tree/master/modules/cm2010-sdd/past-exams). 63 | 64 | ## Syllabus 65 | 66 | - [Syllabus (October 2020)](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM2010_SDD.pdf) 67 | 68 | ### Primary programming language 69 | 70 | C++, Javascript, Python 71 | 72 | ## Resources 73 | 74 | - :heart: Notes - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-5/software-design-and-development). 75 | 76 | - :2nd_place_medal: [Reading list](./reading_list.md) 77 | 78 | ## Design patterns 79 | 80 | - [Design Patterns in Plain English](https://www.youtube.com/watch?v=NU_1StN5Tkk) - YouTube 81 | 82 | ## Module cohesion and coupling 83 | 84 | - [Python] [Cohesion and coupling: write BETTER PYTHON CODE Part 1](https://www.youtube.com/watch?v=eiDyK_ofPPM) - ArjanCodes. 85 | - [Full playlist](https://www.youtube.com/playlist?list=PLC0nd42SBTaNuP4iB4L6SJlMaHE71FG6N) includes topics about dependency inversion/injection, design patterns, exception handling, inheritance, composition and more. 86 | 87 | ## Secure coding practices 88 | 89 | - [Developing Secure Software (LFD121)](https://training.linuxfoundation.org/training/developing-secure-software-lfd121/) - The Linux Foundation. 90 | - This free course covers the same topics as the 'secure coding' section of the module in more depth along with other related topics. The course is heavily based on the reading of the mid-term assignment '_[Secure Programming HOWTO - Creating Secure Software](https://dwheeler.com/secure-programs/)_' as David Wheeler is the author of both materials. 91 | -------------------------------------------------------------------------------- /kinks/level-5/cm-2005-object-oriented-programming/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | # Table of contents 4 | 5 | - [Table of contents](#table-of-contents) 6 | - [Object Oriented Programming - Reported Problems](#object-oriented-programming---reported-problems) 7 | - [Week 14](#week-14) 8 | - [7.5 Audio Playback - Files](#75-audio-playback---files) 9 | - [7.504 Adding a File Chooser](#7504-adding-a-file-chooser) 10 | - [Week 18](#week-18) 11 | - [9.2 Adding a moveable playhead](#92-adding-a-moveable-playhead) 12 | - [9.207 - Implement A Timer](#9207-Implement-a-timer) 13 | - [Week 19](#week-19) 14 | - [Vector Subscript Out of Range](#vector-subscript-out-of-range) 15 | 16 | # Object Oriented Programming - Reported Problems 17 | 18 | This page is about the [Object Oriented Programming module](../../../modules/level-5/cm-2005-object-oriented-programming/). 19 | 20 | ## Week 14 21 | 22 | ### 7.5 Audio Playback - Files 23 | 24 | #### 7.504 Adding a File Chooser 25 | 26 | _"For those of you wondering how to get the file browser working (chooser.browseForFileToOpen does not exist any more) without changing the library preprocessor symbols - use the async version, e.g. like this:"_ - Matthias Truxa 27 | 28 | In `MainComponent.h` -> `private:` 29 | 30 | ```C++ 31 | juce::FileChooser chooser{ "Select a file..." }; 32 | ``` 33 | 34 | In `MainComponent.cpp` -> `MainComponent::buttonClicked` 35 | 36 | ```C++ 37 | void MainComponent::buttonClicked(Button* button) 38 | { 39 | if (button == &loadButton) 40 | { 41 | auto dlgFlags = 42 | juce::FileBrowserComponent::openMode | 43 | juce::FileBrowserComponent::canSelectFiles; 44 | 45 | this->chooser.launchAsync(dlgFlags, 46 | [this](const juce::FileChooser& chooser) 47 | { 48 | player1.loadURL(chooser.getURLResult()); 49 | }); 50 | 51 | // juce::FileChooser chooser{ "Select a file..." }; 52 | // if (chooser.browseForFileToOpen()) 53 | // { 54 | // player1.loadURL(URL{ chooser.getResult() }); 55 | // } 56 | } 57 | } 58 | ``` 59 | 60 | Note: There is another method where you can add `JUCE_MODAL_LOOPS_PERMITTED=1` to your JUCE preprocessors, but this method is not suggested as any changes you make to your preprocessor might not reflect in the graders' version. This might cause your project to not function as intended. 61 | 62 | ## Week 18 63 | 64 | ### 9.2 Adding a moveable playhead 65 | 66 | #### 9.207 Implement a timer 67 | 68 | _"There's a nasty bug in week 18 video 9.207. When you load a file the application will crash. After a bit of detective work it turns out that as the timer is being called before a file is loaded, the position is NaN (not a number). I found a simple fix for this: "_ - Jamie Jackson 69 | 70 | ```C++ 71 | void WaveformDisplay::setPositionRelative(double pos) 72 | { 73 | if (pos != position && !isnan(pos)) 74 | { 75 | position = pos; 76 | repaint(); 77 | } 78 | } 79 | ``` 80 | 81 | ## Week 19 82 | 83 | ### 10.1 Starter Table Component 84 | 85 | #### "Vector Subscript Out of Range" 86 | 87 | "_If you try maximising the window you'll get a crash. Inspecting the error message it says vector subscript out of range. So I looked up the paintCell function in the juce API, it says in the description:_ 88 | > Note that the rowNumber value may be greater than the number of rows in your list, so be careful that you don't assume it's less than getNumRows(). 89 | 90 | _So a solution I came up with for the problem is to use getNumRows() and check if rowNum is less than it like in the image below._" - Jamie Jackson 91 | 92 | ```C++ 93 | void PlaylistComponent::paintCell(juce::Graphics& g, int rowNumber, int columnId, int width, int height, bool rowIsSelected) 94 | { 95 | if (rowNumber < getNumRows()) 96 | { 97 | g.drawText(trackTitles[rowNumber], 2, 0, width -4, height, juce:Justification::centredleft, true); 98 | } 99 | } 100 | ``` 101 | -------------------------------------------------------------------------------- /modules/level-6/cm-3010-databases-advanced-data-techniques/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | #### Table of contents 4 | 5 | - [Databases and Advanced Data Techniques (CM3010)](#databases-and-advanced-data-techniques-cm3010) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Module specification](#module-specification) 10 | - [Past exams](#past-exams) 11 | - [Syllabus](#syllabus) 12 | - [Resources](#resources) 13 | - [:heart: Notes](#heart-notes) 14 | - [Reading list](#reading-list) 15 | - [Document/JSON](#documentjson) 16 | - [Semantic Web](#semantic-web) 17 | - [Relational databases and SQL](#relational-databases-and-sql) 18 | - [XML](#xml) 19 | 20 | --- 21 | 22 | ## Databases and Advanced Data Techniques (CM3010) 23 | 24 | This module aims to show you how to work with data in your computer 25 | programs. You will learn how to use SQL and NoSQL databases to store 26 | tabular data and documents. You will learn about the ethics of gathering 27 | and processing data and why it is important to consider issues around 28 | data security. You will learn about open data resources, and how you can 29 | access them from your computer programs. You will learn about audio and 30 | video data, and the challenges of working with this kind of data. 31 | 32 | ### Professor(s) 33 | 34 | - Dr. David Lewis 35 | 36 | ### Topics covered 37 | 38 | - Open data sources: different data formats 39 | - Gathering and cleaning data 40 | - The ethics of working with data 41 | - SQL: advanced data representation 42 | - SQL: advanced queries and linking 43 | - NoSQL and document stores 44 | - NoSQL and data pipelines 45 | - Speeding up queries with indexes 46 | - Audio and video data 47 | - Data security 48 | 49 | ### Assessment 50 | 51 | One two-hour unseen written examination and coursework (Type I) 52 | 53 | ### Module specification 54 | 55 | - [Module specification](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM3010_DADT-Module-Spec.pdf) 56 | 57 | ### Past exams 58 | 59 | [See past exams here](https://github.com/world-class/binary-assets/tree/master/modules/cm3010-dadt/past-exams). 60 | 61 | ### Syllabus 62 | 63 | - [Syllabus](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM3010_DADT.pdf) 64 | 65 | ### Resources 66 | 67 | #### :heart: Notes 68 | 69 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-6/databases-and-advanced-data-techniques). 70 | 71 | #### Reading list 72 | 73 | [Reading list for topics 1 to 5](https://github.com/world-class/binary-assets/blob/master/modules/cm3010-dadt/CM3010_reading_list_topics_1-5.pdf). 74 | 75 | 76 | #### Document/JSON 77 | - [Introduction to MongoDB](https://learn.mongodb.com/learn/learning-path/introduction-to-mongodb). - MongoDB University 78 | - [MongoDB Data Modeling Path](https://learn.mongodb.com/learning-paths/data-modeling-for-mongodb). - MongoDB University 79 | - [Introduction to MongoDB](https://hyperskill.org/tracks/60). - JetBrains Academy on Hyperskill 80 | 81 | #### Semantic Web 82 | - [Linked Data Engineering (Semantic Web) OpenHPI](https://www.youtube.com/playlist?list=PLoOmvuyo5UAfY6jb46jCpMoqb-dbVewxg). - Prof. Dr. Harald Sack 83 | - [Working with RDF Graphs in Graph Studio](https://apexapps.oracle.com/pls/apex/r/dbpm/livelabs/view-workshop?wid=3195). - Oracle LiveLabs 84 | 85 | #### Relational databases and SQL 86 | - [CS 6400: Database Systems Concepts and Design](https://omscs.gatech.edu/cs-6400-database-systems-concepts-and-design). - Georgia Tech 87 | - Enroll for free here: [https://edstem.org/us/join/uWdxj3](https://edstem.org/us/join/uWdxj3) 88 | - [The Art of PostgreSQL](https://theartofpostgresql.com/). - _"The book that teaches SQL to developers: Learn to replace thousands of lines of code with simple queries!"_ 89 | - [SQL for Backend Developers](https://hyperskill.org/tracks/40). - JetBrains Academy on Hyperskill 90 | 91 | #### XML 92 | - [Databases: Semistructured Data](https://www.edx.org/learn/relational-databases/stanford-university-databases-semistructured-data). - Stanford Online 93 | 94 | -------------------------------------------------------------------------------- /subreddit/rpl-guide.md: -------------------------------------------------------------------------------- 1 | # Applying for a Recognition of Prior Learning (RPL): Or How to Save £400 to £600 GBP via Google's IT Support Professional Certificate 2 | 3 | ## About Recognitions of Prior Learning (RPL) 4 | 5 | The University of London, like most universities -- offer what is called a [Recognition of Prior Learning (RPL)](https://london.ac.uk/applications/how-apply/recognition-prior-learning). Such a process allows one to receive course credits for classes/modules taken at other institutions or universities -- effectively letting you "transfer" your credits. An RPL is accepted on the basis that the two courses are considered academically 'equivalent'. This effectively lets you 'skip' a limited amount of classes, only up to 120 credits, if you can demonstrate prior learning. 6 | 7 | There are two types of RPLs offered by the University of London: automatic RPLs, and discretionary RPLs. Automatic RPLs come from a [very small list of pre-approved classes from a select few universities](https://london.ac.uk/applications/how-apply/recognition-prior-learning/recognition-and-accreditation-prior-learning-3). If a student has completed such a class from the list, they may apply for an RPL and have it accepted automatically, without needing to pay any administrative fee. 8 | 9 | There are also discretionary RPLs, which is basically decided on a case-by-case basis. From what I've heard, it's pretty difficult to apply for a discretionary RPL, and unfortunately, I haven't heard about any success stories so far. 10 | 11 | ## How to save £400 - £600 by applying for a RPL via the Google IT Professional Certification 12 | 13 | Most RPLs are pretty specific and situational to the individual student. However, there is one RPL pathway that is available to _everyone_, and it can save you anywhere from between £400 to £600 British Pounds, depending on your tuition. 14 | 15 | All students in the University of London's Bachelor's of Science in Computer Science programme are required to complete an Level 4 module, called How Computers Work (HCW). However, the University of London also offers an option to skip the HCW module, _if you apply for a RPL via the Google IT Professional Certificate_. 16 | 17 | [The Google IT Professional Certificate is actually a MOOC from Coursera](https://www.coursera.org/professional-certificates/google-it-support), and it takes the form of a Coursera specialisation containing 5 courses. In terms of difficulty or content, it's either the same or slightly more difficult than the University of London's HCW module. But most importantly, the Google IT Cert costs _much, much less!_ 18 | 19 | Nominally, Coursera has an subscription billing model. When one enrolls in the specialisation, the first month is free, and every subsequent month costs \$49.00 USD. This is much less than the £400 to £600 British Pounds that the HCW module costs! 20 | 21 | This RPL pathway has not gone unnoticed, and _the vast majority of students enrolled in this programme are taking advantage of it_. There's actually an [entire slack channel dedicated to doing the Google IT Cert](https://i.imgur.com/sFK0AHL.png), and overall this is a great way to save money and time. 22 | 23 | The Google IT Cert takes up to 6 months to complete, but most people finish it in less than 3 months. If you have a strong prior technical background, and a lot of time to dedicate -- it's even possible to complete it in less than 1 month, making it entirely free. 24 | 25 | And for prospective students who wish to start their journey in the programme on a high note, it's possible to begin the Google IT Cert _today_, and apply for the RPL as soon as you have been accepted by the University of London :) 26 | 27 | Likewise, for students who are applying via the Performance Admissions track, you would be able to apply for the RPL and have it accepted as soon as the term is over. This way, you will effectively complete 3 modules in your first term, even though Performace Admissions students are restricted to only 2 modules at first. 28 | 29 | --- 30 | 31 | ## Resources & Further Reading 32 | 33 | - https://www.coursera.org/professional-certificates/google-it-support 34 | - https://london.ac.uk/applications/how-apply/recognition-prior-learning/recognition-and-accreditation-prior-learning-3 35 | -------------------------------------------------------------------------------- /modules/level-5/cm-2005-object-oriented-programming/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Object-Oriented Programming](#object-oriented-programming) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Module specification](#module-specification) 10 | - [Past exams](#past-exams) 11 | - [Syllabus](#syllabus) 12 | - [Resources](#resources) 13 | - [Kinks to be aware of](#kinks-to-be-aware-of) 14 | - [Linux setup guide for OOP projects](#linux-setup-guide-for-oop-projects) 15 | - [Class diagram of starter code](#class-diagram-of-starter-code) 16 | - [Complementary learning](#complementary-learning) 17 | - [C++](#c) 18 | - [:heart: Notes](#heart-notes) 19 | - [On REPL](#on-repl) 20 | - [IDE warning](#ide-warning) 21 | 22 | --- 23 | 24 | ## Object-Oriented Programming 25 | 26 | This module will provide you with an object-oriented programming 27 | skillset. You'll learn what objects and classes are and how to 28 | write classes. You'll see how objects can interact with each 29 | other, including defining and implementing interfaces to control 30 | the interaction. You'll learn how to use inheritance to extend 31 | functionality from parent classes. You'll learn how to write 32 | code according to style guidelines and how to write formal code 33 | documentation. 34 | 35 | ## Professor(s) 36 | 37 | - Dr. Matthew Yee-King 38 | 39 | ## Topics covered 40 | 41 | - Variable and types 42 | - Control flow: conditionals and iteration 43 | - Functions 44 | - Objects and classes 45 | - Interaction between objects 46 | - Inheritance: extending a parent class 47 | - Inheritance: defining a class hierarchy 48 | - Code documentation and style 49 | - Abstraction and polymorphism: implementing an abstract class 50 | - Abstraction and polymorphism: defining an interface 51 | 52 | ## Assessment 53 | 54 | Coursework only (Type II) 55 | 56 | ## Module specification 57 | 58 | - [Module specification (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM2005_OOP-Module-Spec.pdf) 59 | 60 | ## Past exams 61 | 62 | [See past exams here](https://github.com/world-class/binary-assets/tree/master/modules/cm2005-oop/past-exams). 63 | 64 | ## Syllabus 65 | 66 | - [Syllabus PDF (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM2005_OOP.pdf) 67 | 68 | ### Primary programming language 69 | 70 | C++ 71 | 72 | ## Resources 73 | 74 | - :star: [Sourcetrail](https://www.sourcetrail.com) (Windows, macOS, Linux) - _"Free and open-source cross-platform source explorer"_. Supports C, C++, Java and Python. 75 | 76 | ### Kinks to be aware of 77 | 78 | - [List of reported errors and bugs with the module](../../../kinks/level-5/cm-2005-object-oriented-programming/). 79 | 80 | ### Linux setup guide for OOP projects 81 | 82 | Refer [Linux setup guide](https://github.com/world-class/binary-assets/blob/master/modules/cm2005-oop/linux_guide.md) 83 | 84 | ### Class diagram of starter code 85 | 86 | ![class diagram of starter code](https://github.com/world-class/binary-assets/blob/master/modules/cm2005-oop/class_diagram_starter_code.png?raw=true) 87 | 88 | ### Complementary learning 89 | 90 | - [Binary Data Representation](http://web.cecs.pdx.edu/~harry/videos-binary/) - Prof. Harry H. Porter III, Ph.D., Portland State University. 91 | - [Software Design Principles](http://principles-wiki.net/start) - Principles Wiki. 92 | 93 | #### C++ 94 | 95 | - [C++](https://www.youtube.com/playlist?list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb) - Playlist by The Cherno 96 | 97 | ### :heart: Notes 98 | 99 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-5/object-oriented-programming). 100 | 101 | ### On REPL 102 | 103 | - [YouTube](../../../youtube/README.md). 104 | - [C++](../../../youtube/README.md#c-2). 105 | 106 | ## IDE warning 107 | 108 | The programme's director said that "_you cannot do the work in the second half of the course in Windows with VSCode, so people would need to install Visual Studio eventually anyway._" 109 | -------------------------------------------------------------------------------- /modules/level-6/cm-3060-natural-language-processing/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Natural Language Processing (CM3060)](#natural-language-processing-cm3060) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Syllabus](#syllabus) 10 | - [Resources](#resources) 11 | - [:heart: Notes](#heart-notes) 12 | - [Mock exams](#mock-exams) 13 | - [Textbooks used in the module](#textbooks-used-in-the-module) 14 | - [YouTube](#youtube) 15 | 16 | --- 17 | 18 | ## Natural Language Processing (CM3060) 19 | 20 | This module will provide you with a grounding in both rule-based and 21 | statistical approaches to NLP, and it combines theoretical study with 22 | hands-on work employing widely used software packages. The module 23 | focuses on text processing, and by taking this module, you will learn 24 | about how you can work with text-based natural language in your 25 | computer programs. You will learn about grammars and how they can be 26 | used to analyse text. You will learn how statistical analysis can be 27 | used to extract information from and classify text. You will work in 28 | an appropriate programming environment for NLP, using libraries to 29 | implement NLP workflows. 30 | 31 | ### Professor(s) 32 | 33 | - Dr. Tony Russel-Rose 34 | 35 | ### Topics covered 36 | 37 | - History of NLP. 38 | - Information retrieval and curation in NLP. 39 | - Curated corpora and raw data sources. 40 | - Formal grammars. 41 | - Rule based NLP. 42 | - Statistical NLP. 43 | - NER (Named Entity Recognition). 44 | - Readers, stemmers, taggers and parsers 45 | - Software packages for NLP 46 | - Applications of NLP 47 | 48 | ### Assessment 49 | 50 | One two-hour unseen written examination and coursework (Type I) 51 | 52 | ### Syllabus 53 | 54 | - [Syllabus](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM3060_NLP.pdf) 55 | 56 | ### Primary programming language 57 | 58 | Python 59 | 60 | ### Resources 61 | 62 | #### :heart: Notes 63 | 64 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-6/natural-language-processing). 65 | 66 | #### Mock exams 67 | 68 | [See past exams here](https://github.com/world-class/binary-assets/tree/master/modules/cm3060-nlp). 69 | 70 | #### Textbooks used in the module 71 | 72 | - Bird, Steven, Ewan Klein, and Edward Loper. Natural language processing with Python: analyzing text with the natural language toolkit. " O'Reilly Media, Inc.", 2009. https://www.nltk.org/book/ 73 | - Jurafsky, Dan, and James H. Martin. "Speech and Language Processing (3rd draft ed.)." (2019). https://web.stanford.edu/~jurafsky/slp3/ 74 | - Perkins, Jacob. Python 3 text processing with NLTK 3 cookbook. Packt Publishing Ltd, 2014. https://www.packtpub.com/product/python-3-text-processing-with-nltk-3-cookbook/9781782167853 75 | - Python Natural Language Processing Cookbook: Over 50 recipes to understand, analyze, and generate text for implementing language processing tasks, Zhenya Antić, Packt Publishing Ltd, 2021 ISBN 1838987789, 9781838987787 https://www.packtpub.com/product/python-natural-language-processing-cookbook/9781838987312 76 | - Provost, Foster, and Tom Fawcett. Data Science for Business: What you need to know about data mining and data-analytic thinking. " O'Reilly Media, Inc.", 2013. https://www.oreilly.com/library/view/data-science-for/9781449374273/ 77 | - Schütze, Hinrich, Christopher D. Manning, and Prabhakar Raghavan. Introduction to information retrieval. Vol. 39. Cambridge: Cambridge University Press, 2008. https://nlp.stanford.edu/IR-book/information-retrieval-book.html 78 | - Hovy, Dirk. Text Analysis in Python for Social Scientists: Discovery and Exploration. Cambridge University Press, 2020. https://www.cambridge.org/core/elements/abs/text-analysis-in-python-for-social-scientists/BFAB0A3604C7E29F6198EA2F7941DFF3 79 | 80 | #### YouTube 81 | 82 | - [Natural Language Processing with Dan Jurafsky and Chris Manning, 2012](https://www.youtube.com/playlist?list=PLoROMvodv4rOFZnDyrlW3-nI7tMLtmiJZ) - _"This 2012 lecture series from Stanford professors Dan Jurafsky and Chris Manning covers fundamental algorithms and mathematical models for processing natural language, and how these can be used to solve practical problems."_ 83 | -------------------------------------------------------------------------------- /modules/level-6/cm-3045-3d-graphics-animation/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | #### Table of contents 4 | 5 | - [3D Graphics and Animation (CM3045)](#3d-graphics-and-animation-cm3045) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Module specification](#module-specification) 10 | - [Past exams](#past-exams) 11 | - [Syllabus](#syllabus) 12 | - [Resources](#resources) 13 | - [Complementary references](#complementary-references) 14 | - [:heart: Notes](#heart-notes) 15 | - [References from the course](#references-from-the-course) 16 | - [Books](#books) 17 | - [Main websites](#main-websites) 18 | 19 | --- 20 | 21 | ## 3D Graphics and Animation (CM3045) 22 | 23 | This module will cover advanced methods used in current state-of-the-art 24 | graphics and animation systems. It will include the mathematical 25 | foundations, computational techniques and their use in creative 26 | practice. By taking this module, you will learn how to write programs 27 | that generate animated 3D graphics. There are several distinct study 28 | areas: 3D modelling and animation, the graphics pipeline, simulation 29 | of physics and shader programming. You will study a range of examples, 30 | and through these learn how you can program computer graphics in 31 | contemporary graphical software for different applications. 32 | 33 | ### Professor(s) 34 | 35 | - Dr. Marco Gillies 36 | - Dr. Sylvia Pan 37 | 38 | ### Topics covered 39 | 40 | - Overview of 3D Graphics and mathematics for graphics 41 | - 3D Models and Transforms 42 | - Physics simulation 43 | - Keyframe Animation 44 | - Character Animation 45 | - Rendering and the Graphics Pipeline 46 | - Lighting, Materials and Texturing 47 | - Shader Programming 48 | - Vertex Shaders 49 | - Fragment Shaders 50 | 51 | ### Assessment 52 | 53 | One two-hour unseen written examination and coursework (Type I) 54 | 55 | ### Module specification 56 | 57 | - [Module specification](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM3045_3DGA-Module-Spec.pdf) 58 | 59 | ### Past exams 60 | 61 | [See past exams here](https://github.com/world-class/binary-assets/tree/master/modules/cm3045-3dga/past-exams/). 62 | 63 | ### Syllabus 64 | 65 | - [Syllabus](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM3045_3DGA.pdf) 66 | 67 | ### Resources 68 | 69 | #### Complementary references 70 | 71 | - [LEARN UNITY - The Most BASIC TUTORIAL I'll Ever Make](https://www.youtube.com/watch?v=pwZpJzpE2lQ) 72 | - [Shader Basics, Blending & Textures • Shaders for Game Devs (Part 1)](https://www.youtube.com/watch?v=kfM-yu0iQBk) 73 | 74 | #### :heart: Notes 75 | 76 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-6/3d-graphics-and-animation). 77 | 78 | #### References from the course 79 | 80 | ##### Books 81 | 82 | - [Computer Graphics: From Pixels to Programmable Graphics Hardware](https://ebookcentral.proquest.com/lib/londonww/detail.action?docID=1438148) - Boreskov, A. and E. Shikin (Boca Raton: CRC Press, 2013) 83 | - [Computer Graphics](https://ebookcentral.proquest.com/lib/londonww/detail.action?docID=5640155) - Sinha, S. and A. Paul (Oxford: Alpha Science International LTD, 2018) 84 | 85 | ##### Main websites 86 | 87 | - [Alan Zucconi - Tutorials](https://www.alanzucconi.com/tutorials/) 88 | - [A gentle introduction to shaders in Unity3D](https://www.alanzucconi.com/2015/06/10/a-gentle-introduction-to-shaders-in-unity3d/) 89 | - [Essential Unity Concepts](https://learn.unity.com/tutorial/essential-unity-concepts) 90 | - [High-level shader language (HLSL)](https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl) 91 | - [Introduction to Particle Systems](https://learn.unity.com/tutorial/introduction-to-particle-systems#) 92 | - [Introduction to ShaderGraph](https://learn.unity.com/tutorial/introduction-to-shader-graph) 93 | - [Mixamo](https://www.mixamo.com/) - _"Animate 3D characters for games, film, and more."_ 94 | - [Setting up Blendshapes in Unity - 2019.3](https://learn.unity.com/tutorial/setting-up-blendshapes-in-unity-2019-3) 95 | - [Shader Graph](https://unity.com/features/shader-graph) 96 | - [Shadertoy](https://www.shadertoy.com/) 97 | - [TurboSquid](https://www.turbosquid.com/) - _"3D Models for Professionals"_ 98 | - [Unity documentation](https://docs.unity3d.com/Manual/index.html) 99 | - [Visual Effect Graph](https://unity.com/visual-effect-graph) 100 | -------------------------------------------------------------------------------- /after-uol/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../README.md) 2 | 3 | # After UoL's Online Bachelor Degree 4 | 5 | # Table of contents 6 | 7 | - [Doctor of Computer Science](#doctor-of-computer-science) 8 | - [Master's Degree](#masters-degree) 9 | - [Artificial intelligence](#artificial-intelligence) 10 | - [Analytics](#analytics) 11 | - [Cloud computing](#cloud-computing) 12 | - [Cyber security](#cyber-security) 13 | - [Data science](#data-science) 14 | - [Machine learning](#machine-learning) 15 | - [Software Engineering](#software-engineering) 16 | - [Transferring: Bachelor of Science alternatives](#transferring-bachelor-of-science-alternatives) 17 | 18 | # Study: Online options 19 | 20 | _Note: All degrees are in Computer Science, unless specified otherwise._ 21 | 22 | ## Doctor of Computer Science 23 | 24 | - [Colorado Technical University](https://www.coloradotech.edu/degrees/doctorates/computer-science) 25 | - [Columbia University](https://www.cs.columbia.edu/des/) 26 | - [Northcentral University](https://www.ncu.edu/programs-degrees/doctoral/doctor-philosophy-computer-science) 27 | 28 | ## Master's Degree 29 | 30 | | Degree | Platform | Cost (total USD) | 31 | |--------|----------|------------------| 32 | | [Arizona State University](https://www.coursera.org/degrees/master-of-computer-science-asu) | Coursera | $15,000 | 33 | | [Boston University](https://www.bu.edu/online/programs/graduate-programs/computer-information-systems-masters-degree/) ||| 34 | | [Columbia University](https://cvn.columbia.edu/program/columbia-university-computer-science-masters-degree-masters-science)||$74,915| 35 | | [DePaul University](https://www.cdm.depaul.edu/academics/Pages/MSInComputerScience.aspx)||| 36 | | [Georgia Tech](https://omscs.gatech.edu/) | | $5,900 - $6,400 | 37 | | [Keele University](https://online.keele.ac.uk/online-programme/msc-computer-science/)||$8,650 (7,440 GBP)| 38 | | [Indiana University](https://www.edx.org/masters/online-master-in-it-management-indiana-university) (IT Management)|edX|$21,000| 39 | | [Penn Engineering](https://www.coursera.org/degrees/mcit-penn) (Computer and Information Technology)|Coursera|$32,000| 40 | | [Stanford University](https://online.stanford.edu/programs/computer-science-ms-degree) | | $63,000| 41 | | [University of Illinois](https://www.coursera.org/degrees/master-of-computer-science-illinois)|Coursera|$21,440| 42 | | [University of Texas](https://www.cs.utexas.edu/graduate-program/masters-program/online-option/courses)|[edX](https://www.edx.org/masters/online-master-science-computer-science-utaustinx)|$10,000| 43 | 44 | ### Artificial intelligence 45 | - [University of London](https://london.ac.uk/msc-data-science-and-artificial-intelligence-structure) Moodle, Bursary of 10% for UoL BSc alumni 46 | - [Keele University](https://online.keele.ac.uk/online-programme/msc-computer-science-with-artificial-intelligence/) 47 | 48 | ### Analytics 49 | 50 | - [Georgia Tech](https://www.edx.org/masters/online-master-science-analytics-georgia-tech) - edX 51 | - [Keele University](https://online.keele.ac.uk/online-programme/msc-computer-science-with-data-analytics/) 52 | 53 | ### Cloud computing 54 | 55 | - [University of Leicester](https://le.ac.uk/courses/cloud-computing-msc/2021) (Cloud Computing MSc, PGDip) 56 | 57 | ### Cyber security 58 | 59 | - [Coventry University](https://www.futurelearn.com/degrees/coventry/msc-cyber-security) - FutureLearn 60 | - [Deakin University](https://www.futurelearn.com/degrees/deakin-university/cyber-security) - FutureLearn 61 | - [Georgia Tech](https://www.edx.org/masters/online-master-science-cybersecurity-georgia-tech) - edX 62 | 63 | ### Data science 64 | 65 | - [University of Arizona](https://www.upgrad.com/us/data-science-ms-uoa/) - Upgrad 66 | - [University of London](https://london.ac.uk/msc-data-science-structure) Moodle, bursary of 10% for UoL BSc alumni 67 | - [University of California, San Diego](https://www.edx.org/micromasters/ucsandiegox-algorithms-and-data-structures) - edX 68 | - [University of Colorado Boulder](https://www.colorado.edu/program/data-science/coursera-overview) 69 | - [University of Illinois](https://www.coursera.org/degrees/masters-in-computer-data-science) - Coursera 70 | - [University of Michigan](https://www.coursera.org/degrees/master-of-applied-data-science-umich) (Applied Data Science) - Coursera 71 | 72 | ### Machine learning 73 | 74 | - [Imperial College London](https://www.coursera.org/degrees/msc-machine-learning-imperial) (Machine learning) - Coursera 75 | 76 | ### Software Engineering 77 | 78 | - [University of Leicester](https://le.ac.uk/courses/advanced-software-engineering-msc-dl/2021) (Advanced Software Engineering MSc, PGCert) 79 | 80 | ## Transferring: Bachelor of Science alternatives 81 | 82 | - [Pennsylvania State University](https://www.worldcampus.psu.edu/degrees-and-certificates/penn-state-online-software-engineering-bachelors-degree/overview) (Software Engineering) 83 | -------------------------------------------------------------------------------- /assets/scripts/update_week.py: -------------------------------------------------------------------------------- 1 | """ 2 | Update the status of the (ongoing or not) semester by 3 | writing text in the main README.md file. 4 | """ 5 | from datetime import datetime, timedelta 6 | import fileinput 7 | 8 | def main(semester_start_date: datetime = datetime(2025, 10, 13)) -> None: ##yyyy, mm, d 9 | """ 10 | Main function to execute. Simply update the date parameter (must fall on Monday) when 11 | the current semester is done to a Monday. 12 | """ 13 | current_date = datetime.today() 14 | current_week = get_current_week_number(current_date, semester_start_date) 15 | text_to_display = get_text_to_display(current_week, semester_start_date) 16 | write_text_to_display_in_readme(text_to_display) 17 | 18 | 19 | def get_current_week_number( 20 | current_date: datetime, semester_start_date: datetime 21 | ) -> int: 22 | """ 23 | Return the current week number. Assumes that one day before the next start 24 | date (Sunday), we set the week number to 1 and any subsequent Sunday is the 25 | day on which the week is updated. 26 | 27 | Args: 28 | current_date (datetime): Today's date. 29 | semester_start_date (datetime): Start date of the semester. 30 | 31 | Returns: 32 | int: Current week number relative to semester_start_date. 33 | """ 34 | sunday_start = semester_start_date - timedelta(days=1) 35 | 36 | # If it's Sunday, don't apply a time delta (it would just remove a week) 37 | # since we update the week number on Sundays. 38 | sunday_now = current_date - timedelta(days=(current_date.weekday() % 6)) 39 | 40 | # Start counting weeks at 1 (not zero even if it's CS so we match week 41 | # numbers on Coursera ;)) 42 | return int((sunday_now - sunday_start).days / 7 + 1) 43 | 44 | 45 | def get_text_to_display( 46 | current_week: int, semester_start_date: datetime 47 | ) -> str: 48 | """ 49 | Returns the text that should be displayed for the status of the current 50 | week in the README. 51 | 52 | Args: 53 | current_week (int): Week number as integer. 54 | semester_start_date (datetime): Start date of the next semester. 55 | 56 | Returns: 57 | str: Text to display in the README. 58 | """ 59 | # In between semesters: semester done and announcing next semester start 60 | if current_week <= 0: 61 | next_semester_formatted_date = semester_start_date.strftime( 62 | "%A %-d %B %Y" 63 | ) 64 | return ( 65 | "- Semester done/ending :tada:. Start date " 66 | f"of the next semester: **{next_semester_formatted_date}**." 67 | ) 68 | 69 | # Week between 1 and 22 inclusive = semester ongoing 70 | if current_week <= 22: 71 | return f"- Week **{current_week}**." 72 | 73 | # It's been a long time since we updated this file... Is it a mistake? 74 | if current_week > 25: 75 | url = ( 76 | "https://github.com/world-class/REPL/issues/new?labels=bug" 77 | "&title=%5BBUG%5D%20Start%20date%20of%20next%20semester%20should%20be" 78 | "%20displayed%20in%20the%20README" 79 | ) 80 | return ( 81 | f"- Week **{current_week}**. Did we forget to specify when the next semester" 82 | f" is starting? Please [let us know by filing an issue]({url})!" 83 | ) 84 | 85 | # Semester done but next semester date not set yet (will be week ≤ 25) 86 | return f"- Semester done/ending :tada:. [Week: **{current_week}**]" 87 | 88 | 89 | def write_text_to_display_in_readme( 90 | text_to_display: str, file_path: str = "README.md" 91 | ) -> None: 92 | """ 93 | Rewrite the line below the heading "Current week" in the README. 94 | 95 | Args: 96 | text_to_display (str): What should be written in the README 97 | (replace existing line). 98 | file_path (str, optional): Defaults to "README.md". 99 | """ 100 | skip_lines = 2 # So we leave whitespace intact around the line to change 101 | current_week_line = False 102 | 103 | # Read each line of the README. When we get to the heading "Current week", 104 | # we know the line to change will be two lines below (skipping a blank 105 | # line). Here, "printing" writes to the file in place. 106 | for line in fileinput.input(file_path, inplace=True): 107 | line = str(line.rstrip()) 108 | if "# Current week" in line: 109 | print(line) 110 | print(f"\n{text_to_display}") 111 | current_week_line = True 112 | # If we don't skip lines, we will add new blank lines to the file 113 | elif current_week_line and skip_lines > 0: 114 | skip_lines -= 1 115 | continue 116 | # Any other original line should be kept 117 | else: 118 | print(line) 119 | 120 | 121 | if __name__ == "__main__": 122 | main() 123 | -------------------------------------------------------------------------------- /modules/level-6/cm-3070-final-project/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Final Project (CM3070)](#final-project-cm3070) 6 | - [Topics covered](#topics-covered) 7 | - [Assessment](#assessment) 8 | - [Project ideas: templates](#project-ideas-templates) 9 | - [Syllabus](#syllabus) 10 | - [Notes](#notes) 11 | 12 | --- 13 | 14 | ## Final Project (CM3070) 15 | 16 | In this module, you will undertake a substantial independent project that will allow you to demonstrate a wide range of skills such as project planning, management, research, software implementation, and written presentation. If you are enrolled on a specialist pathway, either as part of the BSc or a graduate diploma, you will be expected to undertake a project in your specialist area. You will integrate the knowledge gained throughout the programme and use skills acquired in other modules in the implementation of your final project which will be in computer science or your specialist area. The work will consist of a combination of research and software development in various proportions. You will be expected to make use of methodologies from various components of computer science, including your specialist pathway if appropriate. 17 | 18 | ### Topics covered 19 | 20 | - Project planning and management. 21 | - Project-associated risk management. 22 | - Project-specific research methodology and methods. 23 | - Aims and objectives of your project. 24 | - Project-specific literature review. 25 | - Project-specific software design. 26 | - Project-specific software development. 27 | - Project-specific software testing. 28 | - Evaluation of project results. 29 | - Project-specific academic writing. 30 | 31 | ### Assessment 32 | 33 | One two-hour unseen written examination and coursework. 34 | 35 | ### Project ideas: templates 36 | 37 | - [Final Project Ideas](https://github.com/world-class/binary-assets/blob/master/modules/cm3070-fp/CM3070_FinalProjectIdeas.pdf) 38 | 39 | ### Syllabus 40 | 41 | - [Syllabus](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM3070_FP.pdf) 42 | 43 | ### Notes 44 | 45 | - The project will focus on the skills learnt in one particular level 6 module. It is highly recommended to base your project on a module you have taken. You could be taking that module while doing the final project, although having taken the module already may give you a head start to produce an output earlier during the final project by having all the necessary background knowledge. 46 | - This is an individual project, no exception. 47 | - Contrary to the work done in the [Agile Software Projects](../../level-5/cm-2020-agile-software-projects/README.md) module, development and programming is much more involved. The outcome is *not* mostly a report: a solid presentation of a working piece of software is expected using advanced techniques learnt in the relevant module(s) of the degree. 48 | - The marking rubric will be available from the beginning of the course, so make sure to have a look to get a good understanding about the expectations and the scope of work. 49 | - Content of module: it includes interviews and give some guidance along the way to stay on track. There are weekly progress logs to make sure you are doing the right thing at the right time. 50 | - The weekly logs go into the final report. 51 | - There are peer-reviewed assignments: it's recommended to do them. 52 | - Key deadlines, including points in time at which feedback is received from tutors: 53 | - **Week 5:** Submit a proposal from a template. 54 | - It kind of becomes the "introduction" in final report. 55 | - Includes a project concept, related work and video presentation for practice. 56 | - **Week 11:** Preliminary project report, submit background research, more details about the plan and design and a first prototype. 57 | - It becomes the literature review, background research, evaluation plan and design section of the final report. Have to have started programming substantially by then. 58 | - **Week 15:** Receive marked preliminary report. 59 | - **Week 17:** Draft of report (not counted but recommended to do). 60 | - Becomes part of the "implementation" section in the report. 61 | - **Week 19:** Receive feedback on draft report. 62 | - Submit a final presentation, video demo of the work and the final report (final report is the majority of the marks). 63 | - Final report and code: worth **60%**. 64 | - Deadline: week **25** (the usual length of other modules is **22** weeks). 65 | - There's an exam worth **20%** (during weeks 21 and/or 22). 66 | - For a detailed overview of the grading and learning outcomes, refer to the [syllabus](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM3070_FP.pdf). 67 | - For concrete examples of what project to work on, refer to the [Final Project Ideas](https://github.com/world-class/binary-assets/blob/master/modules/cm3070-fp/CM3070_FinalProjectIdeas.pdf) PDF (you can navigate the index of the document better by using a proper PDF viewer after downloading it from GitHub). 68 | -------------------------------------------------------------------------------- /modules/level-5/cm-2045-professional-practice-for-computer-scientists/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Professional Practice for Computer Scientists](#professional-practice-for-computer-scientists) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Module specification](#module-specification) 10 | - [Past exams](#past-exams) 11 | - [Syllabus](#syllabus) 12 | - [Resources](#resources) 13 | - [:heart: Notes](#heart-notes) 14 | 15 | --- 16 | 17 |
18 | 19 | ## Professional Practice for Computer Scientists 20 | 21 | This module bridges theoretical knowledge and practical skills essential in computing-related professions. It helps student to develop critical judgment through a legal, ethical, and sustainability lens, fostering a holistic understanding of computing's societal impacts. The emphasis on effective communication, teamwork, and project management prepares students for real-world problem-solving, analysis, and system development, working within diverse teams. Through continuous professional development planning, students are equipped for a lifelong learning trajectory in computer science.   22 | 23 | The professional practice module prepares students for post-graduation computing careers by enhancing their technical education with broader professional skills. It introduces foundational ethical, legal, and regulatory principles, emphasising responsible computing practices. Students will refine their communication skills, essential for teamwork and stakeholder engagement. The module explores sustainability, ethics, and risk management in computing, teaching students to identify and mitigate potential issues. Students also learn about industry standards and best practices for consistent, quality work. students learn about teamwork and strategies to operate in collaborative projects. The module concludes with a focus on career planning and lifelong learning.   24 | 25 | This module contains embedded career development insights and both employer and alumni voice content from your University of London Careers Service distributed across the topics. They highlight the value of the Global Employability Skills you are developing in this module and provide guidance on how to develop your career strategy, whatever your career stage or region. 26 | 27 | ## Professor(s) 28 | 29 | - Dr. Sean McGrath 30 | 31 | ## Topics covered 32 | 33 | - Written communication skills 34 | - Presentation and public speaking skills 35 | - Legal and ethical foundations 36 | - Inclusive computing and ethical impacts 37 | - Sustainability in computing 38 | - Risk management and security 39 | - Industry standards and best practices 40 | - Teamwork and collaboration 41 | - Project management 42 | - Professional development and career planning 43 | 44 | ## Assessment 45 | 46 | One two hour unseen written examination and coursework (Type I) 47 | 48 | ## Module specification 49 | 50 | - To be provided. 51 | 52 | ## Past exams 53 | 54 | None. 55 | 56 | ## Syllabus 57 | 58 | - [Syllabus PDF (April 2025)](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM2045_PPCS.md) 59 | 60 | ## Resources 61 | 62 | **Presentation and public speaking skills** 63 | - [Be the BEST Bad Presenter Ever](https://learning.oreilly.com/course/be-the-best/9781491934234/) - Karen Hough on O'Reilly 64 | 65 | **Legal and ethical foundations** 66 | - [Cloud Computing Law Specialization](https://www.coursera.org/specializations/cloud-computing-law) - Queen Mary University of London on Coursera 67 | - [Open Source Licensing Basics for Software Developers (LFC191)](https://training.linuxfoundation.org/training/open-source-licensing-basics-for-software-developers/) - The Linux Foundation 68 | 69 | **Inclusive computing and ethical impacts** 70 | - [Ethics for Open Source Development (LFC104)](https://training.linuxfoundation.org/training/ethics-for-open-source-development-lfc104/) - The Linux Foundation 71 | - [Introduction to Web Accessibility](https://www.edx.org/learn/web-accessibility/the-world-wide-web-consortium-w3c-introduction-to-web-accessibility) - W3C on edX 72 | 73 | **Sustainability in computing** 74 | - [clean-IT: Towards Sustainable Digital Technologies](https://open.hpi.de/courses/cleanit2021) - openHPI 75 | 76 | **Risk management and security** 77 | - [Cybersecurity Risk Management Framework Specialization](https://www.coursera.org/specializations/cybersecurity-risk-management-framework) - InfoSec Institute on Coursera 78 | 79 | **Industry standards and best practices** 80 | - Introduction to standards - The British Standards Institution on the AI Standards Hub 81 | - [Part 1](https://aistandardshub.org/training/introduction-to-standards-part-1), [Part 2](https://aistandardshub.org/training/introduction-to-standards-part-2) and [Part 3](https://aistandardshub.org/training/introduction-to-standards-part-3) 82 | 83 | **Project management** 84 | - [Software Product Management Specialization](https://www.coursera.org/specializations/product-management) - University of Alberta on Coursera 85 | 86 | ### :heart: Notes 87 | 88 | - None yet. 89 | -------------------------------------------------------------------------------- /subreddit/resources-links/links-reddit-sidebar-olddesign.md: -------------------------------------------------------------------------------- 1 | > [**Click here to join the student-run Discord server!**](https://discord.gg/GhRFG5X) 2 | > 3 | > It's more active than the subreddit, and you can meet current students. Great for asking questions and getting answers. 4 | 5 | ## Programme Information 🇬🇧 6 | 7 | - [**BSc Computer Science Programme Homepage**](https://london.ac.uk/courses/computer-science) 8 | University of London's main programme homepage for the BSc Computer Science. Contains more information than the Coursera webpage. 9 | - [**BSc Computer Science Coursera Webpage**](https://www.coursera.org/degrees/bachelor-of-science-computer-science-london/) 10 | Coursera's webpage for the University of London's BSc Computer Science programme. Contains links to the application portal. 11 | - [**Prospective Student Prospectus (2020)**](https://london.ac.uk/sites/default/files/prospectuses/computer-science-prospectus-2020.pdf) 12 | Admissions prospectus on the BSc Computer Science for interested students. A polished, informative summary of the Programme. 13 | - [**Structure & Module Descriptions**](https://london.ac.uk/computer-science-structure) 14 | A high-level summary of the 22 modules and Final Project which makes up the Programme, seperated by Levels. 15 | - [**Programme Regulations (2021-2022)**](https://london.ac.uk/sites/default/files/regulations/progregs-bsc-computer-science-2021-22.pdf) 16 | The 'Bible' of the BSc Computer Science degree. _If you will only read one document from this section, read this one._ Contains almost every detail about specific workings and regulations. 17 | - [**Programme Specification**](https://london.ac.uk/sites/default/files/programme-specifications/progspec-bsc-computer-science.pdf) 18 | A broad outline and overview of the structure and content of the degree, entry level qualifications, and learning outcomes. 19 | 20 | ## About the University of London 🇬🇧 21 | 22 | - [**University of London Website**](https://london.ac.uk/) The official website of the University of London. Did you know that the University of London has been offering Distance-Learning programmes since the 19th century? 23 | - [**University of London Prospectus (2020)**](https://london.ac.uk/sites/default/files/prospectuses/GIP-2020.pdf) Admissions prospectus about the University of London in general. A polished, informative summary for the prospective student. 24 | - [**General Regulations**](https://london.ac.uk/sites/default/files/regulations/general-regulations-2021-2022.pdf) Handbook of rules and regulations governing the University of London _If you will only read one document from this section, read this one._ Contains almost every detail about specific workings and systems of the University of London. 25 | - [**Student's Guide**](https://my.london.ac.uk/documents/10197/2676152/Student+Guide/07f72f0b-fd7d-cc23-603f-db6c31bfa5e2) Guide for current students of the University of London. Includes information like how to get funding, online libraries, and support networks 26 | - [**Student Terms and Conditions**](https://london.ac.uk/sites/default/files/governance/student-terms-and-conditions.pdf) Important legal contract which covers the consumer rights and legal protections for enrolled students. Includes information on refunds. 27 | - [**Table of Country Bands (for Tuition)**](https://london.ac.uk/sites/default/files/leaflets/country-bands.pdf) Tuition for the University of London is dependant on your 'Country Band'. Band A countries pay £400 GBP per module, while Band B countries pay £600 GBP per module. 28 | - [**List of Exam Centres (Worldwide)**](https://my.london.ac.uk/documents/10197/2926462/examcentres-worldwide2/659d044f-25c3-2a01-fd7e-0667e3d9e71a) 29 | - [**List of Exam Centres (USA and Canda)**](https://my.london.ac.uk/documents/10197/2926462/examcentres-northamerica.pdf/da80d4a8-00db-053c-283a-0757f88b5e85) 30 | 31 | ## Student-Run Resources & Community 🙋 32 | 33 | - [**Resources Enriching Learners Perennially (Student Hub)**](https://world-class.github.io/REPL/) This is the main student-run community hub. Contains many informative resources and guides. _If you will only read one document from this section, read this one._ 34 | - [**Student & Professor Notes Github Repository**](https://github.com/world-class/notes/) Collection of notes contributed by students and professors. 35 | - [**Student Module Guides**](https://github.com/world-class/REPL/tree/master/modules/level-4) Various FAQs and guides to the different modules 36 | - [**Slack Channel Guide**](https://world-class.github.io/REPL/slack/) An overview of the vibrant Slack community, and the various channels that are available. 37 | 38 | ## Student Login Portals 🔐 39 | 40 | - Links to various login portals for currently enrolled students. Valid account credentials at the University of London is required for access. 41 | - [**University of London Student Portal**](https://my.london.ac.uk/) 42 | - [**Virtual Learning Environment (Coursera)**](https://www.coursera.org/?authMode=login&authProvider=london) 43 | - [**Student Slack Workspace**](https://londoncs.slack.com/) 44 | - [**University of London Student Email**](http://mail.google.com/a/student.london.ac.uk) 45 | - [**Online Library and Databases**](http://onlinelibrary.london.ac.uk/) 46 | -------------------------------------------------------------------------------- /modules/level-6/data-science/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | # Data Science 4 | 5 | # Table of contents 6 | 7 | - [Data Science](#data-science) 8 | - [Table of contents](#table-of-contents) 9 | - [_Data Science_ specialism modules](#data-science-specialism-modules) 10 | - [Data Science](#data-science-1) 11 | - [Databases and Advanced Data Techniques](#databases-and-advanced-data-techniques) 12 | - [Machine Learning and Neural Networks](#machine-learning-and-neural-networks) 13 | - [Advanced Web Development](#advanced-web-development) 14 | - [Natural Language Processing](#natural-language-processing) 15 | - [Resources](#resources) 16 | - [Jupyter](#jupyter) 17 | - [Pandas](#pandas) 18 | - [Working with data (Pandas, NumPy, Matplotlib, IPython, Scikit-Learn...)](#working-with-data-pandas-numpy-matplotlib-ipython-scikit-learn) 19 | 20 | --- 21 | 22 | # _Data Science_ specialism modules 23 | 24 | ## Data Science 25 | 26 | This module will develop your data science skillset so that you'll 27 | be able to write programs that can read, process and analyse textual 28 | and numerical data. You will be able to generate plots and interactive 29 | visualisations of data and understand how to apply statistical methods 30 | to the interpretation of results. You'll be able to use data analysis 31 | in the decision-making process. You'll also learn about application 32 | domains for data science. 33 | 34 | ## Databases and Advanced Data Techniques 35 | 36 | This module aims to show you how to work with data in your computer 37 | programs. You will learn how to use SQL and NoSQL databases to store 38 | tabular data and documents. You will learn about the ethics of gathering 39 | and processing data and why it is important to consider issues around 40 | data security. You will learn about open data resources, and how you can 41 | access them from your computer programs. You will learn about audio and 42 | video data, and the challenges of working with this kind of data. 43 | 44 | ## Machine Learning and Neural Networks 45 | 46 | This module provides a broad view of machine learning and neural 47 | networks. You'll learn how to solve common machine learning problems 48 | such as regression, classification, clustering, matrix completion and 49 | pattern recognition. You'll explore how neural networks can be trained 50 | and optimised. You'll learn how to develop machine learning systems 51 | rapidly, and you will learn how to verify and evaluate the results. 52 | 53 | ## Advanced Web Development 54 | 55 | Advanced Web Development teaches you how to build dynamic, data-driven 56 | websites using databases, front-end frameworks and server-side 57 | programming. You'll develop the skills needed for full stack web 58 | development work and develop a web developer skillset, enabling you 59 | to build and deploy complete, data-driven websites. You'll consider 60 | different technologies for clientside web development such as HTML, 61 | CSS, JavaScript and templates. You'll explore methods for developing 62 | server-side web applications, by building web-accessible wrappers 63 | around databases, consider scalability issues and learn about web app 64 | configuration and deployment. 65 | 66 | ## Natural Language Processing 67 | 68 | Natural Language Processing (NLP) provides a grounding in both 69 | rule-based and statistical approaches to NLP, combining theoretical 70 | study with hands-on work employing widely used software packages. The 71 | module focuses on text processing and you'll learn about how to work 72 | with text-based natural language in your programs. You'll explore 73 | grammars and how they can be used to analyse text. You'll learn how 74 | to use statistical analysis to extract information from and classify 75 | text. You'll use appropriate programming libraries to implement NLP 76 | workflows. 77 | 78 | # Resources 79 | 80 | ## Jupyter 81 | 82 | - [Jupyter Notebook for Beginners: A Tutorial](https://www.dataquest.io/blog/jupyter-notebook-tutorial/) 83 | - [Six easy ways to run your Jupyter Notebook in the cloud](https://www.dataschool.io/cloud-services-for-jupyter-notebook/) 84 | - [Tutorial: Advanced Jupyter Notebooks](https://www.dataquest.io/blog/advanced-jupyter-notebooks-tutorial/) 85 | 86 | ## Pandas 87 | 88 | - [Modern Pandas](https://tomaugspurger.github.io/modern-1-intro) - _"This series is about how to make effective use of pandas, a data analysis library for the Python programming language. It's targeted at an intermediate level: people who have some experience with pandas, but are looking to improve."_ 89 | - [Official website](https://pandas.pydata.org/) - _"pandas is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language."_ 90 | 91 | ## Working with data (Pandas, NumPy, Matplotlib, IPython, Scikit-Learn...) 92 | 93 | - [Kaggle: Micro-Courses](https://www.kaggle.com/learn/overview) - _"Practical data skills you can apply immediately: that's what you'll learn in these free micro-courses. They're the fastest (and most fun) way to become a data scientist or improve your current skills."_ 94 | - [Python Data Science Handbook: full text in Jupyter Notebooks](https://github.com/jakevdp/PythonDataScienceHandbook) - _"This repository contains the entire Python Data Science Handbook, in the form of (free!) Jupyter notebooks."_ 95 | -------------------------------------------------------------------------------- /subreddit/resources-links/links-reddit-sidebar-redesign.md: -------------------------------------------------------------------------------- 1 | ## Information on UoL's BSc Computer Science 🇬🇧 2 | 3 | Collection of links 🔗 and PDFs 📄 about the University of London's Bachelor's of Science in Computer Science degree programme. 4 | 5 | [**BSc Computer Science Programme Homepage**](https://london.ac.uk/courses/computer-science) 6 | University of London's main programme homepage for the BSc Computer Science. Contains more information than the Coursera webpage. 7 | 8 | [**BSc Computer Science Coursera Webpage**](https://www.coursera.org/degrees/bachelor-of-science-computer-science-london/) 9 | Coursera's webpage for the University of London's BSc Computer Science programme. Contains links to the application portal. 10 | 11 | [**BSc Computer Science Prospectus (2020)**](https://london.ac.uk/sites/default/files/prospectuses/computer-science-prospectus-2020.pdf) 12 | Admissions prospectus on the BSc Computer Science for interested students. A polished, informative summary of the Programme. 13 | 14 | [**Structure & Module Descriptions**](https://london.ac.uk/computer-science-structure) 15 | A high-level summary of the 22 modules and Final Project which makes up the Programme, seperated by Levels. 16 | 17 | [**Programme Regulations (2021-2022)**](https://london.ac.uk/sites/default/files/regulations/progregs-bsc-computer-science-2021-22.pdf) 18 | The 'Bible' of the BSc Computer Science degree. _If you will only read one document from this section, read this one._ Contains almost every detail about specific workings and regulations. 19 | https://london.ac.uk/sites/default/files/regulations/progregs-computer-science-2020-21.pdf 20 | 21 | [**Programme Specification**](https://london.ac.uk/sites/default/files/programme-specifications/progspec-bsc-computer-science.pdf) 22 | A broad outline and overview of the structure and content of the degree, entry level qualifications, and learning outcomes. 23 | 24 | ## About the University of London 🇬🇧 25 | 26 | Links 🔗 and PDFs 📄 about the University of London in general, as well as resources for students. 27 | 28 | [**University of London Website**](https://london.ac.uk/) 29 | The official website of the University of London. Did you know that the University of London has been offering Distance-Learning programmes since the 19th century? 30 | 31 | [**University of London Prospectus (2020)**](https://london.ac.uk/sites/default/files/prospectuses/GIP-2020.pdf) 32 | Admissions prospectus about the University of London in general. A polished, informative summary for the prospective student. 33 | 34 | [**General Regulations**](https://london.ac.uk/sites/default/files/regulations/general-regulations-2021-2022.pdf) 35 | Handbook of rules and regulations governing the University of London _If you will only read one document from this section, read this one._ Contains almost every detail about specific workings and systems of the University of London. 36 | 37 | [**Student's Guide**](https://my.london.ac.uk/documents/10197/2676152/Student+Guide/07f72f0b-fd7d-cc23-603f-db6c31bfa5e2) 38 | Guide for current students of the University of London. Includes information like how to get funding, online libraries, and support networks 39 | 40 | [**Student Terms and Conditions**](https://london.ac.uk/sites/default/files/governance/student-terms-and-conditions.pdf) 41 | Important legal contract which covers the consumer rights and legal protections for enrolled students. Includes information on refunds. 42 | 43 | [**List of Exam Centres (Worldwide)**](https://my.london.ac.uk/documents/10197/2926462/examcentres-worldwide2/659d044f-25c3-2a01-fd7e-0667e3d9e71a) 44 | 45 | [**List of Exam Centres (USA and Canda)**](https://my.london.ac.uk/documents/10197/2926462/examcentres-northamerica.pdf/da80d4a8-00db-053c-283a-0757f88b5e85) 46 | 47 | [**Table of Country Bands (for Tuition)**](https://london.ac.uk/sites/default/files/leaflets/country-bands.pdf) 48 | Tuition for the University of London is dependant on your 'Country Band'. Band A countries pay £400 GBP per module, while Band B countries pay £600 GBP per module. 49 | 50 | ## Student-Run Resources and Community 51 | 52 | Links to various student-made resources and community portal 53 | 54 | [**Resources Enriching Learners Perennially (Student Hub)**](https://world-class.github.io/REPL/) 55 | This is the main student-run community hub. Contains many informative resources and guides. **If you will only read one document from this section, read this one.** 56 | 57 | [**Student & Professor Notes Github Repository**](https://github.com/world-class/notes/) 58 | Collection of notes contributed by students and professors. 59 | 60 | [**Student Module Guides**](https://github.com/world-class/REPL/tree/master/modules/level-4) 61 | Various FAQs and guides to the different modules 62 | 63 | [**Slack Channel Guide**](https://world-class.github.io/REPL/slack/) 64 | An overview of the vibrant Slack community, and the various channels that are available. 65 | 66 | ## Login Portals for Currently Enrolled Students 67 | 68 | Links to various login portals for currently enrolled students. Valid account credentials at the University of London is required for access. 69 | 70 | [**University of London Student Portal**](https://my.london.ac.uk/) 71 | 72 | [**Virtual Learning Environment (Coursera)**](https://www.coursera.org/?authMode=login&authProvider=london) 73 | 74 | [**Student Slack Workspace**](https://londoncs.slack.com/) 75 | 76 | [**University of London Student Email**](http://mail.google.com/a/student.london.ac.uk) 77 | 78 | [**Online Library and Databases**](http://onlinelibrary.london.ac.uk/) 79 | -------------------------------------------------------------------------------- /subreddit/interview-david-c.md: -------------------------------------------------------------------------------- 1 | # Student Interview with David C. of Australia. Some Thoughts and Experiences from a Newly-Enrolled April-Cohort Student 2 | 3 | Hello there, /r/UniversityOfLondonCS! 4 | 5 | Today I bring to you an interview, with _David C._ of Australia! Hailing from sunny Sydney, David is a 40 year old technology professional with a degree in Digital Electronics and Telecommunications. He’s an April-cohort student in the process of finishing up his first semester, taking a course-load of _Computational Mathematics, Algorithms and Datastructures 1, Fundamentals of Computer Science, and Introduction to Programming 1._ David has kindly volunteered his time for a virtual interview. I sent him a list of questions, and here are his replies. 6 | 7 | ## What led you to enrol in the University of London's distance-learning BSc? 8 | 9 | > The University of London has a great reputation internationally and their Bachelor’s of Science in Computer Science programme curriculum is fantastic. Because of my life, work, and travel commitments, I had to choose a University that would allow me to follow the academic life 24/7 from anywhere in the world. The fact that the University of London uses Coursera to deliver their content was definitely a plus because I know that platform very well and used it intensively to attend some other courses and certification programmes. It is just amazing that today knowledge and even Uni programmes are so accessible online. 10 | > Consider that my first degree is in Digital Electronics and Telecommunications, and I have been working in IT for more than 20 years. When I went to college, there were not many CS-specific college programmes around. Studying CS at UoL is like a dream come true for me. 11 | 12 | ## What is your feedback about the classes so far? Was it too easy? Too hard? 13 | 14 | > Their quality and industry relevance are very good, up to date, and their difficulty level is about right. We also should put things into perspective. Even though online learning has been around for a couple of decades now, many universities are still converging from a classic academic educational approach, to a more connected, digital and multi-channel one. 15 | > We have to recognise UoL’s role as a pioneer in their convergence to online learning. That type of digital transformation is never easy and quick to achieve and there will be always room for improvement if you want to remain relevant in the market. 16 | 17 | ## What do you think about the midterms? Did they help you master the material? 18 | 19 | > When I started working on them, I realised how important it was for me to go through that process of content review and knowledge check. It did help me refresh and master the content. I wish we can do something similar before the end of the semester or final exams. This semester I took four modules, hence the midterms were quite challenging, but their difficulty level was fair I think. 20 | 21 | ## What do you think about the student community on Slack? 22 | 23 | > I am glad about the level of collaboration that exists among my peers. There is always someone to answer a student question on the channels, and this is a huge plus. I personally try my best to help others, when I can. I am sure that it will come back at some point… after all what goes around, comes around! UoL mentioned that its staff will not moderate the UoL Slack channels, and this has its pros and cons. What we have with Slack is a good start and I would like UoL to experiment other collaboration platforms and channels as well and work harder to build a strong student network. 24 | 25 | ## Share a positive experience you've had with the student community 26 | 27 | > I am genuinely interested in people, different cultures and languages, and being part of our UoL world-class community is quite amazing. For instance, putting aside the pure academic use of the online channels, I would say that the international and diverse nature of the of our student community is fantastic. I can chat hours with my peers spread around the world to discuss everything, including our Uni assignments. 28 | 29 | ## What is one of your favourite things about this programme? 30 | 31 | > The fact that we have all the content available 24/7 online is a huge plus. This is one of the reasons I choose UoL/Coursera in the first place. I think is worth to mention other key aspects of the programme, such as a like-minded world-class student community – as just mentioned – challenging content, quizzes and assignments. 32 | 33 | ## How do you organise your life studying and working? 34 | 35 | > I think this is everybody’s dilemma. Don’t you think? I try to divide my day in three time-windows. One devoted to my family, one to my work and the remaining third to studying. Of course, in proximity of important Uni milestones my academic commitments take priority on other life matters. This works for me. It might work for other as well. 36 | 37 | ## Do you have any suggestions for your fellow students? 38 | 39 | > I will try… Play nicely with others and share your toys – remember that what goes around comes around. Avoid silly and childish gossip and be always part of the solution not of the problem. All the best to everyone! 40 | 41 | Thank you very much for the advice, David! 42 | 43 | I’m always looking forward to bringing new perspectives and new voices to speak about the programme, and this interview is one of the things I’m trying to bring more content to this subreddit. I hope you enjoyed David’s account of his experiences as a student at the University of London – and if you have any further questions, feel free to join us at the unofficial Discord server. 44 | 45 | Take care! 46 | -------------------------------------------------------------------------------- /subreddit/formative-summative.md: -------------------------------------------------------------------------------- 1 | # Let's Talk About The Balance of Formative Coursework versus Summative Assessments: An Important Trade-off to Consider When Enrolling at University of London's BSc in Computer Science 2 | 3 | Hello /r/UniversityOfLondonCS! 4 | 5 | An online Bachelor's programme like University of London's BSc is by it's very nature _different_ from a more traditional on-campus experience. Although it may not be any _better_ or _worse_ quantitatively, the difference in itself makes it important for one to consider the various tradeoffs that the two approaches bring. 6 | 7 | Today I'd like to talk about one of those differences: which is the balance between [formative coursework, and summative _assessments_](https://www.cmu.edu/teaching/assessment/basics/formative-summative.html), that I have noticed in my 3 academic terms here. 8 | 9 | Generally, a student's progress in any academic course is assessed in two ways. Through formative assessments (which I'll call coursework here), and summative assessments. A formative assessment is like a pop quiz, or a optional project. It's something that does not affect your final grade in the module, but is only a means of giving feedback to the student. Some examples of formative coursework in the various modules I've experienced are: 10 | 11 | - **Practice quizzes:** Usually quite short, but present after every video lecture, 12 | - **Discussion Prompt:** Where you are asked to brainstorm the solution to a problem, and talk with other classmates about the solution. These are present in every week's worth of lessons. 13 | - **Peer-reviewed projects:** This is the most major formative coursework present. A project can be a math paper exploring a certain topic, a program, or game. These are sent in for 'grading' and feedback by your peers. There are usually 3 or 4 of them in a module. 14 | 15 | All of the above are formative, because they do not affect your final grade in the module at all. You might be given a 'grade', but it's purely for your own feedback. 16 | 17 | The summative assessments in the modules generally consist of: 18 | 19 | - **Unit quizzes:** Longer and more difficult than the practice quizzes, and occur once every two weeks. They are timed, and you only get 2 or 3 attempts per quiz. Each quiz is usually worth from 4 to 8% of your final module grade. 20 | - **Midterm assessment:** Generally a take-home test, or a project. These are graded by an instructor, and usually count for up to 25% of one's overall module grade. 21 | - **End-of-term exam:** These are the big, two hour long exams that one takes at an exam center. They are worth 50% of your overall module grade. 22 | 23 | Do you spot the overall pattern? _In my experience, I've noticed that in all of my modules, there is far more formative coursework than summative assessments,_ both in terms of the actual quantity, and amount of hours required to complete each one. 24 | 25 | Of the few summative assessments per module, _the majority of one's final grade is from one or two assessments_. By default, 50% of one's grade comes from the final exam. And typically, the midterm project/take-home-exam is worth another 25% of one's grade (but not always - [this depends on the _type_ of module you are taking](https://www.reddit.com/r/UniversityOfLondonCS/comments/hgbcc8/beginners_guide_to_grades_projects_exams_and/)). The various summative quizzes are each worth only a few percentage points of one's total grade, but they add up to the remaining 25%. 26 | 27 | _Why is this the case? Why is such a large portion of one's grade dependent on only a few assessments?_ 28 | 29 | It sort of is harsh! But sadly, the reason the assessments of the course is structured this way, is due to the simple reality of an online distance-learning programme. 30 | 31 | In a regular, physical college -- one's professors have the physical immediacy to check on their student's work. They might have many small quizzes or tests throughout the year, which they may give at their leisure. And at the end of the year, when the time for the final grade comes -- the professor is able to look back at their gradebook, and take all the small assignments from throughout the year, and come up with an overall idea of the student's progress. 32 | 33 | Sure, there may be large exams that are worth significant portions of one's grades -- but overall, there's more opportunities for a professor to get a holistic image of a given student. _Essentially, the ratio between formative and summative assessments are more balanced at physical universities_. 34 | 35 | In contrast, at a distance-learning programme like the University of London, it is not possible to have that level of access and physical immediacy. There's only one opportunity for an exam per module, and that's at the end of the year. Likewise, because the degree is self-paced, professors do not have the means to review all the projects. That's why the vast majority of projects -- even though they are significant in scope -- are peer-reviewed instead. 36 | 37 | Hence, by signing up for a programme like the Univeristy of London, you'll have to understand that the balance between formative and summative assignments is tilted unfavorably. There are only few summative assignments, but they are also worth large portions of one's grade. 38 | 39 | And likewise, because much of the coursework here is formative, it is considered 'optional'. Some people (unwisely) skip them, because they do not think it has to be done, since it's 'not worth a grade'. 40 | 41 | That is a very unwise idea, because **even though the formative projects are optional, they are no less difficult or rigorous than the summative assessments that one encounter.** In fact, much of one's learning is conducted through them, instead of the assessments. 42 | 43 | In this lies my advice to the prospective student. Make sure that you understand the trade-offs involved in terms of having a programme that's biased towards fewer, but more significant summative assignments. And don't forget to do all the formative coursework, because even though they are 'optional' -- skipping them will really harm your learning. 44 | -------------------------------------------------------------------------------- /modules/level-6/cm-3050-mobile-development/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Mobile Development (CM3050)](#mobile-development-cm3050) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Syllabus](#syllabus) 10 | - [Resources](#resources) 11 | - [:heart: Notes](#heart-notes) 12 | - [React / React Native](#react--react-native) 13 | - [Expo](#expo) 14 | - [Android](#android) 15 | - [iOS](#ios) 16 | 17 | ## Mobile Development (CM3050) 18 | 19 | This module aims to give you the fundamental understanding and skills 20 | needed to develop mobile applications. By studying this module, you will 21 | learn the principles of effective mobile user interface design and how 22 | to design and build user interfaces. You will learn about data-driven 23 | mobile applications, and how you can integrate a mobile application to 24 | a data source. You will learn about the mobile development ecosystem 25 | and how you can develop, run and test your applications. You will learn 26 | how to work with various sensors available on mobile devices using 27 | built-in APIs. The style of the modules will be practical, with a focus 28 | on developing functioning applications. 29 | 30 | ### Professor(s) 31 | 32 | - Joe McAlister 33 | 34 | ### Topics covered 35 | 36 | - The mobile app ecosystem 37 | - Mobile user interface design 38 | - Programming user interfaces 39 | - Advanced user interface elements 40 | - Developing a mobile app project 41 | - Data sources 42 | - Integrating Cloud and web services 43 | - Sensor programming 44 | - Advanced APIs 45 | - Deployment 46 | 47 | ### Assessment 48 | 49 | Coursework only (Type III) 50 | 51 | ### Syllabus 52 | 53 | - [Syllabus PDF (December 2021)](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM3050_MD.pdf) 54 | 55 | ### Primary programming language 56 | 57 | JavaScript 58 | 59 | ### Resources 60 | 61 | - [Jest integration](https://react-native-async-storage.github.io/async-storage/docs/advanced/jest/) - Use of Jest and async-storage. 62 | - [Lectures for the Spring 2020 version of Stanford University's course CS193p (Developing Applications for iOS using SwiftUI)](https://cs193p.sites.stanford.edu/). 63 | 64 | #### :heart: Notes 65 | 66 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-6/mobile-development). 67 | 68 | ##### React / React Native 69 | 70 | - [Animated](https://reactnative.dev/docs/animated) 71 | - [API security](https://www.redhat.com/en/topics/security/api-security) 72 | - [Core Components and APIs](https://reactnative.dev/docs/components-and-apis) 73 | - [JavaScript Environment](https://reactnative.dev/docs/javascript-environment) 74 | - [JSX In Depth](https://reactjs.org/docs/jsx-in-depth.html) 75 | - [React Fundamentals](https://reactnative.dev/docs/intro-react) 76 | - [React Navigation](https://reactnavigation.org/) 77 | 78 | ##### Expo 79 | 80 | - [Building Standalone Apps](https://docs.expo.dev/classic/building-standalone-apps/) 81 | - [Installation](https://docs.expo.dev/get-started/installation/) 82 | - [Location](https://docs.expo.dev/versions/latest/sdk/location/) 83 | - [Network](https://docs.expo.dev/versions/latest/sdk/network/) 84 | - [SecureStore](https://docs.expo.dev/versions/latest/sdk/securestore/) 85 | - Snacks / Coding demos 86 | - [2403 Replicate three styles](https://snack.expo.dev/@joemcalister/2403-replicate-three-styles) 87 | - [3005 Positioning basic UI elements](https://snack.expo.dev/@joemcalister/3005-positioning-basic-ui-elements) 88 | - [3209 Light switch](https://snack.expo.dev/@joemcalister/3209-light-switch) 89 | - [3504 Conditional boundaries](https://snack.expo.dev/@joemcalister/3504-conditional-boundaries) 90 | - [3604 Alert quiz](https://snack.expo.dev/@joemcalister/3604-alert-quiz) 91 | - [4105 Table View playground](https://snack.expo.dev/@joemcalister/4105-table-view-playground) 92 | - [5003 Simplify this code](https://snack.expo.dev/@joemcalister/5003-simplify-this-code) 93 | - [5104 Snapshot testing](https://snack.expo.dev/@joemcalister/5104-snapshot-testing) 94 | - [6104 Parse JSON](https://snack.expo.dev/@joemcalister/6104-parse-json) 95 | - [7203 Making a GET request](https://snack.expo.dev/@joemcalister/7203-making-a-get-request) 96 | - [8104 Accessing the camera](https://snack.expo.dev/@joemcalister/8104-accessing-the-camera) 97 | - [9104 Push notifications](https://snack.expo.dev/@joemcalister/9104-push-notifications) 98 | 99 | ##### Android 100 | 101 | - [Android Studio Emulator](https://docs.expo.dev/workflow/android-studio-emulator/) 102 | - [Developer Content Policy](https://play.google.com/about/developer-content-policy/) 103 | - [Sign your app](https://developer.android.com/studio/publish/app-signing) 104 | 105 | ##### iOS 106 | 107 | - [App Store Review Guidelines](https://developer.apple.com/app-store/review/guidelines/) 108 | - [Code Signing](https://developer.apple.com/support/code-signing/) 109 | - [iOS Design Themes](https://developer.apple.com/design/human-interface-guidelines/ios/overview/themes/) 110 | - [iOS Simulator](https://docs.expo.dev/workflow/ios-simulator/) 111 | 112 | # Misc 113 | 114 | - [Adaptivity and Layout](https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/adaptivity-and-layout/) 115 | - [Async Storage](https://react-native-async-storage.github.io/async-storage/docs/usage/) 116 | - [Dark Patterns](https://www.deceptive.design/) 117 | - [Haptics](https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/haptics/) 118 | - [Layout with Flexbox](https://reactnative.dev/docs/flexbox) 119 | - [Material Design Guidelines](https://material.io/design/guidelines-overview) 120 | - [Notifications](https://developer.apple.com/design/human-interface-guidelines/ios/system-capabilities/notifications) 121 | - [What is a Wireframe? A Guide to Wireframing a Website or App](https://www.framer.com/blog/posts/complete-guide-to-wireframing/) 122 | - [What is the cloud? Cloud definition](https://www.cloudflare.com/en-gb/learning/cloud/what-is-the-cloud/) 123 | -------------------------------------------------------------------------------- /subreddit/legal-protections.md: -------------------------------------------------------------------------------- 1 | # Legal Protections for the Distance-Learning Student: As a 'Consumer' of Education, Here Are the Rights and Protections That You Are Entitled To Under Contract 2 | 3 | Hello /r/UniversityOfLondonCS! 4 | 5 | With the start of the next academic cohort approaching, there's been a lot more interest in the University of London's Online Bachelor's in Computer Science. I've been meeting a lot of prospective students in [our Discord Server](https://discord.gg/GhRFG5X), and many people are curious on whether or not this programme will work for them. An online programme like this one is fundamentally different from a traditional on-campus experience, and whether or not it is 'better' or 'worse' depends a lot on the individual student's personal situation and aptitude. 6 | 7 | _Hence, it's perfectly okay if you enroll, and realise later on that this programme or style of learning is not suitable for your particular situation._ 8 | 9 | As a distance-learning student you are entitled to certain rights and legal protections, **including a right to a full refund within 14 days of access to classes**. These rights are outlined in the [Student Terms and Conditions document](https://london.ac.uk/sites/default/files/governance/student-terms-and-conditions.pdf), which is a legally binding contract under UK Law. 10 | 11 | Now, I cannot advise on the actual minutiae of the contract as I am not a lawyer, and _this post is not legal advice_. However, I wrote this guide specifically to highlight these protections, so that any (prospective or current) students are aware of what they are entitled to. I am specifically going to quote verbatim the relevant sections from the Student Terms and Conditions, and link to their respective section and page numbers: 12 | 13 | --- 14 | 15 | ## Refund and Withdrawl 16 | 17 | > **Section 16.1:** As you are entering into this Contract remotely (i.e. there has been no face-to-face contact between us and you at the time you register with us) you may cancel this Contract by the later of 18 | > 19 | > (a) 14 days after the date when you pay your Registration Fee or 20 | > 21 | > (b) 14 days after the date you are first given access to Programme materials on the Virtual Learning Environment ("the Cancellation Period"). 22 | 23 | > **Section 16.3:** If you have made any payment, or any payment has been made on your behalf under this Contract before the Cancellation Date, excluding payment of the Application Fee, then we will provide you with a full refund as soon as reasonably possible but in any event: 24 | > 25 | > (a) within 14 days of the Cancellation Date; or 26 | > 27 | > (b) within 14 days of the University receiving returned physical materials or receiving satisfactory evidence that the materials have been returned, whichever is earlier. 28 | 29 | **Source:** Section 16 (page 12) of the Student Terms and Conditions 30 | https://london.ac.uk/sites/default/files/governance/student-terms-and-conditions.pdf 31 | 32 | ## In Event of Significant Changes in the Programme after Enrolment 33 | 34 | > **Section 8.1.2:** In circumstances where it is necessary to make a material change to your Programme (likely to have a significant impact on your studies as reasonably determined by us), we will consult with you before final decisions are made and consider your concerns. We will assess these against the needs of the wider student body. If you are unhappy with the material change(s) to your Programme, you may cancel the Contract and withdraw from the Programme without incurring any further liability for Programme Fees and we may refund your Programme Fees paid to date. 35 | 36 | **Source:** Section 8.1.2 (page 8) of the Student Terms and Conditions 37 | https://london.ac.uk/sites/default/files/governance/student-terms-and-conditions.pdf 38 | 39 | ## In Event of Programme Cancellation 40 | 41 | > **Section 8.2:** If we discontinue your Programme because of matters beyond our control and we are unable to complete delivery of the Programme, we will inform you as soon as is reasonably possible. In such circumstances we will endeavor to offer the Programme for a period of up to 5 years from such notification or until the last student has completed their studies, if this is sooner. 42 | > 43 | > If, following such notice, we are unable to offer the Programme for a period of up to 5 years or until the last student has completed their studies, if this is sooner, then we will use all reasonable efforts to transfer you to a suitable alternative University programme for which you are qualified. If we are unable to provide a suitable alternative programme, or if you are unhappy with the recommended alternative programme, you may cancel the Contract and withdraw from the Programme without incurring any further liability forProgramme Fees and we may refund Programme Fees paid to date. 44 | 45 | **Source:** Section 8.2 (page 8) of the Student Terms and Conditions 46 | https://london.ac.uk/sites/default/files/governance/student-terms-and-conditions.pdf 47 | 48 | --- 49 | 50 | In practice, the most important right is that of a refund, highlighted in **Section 16**. Committing to an online programme is bound to contain some uncertainties, and as a result students are allowed to withdrawal from the programme with no penalty, within 14 days of having access to classes. 51 | 52 | Remember that you'll have access to at least the first 10 weeks of class materials upon the first day of classes. This way, within the 14-day grace period, you'll have ample time to complete at least 4 or 5 weeks worth of coursework, and get a good impression of how the programme is like. And should it not work out, it is easy to withdrawal with a full refund of your module fees -- and be made whole without penalty. 53 | 54 | While I'm not personally familiar with the withdrawal process, it uses the same inquiry system (a private support email) that other inquiries (such as asking for an extension) requires. Anecdotally, I've seen a couple students request refunds at the start of every new cohort -- and while none have really followed up on the student Slack workspace... the fact that they are gone demonstrates the relative painlessness of the process. 55 | 56 | The latter two protections (involving programme changes and cancellations) seem to be more specific, and as of the time of writing, they haven't been applicable. However, it is reassuring to see that the University of London has a specific procedure in place for sun-setting programmes. 57 | 58 | --- 59 | 60 | ## Sources and Further Reading 61 | 62 | - https://london.ac.uk/sites/default/files/governance/student-terms-and-conditions.pdf 63 | 64 | - https://london.ac.uk/sites/default/files/governance/refund-and-compensation-policy-uolw-2019.pdf 65 | -------------------------------------------------------------------------------- /modules/level-5/cm-2015-programming-with-data/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Programming with Data](#programming-with-data) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Mock exam](#mock-exam) 10 | - [Module overview](#module-overview) 11 | - [Module specification](#module-specification) 12 | - [Past exams](#past-exams) 13 | - [Syllabus](#syllabus) 14 | - [Resources](#resources) 15 | - [Complementary learning](#complementary-learning) 16 | - [Data Science](#data-science) 17 | - [Python](#python) 18 | - [Sentiment analysis](#sentiment-analysis) 19 | - [Libraries](#libraries) 20 | - [Matplotlib](#matplotlib) 21 | - [Numpy](#numpy) 22 | - [Pandas](#pandas) 23 | - [:heart: Notes](#heart-notes) 24 | 25 | --- 26 | 27 | ## Programming with Data 28 | 29 | This module will show you how to work with data: getting data from a 30 | variety of sources, visualising data in compelling, informative ways, 31 | processing data to make it useful and shareable, and reasoning with 32 | data to test hypotheses and make parameterised predictions. The module 33 | will also introduce you to a new language and programming environment 34 | that is well-adapted to languages for these applications. 35 | 36 | ## Professor(s) 37 | 38 | - Dr. Sean McGrath 39 | 40 | ## Topics covered 41 | 42 | - Setting up the programming environment 43 | - Control structures, functions and comprehensions 44 | - Data-driven programming 45 | - Visualising data 46 | - Descriptive statistics 47 | - Getting data 48 | - Processing data: cleaning, normalizing, and scaling 49 | - Classification with K-nearest neighbours 50 | - Bayes' theorem and naïve Bayes classification 51 | - Clustering 52 | 53 | ## Assessment 54 | 55 | One two hour unseen written examination and coursework (Type I) 56 | 57 | ## Mock exam 58 | 59 | [See the `binary-assets` repository](https://github.com/world-class/binary-assets/tree/master/modules/cm2015-pwd). 60 | 61 | ## Module overview 62 | 63 | [See the `binary-assets` repository](https://github.com/world-class/binary-assets/tree/master/modules/cm2015-pwd). 64 | 65 | ## Module specification 66 | 67 | - [Module specification (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM2015_PWD-Module-Spec.pdf) 68 | 69 | ## Past exams 70 | 71 | [See past exams here](https://github.com/world-class/binary-assets/tree/master/modules/cm2015-pwd/past-exams). 72 | 73 | ## Syllabus 74 | 75 | - [Syllabus PDF (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM2015_PWD.pdf) 76 | 77 | ### Primary programming language 78 | 79 | Python 80 | 81 | ## Resources 82 | 83 | ### Complementary learning 84 | 85 | #### Data Science 86 | 87 | - [Applied Data Science with Python Specialization](https://www.coursera.org/specializations/data-science-python) - _"University of Michigan, Coursera."_ 88 | - [CS 88: Computational Structures in Data Science](https://cs88-website.github.io/sp21/) - _"Spring 2021. Instructors: Gerald Friedland, Michael Ball"_ 89 | - [Data 8: The Foundations of Data Science](http://data8.org/) - _"The UC Berkeley Foundations of Data Science course combines three perspectives: inferential thinking, computational thinking, and real-world relevance."_ 90 | - [Data Science playlist](https://www.youtube.com/watch?v=GjKQ6V_ViQE&list=PLFCB5Dp81iNVmuoGIqcT5oF4K-7kTI5vp) - Youtube, by Keith Galli: web scraping, numpy, pandas, plotting, NLP, sklearn. 91 | - [Data Science: University of Cambridge](https://www.cl.cam.ac.uk/teaching/2021/DataSci/materials.html) - _"Department of Computer Science and Technology."_ 92 | - [Foundations of Data Science: K-Means Clustering in Python](https://www.coursera.org/learn/data-science-k-means-clustering-python) - Coursera, by Dr Matthew Yee-King +3 more instructors. 93 | - [Machine Learning & Data Science playlist](https://www.youtube.com/watch?v=sEte4hXEgJ8&list=PLGLfVvz_LVvQy4mkmEvtFwZGg1S38MUmn) - Youtube, by Derek Banas: probability, statistics, numpy, pandas, plotting, time series 94 | - [Statistics with Python Specialization](https://www.coursera.org/specializations/statistics-with-python) - _"University of Michigan, Coursera."_ 95 | - [The Data Science Design Manual](https://data-manual.com/) - _"Steven Skiena - The Data Science Design Manual serves as an introduction to data science, focusing on the skills and principles needed to build systems for collection, analyzing, and interpreting data."_ 96 | 97 | #### Python 98 | 99 | - [Courses (free)](https://github.com/world-class/REPL/tree/master/online-courses/free#python) - REPL 100 | - [Learn Python, Data Viz, Pandas & More on Kaggle](https://www.kaggle.com/learn/overview) - Kaggle 101 | - [Official Python documentation](https://docs.python.org/3/) 102 | - [Python Data Science Handbook](https://github.com/jakevdp/PythonDataScienceHandbook) 103 | - [Python Design Patterns](https://python-patterns.guide/) - _"[...] evolving guide to design patterns in the Python programming language."_. 104 | - [Videos](https://github.com/world-class/REPL/tree/master/youtube#python) - REPL/YouTube 105 | - Websites: [references](https://github.com/world-class/REPL/tree/master/websites#python-1) - [working with data](https://github.com/world-class/REPL/tree/master/websites#working-with-data-pandas-numpy-matplotlib-ipython-scikit-learn) - REPL 106 | 107 | ##### Sentiment analysis 108 | 109 | - [Example using NLTK for preprocessing text](https://colab.research.google.com/github/gal-a/blog/blob/master/docs/notebooks/nlp/nltk_preprocess.ipynb) 110 | - [Sentiment Analysis with NLTK](https://www.kaggle.com/kakiac/sentiment-analysis-with-nltk) 111 | 112 | ##### Libraries 113 | 114 | ###### Matplotlib 115 | 116 | - [Matplotlib](https://matplotlib.org/) - _"Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python."_ 117 | 118 | ###### Numpy 119 | 120 | - [NumPy](https://numpy.org/) - _"The fundamental package for scientific computing with Python."_ 121 | 122 | ###### Pandas 123 | 124 | - :3rd_place_medal: [Pandas Tutorial Playlist - Corey Schafer](https://www.youtube.com/playlist?list=PL-osiE80TeTsWmV9i9c58mdDCSskIFdDS) - YouTube 125 | - [10 minutes to pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) - pydata.org 126 | - [Brandon Rhodes - Pandas From The Ground Up - PyCon 2015](https://www.youtube.com/watch?v=5JnMutdy6Fw) 127 | - [Learn Pandas](https://www.kaggle.com/learn/pandas) - Kaggle 128 | - [Vincent D. Warmerdam - PyData Eindhoven 2019](https://www.youtube.com/watch?v=yXGCKqo5cEY) - YouTube 129 | 130 | ### :heart: Notes 131 | 132 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-5/programming-with-data/). 133 | -------------------------------------------------------------------------------- /modules/level-5/cm-2010-software-design-and-development/reading_list.md: -------------------------------------------------------------------------------- 1 | # Reading list for Software Design and Development 2 | 3 | - 'ISO/IEC/IEEE International standard – Systems and software engineering – Vocabulary', ISO/IEC/IEEE 24765:2010(E) Dec 2010, pp.1–418. https://ieeexplore.ieee.org/document/5733835 4 | - R.E.D. Fairley, P. Bourque and J. Keppler 'The impact of SWEBOK Version 3 on software engineering education and training' in 2014 IEEE 27th Conference on Software Engineering Education and Training (CSEE&T). (Klagenfurt, Austria: IEEE, 2014). https://ieeexplore.ieee.org/document/6816804 5 | - R.S. Sangwan, P. Vercellone-Smith and P.A. Laplante 'Structural epochs in the complexity of software over time', IEEE Software 25(4) Jul-Aug 2008, pp.66–73. https://ieeexplore.ieee.org/document/4548410 6 | - T.J. McCabe 'A complexity measure', IEEE Transactions on Software Engineering SE-2(4) Dec 1976, pp.308–320. https://ieeexplore.ieee.org/document/1702388 7 | - Bouwers, Eric, Joost Visser, and Arie Van Deursen. "Criteria for the evaluation of implemented architectures." 2009 IEEE International Conference on Software Maintenance. IEEE, 2009. https://ieeexplore.ieee.org/document/5306330 8 | - Koziolek, Heiko. "Sustainability evaluation of software architectures: a systematic review." Proceedings of the joint ACM SIGSOFT conference--QoSA and ACM SIGSOFT symposium--ISARCS on Quality of software architectures--QoSA and architecting critical systems--ISARCS. 2011. https://dl.acm.org/doi/abs/10.1145/2000259.2000263 9 | - Martin, R.C. 'Professionalism and test-driven development', IEEE Software 24(3) 2007, pp.32–36. https://ieeexplore.ieee.org/document/4163026 10 | - https://ieeexplore.ieee.org/xpl/tocresult.jsp?isnumber=4163008 11 | - Segura, S. and Z.Q. Zhou 'Metamorphic testing 20 years later: a hands-on introduction', 2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion) 2018, pp.538–539. https://ieeexplore.ieee.org/document/8449651 12 | - Borle, N., M. Feghhi, E. Stroulia, R. Grenier and A. Hindle 'Journal First Analyzing the effects of test driven development in GitHub', 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE) 2018, pp.1062–1062. https://ieeexplore.ieee.org/document/8453184 13 | - Holzmann, G.J. 'Assertive testing [reliable code]', IEEE Software 32(3) 2015, pp.12–15. https://ieeexplore.ieee.org/document/7093042 14 | - Clarke, L.A. and D.S. Rosenblum 'A historical perspective on runtime assertion checking in software development', SIGSOFT Software Engineering Notes 31(3) 2006, pp.25–37. https://discovery.ucl.ac.uk/id/eprint/4991/ 15 | - What are assertions? http://wiki.c2.com/?WhatAreAssertions 16 | - Classic paper: Hoare, C.A.R 'Assertions: a personal perspective', IEEE Annals of the History of Computing 25(2) 2003, pp.14–25. https://ieeexplore.ieee.org/document/1203056 17 | - Ariane Rocket explosion: Jazequel, J.-M. and B. Meyer, 'Design by contract: the lessons of Ariane', Computer 30(1) 1997, pp.129–30. https://ieeexplore.ieee.org/document/562936 18 | - Classic paper from 1975: Saltzer, J.H. and M. D. Schroeder 'The protection of information in computer systems', Proceedings of the IEEE 63(9) 1975, pp.1278–308. https://ieeexplore.ieee.org/document/1451869 19 | - David Wheeler's book is a great resource. It is Unix focused but applicable to all platforms: Wheeler, D.A. Secure programming for Linux and Unix HOWTO (1999). https://dwheeler.com/secure-programs/ 20 | - For an analysis of software companies' approach to secure software, read Geer, D. 'Are companies actually using secure development life cycles?', Computer 43(6) 2010, pp.12–16. https://ieeexplore.ieee.org/document/5481927 21 | - Microsoft SDL practices https://www.microsoft.com/en-us/securityengineering/sdl/practices 22 | - Building Security in Maturity Model https://web.archive.org/web/20200831112350/https://www.bsimm.com/ 23 | - Comprehensive, Lightweight Application Security Process (CLASP)/Open Source Foundation for Application Security (OWASP): Introduction to the CLASP process https://us-cert.cisa.gov/bsi/articles/best-practices/requirements-engineering/introduction-to-the-clasp-process 24 | - OWASP: Top 10 issues for web application security https://github.com/OWASP/www-project-top-ten/blob/master/index.md 25 | - Wong, W.E., R. Gao, Y. Li, R. Abreu and F. Wotawa 'A survey on software fault localization', IEEE Transactions on Software Engineering 42(8) 2016, pp. 707-740. https://ieeexplore.ieee.org/document/7390282 26 | - Gregory, S. 'The unplanned journey of a requirements engineer in industry: an introduction', IEEE Software 34(5) 2017, pp.16-19. https://ieeexplore.ieee.org/document/8048630 27 | - Mavin, A., P. Wilkinson, A. Harwood and M. Novak 'Easy Approach to Requirements Syntax (EARS)', 2009 17th IEEE International Requirements Engineering Conference (Atlanta, GA: IEEE, 2009), pp.317-322. https://ieeexplore.ieee.org/document/5328509 28 | - R. L. Glass 'An ancient (but still valid?) look at the classification of testing', IEEE Software 2(6) Nov-Dec 2008, pp.112-112. https://ieeexplore.ieee.org/document/4670725 29 | - R. L. Glass 'A classification system for testing, part 2', IEEE Software 26(1) Jan-Feb 2009, pp.104-104. https://ieeexplore.ieee.org/document/4721193 30 | - Chernak, Y. 'Validating and improving test-case effectiveness', IEEE Software 18(1) Jan-Feb 2001, pp.81-86. https://ieeexplore.ieee.org/document/903172 31 | - Zhao, Y., I. Borovikov, A. Beirami, J. Harder, J. Kolen, J. Pestrak, J. Pinto, R. Pourabolghasem, H. Chaput, M. Sardari et al. 'Winning isn’t everything: Training agents to playtest modern games', AAAI Workshop on Reinforcement Learning in Games 2019. https://web.archive.org/web/20201130170550/https://arxiv.org/pdf/1903.10545.pdf 32 | - Albaghajati, A.M. and M.A.K. Ahmed 'Video game automated testing approaches: an assessment framework', IEEE Transactions on Games. https://ieeexplore.ieee.org/abstract/document/9234724 33 | - Ferre, X., N. Juristo, H. Windl and L. Constantine 'Usability basics for software developers', IEEE Software 18(1) 2001, pp.22-29. https://ieeexplore.ieee.org/document/903160 34 | - Brooke, J. 'SUS: a retrospective', Journal of Usability Studies, 8(2) 2013. https://dl.acm.org/doi/10.5555/2817912.2817913 35 | - Lewis, J.R., B.S. Utesh, D.E. Maher 'UMUX-LITE: when there's no time for the SUS', Proceedings of the SIGCHI Conference on Human Factors in Computing Systems 2013, pp.2099-2102. https://dl.acm.org/doi/10.1145/2470654.2481287 36 | - Cherry, E. and C. Latulipe 'Quantifying the creativity support of digital tools through the creativity support index', ACM Transactions on Computer-Human Interaction 21 2014. https://dl.acm.org/doi/10.1145/2617588 37 | - Molich, R. and J. Nielsen 'Improving a human-computer dialogue', Communications of the ACM 33(3) March 1990, pp.338–348. https://dl.acm.org/doi/10.1145/77481.77486 38 | - The Public Sector Bodies (Websites and Mobile Applications) (No. 2) Accessibility Regulations 2018 https://www.legislation.gov.uk/uksi/2018/952/contents/made 39 | - Rochkind, M.J. 'The source code control system', IEEE Transactions on Software Engineering SE-1(4) Dec. 1975, pp.364-370. https://ieeexplore.ieee.org/document/6312866 40 | -------------------------------------------------------------------------------- /modules/level-4/cm-1040-web-development/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Web Development](#web-development) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Module specification](#module-specification) 10 | - [Past exams](#past-exams) 11 | - [Syllabus](#syllabus) 12 | - [Resources](#resources) 13 | - [Awesome learning resources](#awesome-learning-resources) 14 | - [Essential reading](#essential-reading) 15 | - [Games](#games) 16 | - [Kinks to be aware of](#kinks-to-be-aware-of) 17 | - [:heart: Notes](#heart-notes) 18 | - [On REPL (See sections on Web development)](#on-repl-see-sections-on-web-development) 19 | - [Programming](#programming) 20 | - [JavaScript](#javascript) 21 | - [Text editor](#text-editor) 22 | 23 | --- 24 | 25 | ## Web Development 26 | 27 | This module equips you with the skills to design and implement dynamic web applications using foundational web programming concepts and frameworks. The course considers practical skills such as responsive design with CSS as well as the abstract underpinnings of markup languages. The course extends beyond general web programming and into areas of professional practice. These include accessibility standards and ethical, security, and sustainability aspects of web development. The course also considers team working scenarios; you will learn about how teams carry out the full process of developing a web site from assigning roles, through requirements gathering, onto testing and then deployment. The course culminates with an exploration of the exciting intersection of Generative AI and web development, preparing you for the future of the industry. 28 | 29 | Enrolled students only: [Course syllabus available on Coursera](https://www.coursera.org/learn/london-cs-orientation/supplement/p88ho/syllabus-web-development-cm1040). 30 | 31 | ### Professor(s) 32 | 33 | - Dr. Matthew Yee-King 34 | 35 | ### Topics covered 36 | 37 | - HTTP and HTML 38 | - Parsing markup languages 39 | - Layout for different devices 40 | - Accessibility and usability standards 41 | - Data sources and data security 42 | - Template engines and other presentation techniques 43 | - Website lifecycle 44 | - Methods for team collaboration and project management 45 | - Ethical, legal and sustainability issues for web development 46 | - Generative AI and web development 47 | 48 | ### Assessment 49 | 50 | Coursework only (Type III) 51 | 52 | ### Module specification 53 | 54 | - [Module specification (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM1040_WD-Module-Spec.pdf) 55 | 56 | ### Past exams 57 | 58 | [See past exams here](https://github.com/world-class/binary-assets/tree/master/modules/cm1040-wd/past-exams). 59 | 60 | ### Syllabus 61 | 62 | - [Syllabus PDF (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM1040_WD.pdf) 63 | 64 | ### Primary programming language 65 | 66 | JavaScript 67 | 68 | ### Resources 69 | 70 | #### Awesome learning resources 71 | 72 | - [awesome-learning-resources](https://github.com/lauragift21/awesome-learning-resources) - GitHub awesome list. [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) 73 | 74 | #### Essential reading 75 | 76 | _"There is no required textbook for this module. The module will draw on a number of different, largely web-based, public resources as well as the resources produced as bespoke material for this module. Some key online references are:_ 77 | 78 | - W3 Schools Online Web Tutorials, http://www.w3schools.com 79 | - Mozilla Developer Network Tutorials, https://developer.mozilla.org/ 80 | - Marijn Haverbeke, 2012 "Eloquent JavaScript: A Modern Introduction to Programming" - free online text http://eloquentjavascript.net 81 | 82 | _Specific readings for each topic are listed with direct links to free online resources that provide additional material on the topics of this course."_ 83 | 84 | #### Games 85 | 86 | - [CSS Diner](https://flukeout.github.io/) - _"A fun game to help you learn and practice CSS selectors."_ 87 | - [Flexbox Froggy](http://flexboxfroggy.com/) - _"A game for learning CSS flexbox."_ 88 | - [Flexbox Zombies](https://flexboxzombies.com/p/flexbox-zombies) - _"Master Flexbox layout: a game by geddski."_ 89 | - [Grid Critters](https://gridcritters.com/) - _"Completely learn CSS Grid once and for all."_ 90 | - [Grid Garden](https://codepip.com/games/grid-garden/) - _"How well can you tend to your carrot garden using CSS grid? In this game, you must water your carrot crops and poison the weeds by mastering CSS grid, a powerful new module that makes 2-dimensional grid layouts a piece of cake. With it you can define columns, rows, and grid template areas."_ 91 | - [Service Workies](https://serviceworkies.com/) - _"Learn Service Workers inside and out with the new game of Service Worker mastery."_ 92 | 93 | #### Kinks to be aware of 94 | 95 | - [List of reported errors and bugs with the module](../../../kinks/level-4/cm-1040-web-development/). 96 | 97 | #### :heart: Notes 98 | 99 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-4/web-development/). 100 | 101 | #### On REPL (See sections on Web development) 102 | 103 | - [Podcasts](../../../podcasts/) 104 | - [YouTube](../../../youtube/) 105 | - [Websites](../../../websites/) 106 | 107 | #### Programming 108 | 109 | - [Mozilla Developer Network Tutorials](https://developer.mozilla.org/) 110 | - [W3 Schools Online Web Tutorials](http://www.w3schools.com/) 111 | 112 | ##### JavaScript 113 | 114 | - [Eloquent JavaScript](http://eloquentjavascript.net/), by Marijn Haverbeke. The book can be downloaded: 115 | - [As PDF](http://eloquentjavascript.net/Eloquent_JavaScript.pdf); 116 | - [As EPUB](https://eloquentjavascript.net/Eloquent_JavaScript.epub); 117 | - [As MOBI](https://eloquentjavascript.net/Eloquent_JavaScript.mobi) (for Kindle). 118 | - [Handlebars Training](https://www.youtube.com/playlist?list=PLtV5RF44Yj8S4RcpQehL-2XMuVsJXwNvK), by Rich Finelli (YouTube playlist) 119 | 120 | #### Text editor 121 | 122 | If you followed our guide at the [ITP1 resource page](../cm-1005-introduction-to-programming-i/README.md#text-editor), then you already have Visual Studio Code set up. For this course, you may want to install the following extensions in addition to those recommended earlier: 123 | 124 | - [IntelliSense for CSS class names in HTML](https://marketplace.visualstudio.com/items?itemName=Zignd.html-css-class-completion). 125 | - [stylelint](https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint) - checks for "code lint" in CSS. Requires [stylelint](https://stylelint.io/) to be installed, as well as a configuration of your choosing (for more information on installing and configuring stylelint, see the [stylelint Docs](https://stylelint.io/user-guide/get-started)). 126 | - [Web Accessibility](https://marketplace.visualstudio.com/items?itemName=MaxvanderSchee.web-accessibility) - recommends ways for improving the accessibility of web pages. This isn't an "accessibility silver bullet", but it's a start. 127 | -------------------------------------------------------------------------------- /modules/level-5/cm-2020-agile-software-projects/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Agile Software Projects](#agile-software-projects) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Final deliverables instructions (coursework 2)](#final-deliverables-instructions-coursework-2) 10 | - [Module specification](#module-specification) 11 | - [Past exams](#past-exams) 12 | - [Syllabus](#syllabus) 13 | - [Resources](#resources) 14 | - [Complementary learning](#complementary-learning) 15 | - [:heart: Notes](#heart-notes) 16 | - [Textbooks listed for this module](#textbooks-listed-for-this-module) 17 | - [Further reading recommended in Interaction Design: Beyond Human-Computer Interaction, John Wiley \& Sons](#further-reading-recommended-in-interaction-design-beyond-human-computer-interaction-john-wiley--sons) 18 | 19 | --- 20 | 21 |
22 | 23 | > Note: **Agile Software Projects CM2020, will be withdrawn in October 2026.** If you wish to study Agile Software Projects and have not yet registered on this module, your last opportunity to study this module will be in the **October 2024** session. The final assessment retake opportunity for this module will be October 2026. 24 | > 25 | > The **Professional Practice for Computer Scientists** module will be introduced in place of **Agile Software Projects CM2020** and will run for the first time in April 2025. 26 | 27 | ## Agile Software Projects 28 | 29 | This module aims to provide insights and practice in software 30 | development using contemporary methods to produce software that meets 31 | the needs of users and supports an organisation’s business function. 32 | The module will enable you to gain competence in the conceptualisation 33 | of a technology-based solution to a real-world problem, fulfilling 34 | the requirements of users and taking constraints imposed by the 35 | prevailing and foreseen market conditions and lessons learned from 36 | prototypes into account. You will then be given the opportunity to 37 | present a proposal for a technical project including a structured plan 38 | for implementing the solution using the agile development methodology 39 | and test driven development practices. During the whole process from 40 | concept to solution presentation, you will be required to work in a 41 | distributed team using online collaboration, project tracking and 42 | version control tools. 43 | 44 | ## Professor(s) 45 | 46 | - Dr. Sean McGrath 47 | 48 | ## Topics covered 49 | 50 | - Project management & team working 51 | - Requirements gathering & specification 52 | - Market & solutions research 53 | - User centred design & prototyping 54 | - Project proposal 55 | - Agile software development methodologies 56 | - Test driven software development 57 | - Software validation & user testing 58 | - Professional practices 59 | - Software documentation 60 | 61 | ## Assessment 62 | 63 | Coursework only (Type III) 64 | 65 | ## Final deliverables instructions (coursework 2) 66 | 67 | - [Final deliverables instructions](https://github.com/world-class/binary-assets/tree/master/modules/cm2020-asp/past-exams/finals) 68 | 69 | ## Module specification 70 | 71 | - [Module specification (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM2020_ASP-Module-Spec.pdf) 72 | 73 | ## Past exams 74 | 75 | [See past exams here](https://github.com/world-class/binary-assets/tree/master/modules/cm2020-asp/past-exams). 76 | 77 | ## Syllabus 78 | 79 | - [Syllabus PDF (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM2020_ASP.pdf) 80 | 81 | ## Resources 82 | 83 | ### Complementary learning 84 | 85 | - [Dark Patterns](https://darkpatterns.org/) - _"Dark Patterns are tricks used in websites and apps that make you do things that you didn't mean to, like buying or signing up for something."_ 86 | - [Manifesto for Agile Software Development](https://agilemanifesto.org/) 87 | 88 | ### :heart: Notes 89 | 90 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-5/agile-software-projects). 91 | 92 | ### Textbooks listed for this module 93 | 94 | - J. Preece, Y. Rogers and H. Sharp (2011), Interaction Design: Beyond Human-Computer Interaction, John Wiley & Sons 95 | - [Website companion to the textbook](http://www.id-book.com/) 96 | - D. Norman, 2013, The Design of Everyday Things, MIT Press 97 | - Rob Cole and Edward Scotcher. Brilliant Agile Project Management. Pearson 2016 98 | 99 | #### Further reading recommended in Interaction Design: Beyond Human-Computer Interaction, John Wiley & Sons 100 | 101 | - COOPER, A., REIMANN, R., CRONIN, D. AND NOESSEL, C. (2014) **About Face: The Essentials of Interaction Design (4th ed.). John Wiley & Sons Inc**. _"This fourth edition of About Face provides an updated overview of what is involved in interaction design, and it is written in a personable style that appeals to practitioners and students alike."_ 102 | - GARRETT, J. J. (2010) **The Elements of User Experience: User-Centered Design for the Web and Beyond (2nd ed.). New Riders Press**. _"This is the second edition of the popular coffee- table introductory book to interaction design. It focuses on how to ask the right questions when designing for a user experience. It emphasizes the importance of understanding how products work on the outside, that is, when a person comes into contact with those products and tries to work with them. It also considers a business perspective."_ 103 | - LIDWELL, W., HOLDEN, K. AND BUTLER, J. (2010) **Revised and Updated: 125 Ways to Enhance Usability, Influence Perception, Increase Appeal, Make Better Design Decisions and Teach Through Design. Rockport Publishers, Inc**. _"This book presents classic design principles such as consistency, accessibility, and visibility in addition to some lesser-known ones, such as constancy, chunking, and symmetry. They are alphabetically ordered (for easy reference) with a diversity of examples to illustrate how they work and can be used."_ 104 | - NORMAN, D.A. (2013) **The Design of Everyday Things: Revised and Expanded Edition. MIT Press**. _"This book was first published in 1988 and became an international best seller, introducing the world of technology to the importance of design and psychology. It covers the design of everyday things, such as refrigerators and thermostats, providing much food for thought in relation to how to design interfaces. This latest edition is comprehensively revised showing how principles from psychology apply to a diversity of old and new technologies. The book is highly accessible with many illustrative examples."_ 105 | - SAFFER, D. (2014) **Microinteractions: Designing with Details. O’Reilly**. _"This highly accessible book provides many examples of the small things in interaction design that make a big difference between a pleasant experience and a nightmare one. Dan Saffer describes how to design them to be efficient, understandable, and enjoyable user actions. He goes into detail about their structure and the different kinds, including many examples with lots of illustrations. The book is a joy to dip into and enables you to understand right away why and how it is important to get the micro-interactions right."_ 106 | -------------------------------------------------------------------------------- /subreddit/fees-guide.md: -------------------------------------------------------------------------------- 1 | # How Much Does this Degree Cost? A FAQ and Guide to the Tuition of the University of London's BSc in Computer Science, with Example Calculations! 2 | 3 | **Updated on 2021-01-14** 4 | 5 | Hello /r/UniversityOfLondon! 6 | 7 | Lately I've been fielding questions about the programme tuition, both here on the subreddit and at our unofficial Discord server ([invitation-link here!](https://discord.gg/GhRFG5X)). Hence I decided to write up a quick guide and FAQ, in hopes of answering questions for prospective students and applicants. 8 | 9 | ## Where do I find official documents from the University, detailing fees & tuition? 10 | 11 | You may find the 2021 Fee Schedule for the University of London's BSc in Computer Science in the following link (PDF) below: 12 | 13 | * https://london.ac.uk/sites/default/files/schedules/computer-science-feeschedule-2020-2021.pdf 14 | 15 | You may also find the general University of London webpage for course fees at the following link. This may be useful, especially if the 2021 Fee Schedule is out of date: 16 | 17 | * https://london.ac.uk/applications/costs-your-course/course-fees 18 | 19 | ## How do I pay for this degree? 20 | 21 | Fees (i.e. tuition) for the University of London's BSc of Computer Science is assessed on a per-module basis. Specifically, you pay for each module that you intend to take in your upcoming term (i.e. semester) during your module registration. You'll only be able to access your module content, upon successful completion of payment. 22 | 23 | Essentially, this means that you pay for the cost of your degree on a per-term (i.e. per semester) basis. A full time student that takes 4 modules per term will pay the cost of 4x module fees before the start of each term. This means you'll be making two payments in an academic year, as there are 2 terms in a year. 24 | 25 | ## What is the module fee? How much does each module cost? 26 | 27 | The module fee is different depending on which country you are from. There are Band A countries, and Band B countries, and the United Kingdom. The module fees are the cheapest for Band A countries, slightly cheaper for the United Kingdom, and full-price for Band B countries. For a full-list of Band A and Band B countries, see the following link (PDF): 28 | 29 | * https://london.ac.uk/sites/default/files/leaflets/country-bands.pdf 30 | 31 | As of 2021-01-14, the module fees are: 32 | 33 | **Band A Countries:** 34 | 35 | * £420.00 GBP for modules 36 | * £840.00 GBP for the Final Project 37 | * £210.00 GBP for module continuation (if you fail a module and have to retake it) 38 | 39 | **Band B Countries:** 40 | 41 | * £630.00 GBP for modules 42 | * £1260.00 GBP for the Final Project 43 | * £210.00 GBP for module continuation (if you fail a module and have to retake it) 44 | 45 | **United Kingdom:** 46 | 47 | * £600.00 GBP for modules 48 | * £1200.00 GBP for the Final Project 49 | * £210.00 GBP for module continuation (if you fail a module and have to retake it) 50 | 51 | **Note: please refer to the official University of London fee schedule, for official information.** Fees may be increased on an annual basis in order to adjust for inflation, and my numbers may be out of date: 52 | 53 | * https://london.ac.uk/sites/default/files/schedules/computer-science-feeschedule-2020-2021.pdf 54 | 55 | ## Are there any additional costs, apart from module fees? 56 | 57 | Yes. The biggest additional cost are exam-centre fees. Final end-of-term exams for modules must be taken at a physical exam centre, where you will be charged a fee for proctoring. Exam centres are independent organisations (generally local universities, community colleges, or highschools) that administer exams as a service. Note that not all modules have end-of-term exams. For those that do not have end-of-term exams, you will not have to visit an exam centre, and you won't pay an exam-centre fee. 58 | 59 | Unfortunately, exam-centre fees vary significantly, since they are set by the exam-centre. For my local exam centre in the United States, I was charged a very nominal fee of $25.00 USD per exam-hour, with an additional $20.00 USD shipping charge to ship the test results back to London. Exam centres can be cheaper or significantly more expensive, depending on where you live in the world. Hence, it is suggested that you contact your local exam centre, and find out their fees in advance. 60 | 61 | For a list of all exam centres, see the following University webpage: 62 | 63 | * https://my.london.ac.uk/assessment-centres 64 | 65 | ## Do I have to purchase any textbooks or materials? 66 | 67 | No. All study materials are provided to you, in electronic (PDF) form. Students are given required readings either in the form of PDFs (generally for shorter documents or excerpts), or they are directed to visit [the University of London's Online Library](https://onlinelibrary.london.ac.uk/). The Online Library provides required textbooks and study material in the form of E-Books. 68 | 69 | All of the textbooks used in the programme are relatively well known and 'common' textbooks used by many Computer Science departments across the Anglosphere, hence many students are able to check-out copies from their local libraries or community colleges without issue. Likewise, some students choose to purchase their own textbooks, which can generally be found at reasonable prices on eBay. 70 | 71 | Basically, you don't need to purchase any textbooks as the University provides free electronic copies. 72 | 73 | ## How much does this degree really cost? Can you provide an estimate? 74 | 75 | Here is the full cost breakdown of the total programme for [Band B countries](https://london.ac.uk/sites/default/files/leaflets/country-bands.pdf), which include the United States (make sure to double check to see if you are in a Band A or Band B country. It is *much* cheaper if you are in Band A): 76 | 77 | First, recall that the complete University of London BSc of Computer Science is composed of [*22 modules and a Final Project*](grades-guide.md). Hence: 78 | 79 | **Cost Breakdown for Band B Countries:** 80 | 81 | * Cost of application fee: £101 GBP 82 | * Cost of individual module for Band B country: £630 GBP 83 | * Cost of final project for Band B country: £1260 GBP 84 | * Cost of exam centre fee: £x GBP Variable, depends on the exam centre 85 | 86 | **Total Cost for Band B Countries:** 87 | 88 | * 101 + (22 x 630) + 1260 + x 89 | * 15,221 + x 90 | 91 | **Average per term cost for Band B (4 modules per term, graduation in 3 years):** 92 | 93 | This average includes the application fee and the Final Project, which are amortised over the span of the whole degree (3 years). 94 | 95 | * (15,221 + x) / 4 96 | * £2757 + x 97 | 98 | **Average per term cost for Band B (3 modules per term, graduation in 4 years):** 99 | 100 | This average includes the application fee and the cost of the Final Project, which are amortised over the span of the whole degree (4 years). 101 | 102 | * (15,221 + x) / 3 103 | * £2076 + x 104 | 105 | Please note that the above estimate is only applicable to students from Band B countries (which includes the United States). Prices for Band A countries are significantly lower. 106 | 107 | ## Conclusion and Further References 108 | 109 | I hope this guide has been helpful to all prospective students and applicants who are considering the University of London's BSc in Computer Science! One of the best parts about this degree programme, is it's flexible nature and reasonable cost. By writing this, I hope the overall costs of the degree are clearer. Thank you for reading my post! 110 | 111 | * https://london.ac.uk/sites/default/files/schedules/computer-science-feeschedule-2020-2021.pdf 112 | * https://london.ac.uk/applications/costs-your-course/course-fees 113 | * https://london.ac.uk/sites/default/files/leaflets/country-bands.pdf 114 | -------------------------------------------------------------------------------- /modules/level-4/cm-1035-algorithms-and-data-structures-i/README.md: -------------------------------------------------------------------------------- 1 | [Go back to the main page](../../../README.md) 2 | 3 | ### Table of contents 4 | 5 | - [Algorithms and Data Structures I](#algorithms-and-data-structures-i) 6 | - [Professor(s)](#professors) 7 | - [Topics covered](#topics-covered) 8 | - [Assessment](#assessment) 9 | - [Module specification](#module-specification) 10 | - [Past exams](#past-exams) 11 | - [Syllabus](#syllabus) 12 | - [Resources](#resources) 13 | - [Complementary learning](#complementary-learning) 14 | - [Visualizations](#visualizations) 15 | - [Algorithms](#algorithms) 16 | - [`mergeSort` algorithm](#mergesort-algorithm) 17 | - [`quickSort` algorithm](#quicksort-algorithm) 18 | - [`quickSort` & `mergeSort` algorithms MIT](#quicksort--mergesort-algorithms-mit) 19 | - [Computational complexity & P vs NP](#computational-complexity--p-vs-np) 20 | - [Essential reading](#essential-reading) 21 | - [Examples of past and current written exams](#examples-of-past-and-current-written-exams) 22 | - [Kinks to be aware of](#kinks-to-be-aware-of) 23 | - [:heart: Notes](#heart-notes) 24 | - [On REPL](#on-repl) 25 | - [Solutions to the textbook Introduction to Algorithms](#solutions-to-the-textbook-introduction-to-algorithms) 26 | 27 | --- 28 | 29 | ## Algorithms and Data Structures I 30 | 31 | This module will help you to develop your analytical and 32 | problem-solving skills. It will encourage you to think about how to 33 | use computers to solve problems. You'll develop skills in thinking 34 | algorithmically and learn the central concepts of algorithms and data 35 | structures. You will learn about linear data structures such as 36 | arrays, vectors and lists and a unifying framework for considering 37 | such data structures as collections. You'll study how algorithms can 38 | be expressed as flowcharts and pseudocode and how to convert these 39 | into programs. You'll learn specific algorithms used for sorting and 40 | searching, and how to express repetition as iteration and 41 | recursion. You will learn a simple model for execution of computation, 42 | and how to describe computational problems and their solutions. The 43 | model will allow you to compare algorithms regarding their correctness 44 | and regarding their efficiency. 45 | 46 | ### Professor(s) 47 | 48 | - Dr. Matty Hoban 49 | 50 | ### Topics covered 51 | 52 | - Introduction to algorithms, flowcharts and pseudocode 53 | - Computations using flowcharts and pseudocode 54 | - Pairs, vectors and dynamic arrays 55 | - Basic searching 56 | - Linked lists 57 | - Basic sorting 58 | - Advanced searching and introduction to complexity 59 | - Recursive algorithms 60 | - Advanced sorting 61 | - Linear collections 62 | 63 | ### Assessment 64 | 65 | One two hour unseen written examination and coursework (Type I) 66 | 67 | ### Module specification 68 | 69 | - [Module specification (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/module-specification/CM1035_ADS1-Module-Spec.pdf) 70 | 71 | ### Past exams 72 | 73 | [See past exams here](https://github.com/world-class/binary-assets/tree/master/modules/cm1035-ads1/past-exams). 74 | 75 | ### Syllabus 76 | 77 | - [Syllabus PDF (September 2020)](https://github.com/world-class/binary-assets/blob/master/modules/syllabi/Syllabus_CM1035_ADS1.pdf) 78 | 79 | ### Primary programming language 80 | 81 | JavaScript 82 | 83 | ### Resources 84 | 85 | #### Complementary learning 86 | 87 | - [Algorithmic Design and Techniques](https://courses.edx.org/courses/course-v1:UCSanDiegoX+ALGS200x+2T2017/course) - _edX platform, by UC San Diego_ 88 | - [Data Structures Fundamentals](https://courses.edx.org/courses/course-v1:UCSanDiegoX+ALGS201x+1T2019/course) - _edX platform, by UC San Diego_ 89 | - [Easy Theory](https://www.youtube.com/c/EasyTheory/playlists) - _"This is a channel about making Computer Science theory as easy as possible."_ Relevant for this course as well as [Fundamentals of Computer Science](../cm-1025-fundamentals-of-computer-science/README.md). 90 | 91 | ##### Visualizations 92 | 93 | - [Data Structures Visualization](https://www.cs.usfca.edu/~galles/visualization/Algorithms.html) - Visualizations of a lot of data structures and related algorithms. 94 | 95 | - [Animated DSA Visualization](https://visualgo.net/en) - Sorting algorithms, searching algorithms and many data structures beautifully visualized. 96 | 97 | ##### Algorithms 98 | 99 | - [Comparison of Algorithms](https://en.wikipedia.org/wiki/Sorting_algorithm#Comparison_of_algorithms) - See time complexity at a glance for various popular algorithms. 100 | - [Data Structure & Algorithms Introduction](https://www.programiz.com/dsa/algorithm) - Sorting algorithms, data structures, tree data structure and more. 101 | - [Data Structures and Algorithms Tutorial](https://www.scaler.com/topics/data-structures/) - Step by Step Tutorial on DSA for beginners. 102 | 103 | ###### `mergeSort` algorithm 104 | 105 | - [2.7.2. Merge Sort Algorithm](https://www.youtube.com/watch?v=mB5HXBb_HY8) - Abdul Bari 106 | - [Algorithm lecture 8 -- Merge sort algorithm, analysis and problems](https://www.youtube.com/watch?v=sfmaf4QpVTw) - Gate Lectures by Ravindrababu Ravula 107 | 108 | ###### `quickSort` algorithm 109 | 110 | - [Algorithms lecture 9 -- Quick sort algorithm](https://www.youtube.com/watch?v=3DV8GO9g7B4) - Gate Lectures by Ravindrababu Ravula 111 | - [2.8.1 QuickSort Algorithm](https://www.youtube.com/watch?v=7h1s2SojIRw) - Abdul Bari 112 | 113 | ###### `quickSort` & `mergeSort` algorithms MIT 114 | 115 | - [3. Insertion Sort, Merge Sort](https://youtu.be/Kg4bqzAqRBM) - MIT 6.006 Introduction to Algorithms, Fall 2011 116 | 117 | ##### Computational complexity & P vs NP 118 | 119 | - [Big-O Cheat Sheet](https://www.bigocheatsheet.com/) - bigocheatsheet.com 120 | - [Computational Complexity](https://www.youtube.com/watch?v=moPtwq_cVH8) - MIT OpenCourseWare 121 | - [P vs. NP and the Computational Complexity Zoo](https://www.youtube.com/watch?v=YX40hbAHx3s) - hackerdashery 122 | 123 | #### Essential reading 124 | 125 | _"Specific essential readings for this course will be taken from the following text book:_ 126 | 127 | - **Cormen, T.H., C.E. Leierson, R.L. Rivest and C. Stein Introduction to Algorithms. (Cambridge, MA: MIT Press, 2009) 3rd edition.** 128 | 129 | _The specific pages for the reading activities will be given in the platform, and there is no need to read beyond to recommended pages._ 130 | 131 | _In addition to the text book, there are additional reading activities written by the course author, some of which involve coding exercises._ 132 | 133 | _There will also be discussion prompts asking you to do some independent research using online sources."_ 134 | 135 | #### Examples of past and current written exams 136 | 137 | - 2014, 2015, 2016, 2018, 2020: [Visit this page](https://github.com/world-class/binary-assets/tree/master/modules/cm1035-ads1/past-exams). 138 | - [ADS1 September 2020 online exam](https://github.com/world-class/binary-assets/blob/master/modules/cm1035-ads1/past-exams/ADS2020-09-21.pdf) 139 | - [Solutions](https://github.com/world-class/binary-assets/blob/master/modules/cm1035-ads1/past-exams/ADS2020-09-21_answers.pdf) 140 | 141 | #### Kinks to be aware of 142 | 143 | - [List of reported errors and bugs with the module](../../../kinks/level-4/cm-1035-algorithms-and-data-structures-i/). 144 | 145 | #### :heart: Notes 146 | 147 | - Visit [this page of world-class/notes](https://github.com/world-class/notes/tree/master/level-4/algorithms-and-data-structures-i). 148 | 149 | #### On REPL 150 | 151 | - [YouTube](../../../youtube/README.md#algorithms). 152 | - [Websites](../../../websites/README.md#algorithms). 153 | 154 | #### Solutions to the textbook Introduction to Algorithms 155 | 156 | - [CLRS Solutions](https://sites.math.rutgers.edu/~ajl213/CLRS/CLRS.html) - Michelle Bodnar, Andrew Lohr 157 | --------------------------------------------------------------------------------