2018 年課程封存頁 · Archived

這是 2018 年春季成功大學統計系《資料科學導論》兩次客座講授的課程網頁,內容保留原樣。課程紀錄見資料科學導論(成大統計系)。部分連結的原始網站已不存在。

STAT1021: Introduction to Data Science (Spring 2018)

Special Lectures on Elementary Software Engineering Skills Applied to Network Data


Guest Instructor: Tzu-Chi Yen (courtesy of Prof. Cheng-Te Li)
Email: tzuchi.yen [at] colorado.edu
Lecture hours: Apr. 11 & Apr. 18 [Wed], 15:10pm-18:00pm
Lecture room: Dept. Bldg. of Statistics 62223, National Cheng Kung Univserity, Tainan, Taiwan

Office location: TBD
Office hours: TBD


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

DateTopicContentText ReadingProblem Sets
4/11Network Science IIntroduction and overviewChaps. 1-2 in [2, 3], respectively
GitHub IGit commands and software patternsThe first 2 sections in [4]Data file
4/18GitHub II & Web DevelopmentManaging conflicts & website hosting on the GitHubThe 4th section in [4] ('BWC')
Network Science IIMeasures of structural importance & community detectionSecs. 9.1-2 in [3]Hw 3

Text (none of them is strictly required)


Supplemental Readings


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)