Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kurniawano patch 1 #26

Open
wants to merge 128 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
128 commits
Select commit Hold shift + click to select a range
b6b5bbd
initial commit for ictpsp website.
kurniawano Dec 15, 2022
0c88092
remove mini projects.
kurniawano Dec 15, 2022
a53203e
rename files and lessons.
kurniawano Dec 15, 2022
2e7990a
renaming notes files.
kurniawano Dec 15, 2022
318c433
fix error in navigation.yml
kurniawano Dec 16, 2022
36d6f84
fix navigation.yml
kurniawano Dec 16, 2022
c94cbac
Add outlines in each topics.
kurniawano Dec 19, 2022
cbe45de
Modify CT and programming in lesson 0 draft.
kurniawano Jan 9, 2023
f1050fd
Add notes on Lesson 0.
kurniawano Jan 13, 2023
cc04c0c
Add novice expert differences.
kurniawano Jan 16, 2023
ecffb56
Add summary.
kurniawano Jan 16, 2023
9a60a2a
edit lesson 0.
kurniawano Jan 16, 2023
b11c914
add hello world note.
kurniawano Jan 25, 2023
03297d4
add Hello world notes.
kurniawano Jan 30, 2023
1889d6e
Move data to basic data types.
kurniawano Jan 31, 2023
f6d5e60
add chatbot example.
kurniawano Feb 1, 2023
df564a4
add on summary.
kurniawano Feb 6, 2023
4f8960e
edit initial section on calling function.
kurniawano Feb 6, 2023
1d54c5f
add import notes.
kurniawano Feb 8, 2023
fe80b6b
combine lesson 3 with 2.
kurniawano Feb 13, 2023
b02d737
add content for lesson 2.
kurniawano Feb 13, 2023
10df819
add tuple into lesson 2.
kurniawano Feb 20, 2023
627bdb2
add notes on lesson on multiple arguments and outputs.
kurniawano Feb 20, 2023
cc491eb
change operators to next lesson.
kurniawano Feb 23, 2023
a993dfd
add defining function notes.
kurniawano Feb 23, 2023
c56ac77
Finish defining function
kurniawano Mar 1, 2023
29ed026
add summary.
kurniawano Mar 1, 2023
29bb5b2
add basic operators and debugging using print.
kurniawano Mar 9, 2023
d8724f9
fix kmh to kmph
kurniawano Mar 13, 2023
343ec20
modify sequence of learning objective.
kurniawano Mar 13, 2023
44da1df
Add basic structure.
kurniawano Mar 13, 2023
c950f6b
add pcdit lo.
kurniawano Mar 16, 2023
bcce39c
Fix typo.
kurniawano Mar 16, 2023
fee3165
add flow chart topic.
kurniawano Mar 16, 2023
8464895
add notes for basic structure.
kurniawano Mar 21, 2023
75df30b
rename asset folder to lessons.
kurniawano Mar 22, 2023
b9a5fd8
remove images from previous repo.
kurniawano Mar 22, 2023
85663ed
add some flowchart images.
kurniawano Mar 22, 2023
ca7b33a
Finish basic structures.
kurniawano Mar 23, 2023
4c2de40
Add relational operators.
kurniawano Mar 23, 2023
32c1a17
fix permalink.
kurniawano Mar 23, 2023
0dba86b
fix menu link.
kurniawano Mar 23, 2023
85d27e7
add path in config.
kurniawano Mar 23, 2023
f18aa37
use baseurl.
kurniawano Mar 23, 2023
908a67a
fix assets path.
kurniawano Mar 23, 2023
cd4423d
add precedence notes on boolean data.
kurniawano Mar 27, 2023
003fef4
Fix relative url for links.
kurniawano Mar 27, 2023
5c56272
fix relative url name.
kurniawano Mar 27, 2023
83dc37d
add if-else notes.
kurniawano Mar 30, 2023
f8bfb2e
add nested if-else.
kurniawano Apr 3, 2023
77795e5
add assert statements.
kurniawano Apr 5, 2023
0cb89cc
add abstracting condition.
kurniawano Apr 5, 2023
180e9d4
add string note.
kurniawano Apr 6, 2023
f9977de
Finish string note.
kurniawano Apr 10, 2023
657b7ae
add enumerate into learning objective.
kurniawano Apr 10, 2023
5284393
swap for loop and while loop sequence.
kurniawano Apr 10, 2023
dbfd0a9
add for loop note.
kurniawano Apr 10, 2023
c3404de
add formatted string.
kurniawano Apr 17, 2023
af80029
add for loop notes.
kurniawano Apr 17, 2023
b9dceaf
add for-loop encrypt example.
Apr 24, 2023
39d8d31
swap title.
kurniawano May 2, 2023
7d29491
add while loop note.
kurniawano May 2, 2023
1f6ed45
add while loop example.
kurniawano May 3, 2023
15d0400
add pcdit example for while loop.
kurniawano May 9, 2023
7e2a2a8
swap position of for-loop and while loop learning objective.
kurniawano May 9, 2023
fe1116d
add tuple note.
kurniawano May 10, 2023
49eca0e
Add type annotation.
kurniawano May 10, 2023
51f089f
swap navigation for forloop and while notes.
kurniawano Jun 21, 2023
7337ff5
add tuple notes.
kurniawano Jun 21, 2023
5f50a80
add learning objective for tuple.
kurniawano Jun 21, 2023
00ddfc9
add list notes.
kurniawano Jun 21, 2023
c66b035
add list basic operations.
kurniawano Jul 11, 2023
a82fbd7
add notes on list slicing.
kurniawano Jan 11, 2024
63e5c7e
add notes on list.
kurniawano Jan 18, 2024
faa935a
add pcdit example using list.
kurniawano Jan 23, 2024
a3cc1c4
add function composition into list notes.
kurniawano Jan 25, 2024
84a47e7
Fix subheading in list notes.
kurniawano Jan 25, 2024
4f8a379
fix position code in list notes.
kurniawano Jan 25, 2024
2a0dba2
add creating nested list.
kurniawano Jan 25, 2024
bc2f970
add initial notes on nested list.
kurniawano Jan 26, 2024
7e33269
add aliasing note.
kurniawano Jan 30, 2024
d164eda
add pcdit example for nested list.
kurniawano Feb 1, 2024
b1686e1
add first note on nested loop.
kurniawano Feb 6, 2024
8fdf15f
fix link in string.md
kurniawano Feb 6, 2024
e5b13cb
add last part for nested loop notes.
kurniawano Feb 13, 2024
7bf97dc
Fix intro to the book.
kurniawano Feb 15, 2024
f2ca81f
change to singular dictionary and set.
kurniawano Feb 15, 2024
82ee00e
add notes on dictionary.
kurniawano Feb 15, 2024
1707cff
add notes on traversing dictionary and branch using dict.
kurniawano Feb 19, 2024
2c36e85
add graph and bfs example.
kurniawano Feb 22, 2024
b5ea5ca
add note on checking item in a list.
kurniawano Feb 28, 2024
957b6fe
add bfs part.
kurniawano Feb 28, 2024
ff6e30a
add summary for dictionary.
kurniawano Feb 29, 2024
e1ee458
add note on set.
kurniawano Feb 29, 2024
6440c9a
Fix bug for missing root node in parent_tree.
kurniawano Mar 6, 2024
5b2cc15
complete example of set.
kurniawano Mar 6, 2024
b6e49e3
Add summary for set.
kurniawano Mar 7, 2024
d5e2829
add coment on mutability of set.
kurniawano Mar 7, 2024
3ecee0d
Fix basic data types prompt.
kurniawano Mar 7, 2024
689b200
add type annotation for calling function.
kurniawano Mar 7, 2024
1218c0f
fix typing to use py311 annotation.
kurniawano Mar 7, 2024
d223d02
fix typo.
kurniawano Mar 7, 2024
3df05ae
Add note on list.
kurniawano Mar 7, 2024
294b252
add type in boolean data.
kurniawano Mar 7, 2024
d83cb7d
add type annotation for string lesson.
kurniawano Mar 7, 2024
78054e8
add type annotation and reverse some sequence.
kurniawano Mar 7, 2024
70bc0b2
add type annotation while loop.
kurniawano Mar 7, 2024
c52e375
fix annotation string.
kurniawano Mar 7, 2024
074db76
add images lesson 0.
kurniawano Mar 18, 2024
1475c38
add worksheet and image for pcdit.
kurniawano Mar 18, 2024
3d93aaa
modify tuple notes to python 3.11 annotation.
kurniawano Mar 18, 2024
51f2ff9
modify list notation to use py311 annotation.
kurniawano Mar 18, 2024
a50e866
change annotation for nested for loop and nested list.
kurniawano Mar 18, 2024
9d27770
change annotation for lesson dict and set notes.
kurniawano Mar 18, 2024
ea208ff
add images for lesson 2.
kurniawano Mar 20, 2024
5919b6b
fix lesson numbering in navigation.
kurniawano Mar 21, 2024
5baa46e
add image in operators.
kurniawano Mar 21, 2024
cc5fe06
add image for multiply.
kurniawano Mar 21, 2024
354767e
add images for structures.
kurniawano Mar 21, 2024
9766aa2
fix broken link.
kurniawano Mar 21, 2024
3c2b3f5
add images for lesson 3.
kurniawano Mar 27, 2024
810ad92
add images lesson 4.
kurniawano Apr 2, 2024
9365b2a
add images for branch.
kurniawano Apr 4, 2024
cc29501
add images for nested if.
kurniawano Apr 5, 2024
168f2c2
add images for loops.
kurniawano Apr 9, 2024
f2def7a
add images for lesson 9.
kurniawano Apr 16, 2024
bddae19
add images for set.
kurniawano Apr 23, 2024
9c5013a
Update README.md fixing spelling changes
kurniawano Jun 1, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
## This is a course website for 10.020 Data Driven World
## This is a website for the book "Introduction to Computational Thinking and Problem Solving."

