MA1008 Introduction to Computational Thinking AY 2019/2020C/C++

Java Python MA1008 Introduction to Computational Thinking

AY 2019/2020

Tutorial 1

This tutorial gets you to think about the workings of computers and computer languages, and solving problems computationally, constructing the steps for a solution.

At this stage, we are not yet too concerned about the language we are to use.

1.    (i) Name the two levels of languages that are normally involved in the programming process. (ii) What are they for?

(iii) What is the relationship between them?

2.    (i) What is a compiled language? (ii) What is an interpreter?

(iii) Give two examples for each.

3.    (i) How does a computer represent numbers?

(ii) How does it represent non-numeric data such as letters and colours?

4.    Construct the steps for making a cup of coffee. You have the choice of instant or powdered coffee, with or without sugar, with or without milk. Assume you use a percolator for the powdered coffee.

5.    Construct the steps for solving a quadratic equation, starting from getting the inputs for the coefficients through to delivering the solutions.

6.    Construct the steps for swapping two numbers stored in two variables.

7. Construct the steps for finding the maximum (or minimum) in a list of 2 variables. Then extend to 3 variables. Then extend it to many (say 100) variables.

Week 3 Tutorial: Data types and variables

This tutorial is on variables, data types and simple Python operations. It contains a few things that have   not been explicitly covered in the video lectures. But they are simple enough; you should be able to do a bit of reading ahead and find the answers.

1.   There are different data types in Python. Why is there a need to have distinction between different types of data?

2.    Name the data type of the following values or the variables on the left hand side of the expressions:

(i)     2

(ii)    "2"

(iii)    "Two"

(iv)    6.71

(v)     4/2

(vi)   7/3

(vii)   6.5*2

(viii) x = 1 + 2

(ix)   y = 1.0 + 2

(x)     z = "1.0" + 2

3.    If we enter the following lines one by one into the Python shell, which line below will result in an error? Why? What type of error is it? For those valid lines, which of them are Python statements? And which of them are Python expressions?

a = d

c = 10

a = c + 1

a + c = c

3 + a

print(A)

print("b*b + a*a = c*c")

7up = 10

import = 1003

print("c" = 1)

a ** 3

b = math.pi * c

a,b,c = c,1,a

b,c,a = a,b

c = b = a = 7

Note: do not use acomputer to solve them!!!

4.    What is the outcome of the following code?

x = 4

y = 5

