# Pikir dan Rasa

cogito ergo sum

## Introduction to Computer Science and Programming | MIT Video Course

Ikut menyaksikan kuliah di MIT, mengapa tidak? 🙂 Yang lebih penting sebetulnya adalah kesempatan tambahan pilihan untuk belajar dengan lebih nyaman. Hampir bisa dikatakan, kapan saja & di mana saja. Bisa diulang-ulang sampai paham apa yang dibicarakan pengajar dan bisa belajar dengan bebas merdeka.

### 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 Pythonprogramming language.

### Lectures

1.  #### Lecture 1 – Introduction and Goals of the Course

Goals of the course; what is computation; introduction to data types, operators, and variables

2.  #### Lecture 2 – Operators and operands

Operators and operands; statements; branching, conditionals, and iteration

3.  #### Lecture 3 – Common code patterns

Common code patterns: iterative programs

4.  #### Lecture 4 – Decomposition and abstraction through functions

Decomposition and abstraction through functions; introduction to recursion

5.  #### Lecture 5 – Floating point numbers

Floating point numbers, successive refinement, finding roots

6.  #### Lecture 6 – Bisection methods

Bisection methods, Newton/Raphson, introduction to lists

7.  #### Lecture 7 – Lists and mutability

Lists and mutability, dictionaries, pseudocode, introduction to efficiency

8.  #### Lecture 8 – Complexity

Complexity; log, linear, quadratic, exponential algorithms

9.  #### Lecture 9 – Binary search

Binary search, bubble and selection sorts

10.  #### Lecture 10 – Divide and conquer methods

Divide and conquer methods, merge sort, exceptions

11.  #### Lecture 11 – Testing and debugging

Testing and debugging

12.  #### Lecture 12 – Knapsack problem

More about debugging, knapsack problem, introduction to dynamic programming

13.  #### Lecture 13 – Dynamic programming

Dynamic programming: overlapping subproblems, optimal substructure

14.  #### Lecture 14 – Introduction to object-oriented programming

Analysis of knapsack problem, introduction to object-oriented programming

15.  #### Lecture 15 – Abstract data types

Abstract data types, classes and methods

16.  #### Lecture 16 – Encapsulation

17.  #### Lecture 17 – Computational models

Computational models: random walk simulation

18.  #### Lecture 18 – Presenting simulation results

Presenting simulation results, Pylab, plotting

19.  #### Lecture 19 – Biased random walks

Biased random walks, distributions

20.  #### Lecture 20 – Monte Carlo simulations

Monte Carlo simulations, estimating pi

21.  #### Lecture 21 – Validating simulation results

Validating simulation results, curve fitting, linear regression

22.  #### Lecture 22 – Normal, uniform, and exponential distributions

Normal, uniform, and exponential distributions; misuse of statistics

23.  #### Lecture 23 – Stock market simulation

Stock market simulation

24.  #### Lecture 24 – Course overview: What do computer scientists do?

Course overview; what do computer scientists do?