CS 231 Fall 2019     [Syllabus]     Resources     Labs/Projects

Description Contact Schedule Grading Materials Course Policies General Policies

Course Description

CS 231 Data Structures and Algorithms

Focuses on the common structures used to store data and the standard algorithms for manipulating them. Standard data structures include lists, stacks, queues, trees, heaps, hash tables, and graphs. Standard algorithms include searching, sorting, and traversals. Along with implementation details, students will learn to analyze the time and space efficiency of algorithms and how to select appropriate data structures and algorithms for a specific application. In homework, labs, and programming projects, students will implement their own data structures and make use of existing libraries to solve a variety of computational problems.

Learning Objectives

  1. Students understand the advantages and disadvantages of fundamental data structures and can implement them using object- oriented design principles.
  2. Students understand, can implement, and can calculate the time and space efficiency of classic search, sort, and traversal algorithms, including the use of big-Oh notation.
  3. Students understand the tradeoffs between different implementation of data structures and algorithms and can make appropriate design decisions based on application data requirements.
  4. Students can use fundamental data structures and algorithms appropriately to solve a variety of computational problems.
  5. Students can communicate the results of their work and describe an algorithm.

Contact Information

Hannen Wolfe (lectures)
Email: hewolfe@colby.edu
Office: Davis 114
Office hours: M 4-6pm, TW 3-5pm
Please email with any questions, will respond within 24hrs, M-F 9am-6pm

Bruce A. Maxwell (labs)
Email: bmaxwell@colby.edu
Office: Davis 112
Office hours: Knock
M 10pm-late, R 9:00pm-late
Thursday mornings and Friday afternoons are good times to find me.
Any time my office door is open.

General Schedule


Time: MWF 9:00-9:50am
Place: Davis 301


Lab A: M 1-2:20pm
Lab B: M 2:30-3:50pm
Place: Davis 102

Weekly Course Schedule

Monday: Homework assigned
Monday: Previous week's project due at 11:59pm
Wednesday: Project assigned in class
Thursday: Homework due at noon
Friday: 15 minute weekly quiz in class

Important Dates

Final Exam: Thursday December 12th, 9am-12pm

Fall Break:
  • No Wolfe office hours Oct. 21st and 22nd
  • No class Oct. 21st
Thanksgiving break:
  • No Wolfe office hours Nov. 26th and 27th
  • No class Nov. 27th and 29th
  • No lab Nov. 27th and 28th



Labs with Programming Projects 45% Weekly, hands-on, supervised and un-supervised learning.
Quizzes 25% Short weekly in-class quizzes.
Short homework assignments 5% Weekly preparation for Friday quizzes.
Participation 5% Ask questions, answer questions, join in discussions, attend lectures and labs.
Final Exam 20% A 3-hour opportunity at the end of the semester to demonstrate your ability to answer questions about course material.


Wednesday: Project assigned in class

Monday: Project due at 11:59pm

  • 21 points base project
  • 05 points writing/documentation component
  • 04 points extension points (cannot receive if late)
Late Policy:
  • On Time: Assignment out of 30 points
  • 1 week late: Assignments will receive a max grade of 26/30 [no extension points] if turned in within 1 week of the due date. If it is incomplete 1 week after due date please turn it in as is to receive partial credit.
  • 1 Freebie: As you all have busy schedules, each student is allowed to have one free four-day freebie that can be used at your discretion over the course of the semester, excepting only the final project. That means you may choose to hand in one project on Friday instead of Monday. Please email both professors to let them know you are taking your freebie before the deadline.
Turn in Instructions:
  • Please name your homework submission file as follows: [NAME]_homework[NUMBER] (e.g. hwolfe_hw1).
  • Please upload your project source code to the Courses Filer: filer.colby.edu/CS231/[YOUR_FOLDER_NAME]/Private/Projects/Project[NUMBER], where [NUMBER] is the project number (e.g. 1,2,3,...)..
  • Please submit your written project reports on the class wiki (wiki.colby.edu). Remember to tag your wiki page!


Monday: Homework assigned

Thursday: Homework due at noon

  • No extensions
  • Graded either 0 or 1
  • I will post homework solutions on Thursday afternoon to help you study for the quiz!
    Location: filer.colby.edu/Courses/CS231/Course_Materials/Homework Solutions F19/
Turn in Instructions:
  • Please name your homework submission file as follows: name_hw_NUMBER (e.g. hwolfe_hw_1).
  • Please upload your homework file to your folder on the Courses Filer: filer.colby.edu/Courses/CS231/YOUR_FOLDER_NAME/Private/Homework/.


Friday: 15 minute weekly quiz in class.

  • The lowest two quizzes will be dropped.
  • You may make up a missed quiz only if you email Hannah Wolfe before class to let her know you will not be there and to request a time when you can make up the quiz. It is imperative that you let her know before class begins.

Final Exam

Thursday December 12th, 9am-12pm
Based on Friday quizzes

Class Participation

You are expected to attend every class. The course will involve both lectures and hands-on activities in lab. For this course to be truly successful, your presence and participation in lecture and lab is important. When you have a question, ask it. It is highly probable that one of your classmates has the same question. When we give you an opportunity to share your opinion or your answer, please speak up. We want to hear what you have to say. Discussion is a vital part of the learning experience. Good class discussion needs your contribution. If you must miss a class, you are responsible for making up the material covered in that lecture.



You may choose from any number of Data Structures with Java textbooks that are available, however, we do not require any specific text. There are also lots of on-line resources available.

Links to free online data structures textbooks:

Course Policies

Use of electronics in class

Please make sure your cell phones are off. I discourage the use of smartphones unless used as a mandated accommodation. It is distracting for those around you (Sana et al., 2013), for lecturers, and can be distracting for you. There is also empirical evidence that students learn better and remember more by taking notes by hand (Mueller & Oppenheimer, 2014). Please see me if you have concerns about this and I will work with you to support your learning needs.

Collaboration, Academic Honesty

Computer science, both academically and professionally, is a collaborative discipline. In any collaboration, however, all parties are expected to make their own contributions and to generously credit the contributions of others. In our class, therefore, collaboration on homework and programming assignments is encouraged, but you as an individual are responsible for understanding all the material in the assignment and doing your own work. Always strive to do your best, give generous credit to others, start early, and seek help early from both your professors and classmates.

The following rules are intended to help you get the most out of your education and to clarify the line between honest and dishonest work. We reserve the right to ask you to verbally explain the reasoning behind any answer or code that you turn in and to modify your project grade based on your answers. It is vitally important that you turn in work that is your own. We do use automated plagiarism detection software, so please be sure to abide by these, rather minimal, rules. Reports of academic dishonesty are handled by an academic review board and a finding of academic dishonesty may result in significant sanctions. For more details on Colby's Academic Integrity policies and procedures, see colby.edu/academicintegrity.

  • If you have had a substantive discussion of any homework or programming solution with a classmate, then be sure to cite them in your write-up. If you are unsure of what constitutes "substantive", then ask me or err on the side of caution. As one rule of thumb, if you see more than 10 lines of someone else's code, then you should cite them. You will not be penalized for working together.
  • You must not copy answers or code from another student either by hand or electronically. Another way to think about it is that you should be talking English with one another, not program languages.

How to succeed

Labs and Projects: Come to lab ready to focus on the new project. Ask the lab instructor and TA for help if you need it. Talk to your peers about the course concepts.

Quizzes: Study for the quizzes by doing the homeworks. We will drop the lowest two quiz grades. If you make a silly mistake one week, it won't affect your grade.

Short homeworks: Try them. You will receive full credit as long as you make an honest attempt to complete every question. Please ask or email questions to the professor if something isn't clear (see 30-Minute Rule below). As long as you submit your response by Thursday at noon on filer.colby.edu, you will get credit. Review the homework solutions on Thursday afternoon to check your understanding of the material before the quiz. There is no partial credit for late homeworks because we may go over the answers in class on Friday before you take the quiz.

Participation: Speak up in class. Come to office hours. Ask your your instructor or TA for help.

Final Exam: The final exam will be similar to a large set of quizzes (but written from a more wholistic perspective). The best way to study for the final exam is to retake all of the old quizzes (and quizzes from old semesters). Also, read through your notes and make sure you understand everything in them.

For more information about expectations and the assignment of grades, see this document.

Help and Discussion Outside of Lecture

  • Office Hours: Hannah and Bruce will all be available to help outside of class time with questions about concepts or projects. Please do not hesitate to stop by our offices, or send us an email. Not only do we enjoy talking about computer science, we want to get to know you!

  • Email: In addition to coming by our offices for help, you are welcome to send us email with a question. We read our email frequently and respond to questions as soon as possible.

  • Evening TA Help: In order to provide as much help as possible to you as you work on assignments in this course, the CS Department has hired upper-level CS students to work as TAs in the Davis 102 lab in the evenings . You are strongly encouraged to take advantage of this resource. The TAs are getting paid to help you, so don't feel guilty about asking them for help. See the section above called Evening TAs for specific times.

  • Guidelines:
    • 30-Minute Rule: If you have been stuck on a problem, such as a bug, for more than 30 minutes and have made no progress, despite your best efforts, please stop and get help. Email one of us, ask a TA, or consult a peer. If you don't get an answer immediately, do something else for a while. Please do not waste your time on one problem.
    • We are always happy to help you with any of your code for your projects. However, the earlier you come to us with questions, the happier we'll be to help you (we usually respond to a last-minute call for major help with the question "Why didn't you start earlier?").
    • Please feel free to raise any concerns or complaints about the course directly with either of us. You are also welcome to send us your concerns anonymously. We will gladly respond to them


