Python & R

Taught by David Xu

Year 1: A Thorough Introduction to Programming and Python
I. Setting Up
  1. Installation and configuration of programming environments
     a. Command line tools
     b. Package management
     c. Jupyter notebooks
     d. Integrated Developer Environments
II. The Basics
  1. Arithmetic
     a. Mathematical operators
     b. Logical operators
  2. Data Types
     a. How is data stored in memory?
     b. Exploration of types and their uses
     c. Transforming between types
  3. Variables
     a. Naming conventions
     b. Pass by value vs. Pass by reference
III. Interaction
  1. Output
     a. Printing formatted text to a command line
     b. Writing to a file
  2. Input
     a. Accepting input via command line arguments
     b. Requesting user input during program execution
     c. Reading from a file
IV. Conditionals
  1. If-ElseIf-Else Statements
     a. Conditional execution of code
     b. Proper spacing for readability
  2. Switch Statements
     a. Switch-Case statements
     b. Default cases
V. Collections
  1. Lists
     a. Initialization
     b. Adding elements
     c. Removing elements by value
     d. Removing elements by index
VI. Loops
  1. For loops
     a. Iterating through a range
     b. Iterating through an array
  2. While loops
     a. Iterating through an array
     b. Validating input
     c. Identifying infinite loops
VII. Functions
  1. Introduction to functions
     a. Simplifying code by avoiding repetition
     b. Importing libraries
     c. Mathematical functions
VIII. Algorithms (Introduction)
  1. Sorting
     a. Why is sorting important?
     b. Selection Sort
     c. Insertion Sort
     d. Bubble Sort
  2. Complexity Analysis
     a. Big O Notation
  3. Recursion
     a. How to write recursive functions
     b. Merge Sort
IX. Strings
  1. Working with Strings
     a. Substrings
     b. Character search
     c. Splitting a string
     d. Joining an string array
     e. Formatting strings (uppercase, lowercase, etc.)
X. Classes
  1. Object-Oriented Programming
     a. Introduction to objects
     b. Defining a class
     c. Constructor functions
     d. Variable scopes
  2. Inheritance
     a. Building upon an existing class
XI. Understanding Exceptions
  1. Learn to read
     a. How to read an exception
     b. Identifying the source of an error
  2. Learn to learn
     a. Navigating documentation
     b. Utilizing online resources
  3. Try-Catch
     a. Anticipating exceptions
  4. Testing
     a. Why is code testing important?
     b. Simple ways to test code
XII. Structured Data
  1. CSV files
     a. Introduction to data frames
     b. Loading and processing spreadsheets
     c. Writing to a spreadsheet file
  2. Multi-dimensional Arrays
     a. Working with multi-dimensional data
     b. Matrix operations
     c. Broadcasting
XIII. Graphical User Interfaces
  1. Creating a GUI
     a. Buttons
     b. Text Displays
  2. Direct Input
     a. Keyboard inputs
     b. Mouse events
XIV. Plotting Data
  1. Scatterplots
     a. Visualizing correlations
     b. Linear regression
  2. Histograms
     a. Understanding distributions
  3. Line graphs
     a. Graphing two functions on the same axes
     b. Graphing functions side-by-side
XV. Writing a Simple Game
  1. Game State
     a. Keeping track of states
  2. User Input
     a. Handling user actions
     b. Validating user input
  3. Graphical Interface
     a. Displaying the game state
XVI. Machine Learning (Brief Introduction)
  1. Background
     a. What is machine learning?
     b. Why is everyone so excited about machine learning?
  2. Neural networks
     a. What is a neural network?
     b. How can a computer “learn”?
  3. Making a neural network
     a. TensorFlow
     b. Building a model using Keras
     c. Training a model
     d. Validation on a test set
  4. Applications
     a. What is machine learning being used for?
     b. What are its limitations?
     c. Should I still learn computer programming if machines can learn algorithms by themselves? (Yes!)

Year 2: A Detailed Exploration of Data Science and R
Note that while there are fewer topics here, each is covered in greater depth.

I. Learning a new language
  1. It's much simpler the second time around
     a. Review of modules I-XIV from year 1 using R
 b. Note that repetition of this content is intended to teach new R syntax while also building up students' comfort with new languages
  2. What's the difference?
     a. Understand the differences and similarities between programming languages
 b. Why fear a new language? The logic is the same.
II. Data Structures
  1. Stacks
     a. The LIFO paradigm
  2. Queues
     a. The FIFO paradigm
      b. A two-stack queue
  3. Why use these data structures?
     a. Review of time complexity
      b. Execution time comparisons
III. Detecting correlations
  1. Regression
     a. Linear regression models
      b. Correlation coefficients
IV. Predicting outcomes
  1. Decision Trees
     a. Classification trees
      b. Regression trees
  2. Bootstrap Aggregation
      a. Improving decision tree performance via bagging
  3. Random Forests
     a. Utilization of random forests for classification
  4. Boosted Trees
      a. Solving complex classification tasks via boosting