You can contribute by forking this repository and creating pull requests 😊
You can contribute by forking this repository and creating pull requests. 😊
258 changes: 159 additions & 99 deletions _Learning_Objectives/overview.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: 10.020 DDW Learning Objectives
title: Introduction to Computational Thinking and Problem Solving Using Python - Learning Objectives
permalink: /lo/weekly
key: lo-weekly
layout: article
Expand All @@ -10,101 +10,161 @@ aside:
show_edit_on_github: false
show_date: false
---

## Week 1: Python ([Concept Map](https://drive.google.com/file/d/11dFasj8ePnDj0TPYWCRrrWckVQk21fjd/view?usp=sharing))

- Apply Python's **procedural** programming and **basic** data structures
- **Define** and **call** functions
- Implement:
- Bubble sort and
- Insertion sort algorithms to **sort** a sequence of number
- Use **print** statements to debug code

## Week 2: Analysing Programs ([Concept Map](https://drive.google.com/file/d/1PV9-Pe3D1AXhs4pao_70KnF3xyNcNX0P/view?usp=sharing))

- Write functions to do **binary heap** data structure operation
- Implement **heapsort** using iteration
- Define **Big-O** notation and other asymptotic notations
- Derive **complexity** of a code using its computation model
- Create **plots** from array data for **visualising** computational time
- **Measure** computation time for bubble sort, insertion sort, built-in sort, and heapsort

