Burton D. Morgan Center 411
1 to 2:30 p.m. MW by appointment, drop-ins from 2 to 3:30 p.m. Tues.
Ebaugh Laboratories 002
When We Meet:
11:30 to 12:20 p.m. MWF
This course provides a broad perspective on the access, structure, storage, and representation of data. It encompasses traditional database systems, but extends to other structured and unstructured repositories of data and their access/acquisition in a client-server model of Internet computing. Also developed are an understanding of data representations amenable to structured analysis, and the algorithms and techniques for transforming and restructuring data to allow such analysis. The primary programming language used in the course will be Python.
At the end of the course you should be able to:
I am always happy to see students during my office hours, whether it's to discuss this class, majoring in DA, how I can contribute to your learning at Denison, or your plans for life after graduation (career, graduate school, etc.). Like many professors, I offer mix of in-person appointments (via Google Calendar) and drop-in office hours.
For many of your questions related to assignments for the class, our teaching assistant will be your first and best source of assistance. Our TA for this class is Ethan Tecson (tecson_e1 [at] denison.edu). Ethan will attend some classes and will hold drop-in office hours and will help answer questions about the course, as well as particular assignments. Ethan's office hours will be posted on Canvas by the end of the first week of classes. In general, you should meet with our TA before coming to my office hours with a code-related or assignment-related question, as the TA should be able to answer most of these kinds of questions. After inquiring with our TA, if you still need my help, you can make an appointment or come to my drop-in hours.
For office hours by appointment, visit my appointment page, where you will see a real-time account of when I am available. You can book the appointment with one or two clicks by selecting any time when I'm listed as available. My standard appointment slots are divided into 15-minute blocks from 1 to 2:30 p.m. on Mondays and Wednesdays. Note that these appointment slots will disappear from my calendar once I've been booked. Please book appointments at least 24 hours in advance.
Drop-in office hours will be held in my office from 2 to 3:30 p.m. on Tuesdays. For these, you will not need an appointment, but I will see students in the order they arrive, so there is no guarantee that I will have time for everyone on a given day. If your question is time sensitive, you should make an appointment.
If I ever need to cancel by-appointment office hours on a given day (say, for example, if I'm ill), I will update the calendar and email anyone with an appointment. If I ever need to cancel office hours on a given drop-in day, I will post to Canvas or e-mail the entire class.
Here you will find information on required readings, import university policies, and course-specific policies like attendance and cell phone use.
|The Pragmatic Programmer, 20th Anniversary Edition by David Thomas and Andrew Hunt (Pearson, 2019): $39.99 ($28.99 ebook). Print or eBook, buy online or at the university bookstore. Note that you need to get the 20th anniversary edition. Match to ISBN-10: 0135957052 or ISBN-13: 978-0135957059 when ordering online.
|Introduction to Data Systems: Building from Python (Spring 2020). Free to read and download online. You can buy the print edition online if you want, but it's not required.
|Selected readings will be made available as html or pdf, and linked to the course website or shared via Canvas
|All assignments in this course will be scripted and analyzed using Python. All of my demos will use Jupyter Notebooks as a programming environment. You are welcome to use Jupyter Notebook, JupyterLab, or any other Integrated Development Environment (IDE) of your choice when writing code. Most assignments, however, will require you to turn in a
.ipynb file and/or a written document (.docx, .pdf). Many assignments will require specific Python dependencies, such as a particular module or library, so it is recommended that you install the Anaconda platform, which includes Python, Jupyter Notebooks, and most if not all of the libraries we will use. Lastly, for our unit on relational databses, we will use the desktop software DB Browser for SQLite, which is free to download and use.
|Assignments will be shared via GitHub Classroom, which provides a collaboration and version control system via Github. Typically, Github Classroom assignments will contain datasets, assignment template files and/or starter code. In some cases, if a dataset is too large for Github's file size limits, assignments will come with instructions on how to download the data online, or from a Google Drive folder. Completed assignments will be turned in for assessment on Canvas, and all grades and student feedback will be issued on Canvas in order to maintain educational privacy.
As a general rule, the expectations in this course are high, and I'm confident you can all do great work. The feedback I provide on assignments is designed to help you get there. My goal is to provide specific, relevant, and honest feedback when I grade your work. This will include constructive criticism, strategies for improvement, and guidance on how students can achieve success. I will not do "compliment sandwiches" just to begin and end on a positive remark, but this means that, when I praise your work, it's an honest (and I think more meaningful) act of praise.
|Attendance and Participation
|Attendance will be taken every day. Late arrival counts as half an absence. Participation will be assessed using a mix of preparedness, speaking during class discussions, remaining attentive during lectures, and completing in-class assignments.
|Digital Poster and Presentation
|Pairs of two students, digital poster with a low-stakes, informal presentation in class
|Quizzes and Homework
|In-class, individual assignment, cumulative (up to the date of the exam)
|Individual and team-based assignments
|In-class, individual assignment, cumulative (covering the entire course)
If you have a legitimate emergency such as a serious illness, a mental health emergency, or a death in the family, I will grant an appropriate extension with a new due date. The trade off is that work turned in this way is probably not going end up in my hand when I grade everything else, so it's going to get very sparse feedback. If you miss a deadline entirely without getting an extension, you will automatically lose 10 points off the top of your grade for each day it is late, in addition to any points you lose for the quality of the work. Retroactive and last-minute extensions will not be granted.
Cell phones should be off and put away. Laptops are okay for notes and such but, when laptops are being used, you should not be messaging, using Facebook, etc. I will check screens regularly give you a verbal warning on your first offense. After that, I reserve the right to ask you to leave class and mark you absent if you are creating a distraction.
Coming to class prepared means that you have the day's reading in hand (printed or digital) and have come to class with a way to take notes (printed or digital). If you are not prepared for class, I reserve the right to grade as if you were absent for that day. Anything due on a given day is due at the start of class. Any digital submission of material is due by the time class starts on the day the hard copy is due.
If you are a student who feels you may need an accommodation based on the impact of a disability, you should contact me privately as soon as possible to discuss your specific needs. I rely on the Academic Resource Center in 020 Higley Hall to verify the need for reasonable accommodations based on documentation on file in that office.
Proposed and developed by Denison students, passed unanimously by DCGA and Denison’s faculty, the Code of Academic Integrity requires that instructors notify the Associate Provost of cases of academic dishonesty. Cases are typically heard by the Academic Integrity Board, which determines whether a violation has occurred, and, if so, its severity and the sanctions. In some circumstances the case may be handled through an Administrative Resolution Procedure. Further, the code makes students responsible for promoting a culture of integrity on campus and acting in instances in which integrity is violated.
Academic honesty, the cornerstone of teaching and learning, lays the foundation for lifelong integrity. Academic dishonesty is intellectual theft. It includes but is not limited to providing or receiving assistance in a manner not authorized by the instructor in the creation of work to be submitted for evaluation. This standard applies to all work ranging from daily homework assignments to major exams. Students must clearly cite any sources consulted--not merely for quoted phrases, but also for ideas and information that are not common knowledge. Neither ignorance nor carelessness is an acceptable defense incases of plagiarism. It is the student’s responsibility to follow the appropriate format for citations. Students should ask their instructors for assistance in determining what sorts of materials and assistance are appropriate for assignments and for guidance in citing such materials clearly.
Note on Technology: Unauthorized use of technology (including, but not limited to, artificial intelligence sites and translation programs) in the preparation or submission of academic work can be considered a form of cheating and/or plagiarism. Instructors may at their discretion create assignments that incorporate the use of supporting technologies and will inform students of acceptable uses of technology in their courses. It is the responsibility of the student to ask the instructor for clarification whenever they are unclear about the parameters of a specific assignment and to understand that presenting the work of artificial intelligence as your own constitutes a violation of Denison's Code. Cases of suspected inappropriate use of technology may be submitted to the Academic Integrity Board to initiate an investigation of academic dishonesty. For further information about the Code of Academic Integrity, see https://denison.edu/academics/curriculum/integrity.
Denison's mission statement articulates an explicit commitment to liberal arts education. It emphasizes active learning, which defines students as active participants in the leaning process, not passive recipients. Denison seeks to foster self-determination and to demonstrate the transformative power of education. A crucial aspect of this approach is what Denison's mission statement refers to as "a concern for the whole person," which is why the university provides a "living-learning environment" based on individual needs and an overriding concern for community. This community is based on "a firm belief in human dignity and compassion unlimited by cultural, racial, sexual, religious or economic barriers, and directed toward an engagement with the central issues of our time."
In this class, we will discuss inequality directly. In many cases, you will asked to apply quantitative reasoning skills to these subject, which can be difficult because there is always the potential for the available data to complicate or contradict something you may feel very passionate about. In these cases, you should aspire to adopt an attitude of critical skepticism, i.e. wary of claims that are not supported by evidence but potentially willing to be persuaded by evidence if you find it compelling, and willing to give that evidence a fair hearing.
How we treat one another will be a cornerstone of these conversations. Denison's "Guiding Principles" speak of "a community in which individuals respect one another and their environment." Further, "each member of the community possesses a full range of rights and responsibilities. Foremost among these is a commitment to treat each other and the environment with mutual respect, tolerance, and civility." It's easy to treat someone this way when you like them and agree with their ideas, but the real challenge is treating those who differ from us with the same compassion and respect. However, I consider disruptive, deceitful, or hateful behavior to be breaches of these responsibilities. Bullying, trolling, hate speech, and harassment of any kind will not be tolerated.
Essays, journals, and other coursework submitted for this class are generally considered confidential pursuant to the University’s student record policies. However, students should be aware that University employees are required by University policy to report allegations of discrimination based on sex, gender, gender identity, gender expression, sexual orientation or pregnancy to the Title IX Coordinator or a Deputy Title IX Coordinator. This includes reporting all incidents of sexual misconduct, sexual assault and suspected abuse/neglect of a minor. Further, employees are to report these incidents that occur on campus and/or that involve students at Denison University whenever the employee becomes aware of a possible incident in the course of their employment, including via coursework or advising conversations. There are others on campus to whom you may speak in confidence, including clergy and medical staff and counselors at the Wellness Center. More information on Title IX and the University’s Policy prohibiting sex discrimination, including sexual harassment, sexual misconduct, stalking and retaliation, including support resources, how to report, and prevention and education efforts, can be found at: https://denison.edu/campus/title-ix.
Log into Canvas to see the summary of upcoming due dates for major assignments.
This assignment has two main purposes: to help you practice oral presentation and communication skills, and to increase your ability to use data visualizations and other visual design elements effectively in service of a central goal. Working in pairs, students will choose a topic from a list provided by the professor, and will create a digital poster that provides a concise but thorough overview of their topic, including some information about theory and application. Pairs will also give a low-stakes, informal presentation on their poster.
Note: The intention is this assignment is to collect your poster submissions for grading and share them out to the rest of the class in the hopes that they will be useful overviews or study guides for projects and exams.
This course has intermittent quizzes on material from readings and lectures. Quizzes are designed to measure how well you are integrating the material. There will be five quizzes in total, each of which will take place on a Friday.
During weeks without quizzes, there will usually be a code-based homework assignment, either a wroksheet or a more open-ended take-home assignment.
The midterm assessment will be an in-class, individual assignment. It will be cumulative to the date of the exam and will focus on questions that test your synthesis of the course content rather than information recall or rote learning.
Our three major project assignments will problem-focused and will require working with data, writing Python code to solve a problem or analyze a question, and explaining your work in the form of a written report. Each of these assignments will have more detailed written instructions, which will be shared on Github Classroom. Due dates for these projects align approximately with the ending of each of our primary units: tabular data, relational data, and hierarchical data.
As with the midterm, the final assessment will be an in-class, individual assignment. It will take place on our scheduled final exam date, and it will cover material from the entire course. It will focus on questions that test your synthesis of the course content rather than information recall or rote learning.
Note: Denison policy does not permit me to accommodate requests to reschedule your exam, except in the case of a medical or family emergency. Travel plans such as plane tickets do not count as a valid reason to reschedule, so please plan accordingly.
|Lab, activity, or coding. Previous assignment due by class time.
|Oral presentations, lecture.
Week 1: Fluent Python
(Monday, January 15, 2024 - Friday, January 19, 2024)
Learning Outcomes: Understand professor's expectations; identify the focus of the class
By Wednesday: Sign up for Github, Complete Course Survey
By Next Wednesday: Install Anaconda; install Github Desktop or set up credential on command line; Read "The Zen of Python" (https://peps.python.org/pep-0020/)
Week 2: Fluent Python
(Monday, January 22, 2024 - Friday, January 26, 2024)
Learning Outcomes: Verify that all software dependencies are covered; understand what quizzes will require
Reminder: MLK Day Observed Monday - No Class
By Friday (January 26): Sign up for digital poster topic
On Friday: Quiz 1
By Next Monday: Complete worksheet 1
Week 3: Fluent Python
(Monday, January 29, 2024 - Friday, February 02, 2024)
Learning Outcomes: Understand and apply advanced python and numpy operations (without pandas)
By Wednesday: Posters 1-2; read "Software Entropy," "Stone Soup and Boiled Frogs," "Good Enough Software," "Communicate!", Pragmatic Programmer pp. 6-13; 19-24 (on Canvas)
On Friday: Quiz 2
By Next Monday: Read "The Essence of Good Design," "DRY," Pragmatic Programmer pp. 28-39
Week 4: Tabular Data
(Monday, February 05, 2024 - Friday, February 09, 2024)
Learning Outcomes: Explain the philosophy of tabular data analysis in Python
By Wednesday: Posters 3-4
By Next Monday: Complete worksheet 2
Week 5: Tabular Data
(Monday, February 12, 2024 - Friday, February 16, 2024)
Learning Outcomes: Use pandas to filter, subset, aggregate, arrange, and mutate rectangular data
By Wednesday: Posters 5-6
On Friday: Quiz 3
By Next Monday: Complete project 1
Week 6: Relational Data
(Monday, February 19, 2024 - Friday, February 23, 2024)
Learning Outcomes: Understand theory of relational data, entities, relationships, data types, basics of SQL syntax
By Wednesday: Posters 7-8
By Next Monday: Read "Orthagonality," "Reversibility," Pragmatic Programmer pp. 39-50
Week 7: Relational Data
(Monday, February 26, 2024 - Friday, March 01, 2024)
Learning Outcomes: Use SQLite/python to create databases, tables, columns, indexes, primary and foreign keys
By Wednesday: Posters 9-10
On Friday: Midterm assessment
By Next Monday: Read "Version Control," "Debugging," Pragmatic Programmer pp. 84-97
Week 8: Relational Data
(Monday, March 04, 2024 - Friday, March 08, 2024)
Learning Outcomes: Practice using SQLite/python to perform create, retrieve, update, and delete operations
Reminder: No Class Friday, March 8
By Monday, March 18: Complete worksheet 3
Week 9: Spring Break
(Monday, March 11, 2024 - Friday, March 15, 2024)
Reminder: No Class This Week
Week 10: Relational Data
(Monday, March 18, 2024 - Friday, March 22, 2024)
Learning Outcomes: Practice using SQLite/python to perform create, retrieve, update, and delete operations
By Wednesday: Posters 11-12
On Friday: Quiz 4
By Next Monday: Read "Refactoring," "Test to Code," Pragmatic Programmer pp. 209-224
Week 11: Relational Data
(Monday, March 25, 2024 - Friday, March 29, 2024)
Learning Outcomes: Understand paradigmatic use cases for relational data
By Wednesday: Read "Decoupling," Pragmatic Programmer pp. 130-137
By Next Monday: Complete project 2
Week 12: Hierarchical Data
(Monday, April 01, 2024 - Friday, April 05, 2024)
Learning Outcomes: Understand theory of hierarchical data
By Wednesday: Read "Naming Things," Requirements Pit," Pragmatic Programmer pp. 238-252
By Next Monday: Complete worksheet 4
Week 13: Hierarchical Data
(Monday, April 08, 2024 - Friday, April 12, 2024)
Learning Outcomes: Practice using json/python to traverse json files
On Friday: Quiz 5
By Next Monday: Complete worksheet 5
Week 14: Hierarchical Data
(Monday, April 15, 2024 - Friday, April 19, 2024)
Learning Outcomes: Understand paradigmatic use cases for hierarchical data (indexes, APIs, web-scraping)
By Next Monday: Complete project 3
Week 15: Putting it All Together
(Monday, April 22, 2024 - Friday, April 26, 2024)
Learning Outcomes: Convert among all data formats (dataframes, SQL, json, HTML)
Week 16: Exam Week
(Monday, April 29, 2024 - Friday, May 03, 2024)
Reminder: Last Day of Class is Monday, April 29