Editing Intro to Programming and Data Science (Summer 2020)

From CommunityData

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
{{Old Class}}
= Course Information =
= Course Information =
:'''COM 674: Introduction to Programming and Data Science'''
:'''COM 574: Introduction to Programming and Data Science'''
:'''Location:''' https://meet.jit.si/COM674
:'''Location:''' https://meet.jit.si/COM674
:'''Class Hours:''' M-F, 10 am - 12 pm
:'''Class Hours:''' M-F, 1-3pm


== Instructor ==
== Instructor ==
Line 45: Line 43:
* Required text: '''[https://www.py4e.com/book Python for Everybody]''' by Charles R. Severance. The book is [https://creativecommons.org/licenses/by/3.0/us/ freely licensed] and available online for free. You can also buy the book if you prefer a hard copy.
* Required text: '''[https://www.py4e.com/book Python for Everybody]''' by Charles R. Severance. The book is [https://creativecommons.org/licenses/by/3.0/us/ freely licensed] and available online for free. You can also buy the book if you prefer a hard copy.


I will list required chapters in the schedule below. In general, you should expect to spend far more time working on programming tasks than reading. Much like math or other technical courses, this course will build on itself every day. You should make every effort to cover the reading and exercise material every day in preparation for the next day.
I will list required chapters in the weekly notes below. In general, you should expect to spend far more time working on programming tasks than reading. Much like math or other technical courses, this course will build on itself every week. You should make every effort to cover the reading and exercise material every week in preparation for the next week.


* Other readings: Throughout the module we will read and discuss examples of computational social science that I find particularly well done or interesting. Many are available through the Purdue library. I will also make all of them available on Brightspace. If you come across additional examples that you think the class would benefit from, please suggest them to me.
* Other readings: Throughout the year we will read and discuss examples of computational social science that I find particularly well done or interesting. Many are available through the Purdue library. I will put the rest on Brightspace. If you come across additional examples that you think the class would benefit from, please suggest them to me.


* Optional readings: Matthew Salganik's book 'Bit by Bit: Social Research in the Digital Age' is a wonderful introduction to computational social science. We will not be discussing it in class but I highly recommend it.
* Optional readings: Matthew Salganik's book 'Bit by Bit: Social Research in the Digital Age' is a wonderful introduction to computational social science. We will not be discussing it in class but I highly recommend it.
Line 60: Line 58:
# Closely monitor your email. Because this a wiki, you will be able to track every change by clicking the ''history'' button on this page. I will also summarize these changes in an announcement that will be emailed to everybody in the class.
# Closely monitor your email. Because this a wiki, you will be able to track every change by clicking the ''history'' button on this page. I will also summarize these changes in an announcement that will be emailed to everybody in the class.
# I will ask the class for voluntary anonymous feedback frequently. Please let me know what is working and what can be improved.
# I will ask the class for voluntary anonymous feedback frequently. Please let me know what is working and what can be improved.
== Lectures ==
This is an online course and I am not requiring any synchronous participation. I am planning to hold an online lecture from approximately 10 am - 11 am every day at meet.jit.si/COM674, where I introduce the concepts for the upcoming reading and assignment. I will record these lectures and will upload them to Brightspace. Following the lecture, I will stick around to answer questions as folks begin working on the coding challenges.
I highly encourage those who can attend synchronously to do so. In general, my teaching style is more conversational than a formal lecture. I prefer that students feel they can "politely interrupt" at any time to seek clarification or make a well-informed point, and the lectures will be much better if I can get real-time feedback about what is and isn't making sense.


== Office hours and email ==
== Office hours and email ==
Line 74: Line 66:
= Assignments =
= Assignments =


There will be three main types of assignments. Each is discussed in detail below but here is a brief summary:
The main outcome of this course will be a research project exploring a social science question using Python, and the bulk of your grade will be based on that project. I prefer that you do projects on your own but it may be possible to work as a small team (maximum 3 people). Team projects are expected to be more ambitious than individual projects. Preliminary assignments will help you to develop your idea and to get feedback from me and others.


# '''Research Project:''' The main outcome of this course will be a research project exploring a social science question using Python, and the bulk of your grade will be based on that project. Submit these via Brightspace
There will also be weekly programming assignments that I will ask you to hand in but which will only be graded as complete/incomplete. I will randomly sample from the assignments to make sure that people are understanding the topics and I will randomly choose students to share their responses to exercises as an extra way to incentivize you to complete them.
# '''Coding Challenges:''' There will be daily programming assignments that I will ask you to turn in on Brightspace but which will only be graded as complete/incomplete. I will also randomly assign someone to present their solution to each of the problems, on [piazza.com/purdue/summer2020/com674 Piazza].
# '''Paper Discussion:''' Each day we will read and discuss a paper which uses computational approaches to address social science questions.


== Research project ==
== Research project ==
Line 84: Line 74:
As a demonstration of your learning in this course, you will design and carry out a quantitative research project, start to finish. This means you will all:
As a demonstration of your learning in this course, you will design and carry out a quantitative research project, start to finish. This means you will all:


* '''Design and describe a plan for a study''' — The study you design should involve quantitative analysis and should be something you can complete at least a first pass on during this module.
* '''Design and describe a plan for a study''' — The study you design should involve quantitative analysis and should be something you can complete at least a first pass on during this semester.
* '''Find a dataset''' — You should very quickly identify a dataset you will use to complete this project.
* '''Find a dataset''' — You should quickly identify a dataset you will use to complete this project.
* '''Analyze, visualize, report, and interpret your data''' — You will do this in both a short paper and a short presentation.
* '''Report and interpret your findings''' — You will do this in both a short paper and a short presentation.
* '''Ensure that your work is replicable''' — You will need to provide code and data for your analysis in a way that makes your work replicable by other researchers.
* '''Ensure that your work is replicable''' — You will need to provide code and data for your analysis in a way that makes your work replicable by other researchers.


''I strongly urge you'' to produce a project that will further your academic career outside of the class. There are many ways that this can happen. Some obvious options are to prepare a project that you can submit for publication, that you can use as pilot analysis that you can report in a grant or thesis proposal, and/or that fulfills a degree requirement. I prefer that you do projects on your own but it may be possible to work as a small team (maximum 3 people). Team projects are expected to be more ambitious than individual projects. Preliminary assignments will help you to develop your idea and to get feedback from me and others.
''I strongly urge you'' to produce a project that will further your academic career outside of the class. There are many ways that this can happen. Some obvious options are to prepare a project that you can submit for publication, that you can use as pilot analysis that you can report in a grant or thesis proposal, and/or that fulfills a degree requirement.


There are several intermediate milestones and deadlines to help you accomplish a successful research project. Unless otherwise noted, all deliverables should be submitted via Brightspace.
There are several intermediate milestones and deadlines to help you accomplish a successful research project. Unless otherwise noted, all deliverables should be submitted via Brightspace.


=== Project idea and dataset identification ===
=== Project plan and dataset identification ===


;Due date: May 20
;Due date: January 28, 2020
;Maximum length: 500 words (~1-2 pages)
;Maximum length: 500 words (~1-2 pages)


Line 102: Line 92:
* An abstract of the proposed study including the topic, research question, theoretical motivation, object(s) of study, and anticipated research contribution.
* An abstract of the proposed study including the topic, research question, theoretical motivation, object(s) of study, and anticipated research contribution.
* An identification of the dataset you will use and a description of the columns or type of data it will include. If you do not currently have access to these data, explain why and when you will.
* An identification of the dataset you will use and a description of the columns or type of data it will include. If you do not currently have access to these data, explain why and when you will.
* A short (several sentences) description of how the project will fit into your career trajectory.
* A short (several sentences?) description of how the project will fit into your career trajectory.


=== Project planning document ===
=== Project planning document ===


;Due date: May 29
;Due date: Thursday, March 10, 2020
;Maximum length: ~4-5 pages
;Maximum length: ~5 pages


The project planning document is a basic shell/outline of an empirical quantitative research paper. The planning document should focus around three big questions:
The project planning document is a basic shell/outline of an empirical quantitative research paper. The planning document should focus around three big questions:
Line 116: Line 106:
One approach that I have found helpful is outlined [[CommunityData:Planning document|on this wiki page]].
One approach that I have found helpful is outlined [[CommunityData:Planning document|on this wiki page]].


=== Project presentation and report ===
=== Project presentation and paper ===


;Report due date: June 12
;Paper due date: May 5, 2020
;Maximum length: 4000 words (~15 pages)
;Maximum length: 4500 words (~18 pages)


;Presentation due date: June 11
;Presentation due date: April 28, 2020
;Maximum length: 8 minutes
;Maximum length: 8 minutes


==== The project report ====
==== The paper ====


You will craft a Jupyter Notebook that will ideally provide the foundation for a high quality short research paper that you might revise and submit for publication. I do not expect the report to be ready for publication, but it should contain polished drafts of all the necessary components of a scholarly quantitative empirical research study. In terms of the structure, please see the page on the [[structure of a quantitative empirical research paper]].
Ideally, I expect you to produce a high quality short research paper that you might revise and submit for publication. I do not expect the paper to be ready for publication, but it should contain polished drafts of all the necessary components of a scholarly quantitative empirical research study. In terms of the structure, please see the page on the [[structure of a quantitative empirical research paper]].


The great thing about a Jupyter Notebook is that it allows you to provide data, code, and any documentation sufficient to enable the replication of all analysis and visualizations. If that is not possible/appropriate for some reason, please talk to me so that we can find another solution.
As noted above, you should also provide data, code, and any documentation sufficient to enable the replication of all analysis and visualizations. If that is not possible/appropriate for some reason, please talk to me so that we can find another solution.


Because the emphasis in this class is on methods and because I'm not an expert in each of your fields, I'm happy to assume that your paper, proposal, or thesis chapter has already established the relevance and significance of your study and has a comprehensive literature review, well-grounded conceptual approach, and compelling reason why this research is important. As a result, you need not focus on these elements of the work in your written submission. Instead, feel free to start with a brief summary of the purpose and importance of this research followed by an introduction of your research questions or hypotheses. If you provide more detail, that's fine, but I won't give you detailed feedback on these parts and they will not figure prominently in my assessment of the work.
Because the emphasis in this class is on methods and because I'm not an expert in each of your fields, I'm happy to assume that your paper, proposal, or thesis chapter has already established the relevance and significance of your study and has a comprehensive literature review, well-grounded conceptual approach, and compelling reason why this research is important. As a result, you need not focus on these elements of the work in your written submission. Instead, feel free to start with a brief summary of the purpose and importance of this research followed by an introduction of your research questions or hypotheses. If you provide more detail, that's fine, but I won't give you detailed feedback on these parts and they will not figure prominently in my assessment of the work.


Jupyter Notebooks do not have all of the tools for citations that Word or LaTeX or even Google Docs have, so while I expect you to cite related work it is OK if it isn't as polished as citation management software would make it.
I do not have strong preferences about the style or formatting guidelines you follow for the paper and its bibliography. However, ''your paper must follow a standard format'' (e.g., [https://cscw.acm.org/2019/submit-papers.html ACM SIGCHI CSCW format] or [https://www.apastyle.org/index APA 6th edition] ([https://templates.office.com/en-us/APA-style-report-6th-edition-TM03982351 Word] and [https://www.overleaf.com/latex/templates/sample-apa-paper/fswjbwygndyq LaTeX] templates)) that is applicable for a peer-reviewed journal or conference proceedings in which you aim to publish the work (they all have formatting or submission guidelines published online and you should follow them). This includes the references. I also strongly recommend that you use reference management software to handle your bibliographic sources.
 
I am also open to projects that are in the form of a Jupyter notebook, but I expect the same sorts of content to be present.


==== The presentation ====
==== The presentation ====
Line 138: Line 130:
The presentation will provide an opportunity to share a brief summary of your project and findings with the other members of the class. However, don't treat it as a comprehensive overview of your paper: I would rather you tell a subset of the story well than the whole story in a rushed fashion. For instance, you can give a completely successful presentation by describing the motivation and walking through one plot in your paper. Since you will all give other research presentations throughout your career, I strongly encourage you to take the opportunity to refine your academic presentation skills.
The presentation will provide an opportunity to share a brief summary of your project and findings with the other members of the class. However, don't treat it as a comprehensive overview of your paper: I would rather you tell a subset of the story well than the whole story in a rushed fashion. For instance, you can give a completely successful presentation by describing the motivation and walking through one plot in your paper. Since you will all give other research presentations throughout your career, I strongly encourage you to take the opportunity to refine your academic presentation skills.


I anticipate that most people will either create a PowerPoint presentation or will walk us through their Jupyter Notebook. All presentations will need to be ''a maximum of 8 minutes long''. Concisely communicating an idea in the time allotted is an important skill in its own right. Presentations should be uploaded to the Discussion forum on Brightspace created for this purpose.
All presentations will need to be ''a maximum of 8 minutes long'' with additional 2-3 minutes for questions and answers. Concisely communicating an idea in the time allotted is an important skill in its own right.


== Daily Coding Challenges ==
== Participation ==


Nearly every day I will give you a set of coding challenges before the end of class that will involve writing code or adding to code that I've given you. These coding challenges will be turned in on Brightspace but will not be graded. I encourage you to work together on these challenges but to make sure that you understand the concepts yourself.
The course relies heavily on participation. The material we're going to be covering is difficult and we're going to be covering it quickly. It is going to be very difficult to make up any missed classes. Attendance will be the most important part of participation and missing more than 1 class is going to make it extremely difficult to excel in our class.


Each day I will randomly select a set of students to share their solutions to a selected exercise on [piazza.com/purdue/summer2020/com674 Piazza], at least one hour before the next day's lecture starts. I encourage you to also use Piazza to ask and answer each other's questions as you work on the assignments. We will use some of our lecture time to review the problems and I will make sure that a correct solution is posted by the end of that day. As you will see over the course of the module, there are many possible solutions to many programming problems and my own approaches will often be different than yours. That's completely fine! Coding is a creative act!
Nearly every week, we will begin by discussing challenges and problem sets. Please speak up and engage in this part of the class as well as asking questions anytime there is anything confusing. If you are feel confused about a new Python concept, it's highly unlikely that you are the only one. If there is anything I can do to help you participate in class, please let me know in the anonymous feedback.


=== DataCamp ===
In general, my teaching style is more conversational than a formal lecture. I prefer that students feel they can "politely interrupt" at any time to seek clarification or make a well-informed point, and we keep the class small to encourage this.


DataCamp is an online coding education site, with lots of great resources about Python. I set up our class for free access for six months - you can sign up at [https://www.datacamp.com/groups/shared_links/c474713e6d04d94d410bb7a04fa0e9bad0f7c2ab47bb39a72a2323958787bcb9 this link].
== Weekly Coding Challenges ==


I will put a few courses as assignments on DataCamp which will be optional. I'll signal when you might want to do these courses in the schedule.
Most weeks I will give you all a set of weekly coding challenges before the end of class that will involve writing code or adding to code that I've given you. These coding challenges will be turned in on Brightspace but will not be graded. I encourage you to work together on these challenges but to make sure that you understand the concepts yourself.


== Paper Discussions ==
I will share my solutions to each of the coding challenges in the subsequent class or via email. As you will see over the course of the semester, there are many possible solutions to many programming problems and my own approaches will often be different than yours. That's completely fine! Coding is a creative act!


Every day we will review a paper that uses computational methods. On the first day, I will ask you to sign up to lead the discussion two times. When leading the discussion, you will post a video explaining the paper and asking a few discussion questions to Brightspace. Everyone else will respond with their thoughts about the paper.
You are welcome to discuss the exercises on our Brightspace discussion board but please do not share answers to challenges more than 24 hours before they are due. After that, you are welcome and encouraged to share your solutions and/or to discuss different approaches. We will discuss a few of the exercises during class and I will randomly choose a few students to explain their solutions.


== Reflection papers ==
== Reflection papers ==


As discussed in more detail [[#Grades|below]], two times during the course I will ask you to respond to a set of reflection questions. These questions are intended to help you to think about what you have learned and accomplished and to craft goals for the remainder of the course. They are also an important way for me to gather feedback about how the course is going so that I can adjust.
As discussed in more detail [[#Grades|below]], four times during the course I will ask you to respond to a set of reflection questions. These questions are intended to help you to think about what you have learned and accomplished and to craft goals for the remainder of the course. They are also an important way for me to gather feedback about how the course is going so that I can adjust.
 
 


= Grades =
= Grades =
Line 203: Line 197:
= Schedule =
= Schedule =


'''NOTE''': This section will be modified throughout the course to meet the class's needs. Check back in often.
'''NOTE'''  This section will be modified throughout the course to meet the class's needs. Check back in often.
 
In general, the lecture for a certain day will cover the same material as the P4E reading for that day. You are welcome to read P4E either before or after the lecture.




== Day 1: Introduction to Python and Computational Thinking (May 18) ==
== Day 1: Introductions and getting started (May 18) ==


'''Assignment Due:'''  
'''Assignment Due:'''  
Line 214: Line 206:


'''Required Readings:'''  
'''Required Readings:'''  
* [https://www.youtube.com/watch?v=HW29067qVWk Intro to Jupyter Notebooks video]
* None


'''Agenda:'''
'''Class Schedule:'''
* Class overview and expectations — We'll walk through this syllabus.
* Class overview and expectations — We'll walk through this syllabus.
* [[Intro_to_Programming_and_Data_Science_(Summer_2020)/Day_1_Coding_Challenge| Day 1 Coding challenge]] - Includes installing Python and going through a number of exercises.
* [[Intro to Programming and Data Science (Summer 2020)/Day_1_Exercise|Day 1 Exercise]] — You'll install software including the Python programming language and run through a series of exercises.
* [https://jeremydfoote.com/teaching/2020-summer/intro_to_programming/day_1.html Today's slides]
* [[Intro to Programming and Data Science (Summer 2020)/Day_1_Tutorial|Day 1 Tutorial]] — You'll work through a self-guided tutorial introducing you to some basic programming concepts.


'''By the end of class you will:'''
'''By the end of class you will:'''
* Have a working python environment on your personal laptop.
* Have a working python environment on your personal laptop.
* Have written your first program in the python language.
* Have written your first program in the python language.


== Day 2: Variables, conditionals, and functions (May 19) ==
 
== Day 2: Computational thinking (May 19) ==


'''Assignment Due:'''  
'''Assignment Due:'''  
* Finish Day 1 exercises and tutorials
* Finish Day 1 exercises and tutorials
* Fill out this [https://docs.google.com/forms/d/e/1FAIpQLSfUiGogs2jDXIHaXz1ooVBZFkRF2NdMaf00IgZvk7f69rby9w/viewform?usp=sf_link short survey]
* Fill out this [https://forms.gle/FUjcYZsQKq1ecVax6 short survey]
* Sign up to be a discussant [https://docs.google.com/spreadsheets/d/1uSo-Ya5DghaLu1BYk94EVU2kBVmExRWwOa1586GbFUU/edit?usp=sharing here] (Make sure to sign up for '''2''' readings)


'''Readings (before class):'''  
'''Readings (before class):'''  
* Python for Everybody, chapters 1-4
* Python for Everybody, chapters 1-2
* Bit By bit, [https://www.bitbybitbook.com/en/1st-ed/introduction/ Introduction]
* Bit By bit, [https://www.bitbybitbook.com/en/1st-ed/introduction/ Introduction]


'''Agenda:'''
'''Class Schedule:'''
* Variables, conditionals, functions
* [https://jeremydfoote.com/teaching/2020-summer/intro_to_programming/day_2.html Today's slides]


'''Code Challenge:'''
'''Code Challenge:'''
* [[Intro to Programming and Data Science (Summer 2020)/Day_2_Coding_Challenges|Day 2 Coding Challenge]]
* [[Intro to Programming and Data Science (Summer 2020)/Day_2_Coding_Challenges|Day 2 Coding Challenge]]


== Day 3: Iteration, strings, and lists (May 20) ==
== Day 3: Conditionals and Functions (May 20) ==


'''Assignment Due:'''
'''Assignment Due:'''
* Final project dataset and idea (turn in on Brightspace).
* Final project idea (turn in on Brightspace).
* Finish [[Intro to Programming and Data Science (Summer 2020)/Day_2_Coding_Challenges|Day 2 Coding Challenge]] (turn in on Brightspace)
* Finish [[Intro to Programming and Data Science (Summer 2020)/Day_2_Coding_Challenges|Day 2 Coding Challenge]] (turn in on Brightspace)


'''Readings:'''  
'''Readings:'''  
* Python for Everybody
* Python for Everybody, chapters 3-4
chapters_to_read = [5, 6, 8]
* Foote, J., Shaw, A., & Hill, B.M. (2017). [https://jeremydfoote.com/files/foote_computational_2017.pdf Computational analysis of social media scholarship]. In Burgess, J., Poell, T., Marwick, A. (Eds.), The Sage Handbook of Social Media. Sage.
* Foote, J., Shaw, A., & Hill, B.M. (2017). [https://jeremydfoote.com/files/foote_computational_2017.pdf Computational analysis of social media scholarship]. In Burgess, J., Poell, T., Marwick, A. (Eds.), The Sage Handbook of Social Media. Sage.
** Discussant: Tamara


'''Agenda:'''
'''Agenda:'''
* Programming principles (iteration, strings, and lists)
* Discuss reading
** Follow along with [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/raw/summer2020/day_3/day_3.ipynb this Jupyter Notebook]
* Go over last day's assignment
* Go over last day's assignment
* Introduce wordplay project
* Introduce baby names project
* [https://jeremydfoote.com/teaching/2020-summer/intro_to_programming/day_3.html Today's slides]


'''Coding Challenge'''
'''Coding Challenge'''
* [[Intro to Programming and Data Science (Summer 2020)/Day 3 Coding Challenges|Day 3 Coding Challenges]]
* [[Intro to Programming and Data Science (Summer 2020)/Day 3 Coding Challenges|Day 3 Coding Challenges]]
* (Optional) [https://learn.datacamp.com/courses/intro-to-python-for-data-science DataCamp Chapters 1-3]


== Day 4: Reading from and writing to files (May 21) ==
== Day 4: Iteration, strings, and lists (May 21) ==


'''Assignment Due:'''
'''Assignment Due:'''
* [[Intro to Programming and Data Science (Summer 2020)/Day 3 Coding Challenges|Day 3 Coding Challenges]]
* [[Intro to Programming and Data Science (Summer 2020)/Day 3 Coding Challenges|Day 3 Coding Challenges]]


'''Readings:'''  
'''Readings:'''  
book = open('Python for Everybody', 'r')
* Python for Everybody
  for chapter in book:
  chapters_to_read = [5, 6, 8]
    if chapter == '7':
        read(chapter)
book.close()
* Nelson, Laura K. 2017. "[https://doi.org/10.1177%2F0049124117729703 Computational Grounded Theory: A Methodological Framework]." Sociological Methods and Research.
* Nelson, Laura K. 2017. "[https://doi.org/10.1177%2F0049124117729703 Computational Grounded Theory: A Methodological Framework]." Sociological Methods and Research.
** Discussant: Tiwalade
 


'''Agenda:'''
'''Agenda:'''
* Reading from and writing to files
* [[Intro to Programming and Data Science (Summer 2020)/Day 4 Coding Challenges|Day 4 Coding Challenges]]
* [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/raw/summer2020/day_4/day_4.ipynb Today's Jupyter Notebook]
* [https://jeremydfoote.com/teaching/2020-summer/intro_to_programming/day_4.html Today's slides]


'''Coding Challenge:'''
* [[Intro to Programming and Data Science (Summer 2020)/Day 4 Coding Challenges|Day 4 Coding Challenges]]


== Day 5: Dictionaries and Tuples (May 22) ==
== Day 5: Reading and writing files (May 22) ==


'''Assignment Due:'''
'''Assignment Due:'''
Line 294: Line 274:


'''Readings:'''
'''Readings:'''
* Python for Everybody, chapters 9 and 10
* Margolin, D. B., Hannak, A., & Weber, I. (2018). [https://doi.org/10.1080/10584609.2017.1334018 Political Fact-Checking on Twitter: When Do Corrections Have an Effect?] Political Communication, 35(2), 196–219.
* Margolin, D. B., Hannak, A., & Weber, I. (2018). [https://doi.org/10.1080/10584609.2017.1334018 Political Fact-Checking on Twitter: When Do Corrections Have an Effect?] Political Communication, 35(2), 196–219.
** Discussant: Vanessa
 
book = open('Python for Everybody', 'r')
for chapter in book:
    if chapter = '7':
        read(chapter)
book.close()


'''Agenda:'''
'''Agenda:'''
* Dictionaries
* Go over last day's assignment.
* Tuples
* Spend time on [[Intro to Programming and Data Science (Summer 2020)/Day 5 Coding Challenges|Day 5 Coding Challenges]]
* [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/raw/summer2020/day_5/day_5.ipynb Today's Jupyter Notebook]
* [https://jeremydfoote.com/teaching/2020-summer/intro_to_programming/day_5.html Today's slides]


'''Coding challenge:'''
* [[Intro to Programming and Data Science (Summer 2020)/Day 5 Coding Challenges|Day 5 Coding Challenges]]


== Day 6: Dataframes and Visualization (May 26) ==
== Day 6: Dictionaries (May 26) ==


'''Assignment Due:'''
'''Assignment Due:'''
Line 314: Line 294:
'''Readings:'''
'''Readings:'''
* Benefield, G. A., Shen, C., & Leavitt, A. (2016). [https://doi.org/10.1145/2818048.2819935 Virtual Team Networks: How Group Social Capital Affects Team Success in a Massively Multiplayer Online Game]. Proceedings of the 19th ACM Conference on Computer-Supported Cooperative Work & Social Computing, 679–690.
* Benefield, G. A., Shen, C., & Leavitt, A. (2016). [https://doi.org/10.1145/2818048.2819935 Virtual Team Networks: How Group Social Capital Affects Team Success in a Massively Multiplayer Online Game]. Proceedings of the 19th ACM Conference on Computer-Supported Cooperative Work & Social Computing, 679–690.
** Discussant: Nate
** Discussant:
* [https://www.youtube.com/watch?v=HW29067qVWk Intro to Jupyter Notebooks video]
* Python for Everybody, chapters 9 and 10




'''Agenda:'''
'''Agenda:'''
* Dataframes and visualization
* Introduction to Jupyter notebooks
* [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/raw/summer2020/day_6/day_6.ipynb Day 6 notebook]
* Dictionaries
* [https://jeremydfoote.com/teaching/2020-summer/intro_to_programming/day_6.html Today's slides]
* Tuples
* Network analysis
* Begin work on [https://campus.datacamp.com/courses/intermediate-python-for-data-science DataCamp Intermediate Python], Chapters 1-3
* Start [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/blob/master/resources/exercises/week_6_exercises.ipynb Day 6 Coding Challenges]


'''Coding challenges:'''
* [[Intro to Programming and Data Science (Summer 2020)/Day 6 Coding Challenges|Day 6 Coding Challenges]]
* (Optional) Begin work on [https://campus.datacamp.com/courses/intermediate-python-for-data-science DataCamp Intermediate Python], Chapters 1-3


== Day 7: Dataframes and visualization (continued) (May 27) ==
== Day 7: Dataframes and visualization (May 27) ==


'''Assignment Due:'''
'''Assignment Due:'''
* Finish Day 6 Coding Challenges
* Finish Day 6 Coding Challenges
* Do the [[Intro_to_Programming_and_Data_Science_(Summer_2020)/Twitter_authentication_setup|Twitter Authentication Setup]]
 


'''Readings:'''
'''Readings:'''
Line 337: Line 319:


'''Agenda:'''
'''Agenda:'''
* Visualizations in Seaborn
* Introduction to data frames
* [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/raw/summer2020/day_7/day_7.ipynb Day 7 notebook]
* We will be discussing this data set: https://hub.mph.in.gov/dataset/aries-crash-data-2007-2017/resource/cc90589c-72d8-4d92-a5fe-73254b555c73
* [https://jeremydfoote.com/teaching/2020-summer/intro_to_programming/day_7.html Today's slides]
* [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/blob/master/resources/exercises/week_7_exercises.ipynb Day 7 Coding Challenges]


'''Coding challenges:'''
* [[Intro to Programming and Data Science (Summer 2020)/Day 7 Coding Challenges|Day 7 Coding Challenges]]


== Day 8: Collecting Data with APIs (May 28) ==
== Day 8: Dataframes and visualizations (continued) (May 28) ==


'''Assignment Due:'''
'''Assignment Due:'''
* Second [[Self_Assessment_Reflection|self-assessment reflection]] is due.
* Finish [https://campus.datacamp.com/courses/intermediate-python-for-data-science DataCamp Intermediate Python], Chapters 1-3
* Turn in Day 7 Coding Challenges
* Turn in Day 7 Coding Challenges
* Before class make sure you've installed tweepy ([https://youtu.be/TASX3evcgG4 video instructions)]
 


'''Readings:'''
'''Readings:'''
* Kieran Healy and James Moody (2014). “[https://doi.org/10.1146/annurev-soc-071312-145551 Data Visualization in Sociology].” American Review of Sociology. 40: 105-28.
* Kieran Healy and James Moody (2014). “[https://doi.org/10.1146/annurev-soc-071312-145551 Data Visualization in Sociology].” American Review of Sociology. 40: 105-28.
** Discussant: Jessie
** Discussant:


'''Agenda:'''
'''Agenda:'''
* Introduce the [https://2.python-requests.org/en/master/ requests] library
* Introduce the [https://2.python-requests.org/en/master/ requests] library
* Discuss the main kinds of online data gathering: downloading, scraping, and APIs.
* Discuss the main kinds of online data gathering: downloading, scraping, and APIs.
* [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/raw/summer2020/day_8/day_8.ipynb Intro to APIs Notebook]
* [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/blob/master/resources/exercises/week_8_intro.ipynb Intro to APIs Notebook]
* [https://jeremydfoote.com/teaching/2020-summer/intro_to_programming/day_8.html Today's slides]
* Spend time on [[Intro to Programming and Data Science (Summer 2020)/Day 8 Coding Challenges|Day 8 Coding Challenges]].


'''Coding challenges:'''
* [[Intro to Programming and Data Science (Summer 2020)/Day 8 Coding Challenges|Day 8 Coding Challenges]].
* (Optional) [https://learn.datacamp.com/courses/introduction-to-data-science-in-python DataCamp: Intro to Data Science] and/or [https://learn.datacamp.com/courses/intermediate-python Intermediate Python]


== Day 9: Collecting Data with APIs (continued) (May 29) ==
== Day 9: Collecting data with APIs (May 29) ==
 


'''Assignment Due:'''
'''Assignment Due:'''
Line 370: Line 350:
* First [[Self_Assessment_Reflection | self-assessment reflection]] is due (on Brightspace).
* First [[Self_Assessment_Reflection | self-assessment reflection]] is due (on Brightspace).
* Project Planning Document Due
* Project Planning Document Due
 
* Finish API Notebook
* Start on Day 8 coding challenges (at least get the example code to run)


'''Readings:'''
'''Readings:'''
* Python for Everybody, Chapter 13
* Python for Everybody, Chapter 13
* Vitak, J., Shilton, K., & Ashktorab, Z. (2016). [https://doi.org/10.1145/2818048.2820078 Beyond the Belmont Principles: Ethical Challenges, Practices, and Beliefs in the Online Data Research Community]. Proceedings of the 19th ACM Conference on Computer-Supported Cooperative Work & Social Computing, 941–953.
* Vitak, J., Shilton, K., & Ashktorab, Z. (2016). [https://doi.org/10.1145/2818048.2820078 Beyond the Belmont Principles: Ethical Challenges, Practices, and Beliefs in the Online Data Research Community]. Proceedings of the 19th ACM Conference on Computer-Supported Cooperative Work & Social Computing, 941–953.
** Discussant: Zhaozhe
* (Optional) Williams, M. L., Burnap, P., & Sloan, L. (2017). [https://doi.org/10.1177/0038038517708140 Towards an Ethical Framework for Publishing Twitter Data in Social Research: Taking into Account Users’ Views, Online Context and Algorithmic Estimation]: Sociology.
* (Optional) Williams, M. L., Burnap, P., & Sloan, L. (2017). [https://doi.org/10.1177/0038038517708140 Towards an Ethical Framework for Publishing Twitter Data in Social Research: Taking into Account Users’ Views, Online Context and Algorithmic Estimation]: Sociology.
* (Optional) Salganik, M. [https://www.bitbybitbook.com/en/1st-ed/ethics/ Ethics] chapter from Bit By Bit.  
* (Optional) Salganik, M. [https://www.bitbybitbook.com/en/1st-ed/ethics/ Ethics] chapter from Bit By Bit.  
Line 382: Line 362:


'''Agenda:'''
'''Agenda:'''
* A workflow for doing work with APIs
* Start [[Intro to Programming and Data Science (Summer 2020)/Twitter Assignment|Twitter API Assignment]]
* [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/raw/summer2020/day_9/day_9.ipynb Day 9 Notebook]
 
* [https://jeremydfoote.com/teaching/2020-summer/intro_to_programming/day_9.html Today's slides]
 
== March 17: SPRING BREAK ==
 
'''Spring Break: No Class'''
 
Have a great Spring Break!


'''Coding Challenge:'''
* [[Intro to Programming and Data Science (Summer 2020)/Day 9 Coding Challenges|Day 9 Coding Challenges]]
* (Optional) [https://learn.datacamp.com/courses/analyzing-social-media-data-in-python DataCamp: Analyzing Social Media]


== Day 10: Introduction to Computational Text Analysis (June 1) ==
== Day 10: Cleaning data and operationalization (June 1) ==


'''Assignment Due:'''
'''Assignment Due:'''
* [[Intro to Programming and Data Science (Summer 2020)/Day 8 Coding Challenges|Day 8 Coding Challenges]]
* [[Intro to Programming and Data Science (Summer 2020)/Twitter Assignment|Twitter API Assignment]]
* [[Intro to Programming and Data Science (Summer 2020)/Day 9 Coding Challenges|Day 9 Coding Challenges]]
* As much of [[Intro to Programming and Data Science (Summer 2020)/Day 8 Coding Challenges|Day 8 Coding Challenges]] as you can get through


'''Readings:'''
'''Readings:'''
* Robert K. Merton. 1948. [https://www-jstor-org.ezproxy.lib.purdue.edu/stable/2087142?sid=primo&origin=crossref&seq=1#metadata_info_tab_contents The Bearing of Empirical Research Upon the Development of Social Theory]. American Sociological Review 13(5): 505-515.
* Christopher A. Bail et al. 2018. [https://doi.org/10.1073/pnas.1804840115 Exposure to opposing views on social media can increase political polarization]. PNAS 115(37): 9216-9221
* Christopher A. Bail et al. 2018. [https://doi.org/10.1073/pnas.1804840115 Exposure to opposing views on social media can increase political polarization]. PNAS 115(37): 9216-9221
** Discussant: Zhaozhe
** Discussant:


'''Agenda:'''
'''Agenda:'''
* [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/raw/summer2020/day_10/day_10.ipynb Today's Notebook]
* [https://jeremydfoote.com/teaching/2020-summer/intro_to_programming/day_10.html Today's slides]


'''Resources:'''
'''Resources:'''
Line 408: Line 389:
* [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/blob/master/resources/solutions/Twitter_answers.ipynb My answers to the Day 8 problems]
* [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/blob/master/resources/solutions/Twitter_answers.ipynb My answers to the Day 8 problems]


* Coding Challenges:
== Day 11: Introduction to computational text analysis (June 2) ==
* [[Intro_to_Programming_and_Data_Science_(Summer_2020)/Day_10_Coding_Challenges|Day 10 Coding Challenges]]


== Day 11: Data cleaning and operationalization (June 2) ==


'''Assignment Due:'''
'''Assignment Due:'''
* [[Intro_to_Programming_and_Data_Science_(Summer_2020)/Day_10_Coding_Challenges|Day 10 Coding Challenges]]
* [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/blob/master/resources/exercises/week_11_challenges.ipynb Day 11 Programming challenges]




'''Readings:'''
'''Readings:'''
* Robert K. Merton. 1948. [https://www-jstor-org.ezproxy.lib.purdue.edu/stable/2087142?sid=primo&origin=crossref&seq=1#metadata_info_tab_contents The Bearing of Empirical Research Upon the Development of Social Theory]. American Sociological Review 13(5): 505-515.
* Sara Klingenstein, Tim Hitchcock, and Simon DeDeo. 2014. [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4084475/ The civilizing process in London’s Old Baily]. Proceedings of the National Academy of Sciences 111(26): 9419-9424.
* Sara Klingenstein, Tim Hitchcock, and Simon DeDeo. 2014. [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4084475/ The civilizing process in London’s Old Baily]. Proceedings of the National Academy of Sciences 111(26): 9419-9424.
** Discussant: Carly


'''Resources:'''
'''Agenda:'''
* [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/raw/summer2020/day_11/day_11.ipynb Today's Notebook]
* [https://youtu.be/YYyfSc4CACY Lecture + intro to challenges]
* [https://jeremydfoote.com/teaching/2020-summer/intro_to_programming/day_11.html Today's slides]


'''Coding Challenges:'''
* [[Intro_to_Programming_and_Data_Science_(Summer_2020)/Day_11_Coding_Challenges|Day 11 Coding Challenges]]


== Day 12: Organizing and storing computational projects (June 3) ==
== Day 12: Storing code and data (June 3) ==


'''Assignment Due:'''
'''Assignment Due:'''
* Day 11 Coding Challenges
* Third self-assessment reflection is due.
* Put your Twitter project on Github and email me the URL


'''Readings:'''
'''Readings:'''
* DellaPosta, D., Shi, Y., & Macy, M. (2015). [https://doi.org/10.1086/681254 Why Do Liberals Drink Lattes]? American Journal of Sociology, 120(5), 1473–1511.
* DellaPosta, D., Shi, Y., & Macy, M. (2015). [https://doi.org/10.1086/681254 Why Do Liberals Drink Lattes]? American Journal of Sociology, 120(5), 1473–1511.
** Discussant: Naomi
** Discussant:


'''Agenda:'''
'''Agenda:'''
* Tour of Github
* We will learn about using the version control system Git and the Git hosting site Github
* [https://jeremydfoote.com/teaching/2020-summer/intro_to_programming/day_12.html Today's slides]
* [https://youtu.be/-_mjC3lAKL4 Video introducing a way to organize code and data] (from the Spring version of the class)


'''Resources:'''
'''Resources:'''
* [https://www.youtube.com/watch?v=SWYqp7iY_Tc Git & GitHub Crash Course For Beginners] - YouTube video (not by me) introducing Git and Github
* [https://www.youtube.com/watch?v=SWYqp7iY_Tc Git & GitHub Crash Course For Beginners] - YouTube video (not by me) introducing Git and Github
* [https://learngitbranching.js.org/ Interactive git branching tutorial]
* [https://learngitbranching.js.org/ Interactive git branching tutorial]
 
* [https://youtu.be/-_mjC3lAKL4 Data management] - My video
'''Coding Challenge'''
* [[Intro_to_Programming_and_Data_Science_(Summer_2020)/Day_12_Coding_Challenges|Day 12 Coding Challenges]]


== Day 13: Statistical summaries and tests (June 4) ==
== Day 13: Statistical summaries and tests (June 4) ==
Line 454: Line 425:
'''Assignment Due:'''
'''Assignment Due:'''


* [[Intro_to_Programming_and_Data_Science_(Summer_2020)/Day_12_Coding_Challenges|Day 12 Coding Challenges]]
* If you would like, try to apply some statistical tests to your API data
 


'''Readings:'''
'''Readings:'''
* Tan, C. (2018). [https://aaai.org/ocs/index.php/ICWSM/ICWSM18/paper/view/17811 Tracing community genealogy: How new communities emerge from the old]. Proceedings of the Twelfth International Conference on Web and Social Media (ICWSM ’18), 395–404.
* Tan, C. (2018). [https://aaai.org/ocs/index.php/ICWSM/ICWSM18/paper/view/17811 Tracing community genealogy: How new communities emerge from the old]. Proceedings of the Twelfth International Conference on Web and Social Media (ICWSM ’18), 395–404.
** Discussant: Ji-young


'''Agenda:'''
'''Agenda:'''
* [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/raw/summer2020/day_13/day_13.ipynb Day 13 Notebook]
* [https://github.com/jdfoote/Intro-to-Programming-and-Data-Science/blob/master/resources/exercises/week-13-challenges.ipynb Day 13 Notebook]
* [https://youtu.be/j8e8JPWAHr8 Video explanation of notebook from Spring]
* [https://youtu.be/j8e8JPWAHr8 Video explanation of notebook]
* [https://jeremydfoote.com/teaching/2020-summer/intro_to_programming/day_13.html Today's slides]
 
'''Coding Challenges:'''
* [[Intro_to_Programming_and_Data_Science_(Summer_2020)/Day_13_Coding_Challenges|Day 13 Coding Challenges]]


== Day 14: Screen scraping (June 5) ==
== Day 14: Screen scraping (June 5) ==


'''Assignment Due:'''
'''Assignment Due:'''
* [[Intro_to_Programming_and_Data_Science_(Summer_2020)/Day_13_Coding_Challenges|Day 13 Coding Challenges]]
* Response to reading on FlipGrid


'''Readings:'''
'''Readings:'''
* Shaw, A., & Hill, B. M. (2014). [https://doi.org/10.1111/jcom.12082 Laboratories of oligarchy? How the iron law extends to peer production]. Journal of Communication, 64(2), 215–238.
* Shaw, A., & Hill, B. M. (2014). [https://doi.org/10.1111/jcom.12082 Laboratories of oligarchy? How the iron law extends to peer production]. Journal of Communication, 64(2), 215–238.
** Discussant: Yihan
** Discussant:
* [https://towardsdatascience.com/ethics-in-web-scraping-b96b18136f01 Ethics in Web Scraping] by James Densmore
* [https://towardsdatascience.com/ethics-in-web-scraping-b96b18136f01 Ethics in Web Scraping] by James Densmore


'''Agenda:'''
'''Agenda:'''
* If you are interested in doing web scraping, then look at this [https://github.com/CU-ITSS/Web-Data-Scraping-S2019 incredible mini-course on the topic]. It is all done with Jupyter Notebooks and you have all of the prerequisite knowledge to understand it.
* If you are interested in doing web scraping, then look at this [https://github.com/CU-ITSS/Web-Data-Scraping-S2019 incredible mini-course on the topic]. It is all done with Jupyter Notebooks and you have all of the prerequisite knowledge to understand it.
* [https://youtu.be/daUuC-PMZc4 Very brief lecture on web scraping from Spring 2020].
* [https://youtu.be/daUuC-PMZc4 Very brief lecture on web scraping].


== Day 15-17: Work on final project (June 8-10) ==
== Day 15-17: Work on final project (June 8-10) ==
Line 487: Line 452:
'''Agenda:'''
'''Agenda:'''
* I will be available to answer questions and provide help
* I will be available to answer questions and provide help
'''Additional Resources:'''
* [https://www.youtube.com/watch?v=K8L6KVGG-7o Regular Expressions]
* [https://www.youtube.com/watch?v=3dt4OGnU5sM List Comprehensions]
* [https://youtu.be/flwcAf1_1RU Network Analysis]
* [https://youtu.be/KBDJhhz4oXA Getting data from Reddit]
* [https://www.youtube.com/watch?v=ZDa-Z5JzLYM Classes and Object-oriented programming] (This is a set of videos)
* [https://bbengfort.github.io/snippets/2018/06/22/corenlp-nltk-parses.html Tutorial on syntax parsing in Python] (It's complicated!)


== Day 18: Final project presentation (June 11) ==
== Day 18: Final project presentation (June 11) ==
Line 501: Line 457:
'''Assignment Due:'''
'''Assignment Due:'''
* Final project presentations
* Final project presentations
* Prepare a presentation and post it on Brightspace
* Prepare a presentation and post it on FlipGrid


'''Readings:'''
'''Readings:'''
Line 515: Line 471:
'''Assignment Due:'''
'''Assignment Due:'''
* Final paper due
* Final paper due
* [[Intro_to_Programming_and_Data_Science_(Summer_2020)/Final_self_reflection|Final self reflection]] due
* Self reflection due


= Administrative Notes =
= Administrative Notes =
Please note that all contributions to CommunityData are considered to be released under the Attribution-Share Alike 3.0 Unported (see CommunityData:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Cancel Editing help (opens in new window)

Template used on this page: