DSAN 5500
Data Structures, Objects, and Algorithms in Python
Welcome to the Spring 2027 version of DSAN 5500: Data Structures, Objects, and Algorithms in Python at Georgetown University! Please note that the most up-to-date version of this syllabus will always be available at https://jjacobs.me/dsan5500.
The course meets on Thursdays from 6:30-9pm in the Car Barn, Room 202
Course Staff
- Prof. Jeff Jacobs,
jj1088@georgetown.edu- Office hours (Click to reserve a slot): Tuesdays 3:30-6pm, Car Barn 207-03
- TA Hailun Ma,
hm903@georgetown.edu- Office hours by appointment
Course Overview
My goal, in creating the course, is to take the general, language-agnostic data science concepts you’ve learned in (e.g.) DSAN 5000 and work through how to implement these concepts efficiently in Python, where we can define “efficient” in different ways based on different goals that we may have in different settings while working as Data Scientists.
The graded components for the course consist of five homework assignments, an in-class midterm, and a final project. Grades will be allocated as follows:
| Category | Percent of Final Grade |
|---|---|
| In-Class Midterm | 25% |
| Final Project | 30% |
| Homeworks | 45% |
| HW1: Python Fundamentals and Algorithmic Complexity | 9% |
| HW2: Object-Oriented Programming | 9% |
| HW3: Data Structures, Algorithms, and Complexity | 9% |
| HW4: Data-Processing Pipelines | 9% |
| HW5: Parallel Pipelines and Map-Reduce | 9% |
The course does not have any “official” prerequisites, but a general comfort with Python is strongly recommended. If you have never used Python before, however (or if you haven’t used it in a while and feel like your skills are rusty), you can browse the materials on the Resources page!
Course Topics / Calendar
The following is a rough map of what we will work through together throughout the semester; given that everyone learns at a different pace, my aim is to leave us with a good amount of flexibility in terms of how much time we spend on each topic: if I find that it takes me longer than a week to convey a certain topic in sufficient depth, for example, then I view it as a strength rather than a weakness of the course that we can then rearrange the calendar below by adding an extra week on that particular topic! Similarly, if it seems like I am spending too much time on a topic, to the point that students seem bored or impatient to move onto the next topic, we can move a topic intended for the next week to the current week!
| Unit | Week | Date | Topic |
|---|---|---|---|
| Unit 1: Python Fundamentals and Algorithmic Complexity | 1 | Jan 8 | Course Intro and Motivation |
| 2 | Jan 15 | Software Design Patterns and Object-Oriented Programming | |
| Unit 2: Object-Oriented Programming | 3 | Jan 22 | Data Structures and Computational Complexity |
| 4 | Jan 29 | Data Structures from Scratch with OOP | |
| Unit 3: Data Structures, Algorithms, and Complexity | 5 | Feb 5 | Linked Lists and Binary Search Trees |
| 6 | Feb 12 | Hash Tables and BST Iteration | |
| 7 | Feb 19 | Code Examples and Midterm Prep | |
| Midterm | 8 | Feb 26 | In-Class Midterm |
| Unit 4: Data-Processing Pipelines | 9 | Mar 12 | BST Iteration, Functional Programming, and the RSA Algorithm |
| 10 | Mar 19 | Cryptographic Hash Functions and Public-Key Cryptography: RSA and Diffie-Hellman | |
| 11 | Mar 26 | From Object-Oriented to Functional Programming | |
| 12 | Apr 9 | Final Projects, Functional Programming, Map-Reduce | |
| Unit 5: Final Project Application Areas | 13 | Apr 16 | Elliptic Curve Cryptography |
| 14 | Apr 23 | Final Project office hours (Jeff and Hailun) |
Assignment Distribution, Submission, and Grading
The programming assignments for the course will be managed through Google Classroom. This means that, to work on and submit the assignments, you will use the following workflow:
- Open the
.ipynbfile for the assignment from within Google Classroom - Work on the problems within the file, saving your progress early and often! You can try things out or create drafts of your solutions however you’d like (for example, in VSCode or JupyterLab or any other IDE), but your final response to each question must be included in your Colab notebook as accessed through Google Classroom!
- Submit the completed version of the assignment by clicking the “Submit” button generated by the last cell in each assignment’s Colab notebook, or (if the Submit button does not work) by clicking the blue “Hand in” button above the link to the notebook in Google Classroom’s interface.
Homework Lateness Policy
After the due date, for each homework assignment, you will have a grace period of 24 hours to submit the assignment without a lateness penalty. After this 24 hour grace period, late penalties will be applied up until 66 hours after the due date. Specifically, late penalties will be applied based on the following scale (unless you obtain an excused lateness from one of the instructional staff!):
- 0 to 24 hours after due date: no penalty
- 24 to 30 hours after due date: 2.5% penalty
- 30 to 42 hours after due date: 5% penalty
- 42 to 54 hours after due date: 10% penalty
- 54 to 66 hours after due date: 20% penalty
- More than 66 hours after due date: Assignment submissions no longer accepted (without instructor approval)
Excused lateness exceptions will be grounded in a policy where you can “pause” the class (due-date-wise, but also just, expectation-of-progress-wise more generally) to take the time you need to handle things happening in your life. Then, you can “resume” work once you feel more centered/once you find yourself back on stable ground. The “Maslow’s hierarchy” model from psychology (Figure 1) provides a straightforward way to think about this approach.
Learning data ethics is way up there in the blue triangle, so, it’s important that you feel like the first four levels are solidified before you turn your focus back to classwork. And, it’s a win-win, because it means that once you’re back in action you can be more engaged and receptive to new topics, rather than being forced to “simulate” being in the blue triangle while in reality struggling in other spots!
Final Letter Grade Determination
Once all assignments have been graded, we will compute your final numeric grade according to the above weighting, rounded to two decimal places. The letter grade that we report to Georgetown on the basis of this numeric grade will then follow the DSAN letter grade policy as follows, where the start and end points for each range are inclusive:
| Range Start | Range End | Letter Grade |
|---|---|---|
| 92.50 | 100.00 | A |
| 89.50 | 92.49 | A- |
| 87.99 | 89.49 | B+ |
| 81.50 | 87.98 | B |
| 79.50 | 81.49 | B- |
| 69.50 | 79.49 | C |
| 59.50 | 69.49 | D |
| 0.00 | 59.49 | F |
Official Course Description
The Data Structures, Objects, and Algorithms in Python course will look at built-in data structures, such as dictionaries, lists, tuples, sets, strings, and frozen sets. The course will also cover objects and classes in Python, as well as building new structures and objects. The class will cover algorithms including runtime, recurrence, and development. Applications will include data science problems. Prerequisite: A working or intermediate knowledge of Python. 3 credits.
Generative AI Policy
Generative AI tools such as ChatGPT, Claude, Gemini, GitHub Copilot, and similar technologies are increasingly part of modern data science practice. Students are encouraged to learn how to use these tools responsibly and critically as part of their learning in this course.
You may use generative AI to support your learning — for example, to clarify concepts, explore alternative explanations, troubleshoot code, generate additional examples or practice problems, improve code efficiency, or help you understand statistical methods.
However, AI should support your work, not replace your own thinking and problem-solving. You may not use generative AI to generate complete solutions or answers to homework, quizzes, exams, or other graded assessments and submit those responses as your own. Any work you submit should demonstrate your own understanding of the material.
For projects, labs, coding activities, or other assignments where AI use is appropriate, you are responsible for understanding, verifying, and being able to explain any AI-assisted work that you submit. If generative AI is used for an assignment or activity, you must clearly acknowledge that use and briefly describe how the tool was used. AI-generated output can be incomplete, misleading, or incorrect, and responsibility for the final work remains with you.
Specific assignments or assessments may include additional instructions regarding acceptable AI use. AI use is not permitted during quizzes or exams unless explicitly authorized by the instructor.
When in doubt about whether a particular use of AI is appropriate, please ask.
Title IX/Sexual Misconduct Statement
Georgetown University and its faculty are committed to supporting survivors and those impacted by sexual misconduct, which includes sexual assault, sexual harassment, relationship violence, and stalking. Georgetown requires faculty members, unless otherwise designated as confidential, to report all disclosures of sexual misconduct to the University Title IX Coordinator or a Deputy Title IX Coordinator.
If you disclose an incident of sexual misconduct to a professor in or outside of the classroom (with the exception of disclosures in papers), that faculty member must report the incident to the Title IX Coordinator, or Deputy Title IX Coordinator. The coordinator will, in turn, reach out to the student to provide support, resources, and the option to meet. [Please note that the student is not required to meet with the Title IX coordinator.]. More information about reporting options and resources can be found in the Sexual Misconduct Resource Center.
If you would prefer to speak to someone confidentially, Georgetown has a number of fully confidential professional resources that can provide support and assistance. These resources include:
- Health Education Services for Sexual Assault Response and Prevention: Confidential email
sarp@georgetown.edu - Counseling and Psychiatric Services (CAPS): 202-687-6985
- After hours you can call 833-960-3006 to reach Fonemed, a telehealth service, and ask for the on-call CAPS clinician
GSAS Resources and Policies for Students
You can find a collection of relevant resources and policies for students on the GSAS website, and the Provost’s policy on accommodating students’ religious observances on the Campus Ministry website.
You can also make use of the Student Academic Resource Center. In particular, within the Resource Center there is a link to Georgetown’s Disability Support page. If you believe you have a disability, you can contact the Academic Resource Center (arc@georgetown.edu) for further information. The ARC is located in the Leavey Center, Suite 335 (202-687-8354), and it is the campus office responsible for reviewing documentation provided by students with disabilities and for determining reasonable accommodations in accordance with the Americans with Disabilities Act (ADA) and University policies.