Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion
Introduction to Computer Science Computer Science Programming - - PowerPoint PPT Presentation
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion
Further Reading
37
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
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
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
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