CMPSC101 Fall 2025 :: DataStructures

Author

Oliver Bonham-Carter

Class Sessions: MWF 10:00 AM to 10:50 AM, Alden 101
Laboratory Session: Thursday, 2:30 PM to 4 PM, Alden 101
Instructor: Dr. Bonham-Carter, obonhamcarter@allegheny.edu
Office Location: Alden Hall 203

Instructor Office Hours: Visit the below URL to find availability and schedule and appointment. https://www.oliverbonhamcarter.com/contactandabout/

Book An Appointment!: https://calendar.app.google/dEK6MftNGNLV1Ft96

Note: If the office hours times are not convenient, then please reach out to me and we can find an alternative time to meet.

Course Description

A continuation of CMPSC 100 with an emphasis on implementing, using, and evaluating the computational structures needed to efficiently store and retrieve digital data. Participating in hands-on activities that often require teamwork, students create data structures and algorithms whose correctness and performance they study through proofs and experimentation. Students continue to refine their ability to organize and document a program’s source code so that it effectively communicates with the intended users and maintainers. During a weekly laboratory session, students use state-of-the-art technology to complete projects, reporting on their results through both written documents and oral presentations.

Quantitative Reasoning (QR): Quantitative Reasoning is the ability to understand, investigate, communicate, and contextualize numerical, symbolic, and graphical information towards the exploration of natural, physical, behavioral, or social phenomena.

Scientific Process and Knowledge (SP): Courses involving Scientific Process and Knowledge aim to convey an understanding of what is known or can be known about the natural world; apply scientific reasoning towards the analysis and synthesis of scientific information; and create scientifically literate citizens who can engage productively in problem solving.

  • Prerequisite: CMPSC 100 or permission of the instructor.
  • Distribution Requirements: QR, SP.

Course Learning Objectives

  1. When solving a problem with a Python program, accurately describe data structures and algorithms and their inherent trade-offs.
  2. Use data structures and algorithms to correctly and efficiently solve a problem through the use of a Python program.
  3. Use empirical methods to characterize the performance of a Python program that uses data structures and algorithms.
  4. Use industry-standard practices, such as testing and debugging, and professional-grade integrated development environments (IDEs), command-line tools, and version control systems to implement Python programs.
  5. Implement Python programs and documentation that conforms to industry-standard formats and styles.

Learning Outcome QR: Students who successfully complete this requirement will demonstrate an understanding of how to interpret numeric data and/or their graphical or symbolic representations.

Learning Outcome SP: Students who successfully complete this requirement will demonstrate an understanding of the nature, approaches, and domain of scientific inquiry.


Materials

Textbook

Introduction to Computation and Programming Using Python by John V. Guttag

Online Resources and Course Materials

Selected Software and Technologies

We will be using the following technologies in class.

  • VSCode
  • Python 3.12 or later
  • pipx
  • Poetry
  • Gatorgrade
  • Git
  • Free GitHub Account
  • Free Discord Account
  • Allegheny College Email

Grading

Gradebook Repository

GradeBook repository will be used to deliver your grades from your activities and labs to you. In this repository, you will find a file which contains the same information that the instructor has in the gradebook. While it is a repository that you will pull from, you will never need to push anything to this repository.

Please use the following URL to create your gradebook repository; https://classroom.github.com/a/34hXX52q.

Grading Scale

Letter Range Letter Range Letter Range
A 96 - 100 A- 90 - 95.9
B+ 87 - 89.9 B 83 - 86.9 B- 80 - 82.9
C+ 77 - 79.9 C 73 - 76.9 C- 70 - 72.9
D+ 67 - 69.9 D 63 - 66.9 F 59.9 and below

Benchmarks

The grade that a student receives in this class will be based on the following categories. All percentages are approximate and, if the need to do so presents itself, it is possible for the assigned percentages to change during the academic semester.

Category Percentage Assessment metric
Class Participation and Activities 20% check mark grade
Labs 40% letter grade
Midterm Exam 20% letter grade
Final Project 20% letter grade
Total 100%

Definitions of Grading Categories

  • Class Participation: All students are required to actively participate during all of the class sessions. Your participation will take forms such as answering questions about the required reading assignments, completing in-class exercises, asking constructive questions of the other members of the class, giving presentations, leading a discussion session in class.% and in the course’s Slack channels.

  • Activities: These assignments invite students to explore different techniques for rigorously designing, implementing, programming, evaluating, and documenting real-world Python programs. These assignments will invite students to use tools like a text editor, a terminal window, and a modern Python development environment to implement functions that strike the right balance between understandability, generalizability, and specialization. Students will also use the data collected from running experiments to evaluate the implementation of a Python function as they consider, for instance, its efficiency and correctness. Knowledge gained from the class and the textbook will be integral to the completion of these projects. Unless other information is given about a due date, activities are to be completed by the end of class.

  • Exams: The exams will cover all of the material in their associated module(s). The finalized date for each of the exams will be announced at least one week in advance of the scheduled date. Unless prior arrangements are made with the course instructor, all students will be expected to take these exams on the scheduled date and complete the exams in the stated period of time.

  • Final Project: This project will present you with an opportunity to design and implement a correct and carefully evaluated programming solution for a specific problem. Completion of the final project will require you to apply the knowledge, programming and technical skills that you have acquired during the course. The details for the final project will be given approximately a month before the project due date (during finals week).