print(x//y)

5.    Given the expression:

30-3**2+8//3**2*10

What is the outcome?

Apply parenthesis to the expression to achieve the same outcome.

6.    What will be the outcome of the following code:

my_var1 = 7.0

my_var2 = 5

print(my_var1%my_var2)

7.    Swap the values of two variables a and b, with a = 5 and b =10.

(i)   Swap using a third variable

(ii)  Swap without using a third variable

(iii) Swap using Python assignment way

Week 4 Tutorial: Program control – decisions and branching

This tutorial is on program and output control, in making decisions and branching.

1.    What is printed in the follow statements

times = 5

print ("## "*times)

2.    Assuming that x = 11, y = 6, z = 2, c = 'a', d = 'z', what are the values of the expressions in the following table:

Value of expression

x == 5 or y != 3

not (x > 9 and y != 23)

x <= 1 and y == 6 or z < 4

5 and y !=8 or 0

x >= y >= z

c >= 'A' or d >= 'Z'

c <= 'e' <= d

c <= 2 <= d

c == 'a' or 'e' or 'i' or 'o' or 'u'

d == 'a' or 'e' or 'i' or 'o' or 'u'

3.   The code below determines if a given number is small, medium, large or out of range. Correct the errors that exist. After the correction, what is printed if you input 7?

num1 = input ("Enter a positive integer: ")

if num1< 5

if num1 <= 0

print num1 ("is out of range")

else

print num1; (" is a small value.")

elseif num1 = 5

print num1; ("is a medium value. ")

else    #num1 > 5

print num1; ("This is a large value. ")

4.    What is the difference in the logic of the following two sets of code:

(i)    if BooleanA:

Suite A

if BooleanB:

Suite B

(ii)  if BooleanA: Suite A

elif BooleanB:

Suite B

5.    Write a program that prints the largest of three numbers.

Tutorial Week 5: Program control – loops

This tutorial is on program control, going round loops making repeated computations.

1.    Consider the function range(-4,11), which of these values are in the range: -5, -4, -3, 10, 11, 12?

2.    Write a program that prints the numbers 1 … 12 all in one line and then 13 … 24 in another line, all using only one for loop. Write two versions, with the numbers separated by (i) a space and (ii) a   comma.

3.    What are printed in Line 1 and Line 2?

i = 1

j = 0

while i < 10:

i += 1

j += 2*2

print (i)   # Line 1

print (j)   # Line 2

4.   Assume that X has agiven value, rewrite the following for loop as a while loop:

for i in range(1, X+1):

if X % i == 0:

print(i)

5.    Explain what this program does:

sum = 0

MA1008 Introduction to Computational Thinking AY 2019/2020C/C++ while True:

num = int(input("Enter a number:"))

if num <= 0:

break

else:

if num%2 == 0:

continue

else:

sum += num

6.   The following program has a for loop inside a while loop. What are printed?

for x in range(10):

y = x

while y < 7:

print(y, end = " ")

y += 2

if y > 5:

break

Week 6 Tutorial: Strings

This tutorial gets you familiar with strings and operations on strings.

You should discuss each tutorial in small groups, and then your tutor will ask some of you to discuss your solution in class. There are more questions here than can be covered in the limited class time. Attempt the first four questions in class within the first hour. You should attempt the rest at your own time, in order to get familiar with the subject matter.

1.    Given the string "Introduction to Computational Thinking", write an expression to i.    print the first character

ii.    print the last character, assuming you don’t know the string length

iii.    print the last character using len()

iv.    print the first word

v.    print the 4th  to 14th  characters.

vi.    print the 4th  to 14th  characters in the reverse order

vii.    print every alternate character starting from the second

2.    Study the Python methods associated with string, and write down the expressions for doing the

following, given the string "it's a beautiful day." (Not all functions have been covered in class.)

i.   Capitalize the first word ii.   Capitalize each word

iii.   Convert the whole string to upper case iv.    Remove all the spaces

v.   Count the number of a specific character in the string

3.    Write down the output of the following statements. Mark the spaces with a □ . for fahr in range (32, 200, 50):

cels = (fahr-32)*5/9

print("{:>4.0f} Fahrenheit = {:<6.2f} Celsius".format(fahr, cels))

4.    Given the assignment

S = "I am testing my program"

What is the outcome of the following statements? i.    S[0] = "J"

ii.   print(S)

iii.   print(S[::3])

iv.   print(S[12:4:-1])

5.    What are printed by the following expressions:

i.   print("Nanyang"*3)

ii.   print("Nanyang"*3.0) iii.   print("Nanyang"*-3)

iv.   print("Nanyang" + "Technological" + "University")

v.   print("Nanyang" - "N")

6.    Write down what is printed by the code below once you give the input (use your own input).

string = input("Enter a string: ")

y = 0

for c in string:

print(y, c)

y += 1

7.    Without using division, write one (yes, one only) statement that would store the last digit of an integer as an integer. For example, the statement should store the integer 5 given the integer 12345.

Week 7 Tutorial: Composite data types - List, Tuple and Dictionary

There are more questions here than can be discussed within one hour in class. Discuss the first five questions in class. Students are to attempt the rest of the questions on their own.

1.    i.  What are mutable and immutable types? Lists the types you know for each. ii. What are iterables? List the ones you know.

2.    Write Python code to create a list of the squares of all numbers between 1 to 20.

3.    Tuples are immutable. Yet, we can modify the tuple in the list L = [1, (2, 3), 4] to L = [1, (5, 6), 4]. Why?

4.    Create a dictionary that uses the integers 1 – 12 as keys for the months in words from January to December. Then print the months in words using the keys.

5.    Consider the following code:

list1 = [1, 2, 99] list2 = list1

list3 = list2

list1 = list1.remove(1)

print(list3)

i.     What is printed?

ii.    Modify the code so that list3 is unchanged.

6.    What will the following list return?

[ (n*n) for n in range(13) if (n%2==0)]

7.    What can be done with lists that cannot be done with strings? Name three valid operations for each.

8.    What are printed in the following code:

langs = ["Python", "C++", "Fortran", "Algol", "Java"]

print (langs)

del langs[1]

print (langs)

del langs[:]

print(langs)

9.    The following code attempts to convert the list  [1, 2, 3, 4] to the string  "1234", but it doesn’t work. Fix it.

L = [1, 2, 3, 4]

newString = "".join([a for a in L])

10. i.     Is it possible to have a tuple as a member of a list? Why? ii.    Is it possible to have a list as a member of a tuple? Why? iii.   What differentiates a tuple from a list?

Week 8 Tutorial: Functions

The first five questions are for discussion in class. Students should attempt the rest in their own time.

1.    List the parts in a function definition and explain the purpose of each part.

2.    Give three reasons why functions are useful.

3.    What does this function do?

def Func(num):

total = 0

while num > 0:

total = total + num*(num-1)

num = num -1

return total

4.    What is a function call? How do you call a function? Given the function in Q3, what are the values of x in the following statements?

i.       x = Func(5)

ii.       x = Func(5.5) iii.       x = Func('5') iv.       x = Func()

5.    What does the following code print? Explain.

number = 50

def Func(number):

print(number)

number=2

print(number)

Func(number)

print(number)

6.    Examine the following code and predict the outputs.

confusing = 100

def do_work(num):

confusing = -50

confusing += num

print("confusing in do_work is ", confusing)

return confusing

confusing = 100;

print("confusing in main is ", confusing)

confusing += do_work(confusing);

print("confusing in main is ", confusing)

confusing += do_work(confusing)

print("confusing in main is ", confusing)

confusing += do_work(confusing)

The same code is in the file confusing.c in the hands-on folder. Copy it into the working folder and run it. Are your predictions the same as the program output?

7.    A year is a leap year if it is divisible by 4 and not by 100, or if it is divisible by 400. Otherwise, it is not a leap year. Write a function that takes in an integer value and returns true if the value represents a  leap year and false otherwise.

8.    Define a 2D vector as a 2-tuple. Write a function that takes two vectors v1 and v2 as inputs and returns their sum.

Week 9 Tutorial: More on Functions

Tutorial Questions:

1.    i.     Where in a program can a function be defined?

ii.    Can functions be defined inside a function?

iii.   What is an optional (also called default, named or keyword) parameter in a function and how is it created?

iv.   How many optional parameters can a function have?

v.    Can there be a mix of optional and non-optional parameters in a function parameter list?

2.    Given this function definition header

def func(p1, p2 = 0.0, p3 = "z", p4 = 100) which of these calls to the function are correct and which not?

i.    c = func(12, 7.2)

ii.    func(0, p3 = "abc") iii.    func(10)

iv.    func("xyz", "12.3", p4 = 5)

v.    func(10, p4 = 2, p3 = "alpha", p2 = 1.0)

vi.    func(p4 = 2, p3 = "alpha", p2 = 1.0, 10)

3.    What is printed in the following program? Explain.

def total(num):

sum += num

sum = 0

for i in range(1, 5):

total(i)

print(sum)

4.    What are printed in the following programs?

def output(message, times = 1):

print(message*times)

output ("Computational Thinking")

output ("Very easy", 3)

5.    What are printed in the following programs?

a = 1

b = 2

c = 3

d = 123.4

def add(a, b, c=4):

global d

a += b

b += 1

d += a

print(a, b, c)

return a+b+c

for i in range(1, 4):

a = add(i, b)

print(a, b, c)

print(d)

What ha ppens if the line “global d” is removed from the function add()?

Week 10 Tutorial: Files and exception handling

1.    Explain what is (i) a binary file and (ii) a text file. What are the key differences between them?

2.    Write a statement that opens a file called MyFile.txt for reading and assign it to a file object MyFile.

3.    Modify your solution to the above question to handle properly the situation when the file opening fails, by asking the user to enter the filename again, instead of crashing the program.

4.    Write a statement that closes the above file object. Why is explicitly closing a file necessary, instead of leaving it to close upon exiting from the program?

5.    Under what conditions can you fail to open a file for reading? Under what conditions can you fail to open a file for writing?

6.    Apart from open and close, list the different operations one may need to do with a file. Provide the corresponding Python function that performs each operation, with appropriate parameters where  necessary.

7.    Explain the programming logic associated with exception handling by answering these questions: a.    What is an exception and when do you encounter it?

b.    Explain the working principles behind the try … except … structure.

c.    How is an exception caught?

d         

  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《计算流体动力学导论2》是一本关于计算流体力学的入门教程,该书是第二版。计算流体力学是研究流体力学问题的数值模拟方法,它将流体力学方程组转化为离散的数学模型,并利用计算机进行求解。 该书主要内容包括流体力学基础知识、数值解方法、网格生成技术和数据可视化等方面。首先介绍了一些流体力学基本概念,例如流动的守恒方程、流体的物性参数等,为后续的学习打下了基础。 接着详细介绍了求解流体力学问题的数值方法,包括有限差分法、有限体积法和有限元法等。这些方法可以将流体力学方程转化为线性方程组进行求解,并给出了其应用的条件和适用范围。 此外,书中还介绍了网格生成技术,在数值模拟中网格的质量和分辨率对结果的准确性有很大影响。该章节详细介绍了一些常用的网格生成方法,例如结构化网格和非结构化网格,并讨论了不同方法的优缺点。 最后一部分是数据可视化,这是对计算结果进行后处理的重要环节。通过可视化技术,我们可以直观地观察流体运动和各个物理量的分布情况,进一步分析流体现象。 《计算流体动力学导论2》是一本系统介绍计算流体力学基本理论和方法的教程书籍,适用于从事流体力学数值模拟研究的学生和科研人员。它通过清晰的讲解和实例分析,帮助读者理解和应用计算流体力学方法,从而更好地解决流体力学问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值