Presentation is loading. Please wait.

Presentation is loading. Please wait.

IT1005 Lab session on week 8 (4 th meeting) Say No to Plagiarism.

Similar presentations

Presentation on theme: "IT1005 Lab session on week 8 (4 th meeting) Say No to Plagiarism."— Presentation transcript:

1 IT1005 Lab session on week 8 (4 th meeting) Say No to Plagiarism

2 Email Submission System (Review) Good, just one-two “email subject” violations for lab 4. – For those who are still blur, write “IT1005-2B YourName” in your email subject! This helps my Gmail to auto sort your submissions. Now, I have one more request. – For lab 5, instead of naming “”,write in your name! “”, “StevenHalim.doc”, “StevenHalim_q51.m”, “StevenHalim_q52.m”, “my_mean.m”, “my_var.m”, “my_sort.m”, “my_sort2.m”. Ignore Colin’s instruction, I am using my own standard here. DO NOT COPY THE INDIVIDUAL *.m FILES INTO *.doc! – No need to send me duplicate things >.< – Your MS-Word file will just contain ‘explanation’ of your code. – Or you can just embed that explanation as comments inside your m files, no need to send me an MS-Word file for this lab… – Reason: I cannot grade one student per student, too slow… It is better/faster to grade one question per question… So I need to download your files individually anyway. With so many files for lab 5, it will be a chaos if all of them are ‘u07xxxxx’! ><

3 Lab 4 – Plagiarism What are NOT ok? – Blindly/partially copy your friend’s M-file/MS-Word file with/without his/her consent! – ‘Just’ looking at other student’s MS-Word file, your answer will then tend to follow his/hers, especially if you are not sure with your own answer… – Working together to create the M-file, then copy-paste the SAME M-file to each of your MS-Word files. – Blind/partial copy from past year solution... It happens for lab 4 q2, q3, and q4. Anyway, past year solution is not always 100% correct according to current grader (me)… What are ok? – Gentle discussion: there is only thin line between plagiarism and proper discussion. – Positive discussion is ok, and it helps learning. – After ‘gentle’ discussion, you must type in Matlab code from scratch by yourself! – From your discussion, create two different Matlab programs that do the same thing! That shows me that you really understand what you are doing. This is a strong warning for Lab 4! – No more mercy for lab 5 onwards! – Plagiarism will just make your life more difficult for upcoming labs/assignment/final exam! – Note that labs is just 10%, midterm test is 20%, assignment is 30%, final is 40%! Say No to Plagiarism

4 Lab 4 – Quick Check Have you all received my reply for lab 4? – My reply contains: Your Microsoft Word file With my comments, and Your marks. – If there is something wrong with the marks, clarify it with me. – Note that your file is renamed to YOUR matriculation card name. – Help me by naming your files for lab 5 (the zip file, the Microsoft Word file) with your name! See the previous two slides for details.