## Week 3: Divide and Conquer ([Concept Map](https://drive.google.com/file/d/1TRve3OUUgiqjE8DvUDA4breOvj6pmqK2/view?usp=sharing))

- Solve problems using **recursion**
- Identify problems that has recursive solutions
- Explain and implement **merge sort** algorithm
- Derive solution of **recurrence** of merge sort using recursion-tree method
- Measure computation time of merge sort and **compare** it with the other sort algorithms

## Week 4: Object-Oriented Paradigm ([Concept Map](https://drive.google.com/file/d/1iLusuxa-wncnHcxOrRoX4207u07l18Nh/view?usp=sharing))

- Create `class` definitions with initialization and other methods
- Create **stored** property and **computed** property
- Draw UML class diagram of a class with attributes and methods
- Explain `has-a` relationship
- Discuss object **aliasing** and **copying**
- Draw UML class diagram for `has-a` relationship
- Implement abstract data type for **Stack**, **Queue** using Object Oriented paradigm
- **Apply** Stack and Queue for some applications
- Implement Queue using double **Stack** and discuss implementation **impact** on computation time

## Week 5: Searching Data ([Concept Map](https://drive.google.com/file/d/1B91OlTA0Ss2HLDxf_PJcS9O4GZPDRI9K/view?usp=sharing))

