CSCI 132 / Fall 2025
Data Structures
Instructor:
Meeting Times:
|
Open Office Hours / Student Hours:Prof. Jennifer Tang
|
You have taken a first intro class in computer science and know some of the basic tools of computer programming. Now it is time to take your skills to the next level! Computer programming is more than knowing about proper commands and syntax; to be a good programmer it is also important to know how to design code well. How do you organize your code so that it is easy to understand, can be used multiple times for different programs, and runs efficiently? This course will teach you to use those tools in an effective way. It will show you how to build structures for complex tasks. There are four main ideas we will be addressing in this course:
This course will include lectures, labs, and programming projects as key components. Quizzes and exams will be used as assessments. (More information about these below.) The labs and programming projects use C++ as the programming language. You will also learn about the C++ language throughout the course. C++ is a powerful, efficient, and widely-used language. This course will also be an opportunity to develop C++ your coding skills.
Prerequisites: CSCI 131 with a grade of C or higher, or permission of the instructor. You should be comfortable with the basics of programming in at least one of Java, C, C++, or a related language.
I intend for every student to feel their voice is welcome in this course. My goal is to create a learning environment that supports each of you and embraces the diversity that you all bring. All members of the class are expected to be respectful and supportive of each other's ideas and identities, even when they disagree. Even when discussing narrow technical matters, racism, sexism, and other hidden assumptions can appear, and there are difficult ethical dimensions to everything we do as computer scientists. I will endeavor to point these out when they appear, and to check my own assumptions about your past experiences and perspectives. We all make mistakes that can impact others, but I hope that by committing to listen reflectively, and without defensiveness, we can build a strong and inclusive community. Please let me know if there is anything in class meetings, in office hours, in study sessions, or elsewhere that troubles you or makes you feel uncomfortable or unvalued. Even for events outside of the classroom, I welcome and appreciate any suggestions you have pertaining to diversity, equity, and inclusion.
If you prefer to speak with someone outside the course, please do not hesitate to reach out to any other faculty, the class deans, department members of the student advisory council, or others you feel more comfortable speaking with.
Also, if you have a name and/or set of pronouns that differ from those that appear on my class roster, please let me know!
F. Carrano and T. Henry.
Data Abstraction & Problem Solving with C++: Walls and
Mirrors,
7th Edition, Pearson, 2017.
This is a required textbook. Many of lectures will follow the topics in this textbook.
Students are expected to read the textbook to supplement their knowledge.
(There is a newer edition of this book with a slightly different name but roughly the same
content. It is fine to use that book if you want as well.)
It is expected that you will have textbooks and other required class materials in order to achieve academic success. If you are unable to purchase course materials, please go to the Financial Aid Office website to contact a staff member, who will be happy to provide you with information and assistance.
Information about the course, labs, projects, and any additional resources for the course will be posted on this website. This class will not be using Canvas. Any announcements for the course will be sent out through email to all the students.
Lectures The purpose of lecture is to introduce the material in class. Lecture notes will be posted online before class on the website (in handouts) so that students can choose to use them to take notes.
During lecture, there is an expectation for students to participate by answering questions (using online poll systems on laptops/tablets/phones or by raising their hands to be called on). In class answers are not assessed for correctness; they will only be evaluated for participation. This purpose of providing these answers is to help students engage and think more critically about the material.
NOTE: To participate in activities, it is recommended that each student bring either a laptop or tablet. However, laptops and tablets should only be used for taking notes and participating in class activities. Please do not use your devices for purposes not related to the class. Not only will this affect your ability to be attentive, it may also distract your classmates.
During class, there may also be activities which include thinking of solutions to problems either independently, in pairs, or in a small group. These may include involve brainstorming ideas or open ended questions. The purpose of these activities are to allow students to engage with the material more directly and for students to self evaluate their own understanding during lecture.
Labs There will be about eleven lab assignments to be completed in the two-hour weekly lab sessions. Labs assignments are designed so students can explore and implement concepts they learn about data structures and C++ in a programming environment while receiving support from the staff and other students.
Attendance in lab is mandatory. In the event that you must miss a lab, please contact the instructor to make arrangements. Lab assignments are designed and intended to be completed by the end of the lab session, but will be accepted without penalty by the due date listed on the assignments page, generally at 11PM on the following Monday. Labs will not be accepted after this extended due date.
Projects There will be about eight individual programming assignments, each requiring programming in C++. The assignments are meant reinforce concepts learned in lecture by getting students to apply them. Their purpose is to make sure students understand the materials well enough to use them to solve problems. These assignments should be done individually with limited help from other students (see below for collaboration policy).
Each assignment is due on the assigned due date. However, generally projects are accepted up to three days late, but the maximum possible score for an assignment will be reduced by 10% for each day or portion of a day that the assignment is turned in late. So the maximum possible score for an assignment turned in up to 24 hours late is 90%, and the maximum possible score for an assignment turned in up to 48 hours late is 80%, and so on. Late work will not be accepted after graded assignments are returned or solutions are discussed in class. Some assignments have more strict late penalties, so that solutions may be discussed sooner in class, e.g. before an exam.
Quizzes There will be approximately eight short in-class quizzes. Quizzes might be held either in class, in lab, or could be take home. Quizzes are meant to be periodic check-ups on whether students are following the material. Students can use them to evaluate their own readiness for the exams. Typically, students will take them individually without referencing any class imaterials. Quizzes cannot be made up except for cases outlined by the College as excused absences and with prior notification (e.g., for recognized religious observances and athletic competition). Some quizzes may come with extra credit questions which can boost the overall quiz grade.
Exams There will be two midterm exams, held outside of class time, and a comprehensive final exam during the final exam week at the end of the semester. The purpose of the exams is to assess whether students understand the concepts expected of them and whether students can apply these concepts correctly. Exams are done with paper and pencil (so no coding on a computer) but the exams may include sections which ask students to write down code. These are are tentatively scheduled:
Grades will be computed approximately as follows:
Projects | 20% |
Labs | 15% |
Quizzes | 10% |
Participation | 5% |
Midterm Exam 1 | 15% |
Midterm Exam 2 | 15% |
Final Exam | 20% |
One quiz score will be dropped. However, zero or a low score due to academic integrity violations will never be dropped.
Grading philosophy: Overall, your grade will for the most part be determined by your understanding of the material. It is not necessary for you to understand everything immediately during lectures (hence why you do not need to always answer questions correctly in class). It is expected that this understanding comes gradually. Ideally, your grade should reflect the level of understanding you have as displayed through your assignments by the end of the course. Note that, to make evaluating your assignments practical and fair for everyone, it is important that you follow instructions. Points will be deducted if instructions are not followed correctly. This is largely because if you do not do the assignment as stated, you cannot appropriately be evaluated for understanding. Please also note the Discussion Log policy (see below).
If you are experiencing a difficult situation affecting your ability to complete any of the expectations of the course, please contact the instructor.
You are also encouraged to come to office hours/student hours. These are available for help on materials presented in lectures/the textbook or any question on labs or projects. If you cannot make the instructor's specific office hour times, email to request an appointment.
While getting help from others can be beneficial to learning, sometimes the best way to learn to try challenges on your own. Below is a detailed collaboration policy which describes how this course expects you to collaborate on programming assignments and how to appropriately use outside resources.
Please also refer to the Math and CS Department Honor Code Policy and the College Academic Integrity Policy.
Moderate Collaboration for Lab Assignments Moderate collaboration is allowed, expected, and encouraged on lab assignments. This means you may talk to your fellow students about how to go about solving the various problems presented. During labs sessions, we expect you to share screens, help debug each others code, and solve problems together. However, you should type in and submit your own solution, even if you worked together. No deduction is taken for this moderate collaboration, so long as you list your partners in your collaboration log. Lack of acknowledgement in your collaboration log is considered a serious breach of conduct.
Limited Collaboration for Programming Projects Only limited collaboration is allowed on programming projects. This means you should limit your discussion with your fellow students (or others) to general information and examples. You may discuss the logic for solving a programming problem and the meaning of compiler error messages with other students, for example, or discuss a tricky piece of syntax or line or two of code. But you may not discuss larger pieces of program code with other students. A good check for this is that you should be able to speak mostly in plain English when discussing assignments, and you should not share files or copy-paste code with another student. You may not work with another student to write a piece of code and have each student turn in that code as if it was their own. You may not copy the file of another student (or any other source) and turn it in as your own work.
A typed discussion log is required for each and every assignment. No work will be accepted without a written discussion log.
In general, you may refer to your texts, your class notes, and your course instructor for help. You may also consult public literature (books, articles, web sites) for general information and examples, but you should not seek or use published solutions to assignments. You may also talk with with fellow students about general information and strategies for solving assignments, but not specific solutions or code. The work you turn in must be your own. If you are in doubt about what is acceptable, be sure to ask the course instructor.
Clarification about Artificial Intelligence or "generative AI": Generative AI models like ChatGPT, BARD, GitHub/Microsoft Copilot, or similar code generation tools are clearly useful. For the purposes of CSCI 132 and the collaboration policy, you should treat generative AI models as if it were a person -- say, a very well-read, sometimes clever, and very confident but sometimes unreliable roommate. That means it is okay to ask a model for general help understanding class material, but it is not okay to put homework questions into a model, or to ask the model to solve specific tasks that an assignment has tasked you to perform. That crosses the line into simply cheating, just as asking a roommate to do your homework would be a violation of the College academic integrity policy. If you consult or use generative AI in any of your assigned work, you must cite the specific tools you used and provide a list of all prompts you used in your discussion log. You are still responsible for ensuring the correctness and accuracy of all submitted work. In addition, you are responsible for ensuring that all source materials used in your work are properly cited and be aware that generative AI can often produce output copied closely (or sometimes directly) from source material without properly citing those sources. Failure to correctly and fully cite sources constitutes plagiarism and is a violoation of the academic integrity policy.
Clarification about other online sources: It is fine to use Google and other sites to look for snippets of publicly available code that might help you with assignments, and it is okay to use a limited amount of such code in your own work. You should not take entire solutions or large amounts of code from the web. And you must clearly comment your code to indicate which code and ideas are purely your own, which code or ideas are borrowed or adapted from elsewhere, and where the other code or ideas came from.
In all cases you must cite each source of ideas you adopt in your discussion log for each assignment. You should never present another person's work as your own. By clearly indicating any sources you consult and the people with whom you collaborate, you are giving credit where it is due. If you borrow or adapt code, and if the code is good, then you will get some credit for having found it (you won't get credit for writing it, since you didn't). If you borrow bad code, the fault is all yours. If you borrow or adapt code or use source material but don't cite it, that's plagiarism, and will be considered a violation of the academic integrity policy.
For each assignment, you must keep a log detailing every collaboration you had with someone else and every source you consulted when completing the assignment. Each log entry must include: the date and time, the source, the length of time spent talking or reading, and a summary of discussion or material read. If you consult or use any form of generative AI while completing an assignment, include the specific AI system used and list all prompts used. You don't need to include the course textbook, the lecture notes, or the instructor, since it is assumed you will consult these sources.
Here is an example—you should use a similar format:
Even if you did not discuss anything with anybody and never consulted any other sources, you must still submit a discussion log that says just that, like so:
Failure to submit a complete disccusion log will result in a penalty
Enrolled students are expected to attend all regular class meetings and to participate in discussions and other class activities, except for excused absenses or by arrangement with the instructor. Please refer to the College Attendance and Excused Absence Policies.
Consistent with applicable federal and state law, this course may be video/audio recorded as an accommodation only with permission from the Office of Accessibility Services.
The instructor is committed to providing students with disabilities equal access to the educational opportunities associated with this course. For details or to request accommodation, please refer to College procedures on Requests for Reasonable Accommodations and the Office of Accessibility Services.