Skip to main content
Back to top
Ctrl
+
K
Software Engineering
Search
Ctrl
+
K
Python Fundamentals
1. Python Basics
1.1. Python
1.2. Printing
1.3. Variables
1.4. Types of Variables
1.5. Python as a calculator
1.6. Naming Variables
1.7. Don’t Mix and Match Variables Types
1.8. Type Conversions
1.9. Input
1.10. String Formatting
1.11. Error Messages
1.12. Comments
1.13. Test Your Understanding
1.14. Additional Challenges
2. Conditionals
2.1. Booleans
2.2. Comparisons
2.3. And/Or
2.4. If Statements
2.5. If-Else Statements
2.6.
If-Elif-Else
Statements
2.7. More Complicated
if-elif-else
Statements
2.8. Pseudocode
2.9. Code Testing
2.10. Test Your Understanding
2.11. Additional Challenges
3. Lists and Loops
3.1. Lists
3.2. Indexing
3.3. List Operations
3.4. List Joins
3.5. Converting To Lists
3.6. Loops
3.7. While Loops
3.8. Common While Loop Errors
3.9. While Loops With Lists
3.10. While Loops With Input
3.11. While Loops With Conditionals
3.12. For Loops
3.13. Range
3.14. For Loops With Conditionals
3.15. Equivalent Loops
3.16. Nested Loops
3.17. Pseudocode
3.18. Additional Challenges
4. Modules and Functions
4.1. Modules
4.2. The Math Module
4.3. Random Integers
4.4. Random Floats and Using Probabilities
4.5. Pseudorandomness
4.6. Time
4.7.
datetime
4.8. Functions
4.9. Function Scope
4.10. Optional Parameters (Keyword Arguments)
4.11. Function Returns
4.12. Custom Modules
4.13. Representing Numbers in Binary
4.14. Two’s Complement
4.15. The Hexadecimal System
4.16. ASCII
4.17. Pseudocode and Flowcharts
5. Data Structures
5.1. Introduction to Arrays
5.2. Multi-Dimensional Arrays
5.3. Records
5.4. Data Dictionaries
5.5. Sequential Files
5.6. Stacks
5.7. Dictionaries
6. Algorithms and Code Design
6.1. Algorithms
6.2. Draw a Box: Algorithm
6.3. Desk Checking
6.4. Draw a Box: Desk Check
6.5. Draw a Box: Code
6.6. Backtracking Algorithms: Maze Example
6.7. Backtracking Algorithms: 8 Queens
6.8. Representing and Storing Data: 8 Queens
6.9. Divide and Conquer: Merge Sort
6.10. Applying Divide and Conquer Algorithms
6.11. Understanding Algorithms
6.12. Peer Review: Tic Tac Toe (Naughts and Crosses)
6.13. Developing Software: Tic Tac Toe Example
6.14. Top-down and Bottom-up Design
6.15. Structure Charts
6.16. Online Code and Collaboration Tools
6.17. Waterfall vs Agile Project Management
The Object-Oriented Paradigm
1. OOP Introduction
1.1. Motivation
1.2. Objects
1.3. Object-Oriented Programming
1.4. Creating Objects
1.5. Attributes
1.6. General Methods
1.7. Class Attributes and Methods
2. OOP Continued
2.1. Motivation
2.2. Inheritance
2.3. Inheritance Example
2.4. Super
2.5. Hierarchical Inheritance
2.6. Multilevel Inheritance
2.7. Multiple Inheritance
2.8. Multiple Inheritance Example
2.9. Checking Instances
2.10. Polymorphism and Duck Typing
3. Special Methods
3.1. Introduction
3.2. Unary Special Methods
3.3. Binary Special Methods
3.4. Extension: Container Methods
4. Data Structures Part 2
4.1. Efficiency
4.2. Big-O Notation
4.3. Big-O and Data Structures
4.4. Nodes
4.5. Linked List
4.6. Stack
4.7. Binary Search Tree
4.8. Hash Table
4.9. Extensions
Mechatronics
1. Introduction
1.1. Mechatronics
1.2. Embedded Systems
1.3. Microcontrollers
1.4. History of Microcontrollers
1.5. Bootloader and Firmware
1.6. Interacting with the Real World
1.7. Sensors
1.8. Actuators
1.9. Control Systems
1.10. Exercise: Applications
1.11. Exercise: Extension
2. micro:bit
2.1. Overview
2.2. MicroPython
2.3. MicroPython Editor
2.4. Flashing
2.5. LED Display - Pixels
2.6. LED Display - Images
2.7. Buttons
2.8. Sound - Bleeps and Bloops
2.9. Sound - Music
2.10. Sound - Text to Speech
2.11. Exercise: Light and Sound
2.12. Accelerometer
2.13. Magnetometer
2.14. Exercise: Theremin
2.15. Radio Communications
2.16. Exercise: SOS
3. micro:Maqueen Introduction
3.1. Overview and Features
3.2. Assembly Instructions
3.3. Power
3.4. Driving Lights
3.5. RGB LEDs
3.6. Exercise: Light Show
3.7. Motors
3.8. Sonar Distance Sensor
3.9. Exercise: Rodeo
3.10. Line Sensors
3.11. Exercise: Line
3.12. Gripper
3.13. Gripper Assembly
3.14. Exercise: Rescue
3.15. Extension: CNC Plotter
4. Electronics
4.1. Overview
4.2. Electricity
4.3. Power and Energy
4.4. Cells and Batteries
4.5. Microcontrollers and Sensors
4.6. Motors
4.7. Exercise: Electrical Requirements
4.8. Exercise: Wiring Diagrams
5. Sensors
5.1. Overview
5.2. Motion and Position
5.3. Light and Colour
5.4. Environmental
5.5. Touch and Proximity
5.6. Force and Fluid Pressure
5.7. Exercise: Sensors
5.8. Signals
5.9. Analog Sensors
5.10. Buses
5.11. I2C
5.12. Exercise: I2C
5.13. Processing Sensor Data
5.14. Case Study: HC-SR04 Ultrasonic Sensor
5.15. Exercise: HC-SR04
6. Actuators
6.1. Overview
6.2. Electric, Hydraulic and Pneumatic Actuators
6.3. Rotary Actuators
6.4. Linear Actuators
6.5. Exercise: Actuators
6.6. Motion
6.7. Exercise: Motion
6.8. Communication and Control of Actuators
6.9. Exercise: Wiring
7. Controls
7.1. Overview
7.2. Open-Loop Control
7.3. Exercise: Open Loop
7.4. Closed Loop Control
7.5. Bang-Bang Control
7.6. Exercise: Bang-Bang Control
7.7. PID Control
7.8. PID Gains and Tuning
7.9. Exercise: PID
7.10. Exercise: micro:Maqueen PID
8. UI/UX
8.1. UI/UX in Mechatronics
8.2. Exercise: Accessibility
8.3. Exercise: UI Design
Web Part 1
1. Hypertext
1.1. Overview
1.2. HTML
1.3. Elements and Tags
1.4. Body Elements
1.5. Websites
2. Styling
2.1. Cascading Style Sheets
2.2. Declarations
2.3. CSS Units
2.4. Box Model
2.5. Changing
display
type
2.6. Inspecting Elements
2.7. Selectors
2.8. Using IDs
2.9. Using Classes
2.10. Advanced Selectors
3. Networking
3.1. Overview
3.2. Internet Layer
3.3. Transport Layer
3.4. Application Layer
4. Backend Introduction
4.1. Overview
4.2. HTTP
4.3. Server Side Scripting
4.4. Flask Intro
4.5. Handling Requests
4.6. Serving Static Files
5. Databases and SQL
5.1. Overview
5.2. Select
5.3. Where
5.4. Order By
5.5. Limit
5.6. Readability
5.7. Insert
5.8. Update
5.9. Delete
5.10. Joins
5.11. More Joins
5.12. Group By
6. Dynamic Backends
6.1. Case Study: Movie Reviews
6.2. Databases and Python Using SQLAlchemy
6.3. Databases with Flask
6.4. Templating
6.5. Variables in URLs
6.6. Forms - Part 1
6.7. Forms - Part 2
6.8. Extension Exercises
JavaScript
1. Basics
1.1. Overview
1.2. Printing
1.3. Comments
1.4. Programs, Statements and Expressions
1.7. Variables
1.9. Arithmetic
1.10. Strings
2. Control Structures and Arrays
2.1. Conditionals
2.2. Arrays
2.3. Loops
3. Functions and Objects
3.1. Functions
3.2. Objects
Web Part 2
1. Interactivity
1.1. JavaScript
1.2. JavaScript in HTML
1.3. Document Object Model
1.4. Window, Document and Elements
1.5. Finding Elements
1.6. Editing the Page and Elements
1.7. Events
2. User Interface and User Experience (UI/UX)
2.1. Overview
2.2. Responsive Web Design
2.3. Front End Frameworks
2.4. CSS Preprocessors
2.5. Performance
3. Object-Relational Mapping
3.1. Overview
3.2. SQLAlchemy
3.3. Tutorial: ORMs in Flask
4. Standards and History
4.1. Standards
4.2. Tools
4.3. Web Browsers: Evolution and Influence
4.4. Open-Source Software and the Web
4.5. Content Management Systems (CMS)
4.6. Front-end and Back-end Collaboration
4.7. Big Data’s Impact on the Web
5. Progressive Web Apps
5.1. Progressive Web Apps
5.2. Web App Manifest
5.3. Service Workers
5.4. PWA Tutorial
6. Rest APIs
6.1. APIs
6.2. JSON and Flask
6.3. REST APIs
6.4. Testing APIs with cURL
6.5. Flask-RESTful
Secure Software Architecture
1. Software Vulnerabilities
1.1. Introduction
1.2. Security Principles
1.3. Benefits of Secure Software
1.4. Commercial Benefits of Secure Software
1.5. Impact on Society
2. Cryptography
2.1. Cryptography
2.2. Ciphers
2.3. Substitution Ciphers
2.4. Symmetric-key Cryptography
2.5. Asymmetric-key Cryptography
2.6. Hashing
2.7. Cryptographic Hash Functions
3. Secure Communications
3.1. Authenticity
3.2. Digital Signatures
3.3. Digital Certificates
3.4. Certificate Authorities
3.5. Secure Communication and TLS
3.6. Extension: Secure Random Number Generation
4. Authentication and Authorisation on the Web
4.1. Introduction
4.2. Password Authentication
4.3. Passwords
4.4. Salting Passwords
4.5. Cookies
4.6. Cookies in Flask
4.7. Server-Side Sessions
4.8. Client-Side Sessions
4.9. Sessions in Flask
4.10. User and role access controls
4.11. Flask-Security Tutorial
5. Securing the Web
5.1. HTTPS
5.2. HTTPS and Flask
5.3. SQL Injection
5.4. Parameterised Queries
5.5. Safe APIs
5.6. Cross-Site Scripting (XSS)
5.7. XSS and Flask Templates
5.8. Cross-Site Request Forgery (CSRF)
5.9. Flask-WTF
5.10. User Action Control Vulnerabilities
5.11. File and Side-Channel Attacks
6. Secure Software Design
6.1. Security and Privacy by Design
6.2. Secure Software Stages
6.3. FlixReviews
6.4. Requirements
6.5. Specifications
6.6. Design
6.7. Integration and Testing
6.8. Installation and Maintenance
Software Automation
1. Linear Regression
1.1. Artificial Intelligence and Machine Learning
1.2. Supervised vs Unsupervised Learning
1.3. Linear Regression
1.4. Measuring Error
1.5. Reading in Data With Pandas
1.6. Scatter Plots
1.7. Visualising Data
1.8. Fitting a Linear Regression Model
1.9. Line Plots
1.10. Plotting Functions and Visualising Models
1.11. Making Predictions
1.12. Measuring Error Using the MSE
1.13. Extension: Fitting The Model
1.14. Multiple Linear Regression
2. Polynomial and Logistic Regression
2.1. Polynomial and Logistic Regression
2.2. Polynomial Regression
2.3. The Relationship Between Linear Regression and Polynomial Regression
2.4. Building a Polynomial Regression Model
2.5. Extension: Selecting The Polynomial Degree
2.6. Logistic Regression
2.7. Measuring Error
2.8. Building a Logistic Regression Model
2.9. Predicting With A Logistic Regression Model
2.10. Extension: Further Classification Metrics
2.11. Extension: Multiple Logistic Regression
3. Decision Trees
3.1. Decision Trees
3.2. Building a Classification Tree
3.3. Classifying With a Classification Tree
3.4. Node Impurity and Tree Height
3.5. A Semi-Supervised Model
3.6. Random Forests
3.7. Extension: Building a Classification Tree
3.8. Extension: Interpreting The Output Graph
3.9. Extension: Predicting With a Classification Tree
3.10. Building a Regression Tree
3.11. Predicting With a Regression Tree
3.12. Extension: Building and Predicting With A Regression Tree
3.13. Semi-Supervised Learning and Random Forests
3.14. Interpreting Decision Trees
4. K-Nearest Neighbours and K-Means Clustering
4.1. K-Nearest Neighbours and K-Means Clustering
4.2. Distance and Similarity
4.3. Extension: The Problem With Distance Similarity
4.4. KNN Regression 1D
4.5. Visualising KNN Regression 1D (k = 1)
4.6. Extension: Visualising KNN Regression 1D (k = 2)
4.7. KNN Regression 2D
4.8. Extension: Building a KNN Regression Model
4.9. Extension: Selecting The Value of k
4.10. KNN Classification
4.11. Extension: Image Data
4.12. Extension: Building a KNN Classification Model
4.13. Unsupervised Learning: Clustering
4.14. Extension: The K-means Clustering Algorithm
4.15. Extension: Building a K-means Clustering Model
4.16. Extension: Text Data
5. Neural Networks
5.1. Deep Learning
5.2. Neural Networks
5.3. RGB to Hue and Saturation
5.4. Information Flow: Making a Prediction
5.5. Calculating Errors
5.6. Training a Neural Network
5.7. Building a Neural Network for Regression
5.8. Problem and Model Analysis
5.9. Neural Networks for Classification
5.10. Building a Neural Network For Classification
5.11. More Advanced Neural Networks
6. Reinforcement Learning
6.1. Reinforcement Learning
7. Design, Applications and Impact
7.1. Types Of Machine Learning Summary
7.2. Exercise: Applications of Machine Learning Algorithms
7.3. ML in DevOPS, RPA and BPA
7.4. MLOps
7.5. Bias in AI
7.6. How Cultural Protocols and Belief Systems Impact AI
7.7. How Patterns in Human Behaviour Influence ML and AI Software Development
7.8. The Impacts of Automation on the Individual, Society and the Environment
Syllabus Map
Year 11
1. Programming Fundamentals
2. The Object-Oriented Paradigm
3. Programming Mechatronics
Year 12
1. Programming for the Web
2. Secure Software Architecture
3. Software Automation
Glossary
Exercise Index
Print Edition
Teacher Edition
Changelog
About Us
Year 11
Year 11
#
1. Programming Fundamentals
2. The Object-Oriented Paradigm
3. Programming Mechatronics