Course Description
This subject is aimed at students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems. It also aims to help students, regardless of their major, to feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. The class will use the Python™ programming language.
Lectures
-
favorites
Lecture 1 - Introduction and Goals of the Course
Goals of the course; what is computation; introduction to data types, operators, and variables
-
favorites
Lecture 2 - Operators and operands
Operators and operands; statements; branching, conditionals, and iteration
-
favorites
Lecture 3 - Common code patterns
Common code patterns: iterative programs
-
favorites
Lecture 4 - Decomposition and abstraction through functions
Decomposition and abstraction through functions; introduction to recursion
-
favorites
Lecture 5 - Floating point numbers
Floating point numbers, successive refinement, finding roots
-
favorites
Lecture 6 - Bisection methods
Bisection methods, Newton/Raphson, introduction to lists
-
favorites
Lecture 7 - Lists and mutability
Lists and mutability, dictionaries, pseudocode, introduction to efficiency
-
favorites
Lecture 8 - Complexity
Complexity; log, linear, quadratic, exponential algorithms
-
favorites
Lecture 9 - Binary search
Binary search, bubble and selection sorts
-
favorites
Lecture 10 - Divide and conquer methods
Divide and conquer methods, merge sort, exceptions
-
favorites
Lecture 11 - Testing and debugging
Testing and debugging
-
favorites
Lecture 12 - Knapsack problem
More about debugging, knapsack problem, introduction to dynamic programming
-
favorites
Lecture 13 - Dynamic programming
Dynamic programming: overlapping subproblems, optimal substructure
-
favorites
Lecture 14 - Introduction to object-oriented programming
Analysis of knapsack problem, introduction to object-oriented programming
-
favorites
Lecture 15 - Abstract data types
Abstract data types, classes and methods
-
favorites
Lecture 16 - Encapsulation
Encapsulation, inheritance, shadowing
-
favorites
Lecture 17 - Computational models
Computational models: random walk simulation
-
favorites
Lecture 18 - Presenting simulation results
Presenting simulation results, Pylab, plotting
-
favorites
Lecture 19 - Biased random walks
Biased random walks, distributions
-
favorites
Lecture 20 - Monte Carlo simulations
Monte Carlo simulations, estimating pi
-
favorites
Lecture 21 - Validating simulation results
Validating simulation results, curve fitting, linear regression
-
favorites
Lecture 22 - Normal, uniform, and exponential distributions
Normal, uniform, and exponential distributions; misuse of statistics
-
favorites
Lecture 23 - Stock market simulation
Stock market simulation
-
favorites
Lecture 24 - Course overview: What do computer scientists do?
Course overview; what do computer scientists do?