Schedule At-A-Glance

  • Week One: Software Operations (Guttag Chapter 1)
  • Week Two: Python Foundations (Guttage Chapter 2)
  • Week Three: Numerical Programs (Guttag Chapter 3)
  • Week Four: Function Scope (Guttag Chapter 4)
  • Week Five: Structured Types (Guttag Chapter 5)
  • Week Six: Mutability and Aliasing (Guttag Chapter 5)
  • Week Seven: Recursion (Guttag Chapter 6)
  • Fall Break (Thursday to Sunday)
  • Week Nine: Modules and Files (Guttag Chapter 7)
  • Week Ten: Testing and Handling Exceptions (Guttag Chapter 8 and 9)
  • Week Eleven: Object-Oriented Programming (Guttag Chapter 10)
  • Week Twelve: Algorithmic Complexity (Guttag Chapter 11)
  • Week Thirteen: Sorting (Guttag Chapter 12)
  • Week Fourteen: Data Structures (Guttag Chapter 12 cont)
  • Week Fifteen: Optimization Problems (Guttag Chapter 14)
  • Week Sixteen: Review

Final Deliverable


Assignment Policies

Assignment Submission

All graded components of the course are expected to be turned in on time. Due dates are provided on each assignment. Electronic versions of the Engineering and Specification Labs must be submitted to through a student’s GitHub repository created by GitHub Classroom. No credit will be awarded for any course work that you submit to the incorrect GitHub repository.

Labs are graded based on gatorgrade scores and other criteria.

  • Fifty percent of the grade of each Lab is determined by the percentage of gatorgrade checks passed.
  • One quarter of the grade is determined by code correctness following a rubric.
  • One quarter of the grade is determined by professional skills and presentation following a rubric. Professional presentation is impacted by linting, formatting, testing, profiling, duplication avoidance, commenting, markdown styling and communication in reflections.

Activities Nearly weekly, we will have an activity for which points in the course may be earned. Please be sure to turn in activities by the due date as they cannot be made up at a later time.


Discord

The instructor will be using Discord to pass important information along to the class, such as code, news and other details. Please actively check your Discord each day to ensure that you are up-to-date with course events.

Additional Policies

Attendance

Students are expected to come to class prepared, on time, and to stay engaged for the duration of the class period. This includes both class and lab sessions. This behavior is core to our shared departmental values and is in addition to the college’s attendance policy.

Each day of class, please complete the attendance form.

Preparedness

Coming to class prepared means coming with everything you need to engage in a class session. To satisfy basic expectations of CIS courses, this means, at minimum, that students must:

  • arrive at class with a fully charged laptop
  • bring their laptop charger or a battery pack so as to ensure that their laptop works throughout the entire class session
  • complete any pre-session work such as readings and preparatory assignments

Attendance and Lateness

One missed class or lab session counts as one absence. Coming to class/lab late, leaving early, or missing a large portion of a class/lab session will result in your being marked as “late” to class. Coming to class/lab unprepared may also result in being marked “late”. Being marked “late” to class three times during the course of a semester is equal to one absence.

Excluding the first week of the semester, students can have eight absences without any impact to their grade. These accommodations are meant to cover illness and emergency, so you should always come to class if you are able to do so.

As a general guideline, students cannot miss more than two weeks of class in total throughout the academic semester without receiving a letter grade reduction.

For this course, excluding the first week and eight excused absences, overall course grade will go down by 1/3 of a letter grade for each additional absence or absence equivalence regardless of base grade.

Engagement

The term “engagement” or our expectation that students remain “engaged” can mean many things, often varying by course. Baseline behaviors that indicate engagement include:

  • participation in class activities and discussions
  • defined contribution to class sessions in full-class or group discussions
  • note-taking (physical or digital)
  • participating in course session attendance requirements
  • not participating in non-course related activities
  • not completing non-course related projects

Late Work Policy

The deadlines for assignments are hard deadlines. This policy is intended to ensure that students keep up with course topics, are able to actively participate in class, and are accountable for managing time effectively.

All students in the CIS department are expected to turn in assignments on time. “On time” means on or before the assignment’s due date. This means that an assignment cannot be turned in for credit after a due date, unless the student applies a token.

Tokens

