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 Science Xuefeng Cui Course Description Instructor: Xuefeng Cui Computer Office hour: 2:00-3:00PM Thursdays Science Programming Office: FIT 4-606-2 Languages Email: xfcui.uw@gmail.com Group Discussion Website: iiis.tsinghua.edu.cn/ ∼ xfcui/intro2cs 1
Course Description Introduction to Computer Science Xuefeng Cui Course Description Goal: to provide foundational knowledge about Computer Computer Science (CS) Science Programming Variety topics in CS Languages Not a programming course Group No university-level pre-requirement Discussion 2
Course Outline Introduction to Computer Science Xuefeng Cui Course Description Computer 1 Introduction lecture Science 2 Invited lectures Programming Languages 3 Tutorials Group Discussion 3
Part 1: Introduction Lecture Introduction to Computer Science Xuefeng Cui Course Description Computer Science What is CS? Programming Which programming languages to learn? Languages Group Discussion 4
Part 2: Invited Lectures Introduction to Computer Science Xuefeng Cui Course Description By invited pioneer researchers Computer One topic per lecture Science Cryptography Programming Languages Algorithms and data structures Group Machine learning Discussion Computational biology 5
Part 3: Tutorials Introduction to Computer By the TA: Da Wei Science Xuefeng Cui One chapter per tutorial Read the chapter before attending a tutorial Course Description Help your understanding instead of teaching Computer Self-learning practice Science Programming Languages Group Discussion 6
Course Outline Introduction to Computer Science Xuefeng Cui Course Description Computer 1 Introduction lecture: today Science 2 Invited lectures: by invited researchers Programming Languages 3 Tutorials: by the TA Group Discussion 7
Marks Introduction to Computer Science Xuefeng Cui Attendance: 10% Assignments: 20% Course Description 6 assignments Computer Science Midterm exam: 30% Programming November 1, 2016 Languages Final exam: 40% Group Discussion December 27, 2016 Pass requirement: Total mark > 60% Midterm + final > 42% 8
Introduction Lecture Introduction to Computer Science Xuefeng Cui Course Description What is Computer Science (CS)? Computer Definition Science Examples Programming Languages Which programming languages to learn? Group Discussion Group discussion 9
What is Computer Science? Introduction to Computer Science Xuefeng Cui Course Description Definition: the scientific and practical approach to Computer computation and its applications Science Theoretical: to understand the nature of computation Programming Languages Applied: to solve real world problems Group Discussion Scope: variety topics in CS 10
Example 1: Casino Lawsuit Introduction to Computer Science Xuefeng Cui Course Description Computer Science Programming Languages Group Discussion Simplified: who has the bigger number? 11
Example 1: Casino Lawsuit Introduction to Computer Science Xuefeng Cui Course Scenario: you lost a lot of money after 100 games Description Casino: 6, 6, 6, 6, 6, 6, ... Computer Science Probability: 1 / 6 100 Programming Argument: cheating? Languages You: 2, 6, 4, 3, 1, 3, ... Group Discussion Probability: 1 / 6 100 Argument: fair? 12
Example 1: Casino Lawsuit Introduction to Computer Science Xuefeng Cui Kolmogorov complexity: a random sequence cannot be Course Description compressed Computer Casino: 6, 6, 6, 6, 6, 6, ... Science Programming Description: 100 numbers of 6 Languages Conclusion: cheating Group Discussion You: 2, 6, 4, 3, 1, 3, ... Description: 2, 6, 4, 3, 1, 3, ... Conclusion: fair 13
Example 2: Public-Key Cryptography Introduction to Computer Science Xuefeng Cui Scenario: Alice sends message m to Bob Course Description Goal: Chris cannot know m Computer Science Theorem: m k ( p − 1)( q − 1)+1 ≡ m (mod pq ) Programming Languages Bob’s keys: a, b, n Group ab = k ( p − 1)( q − 1) + 1 Discussion n = pq Observation: ( m a ) b ≡ m ab ≡ m (mod n ) 14
Example 2: Public-Key Cryptography Introduction to Computer Science Xuefeng Cui Course Procedures: Description 1 Alice says “Hello” to Bob. Computer Science 2 Bob says “a and n” to Alice 3 Alice calculates e = m a mod n Programming Languages 4 Alice says “e” to Bob Group 5 Bob calculates d = e b mod n Discussion Observation: d ≡ e b ≡ ( m a ) b ≡ m (mod n ) 15
Example 2: Public-Key Cryptography Introduction to Computer Science Xuefeng Cui Chris knows a, n and e Course Description Chris also knows public-key cryptography m = e b mod n Computer Science ab = k ( p − 1)( q − 1) + 1 Programming Languages n = pq Group Chris does not know b Discussion How could Chris possibly know m? What if p and q are large (2 2048 )? 16
Theoretical Computer Science Introduction to Computer Science Xuefeng Cui Course Description Definition: to understand the nature of computation Computer Topics: Science Kolmogorov complexity Programming Languages Cryptography Group Algorithm and complexity Discussion Computability 17
Example 3: Tor Project Introduction to Computer Scenario: Alice sends a message to Bob Science Xuefeng Cui Goal: nobody can know Alice is talking to Bob Course Description Computer Science Programming Languages Group Discussion 18
Example 3: Tor Project Introduction to Computer Tor circuit from Alice to Bob Science Xuefeng Cui How much does everyone know? Course Description Computer Science Programming Languages Group Discussion 19
Example 3: Tor Project Introduction to Computer Tor circuit from Alice to Jane Science Xuefeng Cui Why 3 Tor nodes? Course Description Computer Science Programming Languages Group Discussion 20
Example 4: IKEA Kitchen Demonstration Introduction to Computer Science Xuefeng Cui Virtual reality (VR): using computer-generated graphics Course and sounds to replicate reality Description Computer Science Programming Languages Group Discussion 21
Example 4: IKEA Kitchen Demonstration Introduction to Computer Science Xuefeng Cui Course Description Applications of VR: Computer Science Retail Programming Video games Languages Education and training Group Computer-aided design Discussion 22
Applied Computer Science Introduction to Computer Science Xuefeng Cui Course Description Definition: to solve real world problems Computer Topics: Science Tor project Programming Languages Virtual reality Group Augmented reality Discussion Computational biology 23
Summary Introduction to Computer Science Xuefeng Cui Course Description Today: what is CS? Computer Science Theoretical Programming Applied Languages Group Next week: cryptography Discussion 24
Introduction Lecture Introduction to Computer Science Xuefeng Cui Course Description What is Computer Science? Computer Which programming languages to learn? Science Programming As your first programming language Languages For a specific task Group Discussion Group discussion 25
What is A Programming Language? Introduction to Computer Science Definition: a language to communicate instructions to a Xuefeng Cui computer Course Popular programming languages: Description Computer Science Programming Languages Group Discussion 26
Which programming languages to learn? Introduction to Computer Science Xuefeng Cui As your first programming language: Java, Python Course Description Popularity Computer Generality Science Simplicity Programming Languages For a specific task: no simple answer Group Execution time ⇔ productivity Discussion Available library (or software) Available hardware 27
Argument 1: Execution Time ⇔ Productivity Introduction to Computer Science Xuefeng Cui Course Description Twitter: an online social networking service Computer Science Implementation: Programming Languages Ruby (2006-2009) ⇒ Scala, Java (2009-2011) Group Did Twitter make a mistake? Discussion 28
Argument 1: Execution Time ⇔ Productivity Introduction to Computer Science Xuefeng Cui What was changed in 2009? Course Description Start-up ⇒ large company Productivity (length of program) ⇒ execution time Computer Science 200-300 ⇒ 10,000-20,000 requests per second per host Programming Languages Group Ruby v.s. Java Discussion Length of program 1 : 7 Execution time 50 : 1 29
Argument 2: Available Library Introduction Donald J. Trump’s tweets: to Computer Science Android v.s. iPhone (different?) Xuefeng Cui David Robinson’s sentiment analysis: Course Tasks: tweets download, sentiment analysis Description Length of program: < 350 lines Computer Science Programming Languages Group Discussion 30
Recommend
More recommend