Skip to content

advanced-computing/course-materials

Repository files navigation

Advanced Computing for Policy syllabus

Meeting Dates/Times

  • Lecture: Thursdays 3:10-5pm, IAB room 404
  • Lab, a.k.a. recitation: Fridays 1:10-3pm, IAB room 405
  • Office Hours: Make sure you're signed in to your Columbia Google account to view. Also available by appointment.

Academic calendar

Course Description

In Computing in Context, students "explore[d] computing concepts and coding in the context of solving policy problems." Building off that foundation of Python fundamentals and data analysis, Advanced Computing for Policy goes both deeper and broader. The course covers computer science concepts like data structures and algorithms, as well as data engineering tools like databases, cloud services, and collaboration tools. Over the semester, students will build a complex end-to-end data system.

This course prepares students for more advanced data science coursework at SIPA, and equips them to do sophisticated data ingestion, analysis, and presentation. It's particularly well-suited to students looking to do data work in the public sector, not-for-profits, and academia.

Learning Objectives

By the end of this course, students will be able to:

Software Engineering

  • Use the command line comfortably
  • Collaborate on code using version control (Git and GitHub)
  • Create and contribute to open source software
  • Understand data structures and algorithms
  • Organize code into modular, maintainable components that follow best practices for code style
  • Write automated tests
  • Build and deploy web applications and APIs

Data Engineering

  • Build complex end-to-end data systems
  • Query and manage data using relational databases (SQL)
  • Implement ETL (Extract, Transform, Load) pipelines
  • Manage cloud-based data infrastructure

System Design and Project Management

  • Understand different project management methodologies
  • Identify and mitigate risks related to data security and privacy
  • Create polished dashboards for stakeholder communication

Prerequisites

Computing in Context (DSPC6000IA/INAFU6006). See info about testing out.

Communications

  • Grades and assignments will be posted through Courseworks.
  • Troubleshooting and other communications between class sessions will be through Ed Discussions / GitHub, so that other students can respond and/or benefit from the answers.
    • Email is also an option, though please only use for questions that aren't appropriate for others to see.
    • The instructor/Reader will try to respond within 24 hours, 48 hours max, if someone else hasn't already.

Grading

  • Attendance: 12%
  • Lab work: 24% (12 x 2% each)
  • Reading responses: 20% (10 x 2% each)
  • Project: 44%
    • Group work: 30% (divided into eight parts)
    • Individual score: 14%
      • This is effectively weighting the group work based on the individual's contributions.

There will not be an exam.

Data visualizations must have good titles and axis labels.

Assignment scoring details

  • Late work: -5% per day
    • Communication with the instructor/TA is paramount. They are happy to be flexible with requests for extensions made before the deadlines.
    • Assignments can be turned in up to a week late, then they won't be accepted.
  • Syntax errors: -10 points
  • Incomplete Steps / Steps with logic errors: -2 to -5 points
  • Unattempted Steps: -10 points

Readings

See the details and links in the schedule below. The readings will be finalized one week before they're due.

Books, which are either open access and/or will be placed on Course Reserves:

Additional resources

It's likely that you will need to do reading beyond what is assigned to fill in gaps of understanding. If you're having trouble finding a resource, ask! Resources from the Python class.

Responses

For each set of readings (which might include podcasts/videos), you will submit a response in Ed. This might be one or more of:

  • A paragraph of reflection
  • A list of questions
  • A link to a notes doc
  • A photo of some sketchnotes

Creativity is welcome. The response should do a few things:

  • Demonstrate that you did the reading, speaking to / referencing / synthesizing all of them
    • More interested in "a-ha!" moments / how the readings relate to you, rather than a recap of the content.
  • Indicate whether the material made sense to you
  • Show the instructor/TA where gaps in understanding might be so that we can cover in lecture or subsequent readings
  • Encourage discussion

After your initial post, you are encouraged to read and respond to others'.

You can find the rubric under the Assignment in Courseworks.

Schedule

