Introduction to Computer Science Computer Science Programming - - PowerPoint PPT Presentation

introduction to computer science
SMART_READER_LITE
LIVE PREVIEW

Introduction to Computer Science Computer Science Programming - - PowerPoint PPT Presentation

Introduction to Computer Science Xuefeng Cui Course Description Introduction to Computer Science Computer Science Programming Languages Xuefeng Cui Group Discussion Tsinghua University 0 Contact Information Introduction to Computer


slide-1
SLIDE 1

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Introduction to Computer Science

Xuefeng Cui Tsinghua University

slide-2
SLIDE 2

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Contact Information

Instructor: Xuefeng Cui Office hour: 2:00-3:00PM Thursdays Office: FIT 4-606-2 Email: xfcui.uw@gmail.com Website: iiis.tsinghua.edu.cn/∼xfcui/intro2cs

1

slide-3
SLIDE 3

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Course Description

Goal: to provide foundational knowledge about Computer Science (CS)

Variety topics in CS Not a programming course No university-level pre-requirement

2

slide-4
SLIDE 4

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Course Outline

1 Introduction lecture 2 Invited lectures 3 Tutorials

3

slide-5
SLIDE 5

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Part 1: Introduction Lecture

What is CS? Which programming languages to learn?

4

slide-6
SLIDE 6

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Part 2: Invited Lectures

By invited pioneer researchers One topic per lecture

Cryptography Algorithms and data structures Machine learning Computational biology

5

slide-7
SLIDE 7

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Part 3: Tutorials

By the TA: Da Wei One chapter per tutorial

Read the chapter before attending a tutorial Help your understanding instead of teaching Self-learning practice

6

slide-8
SLIDE 8

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Course Outline

1 Introduction lecture: today 2 Invited lectures: by invited researchers 3 Tutorials: by the TA

7

slide-9
SLIDE 9

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Marks

Attendance: 10% Assignments: 20%

6 assignments

Midterm exam: 30%

November 1, 2016

Final exam: 40%

December 27, 2016

Pass requirement:

Total mark > 60% Midterm + final > 42%

8

slide-10
SLIDE 10

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Introduction Lecture

What is Computer Science (CS)?

Definition Examples

Which programming languages to learn? Group discussion

9

slide-11
SLIDE 11

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

What is Computer Science?

Definition: the scientific and practical approach to computation and its applications

Theoretical: to understand the nature of computation Applied: to solve real world problems

Scope: variety topics in CS

10

slide-12
SLIDE 12

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Example 1: Casino Lawsuit

Simplified: who has the bigger number?

11

slide-13
SLIDE 13

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Example 1: Casino Lawsuit

Scenario: you lost a lot of money after 100 games Casino: 6, 6, 6, 6, 6, 6, ...

Probability: 1/6100 Argument: cheating?

You: 2, 6, 4, 3, 1, 3, ...

Probability: 1/6100 Argument: fair?

12

slide-14
SLIDE 14

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Example 1: Casino Lawsuit

Kolmogorov complexity: a random sequence cannot be compressed Casino: 6, 6, 6, 6, 6, 6, ...

Description: 100 numbers of 6 Conclusion: cheating

You: 2, 6, 4, 3, 1, 3, ...

Description: 2, 6, 4, 3, 1, 3, ... Conclusion: fair

13

slide-15
SLIDE 15

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Example 2: Public-Key Cryptography

Scenario: Alice sends message m to Bob Goal: Chris cannot know m Theorem: mk(p−1)(q−1)+1 ≡ m (mod pq) Bob’s keys: a, b, n

ab = k(p − 1)(q − 1) + 1 n = pq

Observation: (ma)b ≡ mab ≡ m (mod n)

14

slide-16
SLIDE 16

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Example 2: Public-Key Cryptography

Procedures:

1 Alice says “Hello” to Bob. 2 Bob says “a and n” to Alice 3 Alice calculates e = ma mod n 4 Alice says “e” to Bob 5 Bob calculates d = eb mod n

Observation: d ≡ eb ≡ (ma)b ≡ m (mod n)

15

slide-17
SLIDE 17

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Example 2: Public-Key Cryptography

Chris knows a, n and e Chris also knows public-key cryptography

m = eb mod n ab = k(p − 1)(q − 1) + 1 n = pq

Chris does not know b How could Chris possibly know m? What if p and q are large (22048)?

16

slide-18
SLIDE 18

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Theoretical Computer Science

Definition: to understand the nature of computation Topics:

Kolmogorov complexity Cryptography Algorithm and complexity Computability

17

slide-19
SLIDE 19

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Example 3: Tor Project

