CSC110

tags #cs

Course Roadmap (Ch 1-11)

Notes are basically paraphrased straight from csc110 & csc111 notes

1. Working with Data

  • 1.1 Python Programming Language
  • 1.2 Using the Python Console
  • 1.3 Representing Numbers in Python
  • 1.4 Booleans and Strings
  • 1.5 Python Collections
  • 1.6 Python Variables
  • 1.7 Python List Comprehensions
  • 1.8 Application: Representing Colour
  • 1.9 Representations of Natural Numbers

2. Functions

  • 2.1 Python Built-In Functions
  • 2.2 Python Function Definitions
  • 2.3 Local Variables and Function Scope
  • 2.4 Python Methods
  • 2.5 Importing Python Modules
  • 2.6 Type Conversion Functions
  • 2.7 The Function Design Recipe
  • 2.8 Testing Functions (doctest and pytest)
  • 2.9 Application: Representing Text

3. Formal Logic in Computer Science

  • 3.1 Propositional Logic
  • 3.2 Predicate Logic
  • 3.3 Filtering Collections
  • 3.4 Python If Statements
  • 3.5 Simplifying If Statements
  • 3.6 The Python Main Block
  • 3.7 Logical Statements with Multiple Quantifiers

4. Function Specification and Correctness

  • 4.1 Specifying Function Behavior
  • 4.2 Python Type Annotations
  • 4.3 PythonTA
  • 4.4 Hypothesis (Python Library)
  • 4.5 Justifying Program Correctness
  • 4.6 Divisibility in Programming
  • 4.7 Prime Numbers in Programming
  • 4.8 Application: Linear Regression

5. Working with Complex Data

  • 5.1 Tabular Data
  • 5.2 Custom Data Types in Python
  • 5.4 Python For Loops
  • 5.7 Nested For Loops
  • 5.8 Accumulation Tables

6. Modifying Values and Variables

  • 6.1 Variable Reassignment
  • 6.2 Object Mutation
  • 6.3 Mutable Data Types
  • 6.4 Python Memory Model
  • 6.5 Aliasing and Mutation at a Distance

7. Number Theory

  • 7.1 Number Theory Introduction
  • 7.2 Greatest Common Divisor (GCD)
  • 7.4 Modular Arithmetic

8. Case Study: Cryptography

  • 8.1 Cryptography Introduction
  • 8.2 One-Time Pad and Perfect Secrecy
  • 8.4 The RSA Cryptosystem
  • 8.5 Implementing RSA in Python

9. Analyzing Algorithm Running Time

  • 9.1 Running Time Analysis
  • 9.2 Big-O Notation
  • 9.3 Big-Omega and Big-Theta
  • 9.8 Worst-Case Running Time Analysis

10. Abstraction, Classes, and Software Design

  • 10.1 Software Abstraction
  • 10.2 Python Classes and Methods
  • 10.4 Abstract Data Types (ADTs)
  • 10.5 Stack (Data Structure)
  • 10.6 Python Exceptions
  • 10.7 Queue (Data Structure)
  • 10.8 Priority Queue (Data Structure)
  • 10.9 Class Inheritance

11. Case Study: Building a Simulation

  • 11.1 Object-Oriented Modelling
  • 11.5 Discrete-Event Simulation