5 Lab 4 – Answers (Q1) Q1 – Mastering the command ‘find’ A.[r c] = find(F < -0.8) B.Either you write 4 coordinates: (2,1) (2,2) (1,3) (2,3), or you create program to enumerate these. for index=1:numel(r) % if r has 4 elements, it will display 4 lines disp(sprintf('(%d, %d)', r(index), c(index))); end C.[r c] = find(-1 -1 % as it clearly shows the range that F is in. % The resulting coordinates (not asked): (2,2) (1,3) (2,3).

6 Lab 4 – Answers (Q2) Q2 – for loop versus while loop A.Observations: Loops ‘max’ number of times, each time prints the value of i and cnt, then finally prints the value of cnt / i. When swapped, ‘i' tells the value of ‘cnt’ in scientific notation (cannot print floating point using %d), ‘cnt’ tells the value of ‘i‘, which is not really correct if you just look at the output. The final value of ‘cnt’/i does not change since the physical ‘cnt’ actually never altered! ‘\n’ is newline character. B.While loop version of the same program: 1.max = input( ' please enter maximum count: ' ); 2.cnt = 0; i = 1; % must set the initial value 3.while i <= max % keep looping while this statement is still true 4. cnt = cnt + 0.125 * i; % if you start from i = 0; do i = i + 1; before executing this line! 5. sprintf( ' i is %d and cnt is %g\n ', i, cnt) 6. i = i + 1; % must do this so that after looping ‘max’ number of times, condition in line 3 is no longer true. 7.end 8.cnt = cnt / (i - 1); % we will over count by one after exiting the while loop! Alternative: loop from 0 to < max! 9.sprintf( ' cnt divided by i gives %g\n ', cnt) C.Differences are the one highlighted in part b above. See the comments there. Some of you are not really answering the question: for loop is “bla bla”, while loop is “bli bli”. The context is q2b! Say that the while loop version needs to have i initialized to 1 outside the loop, incremented by one inside the loop, and stopped when i <= max, it will be over count by 1 at the end, etc…

7 Lab 4 – Answers (Q3-standard) % This may be your first ever Matlab program with repetition control flow. num = 0; denom = 0; n = input('Please enter the number of modules: '); % with just ONE loop, you can get input, and compute the results simultaneously. Assume VALID inputs! for moduleID = 1:n % it is better to use ‘for loop’ as we know how much to count here (1 to n). % use meaningful variable name, e.g. ‘MC’, ‘grade’, rather than ‘f’, ‘s’ (do not follow the lab hints too much >.<)? MC = input(sprintf('Please enter the modular credit for module %d: ', moduleID)); % denom can already be updated now. % num must be latter, since it requires both ‘MC’ and ‘grade’(sequence issue!) denom = denom + MC; grade = input(sprintf('Please enter the grade point for module %d: ', moduleID)); num = num + MC * grade; end cap = num / denom; disp(sprintf('CAP = %g\n', cap)); % better use ‘disp’ so that the ‘ans’ is not printed!

8 Lab 4 – Answers (Q3+protection) num = 0; denom = 0; n = 0; % initialize n properly! while n < 1 n = input('Please enter the number of modules (integer >= 1): '); end for moduleID = 1:n MC = -1; grade = -1; % initialize MC and grade properly! while MC < 1 MC = input(sprintf('Please enter the modular credit (integer >=1) for module %d: ', moduleID)); end denom = denom + MC; while grade ~= (0:0.5:5) % complex statement, this is to test whether grade is one of the valid option? grade = input(sprintf('Please enter the grade point (floating point within [0.0.. 5.0]) for module %d: ', moduleID)); end num = num + MC * grade; end cap = num / denom; disp(sprintf('CAP = %g\n', cap)); Good that some of you remember that I have mentioned extreme cases during lab 0/1 (the division by zero stuff).

9 Lab 4 – Answers (Q4-standard) % This may be your first ever Matlab program with decision control flow. … continued from q3% Please… DO NOT give me the answer for q3 again! Redundant! % Either write this line “continued from q3” or just combine your q3 and q4 answers! % use if-elseif-elseif-elseif-end rather than using nested if-else-end (too skewed to the right and you may confused with ‘end’s!) if cap > 4.5 % what if cap == 4.5? disp( ' Genius!! ' ); elseif cap >= 4.0 & cap < 4.5% is this cap < 4.5 needed? disp( ' Pretty darn smart!! ' ) elseif cap >= 3.5 & cap < 4.0 disp( ' Smart! ' ); elseif cap >= 3.0 & cap < 3.5 % how to explain the overlapping ranges? disp( ' Quite Clever! ' ); elseif cap >= 3.2 & cap < 3.5 % this is subset of the above disp( ' Clever! ' ); elseif cap >= 2.5 & cap < 3.2% 3.0 – 3.2 are already classified as ‘Quite Clever!’ above disp( ' Hmmm… ' ); elseif cap >= 2.0 & cap < 2.5 disp( ' Ohh need to work harder! ' ); elseif cap < 2.0 disp( ' Oops.. ' ); end

10 Lab 4 – Answers (Q4-better) … continued from q3 if cap >= 4.5 % what if cap == 4.5? Assume it is genius (first class), cap value cannot be > 5.0 anyway disp('Genius!!');% if our previous inputs are valid (see slide 7, q3+protection). elseif cap >= 4.0% cap < 4.5 is NOT needed as it is true if it does not fit into the first case above! disp('Pretty darn smart!!') elseif cap >= 3.5 disp('Smart!'); elseif cap >= 3.2 % reordered, ‘Clever!’ is cleverer than ‘Quite Clever!’ disp('Clever!');% new range = [3.2.. 3.5) elseif cap >= 3.0 disp('Quite Clever!'); % new range = [3.0.. 3.2) elseif cap >= 2.5 disp('Hmmm…'); % new range = [2.5.. 3.0) elseif cap >= 2.0 disp('Ohh need to work harder!'); else% obviously this case is cap < 2.0 disp('Oops..'); end % Note: there are other ways to answer this question, all are ok as long as proper assumption is given!

11 The Art of Indentation (1) Indentation depth = 1 tab, 2/3/4 spaces – It is a matter of style, stick with one and be consistent! Increase the indentation level after – Decision statements (‘if’, ‘switch’), or – Repetition statements (‘for’, ‘while’)! Decrease the indentation level – As soon as you hit an ‘end’ statement. If you still unsure, study the next few slides!

12 The Art of Indentation (2) Wrong Example Too flat: a = 2; if a >= 1 b = 0; while b < 7 disp(‘hey’); b = b + 1; end disp(‘last line’); Wrong Example Zig Zag: a = 2; if a >= 1 b = 0; while b < 7 disp(‘hey’); b = b + 1; end disp(‘last line’);

13 The Art of Indentation (3) Wrong Example Indenting if/while: a = 2; if a >= 1 b = 0; while b < 7 disp(‘hey’); b = b + 1; end disp(‘last line’); Wrong Example Wrong match: a = 2; if a >= 1 b = 0; while b < 7 disp(‘hey’); b = b + 1; end disp(‘last line’);

14 The Art of Indentation (4) Wrong Example Too many white spaces: a = 2; if a >= 1 b = 0; while b < 7 disp(‘hey’); b = b + 1; end disp(‘last line’); Good Example Balanced, neat: a = 2; if a >= 1 b = 0; while b < 7 disp(‘hey’); b = b + 1; end disp(‘last line’); Indentation level 0 Indentation level 1 Indentation level 2

15 Review on Functions So far, codes that we have written reside in ONE M-file only. – As the code getting more complex, it can be very messy. We need to ‘modularize’ them into logical functions. – Group of codes that can be reused again in the future. Example of functions that we have used so far: – sin, cos, abs, input, disp, sort, max, min, etc. The syntax is easy, just remember this: function returnValue = functionName(argument1, argument2,…,argumentN) % If you want to add help messages, write it here. Separate it with blank line! % Write your Matlab codes here, get the arguments, process them, return the result! % Usually, functions do NOT ask for input/print output! (exception: input, sprintf, etc) % Usually, we suppress all the ‘intermediate’ output by giving ‘;’ at every line returnValue = finalValue; % assign the result to this variable (returned to caller)! Save the function into a new M-file – With exactly the same file name as the function name! Input(s) to your function Output(s) of your function

16 Example (Related to Lab 5) Create a function “my_max.m” that given an array of numbers, return the maximum number inside the array. Example: – A = [ 1 3 ; 4 2 ]; % This is an example with 2-D array – % Not all Matlab commands behave similarly for 1-D (row array) versus 2-D! – my_max(A) – ans = – 4 Testing: – Compare our own implementation with Matlab’s default ‘max’! – my_max(A) == max(max(A)) % must do max(max(A)) for 2-D array! – my_max(A) == max(A(:)') % or do this, clever trick for any dimension! If ans = 1 for various types of A, likely that you have done it correctly =). If ans = 0 for an instance of A, then you are still wrong. This is ok since my input are all Integers – The test is different if the input is not integers! % test if absolute difference < eps

17 my_max.m function maxValue = my_max(inputArray) % my_max(inputArray) % This function will return the max element of inputArray % Only one argument will be accepted... % This is the last line of the help message... % Find the max element in inputArray maxValue = inputArray(1); % Assume that the first element is the max for index = 2:numel(inputArray) % Iterate through the rest to find the true max if inputArray(index) > maxValue maxValue = inputArray(index); end % Look, I do NOT assign returnValue = maxValue as the last line of my function % I can use maxValue (return value) like normal variable, highlighted in red :)

18 Lab 5 - Overview Sample Mean = sum all n items divided by n Sample Variance = (standard deviation) 2 = sum of squared deviation divided by (n – 1) – Not by ‘n’. There is a reason for this. *See Statistics textbook* Sorting – Given unsorted input, e.g. [5 2 3 1]; – Do something with these numbers (sort it). – Return the sorted output of the input, e.g. [1 2 3 5]; Bubble sort = one of the ‘easiest’ (but slow) sorting algorithm. – Google this term to study more! rand [0.0.. 1.0] versus randn (normalized with mean 0, var 1). – randn(x) will give you n*n matrix of random numbers You need to do something else to create row array! % randn(1,number_of_columns)

19 Lab 5 – Free and Easy Time Now, you are free to explore Matlab, especially to find answers for Lab 5. No extra challenge this time >.< Let’s just focus on finishing lab 5 on your own, catch up if you are still behind, or to do your 30% term assignment. PS: Now we are entering the second half of the semester. Your lecturer have changed to Dr Saif Khan. And the topics shifted to ‘applications’ of Matlab.

Download ppt "IT1005 Lab session on week 8 (4 th meeting) Say No to Plagiarism."

Similar presentations

Ads by Google