- Use **Dictionary** to represent graph
- Apply **basic** dictionary operations
- Define **graph**, **vertices**, **edges** and **weights**
- Differentiate **directed** and **undirected** graphs
- Define **paths**
- Create a `Vertex` class and a Graph class
- Represent graphs using **adjacency-list** representation or **adjacency-matrix** representation
- Explain and implement **breadth** first search
- Explain and implement **depth** first search

## Week 6: Inheritance and Object-Oriented Design ([Concept Map](https://drive.google.com/file/d/1pkxE0M-V7uz_vteyBZsDotkL4sCkJj6b/view?usp=sharing))

- Inherit a class to create a **child** class
- Explain `is-a` relationship
- Draw **UML** diagram for `is-a` relationship
- **Override** operators to extend parent's methods
- Implement **Deque** data structure as a subclass of **Queue**
- Implement **Array** and **Linked List** data structure from the same base class

## Week 8: Visualizing and Processing Data([Concept Map](https://drive.google.com/file/d/1PUZkAsRJLcGxEfqDXC-QQlKa6TQu2oNO/view?usp=sharing))

- Create **scatter** plot and statistical plots like box plot, histogram, and bar plot
- Create a **Panda's DataFrame** and selecting data from DataFrame
- Using library to read `CSV` or `EXCEL` file
- **Split** data randomly into training set and testing set
- **Normalize** data using min-max normalization
- Give example of **linear regression and classification**

## Week 9: Modelling Continuous Data ([Concept Map](https://drive.google.com/file/d/15EkM4XMdMyYjLkg_yFgeKlsgpl-qYjUU/view?usp=sharing))

- Write **objective** function of linear regression
- Implement **Gradient Descent algorithm** for optimisation
- Train **linear regression model** using gradient descent
- Transform data for **higher** order features
- Evaluate linear regression model using `r^2` and mean-squared-error
- Evaluate and choose **learning rate**
- Plot **cost** function over iteration time
- Plot **linear** regression

## Week 10: Classifying Categorical Data ([Concept Map](https://drive.google.com/file/d/1wSyrCyG3fFRR-CSCKfMadnhngANKVrcU/view?usp=sharing))

- Write objective function of **logistic** regression
- Use logistic regression to **calculate** probabilities of binary classification
- Train logistic **regression** model
- Split data into **training**, **validation**, and **testing** set
- Visualize **non-linear** decision boundary
- Classify **multi-class** problems using one-vs-all technique
- Calculate **confusion** **matrix**, **precision**, and **recall**

## Week 12: Design of State Machines ([Concept Map](https://drive.google.com/file/d/1Vql1S6jK7ysFhMvEhQ7LIG5THXoMFYJZ/view?usp=sharing))

- Define a **state machine**
- Implement an **Abstract Base Class** for State Machine using abc module
- Define **output** function and **next** state function
- Draw **state transition diagram** and **time-step table**
- **Implement** output function and next state function inside `get_next_values` overridden method.
- **Apply** breadth first search to perform state-space search
## Lesson 0: Computational Thinking and Problem Solving

By the end of this lesson, students should be able to:
* State the various components of computational thinking, i.e. decomposition, abstraction, pattern recognition and algorithms
* identify the various skills needed in computing and specifically in programming
* state the PCDIT framework for problem solving
* state the difference between novice and expert programmers in solving problems
* explain the need for identifying patterns in problem solving

## Lesson 1: Code Execution and Basic Data Types
By the end of this lesson, students should be able to:

* explain how Python code is executed in sequence
* create and use a variable
* create basic data types such as integer, float and string
* display basic data types using print function
* explain the assignment operator
* draw the environment diagram after assignment
* check data type of a literal or variable
* identify input and output data type of a problem