Week Lecure date Lecture topic(s) Assignments due (at the start of lecture) Lab topic(s) Lab due (at the start of the Lab session)
1 1/22 Welcome; collaborating on code (GitHub) none Computer setup; Git workflow none
2 1/29 Project/product management Readings Jupyter, pandas, and visualization refresher Lab 1
3 2/5 Command line; dependency management Readings, Project Part 1 Project setup Lab 2
4 2/12 Web development Readings Building an API Lab 3
5 2/19 Automated testing Readings, Project Part 2 Data profiling/quality Lab 4
6 2/26 Organizing code Readings, Project Part 3 Continuous integration Lab 5
7 3/5 Databases Readings Databases Lab 6
8 3/12 Guest speaker; data warehousing Project Part 4 Data loading Lab 7
9 3/19 none (Spring Recess) none none (Spring Recess) none
10 3/26 Data engineering (ETL) Project Part 5 Data loading, continued Lab 8
11 4/2 Data engineering, continued (pipelines) Readings, Project check-in Process mapping Lab 10
12 4/9 Infrastructure; cloud computing Readings Cloud configuration Lab 11
13 4/16 Big data; algorithms Readings, Project Part 6 Cloud-based pipelines none
14 4/23 Privacy and security; shell scripting Readings, Project Part 7 Tabletop exercise Lab 13
15 4/30 Project presentations Project Part 8 Sneha's work Lab 14

Notes

  • There's no Lab 9.
  • Project Final Check-in due 5/3.
  • This is a relatively new course; all of the above is subject to change. Things will be adjusted to the needs and interests of the students.

Course Policies

Auditing/pass-fail

This course is largely group work and cumulative projects. Therefore, it doesn't make sense to have students doing only some of the work. As a result, neither auditing nor pass-fail are permitted for this course.

Attendance

Attending class (lectures and labs) is mandatory, but most importantly, important. Learning programming requires commitment from the part of the student and the skills are built out of practice. If you miss an experience in class, you miss an important learning moment and the class misses your contribution.

Missing class counts as an absence, regardless of the reason or notifying the instructor(s) beforehand. Missing more than 20 minutes of a class session will be treated as an absence. The first two absences are treated as "freebies". It will be calculated as:

$$\text{Maximum Score} = \text{Total Lectures and Labs} - \text{Freebies} = 28 - 2 = 26$$

$$\text{Your Score} = \min(\text{Maximum Score}, \text{Number of Lectures and Labs You Attended})$$

If you do miss class, we trust that it's for a good reason. If you're sick, please use that freebie and stay home and rest.

You are responsible for getting caught up on what was covered in class. You may want to ask a classmate for notes.

You are expected to bring a laptop to each lecture and lab.

Devices

To encourage focus and participation, students are asked to keep laptops closed and phones away in lecture by default. (Accommodations for students with disabilities are an exception.) You'll be asked to open the laptops for in-class exercises.

Academic Integrity

To be co-created.

SIPA Academic Integrity Statement

The School of International & Public Affairs does not tolerate cheating or plagiarism in any form. Students who violate the Code of Academic & Professional Conduct will be subject to the Dean's Disciplinary Procedures.

Please familiarize yourself with the proper methods of citation and attribution. The School provides some valuable resources online; we strongly encourage you to familiarize yourself with these various styles before conducting research. Cut and paste the following link into your browser to view the Code of Academic & Professional Conduct and to access useful resources on citation and attribution: http://bulletin.columbia.edu/sipa/academic-policies/

Violations of the Code of Academic & Professional Conduct should be reported to the Associate Dean for Student Affairs.

SIPA Disability Statement

SIPA is committed to ensuring that students registered with Columbia University's Disability Services (DS) receive the reasonable accommodations necessary to participate fully in their academic programs. If you are a student with a disability and have a DS-certified accommodation letter, you may wish to make an appointment with your course instructor to discuss your accommodations. Faculty provide disability accommodations to students with DS-certified accommodation letters, and they provide the accommodations specified in such letters. If you have any additional questions, please contact SIPA's DS liaison at disability@sipa.columbia.edu or 212-854-8690.

About

Advanced Computing for Policy course

Resources

License

Contributing

Stars

Watchers

Forks

Contributors 31