Students in 101 are allotted four tokens to receive extensions on any assignment except the final with no questions asked by the course instructor except either in the rare cases of documented severe and/or extenuating circumstances or in cases that violate the CIS policy document or any College-approved policy.

A token may be applied via a Google Form up to the assignment deadline, with exceptions granted only for severe and/or extenuating circumstances.

Tokens grant an automatic extension of one week to anything except the final exam.

Token Form for Automatic Extension

Extenuating Circumstances

Extenuating circumstances are exceptional, unforeseen, outside of your control, and short-term, like illness and emergency. Regular circumstances associated with taking courses at Allegheny College are not considered extenuating.

The accommodations provided by tokens and permitted absences are meant to cover extenuating circumstances like illness, emergency, and work. However, if you have a contagious illness like COVID-19, the flu, or a cold, you should not come to class. If you have expended all your absences and tokens and are still sick with a contagious illness, you may contact your professor about options. If your symptoms are mild or you are recovering from a respiratory illness, we recommend that you wear a mask to class.

Professor must be informed of all athletic obligations at the beginning of the semester, or with as much notice as possible. If you are feeling healthy and well, you should make every effort to come to class on time and to complete assignments, rather than using absences and tokens you may need later.

These no-questions-asked accommodations are meant to protect student privacy, and to remove the additional effort of acquiring documentation under duress of illness or emergency. In addition, they allow the professor to remain focused on teaching rather than adjudicating excuses.

If extenuating circumstances are severe enough to require more absences and tokens, you may contact your professor to discuss options. In most cases, however, a situation of this gravity warrants a request for a “Late Drop” or “Incomplete” in the course, as the student will not have had adequate opportunity to learn the material.


Communications

Using GitHub and Discord

This course will primarily use GitHub and Discord for collaborative course communication. Communications that are not private matters must take place in the Data Structures Channel in Discord.

The Allegheny College Computer and Information Science Discord Server will also have useful announcements about departmental activities including TL office hours.

Using Email

Although we will primarily use Discord for class communication, the course instructor will sometimes use email to send announcements about important matters such as changes in the schedule. It is your responsibility to check your email at least once a day and to ensure that you can reliably send and receive emails.


Honor Code

The Academic Honor Program that governs the entire academic program at Allegheny College is described in the Allegheny Academic Bulletin. The Honor Program applies to all work that is submitted for academic credit or to meet non-credit requirements for graduation at Allegheny College. This includes all work assigned for this class (e.g., examinations and course assignments). All students who have enrolled in the College will work under the Honor Program. Each student who has matriculated at the College has acknowledged the following Honor Code pledge:

I hereby recognize and pledge to fulfill my responsibilities, as defined in the Honor Code, and to maintain the integrity of both myself and the College community as a whole.

Effective Collaboration

Computer science is an inherently collaborative discipline. The Department of Computer and Information Science at Allegheny College encourages students to engage in collaboration. However, in the context of individual coursework, through which each student must demonstrate their own knowledge, there are certain forms of collaboration that are and are not acceptable.

  • Acceptable forms of collaboration include:
    • Discussing high-level concepts.
    • Referring someone to a course text book, course slides, example programs, or other resources that contain helpful information or instructions.
    • Outlining the high-level steps to solving a problem, without mentioning specific
    • lines of code that need to be written.
  • Unacceptable forms of collaboration include:
    • Sharing details about specific lines of code, including showing your source code to someone or looking at someone else’s code.
    • Copying someone else’s source code, technical writing, program commands, or program output, even with some slight modifications.
    • Typing source code, technical writing, or commands on someone else’s computer.

Plagiarism and Artificial Intelligence

Students may not pass off or represent the work of another student, or their own prior work, as their own current work in any case. Plagiarism and AI-generated code, text, or images are not permitted in any assignment type unless the instructions supplied for the assignment explicitly state otherwise.For exams and all other coursework, students are expected to adhere to the given instructions for the particular exam or item of coursework. It is the responsibility of the student to review the authorization specifications on every item and act appropriately, upholding the honor code. Suspected plagiarized or unauthorized use of AI to generate the work that is turned in will be reported to the Honor Code Committee. This policy does not preclude the use of AI to learn.


Educational Accommodations

The Americans with Disabilities Act (ADA) is a federal anti-discrimination statute that provides comprehensive civil rights protection for persons with disabilities. Among other things, this legislation requires all students with disabilities be guaranteed a learning environment that provides for reasonable accommodation of their disabilities. Students with disabilities who believe they may need accommodations in this class are encouraged to contact Student Accessibility and Support Services (SASS) at 814-332-2898. Student Accessibility and Support Services is part of the Learning Commons and is located in Pelletier Library. Please do this as soon as possible to ensure that approved accommodations are implemented in a timely fashion.


Syllabus Changes

The instructor may make updates or changes to this document at any time as needed until term grades are due. Changes will be announced to the class.