## Lesson 2: Function, the First Abstraction
By the end of this lesson, students should be able to:

* call built-in math functions
* explain the purpose of creating a user-defined function
* define a function with and without arguments
* define a function with and without return values
* define a function with multiple arguments
* create a tuple
* define a function that returns a tuple
* access an element of a tuple
* define a function with optional or keyword arguments
* specify data types in arguments and return value
* explain the difference between local and global variables
* choose whether to use local or global variables
* abstract a problem as a function
* identify input, output and process of a function
use print function to debug a function

## Lesson 3: Basic Operators and Basic Control Structures
By the end of this lesson, students should be able to:
* use basic operators with basic data types
* predict the evaluated data types from an expression
* evaluate math expression with various precedence
* use compound operators
* state the three basic control structures, i.e. sequential, branch and iteration
* identify basic structures from a given problem
* state the Python keywords to be used for each basic control structures
* draw flow chart for sequential, branch and iterative structure
* Derive concrete cases given a problem statement
* Derive design of algorithm steps from some concrete cases

## Lesson 4: Boolean Data Type and Branch Structure

By the end of this lesson, students should be able to:
* create a boolean data type
* convert a variable into a boolean data type
* evaluate relational and logical operators
* specify the precedence of relational and logical operators
* implement branch structure using if-else statement
* implement branch structure using if-elif-else statement
* draw a flow chart for if-else and nested if-else
* explain the difference between if-elif and if-if codes
* use assert to create a test
* identify branch structure in a problem
* decompose a problem into multiple selections
* abstract selection process as a function

## Lesson 5: String

By the end of this lesson, students should be able to:
* create string using various methods
* create multi-line string
* use basic operations on string data type
* obtain the length of a string
* obtain a character of a string using the index
* create a new substring from a string using slice operator
* explain that string is immutable
* check if a substring is in a string
* Use formatted string literal to display formatted string with data

## Lesson 6: Iteration using While Loop and For Loop

By the end of this lesson, students should be able to:
traverse an iterable using for-loop
* enumerating a collection data to get the element and the index
* use range function to create an iterable
* traverse an iterable using its index
* use print to debug while loop and for-loop code
* identify iteration structure from a given problem
* decompose problem into iterative process of smaller problems
* implement simple iteration using while loop
* speciy and identify basic building blocks of a while loop statement
* traverse a string using while loop and counter
* traverse a string with sentinel value
* use a break statement to terminate a loop

## Lesson 7: List and Tuple

By the end of this lesson, students should be able to:
* create a tuple
* explain what it means that tuple is immutable
* access an element in a tuple using index
* get the length of a tuple
* check if an item is an element in a tuple
* traverse a tuple
* create a list using square bracket operator
* access an element in a list using index
* get the length of a list
* check if an item is an element in a list
* concatenate a list
* obtain a sublist from a list using the slice operator
* modify an element in a list
* remove an element in a list
* find the position of an element in a list
* create an alias of a list
* clone a list into a new list
* add an element into a list
* pass a list as function arguments
* explain the effect of aliasing for list data type
* create list comprehension
* traverse a list using while loop and for-loop
* draw environment diagram of a list
* use print to display elements of a list
* identify when list or tuple is appropriate in a problem

## Lesson 8: Nested List and Nested For Loop

By the end of this lesson, students should be able to:
* create a nested list
* access elements in a nested list
* traverse a nested list using both while loop and for-loop
* draw environment diagram of a nested list
* explain the effect of aliasing of a nested list
* explain the difference between shallow copy and deep copy
* use print to debug nested loop
* identify nested loop structure in a given problem
* decompose nested loop problem into multiple loops


## Lesson 9: Dictionary and Set

By the end of this lesson, students should be able to:
* create a dictionary as key-value pairs
* access the value using the key
* add key-value pair into a dictionary
* use dictionary to implement branch structure
* remove a key-value pair from a dictionary
* check if a key is in a dictionary
* check if a value is in a dictionary
* traverse a dictionary
* compare dictionary with a list
* create a set
* use basic set operations
* add item into a set
* compare set and dictionary
* identify when dictionary or set is appropriate in a problem
Loading