forked from k-glen/POP77001_Computer_Programming_2021
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.Rmd
More file actions
135 lines (94 loc) · 6.9 KB
/
index.Rmd
File metadata and controls
135 lines (94 loc) · 6.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
---
title: "POP77001 Computer Programming for Social Scientists"
author: "Tom Paskhalis, Department of Political Science, Trinity College Dublin"
date: "2022"
site: bookdown::bookdown_site
documentclass: book
bibliography: "bibliography.bib"
---
# Module Overview {-}
---
<div id="buttons">
<a class="btn btn-warning btn-lg" role="button" href="https://github.com/ASDS-TCD/POP77001_Computer_Programming_2022/blob/main/syllabus/POP77001_Computer_Programming_for_Social_Scientists.pdf">Syllabus</a>
</div>
<br>
This module provides foundational knowledge of computer programming concepts and software engineering practices. It introduces students to major data science programming languages and workflows, with a focus on social science data and research questions. Students will be introduced to R and Python, two principal data science programming languages. This course covers basic and intermediate programming concepts, such as object types, functions, control flow, testing and debugging. Particular emphasis will be made on data handling and analytical tasks with a focus on problems in social sciences. Homeworks will include hands-on coding exercises. In addition, students will apply their programming knowledge on a research project at the end of the module.
## Instructors {-}
- [Tom Paskhalis](mailto:tom.paskhalis@tcd.ie), *Office Hours*: Thursday 11:00-13:00 [in-person or online](https://outlook.office365.com/owa/calendar/TomPaskhalis@TCDUD.onmicrosoft.com/bookings/) (booking required)
- [Martyn Egan](mailto:eganm9@tcd.ie)
## Module Meetings {-}
- 11 two-hour lectures
- Monday 14:00 in PX 201 [7-9 Leinster Street South](https://www.tcd.ie/Maps/map.php?b=255)
- 11 two-hour tutorials
- Thursday 09:00 in PX 201 [7-9 Leinster Street South](https://www.tcd.ie/Maps/map.php?b=255)
- No lecture/tutorial in Week 7
| Week | Date | Language | Topic | Due |
|-------:|:-------------|:-----------|:----------------------------------------|:-------------|
| 1 | 12 September | - | Introduction to Computation | |
| 2 | 19 September | R | R Basics | |
| 3 | 26 September | R | Control Flow in R | |
| 4 | 3 October | R | Functions in R | Assignment 1 |
| 5 | 10 October | R | Debugging and Testing in R | |
| 6 | 17 October | R | Data Wrangling in R | |
| 7 | 24 October | - | - | Assignment 2 |
| 8 | 31 October | Python | Fundamentals of Python Programming I | |
| 9 | 7 November | Python | Fundamentals of Python Programming II | |
| 10 | 14 November | Python | Data Wrangling in Python | Assignment 3 |
| 11 | 21 November | Python | Classes and Object-oriented Programming | |
| 12 | 28 November | Python, R | Complexity and Performance | Assignment 4 |
## Prerequisites {-}
This is an introductory class and no prior experience with programming is required.
## Hardware and Software {-}
- Laptop with Windows/Mac/Linux OS (no Chrome books)
- Required software:
- [**Jupyter**](https://jupyter.org/) - web-based interactive computational environment
- [**Python**](https://www.python.org/) (version 3+) - versatile programming language
- [**R**](https://cran.r-project.org/) (version 4+) - statistical programming language
- Additional software:
- [**Git**](https://git-scm.com/) - version control system
- [**GitHub**](https://github.com/) - git-based online platform for code hosting
- [**RStudio**](https://www.rstudio.com/) - integrated development environment for R
- [**Spyder**](https://www.spyder-ide.org/) - integrated development environment for Python
- [**Visual Studio Code**](https://code.visualstudio.com/) - feature-rich text editor
See syllabus for further details.
## Materials {-}
Books:
- Guttag, John. 2021 *Introduction to Computation and Programming Using Python: With Application to Computational Modeling and Understanding Data*. 3rd ed. Cambridge, MA: The MIT Press
- Matloff, Norman. 2011. *The Art of R Programming: A Tour of Statistical Software Design*. San Francisco, CA: No Starch Press.
- McKinney, Wes. 2022. [*Python for Data Analysis: Data Wrangling with pandas, NumPy, and
Jupyter*](https://wesmckinney.com/book/). 3rd ed. Sebastopol, CA: O'Reilly Media.
- Peng, Roger D. 2016. [*R Programming for Data Science*](https://leanpub.com/rprogramming). Leanpub.
- Wickham, Hadley, and Garrett Grolemund. 2017. [*R for Data Science: Import, Tidy, Transform, Visualize, and Model Data*](http://r4ds.had.co.nz/). Sebastopol, CA: O'Reilly Media.
- Wickham, Hadley. 2019. [*Advanced R*](http://adv-r.had.co.nz/). 2nd ed. Boca Raton, FL: Chapman and Hall/CRC.
Additional online resources:
- [Git Book](https://git-scm.com/book/en/v2)
- [The Hitchhiker's Guide to Python](https://docs.python-guide.org/)
- [Python For You and Me](https://pymbook.readthedocs.io/en/latest/)
- [Python Wikibook](https://en.wikibooks.org/wiki/Python_Programming)
- [Python 3 Documentation](https://docs.python.org/3/) (intermediate and advanced)
- [R Documentation](https://rdrr.io/)
- [R Inferno](https://www.burns-stat.com/pages/Tutor/R_inferno.pdf)
## Assessment
- Participation (10 %)
- Tutorial attendance
- 4 assignments (40%)
- Bi-weekly programming exercises
- Due by 23:59 on Friday of weeks 3, 5, 9 and 11 on Blackboard
- Research project (50%)
- Final Python/R project demonstrating familiarity with programming concepts and ability to communicate results
- Due by 23:59 on Friday, 16 December 2022
## Assessment criteria {-}
1. ✔️ Code exists
2. ⌚ Code runs and does what it has to do
3. 📜 Code is legible (meaningful naming, comments)
4. ⚙️ Code is modular (no redundacies, use of abstractions)
5. 🏎️ Code is optimized (no needless loops, runs fast)
Marks at Trinity: [https://www.tcd.ie/academicregistry/exams/student-guide/](https://www.tcd.ie/academicregistry/exams/student-guide/)
## Plagiarism {-}
- Plagiarising computer code is as serious as plagiarising text (see [Google LLC v. Oracle America, Inc.](https://en.wikipedia.org/wiki/Google_LLC_v._Oracle_America%2C_Inc.)).
- All submitted programming assignments and final project should be done individually.
- You may discuss general approaches to solutions with your peers.
- But do not share or view each others code.
- You can use online resources but give credit in the comments.
Watch [this video](https://www.youtube.com/watch?v=kNr69r0BBaw) explaining the difference between collaboration and collusion.
Check the Trinity's [guide on the levels and consequences of plagiarism](https://libguides.tcd.ie/plagiarism/levels-and-consequences).