teaching
DS2001 Programming with Python Syllabus
Primary Instructor
Ata A. Uslu (uslu.ata@northeastern.edu)
Lecture Time
Wednesdays 2:50-4:30pm
Location
Khoury College of Computer Sciences
West Village H, Room 210B
440 Huntington Ave, Boston, MA 02115
Office hours
Wednesdays 5:30-6:30pm
TAs
- Isha Hemant Arora (arora.isha@northeastern.edu)
- Mirza Nayeem Ahmed (ahmed.mir@northeastern.edu)
- Sribindu Sreepada (sreepada.s@northeastern.edu)
- Swati Agarwal (agarwal.sw@northeastern.edu)
Tools we will be using
Anaconda: https://www.anaconda.com/products/distribution
Spyder: Comes with Anaconda but here are some explanations and tips for customization: https://medium.com/coderbyte/spyder-python-ide-for-absolute-beginners-89e4ea1832af
Overview
We generate massive amounts of data just with our mere existence these days. Navigating through this data and gaining insights, be it for business purposes or intellectual curiosity, is almost always a computationally demanding task. In this course we will learn how to talk to computers and make them understand what we want them to do for us. In the end we will enjoy the time we saved as our computers work for us and produce interesting results. In more concrete terms we will:
- Practice the skills previously learned in DS2000 using real-world examples, mostly with data and use cases from social sciences.
- Critically think on what can go wrong with our code as well as the responsibility that comes with our increased capability and power by making these obeying and heartless machines work for us.
- Learn a foreign language to talk to computers: python.
Requirements
If you have access to a laptop please bring it to the class every Wednesday. No worries if you don’t have one, but just reach out to me as soon as possible so we can find a suitable arrangement using Northeastern’s resources.
Although we will cover the skills you should have acquired in DS2000, generally I will assume that no one in my class has any experience in programming with python. So no prior knowledge is required. We will build fundamental python skills together.
Assignments
1. In-class exercises:
Practice is essential when it comes to programming. We will spend most of the class time working on programming exercises that cover the topics learned in DS2000. The exercises are designed to be completed within class time, but the deadline to submit the completed exercise will be Sundays at 11:59pm. You are encouraged to come to class to work on the assignment in real-time beside others who can provide help (classmates TAs me), and submit the exercise at the end of class. However, for those who need more time to complete or those who would like to practice more on their own, the deadline is Sunday.
These assignments will be graded for completion and effort on a scale from 1 (no effort) to 5 (significant effort). If you can’t figure out the solution to a problem after giving it your best and getting help from the TAs/me, you should write out in #comments where you got stuck.
2. Readings:
I will assign readings that are relevant to our topics and we will discuss them in class. There won’t be many, so I expect you to read them and come prepared to class. These readings will mostly be famous articles and scientific papers from prominent researchers and authors, and they will help us critically think about what we do with our data and the impact of our work. We will start each class by discussing assigned readings, if any, before working on that week’s coding assignment.
3. Discussion Board Posts:
You are required to post short (1-2 paragraphs) reading responses on the class discussion board on Canvas. These posts will be due Tuesdays at noon. The purpose is to give you and me at least 24 hours to read the responses posted by your classmates after all are uploaded to Canvas.
The format is quite free. I would suggest you identify one idea that is introduced in one of that week’s readings and articulate the idea, and add your remarks (maybe explain why you support it (or not), what you think about it – if it makes you excited or it doesn’t make any sense, or if that idea reminds you of other concepts etc.)
These responses will be graded for your effort on a scale from 1 to 3. You only need to post 7 responses throughout the semester; however, you are still expected to do the readings for the weeks you don’t post, as we will discuss them in class and you need to participate. If you post more than 7 times, only your 7 highest scores will be kept and the lowest scores will be excluded from your grade.
4. Final Project:
You will work on a python programming project throughout the semester and present your findings in the end. The goal of the project is to give you a chance to demonstrate the skills that you have developed in class and to make you practice the new language that you have learned. Like any other language, speaking Parseltongue requires practice. We will talk more about the project as the semester progresses and as we cover more and more topics that will help you with your project. There are two deliverables for the final project: project proposal and results.
Proposal: You will first submit a project proposal (2 pages). It must include:
- Your research question:
- What do you want to know by doing this project? What are you most interested in?
- Motivation/Justification:
- Why did you pick that question? Why is that interesting to you or why should others be interested in too? “So what?”
- Data:
- The dataset you are going to use to answer your question. You will be expected to have attained the dataset by this point. You will have to find your own datasets, but we will discuss the potential datasets that you can take a look at in class.
- Proposed methods:
- How are you going to utilize your dataset to address your research question(s)
Analysis and results: After the proposal you will submit a Jupyter notebook (using the Jupyter platform or Google Colab) to present your project code and findings. It must start with a brief introduction on what your research question is and the motivation behind it. When your code runs, it must display some summary statistics of your data and at least 1 visualization with an interpretation. This is the minimum requirement; you can present more to earn bonus points. You will present your notebook in class and explain us your analysis, visualizations, and findings. You should tell the class what we can learn from your findings and why they are important. You will also identify at least 1 flaw of your dataset or your analysis, and explain why you ended up with that (what was missing, what went wrong) and what would help you or future researchers improve upon it.
Grading
- In-class exercises: 50%
- Discussion board posts: 20%
- Final project proposal: 10%
- Final project analysis: 20%
Final grades for DS2001 will be based on the following scale:
Grade | Percentage |
---|---|
A | 90+ |
A- | 87 - 89 |
B+ | 83 - 86 |
B | 80 - 82 |
B- | 77 - 79 |
C+ | 73 - 76 |
C | 70 - 72 |
C- | 67 - 69 |
D+ | 64 - 66 |
D | 62 - 63 |
D- | 59 - 61 |
F | < 59 |
Accommodations
I am happy to discuss any learning accommodations that will help ensure your success and comfort in the course. This applies to both students with accommodations confirmed by Northeastern (see https://drc.sites.northeastern.edu/ for more information) as well as those without formally documented needs, such as food or housing or any insecurity. Please try to get in touch about accommodations in the first couple weeks of the semester, but do not hesitate to reach out for support as needs arise.
Academic Integrity
In-class assignments are graded on participation and effort and we expect that you will talk to one another while doing them to exchange ideas, concepts, and help. However, unless otherwise is formally stated in the assignment file, I expect you to work individually on your assignments, and you may not copy anyone else’s code. Note that “copying” includes any medium that transfers one student’s code to another student, including but not limited to by showing it to them, telling them, or by other means.
The final (semester) project can be done individually, or preferably in groups of 2. Projects are expected to be novel work. Within your project group, you will collaborate on ideas, code, and writing, but you may not share your project work outside of your group. If you feel stuck with anything about your project (code, methodology, dataset, bugs etc.) please don’t hesitate to reach out to me or the TAs. We can resolve the issue quickly together.
The university's academic integrity policy discusses actions regarded as violations and the consequences for students: http://www.northeastern.edu/osccr/academic-integrity. Please familiarize yourself with Northeastern’s policies on academic integrity.
If there is something blocking you from being able to complete the coursework on your own, you can always get in touch with me and explain where you get stuck instead of cheating.
Please. Please do not cheat.
Civility and Inclusion
I’m committed to building a classroom environment that is comfortable and inclusive. This course involves collaborative discussions/activities, and I expect you to approach them with openness, respect, and care for one another. Constructive disagreement and debate are encouraged; derogatory, marginalizing, and threatening comments and actions are not. Please let me know if you feel uncomfortable or excluded so that we can work to create a positive learning environment together.
Final Thoughts
You can always reach out to me and ask questions if you are unsure about anything related to the class or the syllabus. Also, if you need to get in touch with me about anything related to the class, do that as soon as possible. Do not mind if it’s already past midnight or it’s a holiday etc. I’ll answer as soon as I can, so that we can work on the matter as soon as possible.
Schedule
Date | Week | Topic |
---|---|---|
9/7/22 | 1 | Syllabus and Introductions. Installation of required software |
9/14/22 | 2 | Console inputs and variables. Handling user input, printing and formatting strings, storing and editing variables |
9/21/22 | 3 | Reading simple data from files, plotting data with matplotlib, working with conditionals |
9/28/22 | 4 | While loops, random number generation, lists |
10/5/22 | 5 | Reading data from large files line by line, defining and working with functions, list manipulation |
10/12/22 | 6 | Data processing pipelines. Using functions to handle phases of data processing; reading, analyzing, plotting data; processing lists of lists. |
10/19/22 | 7 | Final project proposals and requirements |
10/26/22 | 8 | Apple Retail Store Inventory case: using dictionaries, lists, matplotlib |
11/2/22 | 9 | Final projects check in |
11/9/22 | 10 | Basics of text processing with NLP. Featuring Nicki Minaj, Twitter API, and dictionaries. Part I |
11/16/22 | 11 | Natural Language Processing case, Part II |
11/23/22 | 12 | Thanksgiving |
11/30/22 | 13 | Last minute help session for final projects in class |
12/7/22 | 14 | Final project presentations |