cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •basic programming methodology...

46

Upload: others

Post on 15-Mar-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn
Page 2: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

CS2030Programming Methodologies II

Page 3: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Ooi Wei [email protected]

AS6 05-15

CS2030 Office Hours: Monday 2-3pm

Page 4: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

CS1010

CS2030 CS2100CS2040

Theory andAlgorithms

ComputingSystems

SoftwarePrinciples

and Engineering

Page 5: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

What should you know?

Page 6: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

• Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc)

• Ability to learn new programming language syntax quickly

• Comfortable in writing small programs (order of hundreds of lines)

Page 7: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

What will you learn?

Page 8: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

• Understand and apply advanced programming concepts, including object-oriented concepts and functional programming concepts and constructs

• Comfortable with reading and developing medium-scale software (thousands of lines)

• Become proficient with modern Java (1.8 or above)

Page 9: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

• know the pros/cons of OOP and FP, and when to use which

• be able to pick up new languages and advanced programming concepts quickly

Page 10: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Important Dates

March 5, 2018 (Midterm)

May 3, 2018 (Final)

Page 11: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Open Book Exams

Not a memorisation-based module

Any APIs needed will be given

Page 12: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Module Homepage

https://nus-cs2030.github.io/1718-s2/

Page 13: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Piazza Q&A

https://piazza.com/class/jcaaskvbs754wh#

Page 14: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Assessment

Labs40%

Midterm25%

Final35%

Page 15: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

Labs• Where the learning happens

• Mixed of graded and ungraded labs

• Graded labs built on top of ungraded labs

• Two hours lab session per week (attendance is highly encouraged)

Page 16: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Strict policy on plagiarism

Disciplinary action will be taken :(

Page 17: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

TODO• Register for an SoC UNIX account if you do not have one

at https://mysoc.nus.edu.sg/~newacct/

• Read about the class policy at https://nus-cs2030.github.io/1718-s2/policies/index.html

• Activate your Piazza account (link emailed to you)

• Download and install Java SE 9 (aka JDK 9) on your laptop https://nus-cs2030.github.io/1718-s2/jdk/index.html

Page 18: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

��

Page 19: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

��

Page 20: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Lecture 1Abstraction and Encapsulation

Page 21: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

What is a program?

Page 22: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

processing units

instructions

data

101101010010100

0110010101001010

memory

Very very high-level view

Page 23: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

What is a type?

Page 24: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

0100 0001

Page 25: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

0100 0001 ..

character integer memory address

Page 26: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Dynamic vs. Static Type

Page 27: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

int x;x = 3;x = “hello”; // error

x = 3x = “hello” // ok

Static type

Dynamic type

Page 28: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn
Page 29: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Abstraction: Function

Page 30: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

   int i, k, j;   for (i = 1; i < n; i++)   {       k = a[i];       j = i-1;       while (j >= 0 && a[j] > k)       {           a[j+1] = a[j];           j = j-1;       }       a[j+1] = k;   }

sort(a)

Page 31: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Abstraction: Composite Data Type

Page 32: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

struct circle { double x; double y; double r;}

Page 33: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

(x, y)

rarea = 3.1415 * r * r;

Page 34: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

d

(x, y)(x, y)

r

(x1, y1)

(x2, y2)area = 3.1416*r*r; area = 0.7854*d*d; area = …

Page 35: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Abstraction Barrier

Page 36: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Abstraction Barrier

implementation of circle

usage of circleclient

implementer

Page 37: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Class and Objects

Page 38: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

Circle- x, y, r

- getArea()- getPerimeter()- contains(x, y)- :

Page 39: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

Circle

- x = 0, y = 0, r = 1

- getArea()- getPerimeter()- contains(x, y)- :

Circle

- x = 2, y = 0, r = 2

- getArea()- getPerimeter()- contains(x, y)- :

Two circle objects

Page 40: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Data Hiding

Page 41: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Let’s

Page 42: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Java checks for type compatibility strictly

Page 43: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

#include <stdint.h>#include <stdio.h>

int main(){ printf(“%d\n”, “cs2030”);}

Page 44: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

#include <stdint.h>#include <stdio.h>

int main(){ printf(“%d\n”, (int)“cs2030”);}

Page 45: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Let’s try on Java

Page 46: cs2030-lec1cs2030/1718-s2/cs2030-lec01.pdf · 2018-01-15 · •Basic programming methodology (functions, loops, conditionals, recursion, debugging, testing, etc) • Ability to learn

AY17/18 Sem 2

Java ensure type safety by preventing “potentially buggy”

operations on variables based on their types