這是 2018 年春季成功大學統計系《資料科學導論》兩次客座講授的課程網頁,內容保留原樣。課程紀錄見資料科學導論(成大統計系)。部分連結的原始網站已不存在。
STAT1021: Introduction to Data Science (Spring 2018)
Special Lectures on Elementary Software Engineering Skills Applied to Network Data
Announcement (updated Apr. 21 16:30)
- The networkie library is updated (Please do git pull origin master often). It now includes the raw result of the friendship questionnaire and the script that parses the data into a neat csv file.
- There's a crowdsourced list of awesome GitHub projects for the lecture. Check it out here! And, help improve the data by adding new repos that you like.
- The slides on Apr. 18 were adapted from Prof. Aaron Clauset's slides for the 2015 SFI Networks short course.
- The slides on Apr. 11 is here.
- Please install a shell emulator (if you are using Windows) and Git on your computer. You may follow this link for instructions.
- Read 鳥哥的 Linux 私房菜 if you are unfamiliar with shell commands.
- Please sign up a new GitHub account on GitHub. You might clone or fork a project that you are interested.
Lecture Description
This short lecture series provides an introduction to the daily practices and workflow for a data scientist/engineer in the industry, with an emphasis on building intuition on network data. Specifically, we will sample and analyze the in-class social network and introduce broadly applicable concepts in network analysis.The lectures will be delivered as three integrated parts: on using Git and GitHub, on website hosting on GitHub Pages, and on a very short (but not hurried) introduction to Network Science. These will include (web) software development methods and tools; graph theory and graph concepts; community detection; the implications of popular concepts such as "six degrees of separation" and the "friendship paradox".
After these lectures, the students will be able to publish an open source software on GitHub that analyzes and visualizes network data and host a personal/professional website on GitHub Pages.
Important links:
Prerequisites
The materials will be accessible to students with little programming experience; however, they must be able to write and run Python scripts on the command-line. This tutorial might also appeal to people being interested in Network Science. Yet it will focus on the practical side, i.e. using Python for network data analysis. Web development experience is not required but a prior exposure to HTML/CSS/JavaScript would be useful.Problem Sets
Problem sets are posted on the course website (here!), solutions will be sent through email soon after the submission deadline. See the detailed outline for information about grading, late, and collaboration policy.Data
In-class social network, collected via the self-reported friendship questionnaire (in Mandarin Chinese).Zachary Karate Club
Tentative Schedule
| Date | Topic | Content | Text Reading | Problem Sets |
|---|---|---|---|---|
| 4/11 | Network Science I | Introduction and overview | Chaps. 1-2 in [2, 3], respectively | |
| GitHub I | Git commands and software patterns | The first 2 sections in [4] | Data file | |
| 4/18 | GitHub II & Web Development | Managing conflicts & website hosting on the GitHub | The 4th section in [4] ('BWC') | |
| Network Science II | Measures of structural importance & community detection | Secs. 9.1-2 in [3] | Hw 3 |
Text (none of them is strictly required)
- [1] M.E.J. Newman, "Networks: An Introduction", Oxford University Press, Oxford (2010).
- [2] D. Easley and J. Kleinberg, "Networks, Crowds, and Markets", Cambridge University Press, Cambridge (2010). The complete textbook is available online.
- [3] A.-L. Barabási, "Network Science", Cambridge University Press, Cambridge (2016). The complete textbook is available online.
- [4] The GitHub Community, "Open Source Guides". The guide was released online in 2016 and is growing.
Supplemental Readings
- Week 1:
- M.E.J. Newman, "The structure and function of complex networks." SIAM Review45, 167-256 (2003).
- Brett Slatkin, "Effective Python: 59 Specific Ways to Write Better Python." The complete textbook is NOT available online. Yet one might check this alternative (in Mandarin Chinese).
- M.J. Salganik, "Bit By Bit: Social Research in the Digital Age." Princeton University Press, Princeton (2017). An introductory book on data science and social science, i.e. computational social science. Week 2:
- B. Ball, M.E.J. Newman, "Friendship networks and social status." arXiv:1205.6822 (2012). [published in Network Science 1, 16-30 (2013)]
- L. Breiman, "Statistical Modeling: The Two Cultures." Statistical Science16, 199-231 (2001).
- S. Chacon and B. Straub, "Pro Git." Apress (2014). A fully-updated guide to Git and its usage in the modern world.
Network Libraries in Python
NetworkX, network analysis package (Python)igraph, network analysis tools (Python, C++, R)
graph-tool network analysis and visualization software (Python, C++)
Network Visualization Tools
Cytoscape, network visualization software (Java; Linux/MacOS/Windows)NetSciDraw, a learning tool for all students (Web)
Gephi, network visualization and exploration software (Java; Linux/MacOS/Windows)
webweb, network visualization tool joining Matlab and d3.js (Web)
MuxViz, multilayer analysis and visualization platform (R; Linux/MacOS/Windows)
Network Data Sets
The Colorado Index of Complex Networks (ICON; more than 4000 graphs)The KONECT project (ca. 1321 networks)
The Stanford Large Network Dataset Collection (SNAP)
General Visualization (Galleries!)
Matplotlib (Python)Bokeh (Python)
seaborn (Python; statistical data visualization)
Altair (Python; declarative statistical visualization based on Vega and Vega-Lite; check out this Jake VanderPlas tweet)
d3.js (JavaScript)
Observable (Web; Mike Bostock: A Better Way to Code on Medium)
Resources
NumFOCUS sponsored projects in Python (See its affiliated projects)Wolfram Alpha (Web interface for simple integration and differentiation)
Stack Overflow (Trusted online community for developers)
PyCon Home at python.org (See "PyCon Taiwan" in Taiwan)
Explore GitHub (Trending/Popular technologies on GitHub)
Top stories on Medium tagged in Web Development or Front End Development
Git Beginner's Guide for Dummies (Same website in Mandarin Chinese)
Getting Git right (tutorials, news and tips by Atlassian)
Acknowledgements
The "networky" part of this lecture series has its inspirations from the following two courses. You may find abundant and useful information about networks in the two links.Network Analysis and Modeling (University of Colorado Boulder; taught by Prof. Aaron Clauset)
Network Theory (University of Michigan; taught by Prof. Mark Newman)