Week 6. Lab 1 and 2 results Common mistakes in Style Lab 1 common mistakes in Design Lab 2...

19
CS1010 Discussion Session Group 8 Week 6

Transcript of Week 6. Lab 1 and 2 results Common mistakes in Style Lab 1 common mistakes in Design Lab 2...

Page 1: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

CS1010 Discussion Session Group 8

Week 6

Page 2: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Outline

Lab 1 and 2 results Common mistakes in Style Lab 1 common mistakes in Design Lab 2 common mistakes in Design

Tips on PE preparation Tutorial Questions for Week 6

Might not be able to cover all of them I’ll explain Question x, x, and x If you would like to explain another

question, raise hands and I’ll explain

Page 3: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Lab 1 and Lab 2 Common Mistakes in Style

Discussion group? Name? Program description? (-1)

Function description (-1) Did not write or write in weird places

Bad identifiers Name (-2) If you want to use k, n, at least comment

it somewhere to tell what they are Superfluous comments (-1)

//executable statement

Page 4: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Lab 1 and Lab 2 Common Mistakes in Style

Indentation is wrong in all your programs

No deduction on marks this time Try to utilize the auto-indentation

feature in your vim editor Better don’t use tab for indentation;

it causes problem on Coursemarker.

Page 5: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Lab 1 General Result

One exercise is 10 marks. In total 30 marks.

1 Attempt mark is given when you try all exercises

The majority of you are in the range 29~30

Page 6: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Lab 1 Common Mistakes in Design

Did not write functions at all, when the question explicitly asks to write some functions. (-5 for each omitted function)

Declare a function which return integer; but does not use the returned value in main function at all (-2)

Complex or redundant if else statements (-2) If (x%2==0) {…} else if (x%2==1) {…}

else {…}

Page 7: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Lab 1 Common Mistakes in Design

Output result in functions which are supposed to do computation only Normally we do input and output in main

function; and complex computation is carried out by functions. Unless the function is specifically designed to output (print_cookies)

Page 8: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Lab 2 General Result

Very Serious Mistakes Missed the Deadline▪ 0 mark for everything…even the attempt mark.

Used Recursion (explicitly forbidden in question)▪ 0 mark for correctness and 0 mark for design▪ But since this is first time, so I’m more lenient (30

marks for correctness) Did not test at all before submission (failed all

test cases)▪ 0 mark for correctness▪ Even if some test cases happen to be true due to hard

coding

Page 9: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Lab 2 Ex1: The 3x+1 Problem

Take any natural number n. If n is even, divide it by 2 to get n/2; if n is odd, triple it and add 1 to obtain 3n + 1. Repeat the process indefinitely. No matter what number your start with, you will always eventually reach 1.

While loop needed n=1 is terminating condition

Page 10: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Lab 2 Ex1: The 3x+1 Problem //some function description here… int count_iterations(int n) { int count = 0; // number of iterations

while (n > 1) { if (n%2 == 1) n = 3*n + 1; else n /= 2; count++; }

return count; }

Page 11: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Lab 2 Ex2: Candles

Alexandra has n candles. He burns them one at a time and carefully collects all unburnt residual wax. Out of the residual wax of exactly k (where k > 1) candles, he can roll out a new candle.

n/k gives new rolled out candles n%k gives candles left

Page 12: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Lab 2 Ex2: Candles

// This function computes the total number of candles burned. int count_candles (int n, int k) { int candles_burned = 0;

while (n >= k) // n is the total number of candles, k is the residual wax. { candles_burned = candles_burned + ((n/k) * k); // candles burned is the total number of residual wax sets

multiply //the number of candles in that set. n = (n/k) + (n%k); // n is the number of new candles plus the previous

remaining //candles. }

candles_burned = candles_burned + n; return candles_burned; }

Page 13: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Lab 2 Ex2: Candles

int count_candles(int candles, int residuals) { int actual_residuals = candles; // initial number of residuals int new_candles;

while (actual_residuals >= residuals) { new_candles = actual_residuals/residuals; candles += new_candles; actual_residuals = actual_residuals%residuals +

new_candles; }

return candles; }

Page 14: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Lab 2 Ex2: Candles

Inefficiency if you write thisint count_candles (int n, int k) {

int i = n; // Initial number of candlesint count = 0; // Number of new candles

while (n >= k) // Pre-condition, execution stops when n < k

{n -= (k - 1); // After each set of k candles

are burntcount ++; // 1 new candle can be

rolled out}

return i + count; // Total numbers of candles equals to initial number

// of candles plus new candles created.}

Page 15: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Lab 2 Ex3: Fortune Cookies

Write a program cookies.c to read in a positive integer and add up its digits repeatedly until the sum is a single digit. For example, if the integer is 12345, then adding its digits (1 + 2 + 3 + 4 + 5) yields 15, and adding its digits again (1 + 5) yields 6. Hence the answer is 6.

Page 16: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Lab 2 Ex3: Fortune Cookies

Some of you uses only one while loop (did not consider the case when yielded-sum is not a single digit again)int sum_digits (int number)

{while (number >= 10)

{number %= 10;number += number;

}return number;}

Page 17: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Lab 2 Ex3: Fortune Cookies

Some of you did not consider the case when the input integer is already a single digit.

int sum_digits(int number){

int total;int temp;

while(number >= 10){

total = 0;while(number != 0){

temp = number % 10;

total += temp;number /= 10;

}number = total;

}

return total;}

Page 18: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Lab 2 Ex3: Fortune Cookies

Some of you write algorithm which is not general

int sum_digits (int number){

int digit1, digit2, digit3, digit4, digit5, digit6,

digit7, digit8, digit9, digit10;

while (number >= 10){digit1 = number / 1000000000;digit2 = (number % 1000000000) /

100000000;digit3 = (number % 100000000) /

10000000;digit4 = (number % 10000000) / 1000000;digit5 = (number % 1000000) / 100000;digit6 = (number % 100000) / 10000;digit7 = (number % 10000) / 1000;digit8 = (number % 1000) / 100;digit9 = (number % 100) /10;digit10 = (number % 10);number = digit1 + digit2 + digit3 + digit4

+ digit5+ digit6 + digit7 +

digit8 + digit9 +digit10;}

return number;}

Page 19: Week 6.  Lab 1 and 2 results  Common mistakes in Style  Lab 1 common mistakes in Design  Lab 2 common mistakes in Design  Tips on PE preparation.

Prepare for your PE

Read your Lab 1 and Lab 2 feedback Understand all lecture notes covered Do some hands-on practice Good sleep before that day