You should back up any files related to this course. If the code you submit to us is somehow lost (through your fault or our fault), we must be able to get another copy from you. We suggest you use the college's personal server (filer.colby.edu) to store your work in this class, as it is regularly backed up.

You should never leave your work in a public folder on a computer in a public lab. Instead your work should always be kept in your private account or copied to your own media such as flash drives and deleted from the computer's hard disk when you are finished using the computer.

Don't gloss over errors in your code. That is, if you pretend there are no errors in your code when you know there are some there, we will take off more points than if you point out the errors that you were unable to fix.

General Policies

The Colby Affirmation

Colby College is a community dedicated to learning and committed to the growth and well-being of all its members.

As a community devoted to intellectual growth, we value academic integrity. We agree to take ownership of our academic work, to submit only work that is our own, to fully acknowledge the research and ideas of others in our work, and to abide by the instructions and regulations governing academic work established by the faculty.

As a community built on respect for ourselves, each other, and our physical environment, we recognize the diversity of people that have gathered here and that genuine inclusivity requires active, honest, and compassionate engagement with one another. We agree to respect each other, to honor community expectations, and to comply with college policies.

As a member of this community, I pledge to hold myself and others accountable to these values.

What does this mean to students?
  • We respect each other and ourselves.
  • We respect our physical spaces on campus.
  • We respect our academics and complete work honestly.

Title IX Statement

Colby College prohibits and will not tolerate sexual misconduct or gender-based discrimination of any kind. Colby is legally obligated to investigate sexual misconduct (including, but not limited to, sexual assault and sexual harassment) and other specific forms of behavior that violate federal and state laws (Title IX and Title VII, and the Maine Human Rights Act). Such behavior also requires the College to fulfill certain obligations under two other federal laws, the Violence Against Women Act (VAWA) and the Jeanne Clery Disclosure of Campus Security Policy and Campus Statistics Act (Clery Act). You can learn more about what constitutes sexual misconduct or to report an incident here.

If you wish to speak confidentially about an incident of sexual misconduct, you may contact:
  • Counseling Center: 207-859-4490
  • Emily Schusterbauer, Director Gender and Sexual Diversity Program (eeschust@colby.edu; 207- 859-4093)
  • Office of Religious & Spiritual Life: 207-859-4272
  • Dean of Religious & Spiritual Life, Kurt Nelson (kdnelson@colby.edu)
  • Jewish Chaplain, Erica Asch (elsasch@colby.edu)
  • Catholic Campus Minister, Charles Demm (cademm@colby.edu)
Students should be aware that faculty members are considered "responsible employees"; as such, if you disclose an incident of sexual misconduct to a faculty member, they have an obligation to report it to Melvin Adams, Colby's Title IX Coordinator. "Disclosure" may include communication in-person, via email/phone/text, or through class assignments.

Academic Accommodations

I am available to discuss academic accommodations that any student with a documented disability may require. Please note that you’ll need to provide a letter from the Dean of Studies Office documenting your approved accommodations. Please meet with me within two weeks of the start of the semester to make a request for accommodations so that we can work together with the College to make the appropriate arrangements for you. Kate McLaughlin, Associate Director of Access and Disability Services (kmclaugh@colby.edu) is the primary contact for accommodations and any questions related to educational testing and documentation.

Mental health: I care about my students’ well-being and understand they may face mental health challenges. Students are encouraged to seek support from the College’s available resources, including your advising dean and Counseling Services. (For immediate care, please call 207-859-4490 and press “0” to reach the on-call counselor.) I am willing to discuss reasonable accommodations during a crisis, but to fulfill our educational mission, students are expected to adhere to the attendance policy. Failure to do so because of mental health challenges may require consultation with the Dean of Studies Office.

Respect for Diversity

It is my intent that students from diverse backgrounds and perspectives be well-served by this course, that students' learning needs be addressed both in and out of class, and that the diversity that students bring to this class be viewed as a resource, strength and benefit. I expect you to feel challenged and sometimes outside of your comfort zone in this course, but it is my intent to present materials and activities that are inclusive and respectful of all persons, no matter their gender, sexual orientation, disability, age, socioeconomic status, ethnicity, race, culture, perspective, and other background characteristics.

I have attempted to avoid scheduling exams during major religious holidays. If, however, I have inadvertently scheduled an exam or major deadline that creates a conflict with your religious observances, please let me know within two weeks of the start of classes so that we can make other arrangements. Colby College is supportive of the religious practices of its students, faculty, and staff. The College is committed to ensuring that all students are able to observe their religious beliefs without academic penalty.

Class rosters are provided to each instructor with the student's legal name. I will gladly honor your request to address you by an alternate name and/or gender pronoun. Please advise me of this early in the semester so that I may make appropriate changes to my records.