Scenario: Alice sends a message to Bob Goal: nobody can know Alice is talking to Bob

18

slide-20
SLIDE 20

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Example 3: Tor Project

Tor circuit from Alice to Bob How much does everyone know?

19

slide-21
SLIDE 21

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Example 3: Tor Project

Tor circuit from Alice to Jane Why 3 Tor nodes?

20

slide-22
SLIDE 22

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Example 4: IKEA Kitchen Demonstration

Virtual reality (VR): using computer-generated graphics and sounds to replicate reality

21

slide-23
SLIDE 23

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Example 4: IKEA Kitchen Demonstration

Applications of VR:

Retail Video games Education and training Computer-aided design

22

slide-24
SLIDE 24

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Applied Computer Science

Definition: to solve real world problems Topics:

Tor project Virtual reality Augmented reality Computational biology

23

slide-25
SLIDE 25

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Summary

Today: what is CS?

Theoretical Applied

Next week: cryptography

24

slide-26
SLIDE 26

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Introduction Lecture

What is Computer Science? Which programming languages to learn?

As your first programming language For a specific task

Group discussion

25

slide-27
SLIDE 27

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

What is A Programming Language?

Definition: a language to communicate instructions to a computer Popular programming languages:

26

slide-28
SLIDE 28

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Which programming languages to learn?

As your first programming language: Java, Python

Popularity Generality Simplicity

For a specific task: no simple answer

Execution time ⇔ productivity Available library (or software) Available hardware

27

slide-29
SLIDE 29

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Argument 1: Execution Time ⇔ Productivity

Twitter: an online social networking service Implementation:

Ruby (2006-2009) ⇒ Scala, Java (2009-2011)

Did Twitter make a mistake?

28

slide-30
SLIDE 30

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Argument 1: Execution Time ⇔ Productivity

What was changed in 2009?

Start-up ⇒ large company Productivity (length of program) ⇒ execution time 200-300 ⇒ 10,000-20,000 requests per second per host

Ruby v.s. Java Length of program 1 : 7 Execution time 50 : 1

29

slide-31
SLIDE 31

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Argument 2: Available Library

Donald J. Trump’s tweets:

Android v.s. iPhone (different?)

David Robinson’s sentiment analysis:

Tasks: tweets download, sentiment analysis Length of program: < 350 lines

30

slide-32
SLIDE 32

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Argument 2: Available Library

Library: a collection of non-volatile resources used by computer programs Python: > 87, 000 libraries

NLTK: natural language processing Scikit-learn: machine learning Theano: deep learning BioPython: computational biology

Suggestion: Python + NLTK

31

slide-33
SLIDE 33

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Argument 3: Available Hardware

Intel Core i7-6700K (single core): 4 GHz Intel Core i7-5960X Extreme Edition (CPU): 3 GHz x 8

Speed-up factor: 6

Nvidia Titan X (GPU): 1.4 GHz x 3584

Speed-up factor: 1254

32

slide-34
SLIDE 34

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Argument 3: Available Hardware

CPU: OpenMP GPU: CUDA CPU + GPU: OpenCL Distributed systems: OpenMP + MPI

33

slide-35
SLIDE 35

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Which programming languages to learn?

As your first programming language: Java, Python For a specific task:

Execution time ⇔ productivity Available library (or software) Available hardware

34

slide-36
SLIDE 36

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Rapid Growth of Instagram

Instagram: an online mobile photo-sharing and social networking service

October 2010: initial release, 2 engineers April 2012: $715, 000, 000 USD deal, 5 engineers

Is Facebook crazy?

100 million active Instagram users 321 million people in USA

35

slide-37
SLIDE 37

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Rapid Growth of Instagram

How can 5 engineers accomplish such rapid growth?

Productivity: Python Available library: CouchDB Available hardware: Amazon EC2

36

slide-38
SLIDE 38

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Further Reading

37

slide-39
SLIDE 39

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Introduction Lecture

What is Computer Science? Which programming languages to learn? Group discussion

In-class group discussion Assignment 0

38

slide-40
SLIDE 40

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Group Discussion

4-5 students per group 1-2 minutes of self-introduction for each student

Name, background, short plan

15-30 minutes of discussion

Programming language, algorithm, CS

English please!

39

slide-41
SLIDE 41

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Assignment 0

How do you rate your English communication skills (listening, speaking, reading, writing)? Who is sitting on your left? What is his/her background and future plan on CS? What did you learn from the group discussion? How could you learn more from future group discussions?

40

slide-42
SLIDE 42

Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion

Assignment 0

One paragraph (> 5 sentences) per question No more than two pages in total English please! Word (or Latex) Email to TA by 8PM, September 23

41