First semester 2023 (Aug-Nov)

This is on-line course. Students learn from pre-class videos, participating in real-time video teaching, practice on automated Grader system, and do weekly homework (which is a substantial project in programming). The course offers tutorial and discussion via on-line chat (almost 24x7) with a team of teaching assistants. Weekly assessment is issued with immediate result. One midterm exam and one final exam will be administrated on-site at the faculty of engineering. The course is delivered by lecturers' team. Each lecturer takes care of a group of students (around 70).

The information on this site is the part of my own teaching. I post weekly edited version of the lecture and some additional help on doing the complex homework (all in Thai). There are main lecture videos already available in MCV of this course. My videos are a condensed and emphasized on particular points in the lecture, not a substitution of the main lecture video.

previous lecture 2020

Chapter 1: How to learn, using tools, easy programming: print() video (how to learn)

Chapter 2: Data types, variables, input, operators, expression (no video)

Chapter 3: Basic string and list video

Chapter 4: Selection, if, if-else, if-elseif, flowchart video

Chapter 5: Repetition: for, while, break, flowchart video

Chapter 6: List methods, list processing video

Chapter 7: Function video

Chapter 8: String methods, string and list processing video

Chapter 9: Basic dict (dictionary, hash) video

Chapter 10: Nested loop video

Chapter 11: Tuple/set/dict video

Chapter 12: Numpy video
, Numpy tutorial video code

Chapter 13: Class and object video

This semester we have quite an interesting set of problems crafted by the teaching team. Hope students have fun working on them. These are just the description of the homework. In MCV, you will find the "pre-formed" code in colab (and a lot of example data) that you can use to write your own code and test it.

goal

1. understand the use of expression, list and function

2. familiar with saving the work, download and submit the homework

3. see the distinction between homework and Grader

4. perform the required programming task

Problem

input is a list of coordinates:

`[x0,y0,x1,y1,x2,y2 ...]`

write five functions:

1. `middle(points,i,j) `

return coordinate (x,y) of
midpoint between (xi,yi) (xj,yj)

2. `frame(points,i,j)`

return list of four points of the
coordinate of the "bounding box"

3. `distance(points,i,j) `

return length of line between
(xi,yi) and (xj,yj)

4. `intersection(points,p1,p2,p3,p4)`

return (x,y) which is
the intersection of line between p1,p2 and p3,p4

goal

understand the use of expression, list, if, and loop

problem

A building has many lifts. Given a lift with two numbers (its
configuration): first number is the present floor, the second number is
the destination floor.

We want to plan a trip with least amount of "travel" of the lift.
For example, we are at 5th floor and want to go to 9th floor, there are 4
lifts.

Current state of four lifts:

lift 1 3->1

lift 2 1->8

lift 3 2->2

lift 4 12->3

which one should we take?

the above example, lift 2 will stop at 8 then go to 9, one hop. lift
4 at 20 goes down to 3 then goes up to 5 to pick us up then goes to 9,
result = 5-3 + 9-5 = 6 hops. Conclusion, take lift 2.

input is the state of the lifts (including the number of lifts) follows by
the query (from a floor to the destination floor

output show the trip

goal

understand the use of list processing and function

A lottery has six-digits number 000000 to 999999. The prizes are

1) the 1st-5th prize

2) near 1st prize

3) the front three-digit prize

4) the last two-digit prize

one ticket and win more than one prize.

given the table of the value of each prize.

write functions to compute the winning money of a lottery

input a list of sublist each is the winning number and the prized money

write these functions

`prize_check`

next_to_first

first_digits_check

last_digits_check

total_prize

goal

understand the use of list, if, loop, string, dict, function

problem

For Olympic games 2024 (in Paris), the volleyball team needs to pass the
selection process. The selection will divide the teams into 3
groups, each group has 8 teams. Every team in a group will meet all
others. The first two highest rank teams will be admitted.

The ranking system is as follows:

1) the number of win match

2) score

win 3-0, 3-1 3 points

win 3-2 2 points

loss 2-3 1 point

loss 1-3,0-3 0 point

no show 0 point

3) the ratio of the win set divide by the loss set (set_ratio)

4) the ratio of the win point divide by the loss point (point_ratio)

data (example)

`match_result_str `

'Germany Thailand 25-22 25-22 25-20'

'Dominican_Republic Czechia 21-25 25-21 21-25 26-24 12-15'

`match_result (dictionary) `

{'team_1': ['Germany', 25, 25, 25], 'team_2': ['Thailand', 22, 22, 20]}

{'team_1': ['Dominican_Republic', 21, 25, 21, 26, 12], 'team_2':
['Czechia', 25, 21, 25, 24, 15]}

`team_stat`

'Germany': [1, 0, 3, 3, 0, 75, 64]

'Thailand': [0, 1, 0, 0, 3, 64, 75]

match_stat

{'Germany': [1, 0, 3, 3, 0, 75, 64], 'Thailand': [0, 1, 0, 0, 3, 64,
75]}

{'China': [0, 1, 1, 2, 3, 114, 107], 'Canada': [1, 0, 2, 3, 2, 107,
114]}

{'Dominican_Republic': [0, 1, 1, 2, 3, 105, 110], 'Czechia': [1, 0, 2,
3, 2, 110, 105]}

write four functions

1) `match_to_dict(match_result_str)`

2) `calculate_match_stat(match_result)`

3) `update(stat, match_stat)`

4) `load_matches(filename)`

the number of done problem in the Grader versus your grade

goal

understand the use of tuple, set,dict

write functions (more definition are embedded in the colab notebook)

`get_sid_point(stu_rec)`

get_stu_max_point(stu_recs)

get_stu_max_points(stu_recss)

get_stu_quiz_poin(stu_recss)

get_stu_completed_problem(stu_recss)

get_stu_stat(stu_recss1, stu_recss2)

where `stu_recss1`

is data of students doing the exam
problem

`stu_ress2`

is data of students practicing grader
problem

`stu_rec `

is string of student id and score such as `"MrBond,20"`

`stu_recs`

is total score of one problem in the Grader ```
{'MrBond':
50, 'stu_CompProg': 0}
```

`stu_recss`

is total score of many problems in the Grader ```
["MrBond,20",
"stu_CompProg,0", "MrBond,5],["stu_CompProg,100", "MrBond,100"]]
```

After all these functions are written correctly, you can use the supplied
plot function to see the correlation between the number of practice
problem versus the score in the exam.

last update 8 Dec 2023