Nice to see you all!
You may not get the idea of doing “serious research”
Check course homepage
In this lecture
“In the broadest terms, we do research whenever we gather information to answer a question that solves a problem.”
——The Craft of Research
significantproblems with novelinsights.
This is a key difference between research projects and assignments
How to build and understand software?
Make 码农 an easier life
See ICSE's call for papers
“ICSE, the IEEE/ACM International Conference on Software Engineering, is the premier software engineering conference. Since 1975, ICSE provides a forum where researchers, practitioners, and educators gather together to present and discuss the most recent innovations, trends, experiences and issues in the field of software engineering.”
“Empirical and human study for understanding”
“Technologies for solving problems”
For fun and profits
Reading, Writing, and Hacking
(Reading is today's topic)
“Trivial” implementation examples
All papers form a citation graph
S. Keshav. How to read a paper, ACM SIGCOMM Computer Communication Review, 3(37), 2007.
A “machine-learning” approach
Only papers solving my problem are relevant This paper is limited in XXXX. What a piece of junk! I give up!
Sumit Gulwani. Automating string processing in spreadsheets using input-output examples (POPL'11, Most Influential Test-of-Time Paper Award in 2021)
1st pass: the problem is to find a program $P$ that generalizes existing “examples” (and 90% students stop here)
(Unix is user-friendly; it's just choosy about who its friends are.)
Trust the authors: papers are self-contained. Reading them only requires textbook knowledge.
Find open courses on Youtube (or Bilibili)
See Manuel Blum's advice to a beginning graduate student.
Virtually implement the paper's idea