CISC 3130: Data Structures
Fall 2017
1105 Old Ingersoll
T/Th 9:05–10:45am
Scott Dexter
0113 Old Ingersoll (basement)
T/Th 11am–12pm

Bulletin Description

Stacks and their implementations. Prefix, postfix, and infix notation. Queues and linked lists and their implementations. Binary and general trees and their implementations and traversals. Sorting and searching techniques. Graph algorithms.

Prerequisites and Corequisites

I expect you to have successfully completed CISC 3110 and thus be fairly knowledgeable about programming in C/C++, including fundamentals of object-oriented programming. I strongly recommend that you take CISC 3120 (Design & Implementation of Software Applications I) while you are taking this course, so you can move directly into CISC 3140, next semester.

Course Objectives

If you successfully complete this course, you will be able to In support of these objectives, your grade in the class will depend on how well you In addition, I expect you to In return, you can expect me to:

Schedule and Course Material

The main (required) textbook is the open textbook at http://opendatastructures.org/. We will be using the C++ edition. Feel free to read it in HTML, PDF, or purchase a hardcopy. Note that the author treats the book like an open-source project, so anyone can contribute changes or corrections. You will get extra credit if you contribute a change that is accepted. See the git repository at https://github.com/patmorin/ods.

In addition, we will be using a supplementary C++ textbook, also freely available online, called C++ Annotations (you can link directly to the main text here. This covers some "basic" C++ concepts as well as some of the more advanced concepts we'll need.

To help with the study of data structures, we will occasionally use tools from OpenDSA; feel free to explore that site on your own.

Finally, http://cplusplus.com is a valuable reference resource--especially the page about the STL. I may not assign readings directly from here, but I'll expect you to use it as necessary.

I will be occasionally be posting additional required readings, videos, etc, on the course calendar, which tells you about the topics we'll be discussing, and the reading you need to do in advance of, each day. I'll also post links to the required readings, as well as supplemental texts, on the Resources page.

Grading Policies

The grading policies determined by each section on the first day of the course are posted here.

Because this is a fast-paced, demanding course, I will generally not allow late submission of assignments. If you have a medical/family emergency that causes you to miss class, talk to me about it ASAP. If you find that events in your life are making it difficult for you to complete work for this class in timely fashion, please talk to me as soon as possible so that we can discuss how to get you through the class.

I will determine your final grade with a rough "curve." Almost always, I set the lowest "B-" grade to be the average for your section.. So if you are above the average for your section, you will earn a B or A; if you are below the average you will earn a C or lower. You can use this is a rough guide to translate your scores on exams and assignments into letter grades. Note that anyone who earns less than 50% of the available points (weighted according to the class policy) for individual work (see the grading policies page; this includes midterm, final, and programming assignments) will get an F in the class regardless of their overall score. Anyone who earns less thatn 50% of the available points for individual work (see the grading policies page; this includes midterm, final, and programming assignments) will get an F in the class regardless of their overall score.

I will use the webapp Gradesly to provide you a fairly current report on your grades and your standing in the course. Please be aware that your final standing in the course may differ from what is reported in Gradesly, because the final curve is applied only to students who take the final. In particular, your final grade could be somewhat lower than you expect.

Communication

Coming to my office hours is the best way to get my undivided attention. I strongly encourage you to visit me in office hours at least once; in fact, I will give you 1% of your course grade extra credit if you come to my office hours before the midterm with a question related to the course or the CIS majors. When you can't make it to office hours to ask a question, then email is far more effective than the telephone. If you call my office during office hours, I will answer if I'm not with another student; at other times, I may not answer. The college's voicemail system is clunky and time-consuming; if you leave me a voicemail, I will probably never listen to it. Email me instead. Make sure the subject of your email begins with CISC 3130 to make sure I give it quick attention. If you email me after 9pm or over the weekend, I may not respond until 9am the next weekday morning.

I will often email the entire class with hints, updates, or supplemental material. I will most often use the email address you have registered with the BC Portal (portal.brooklyn.cuny.edu), so please double-check that is up-to-date. Occasionally, I will need to communicate with you via CUNYfirst, so please ensure that also has a current email address for you (in the Self Service->Personal Information menu).

Values, Ethics, and Accountability

Academic Integrity

The faculty and administration of Brooklyn College and the City University of New York support an environment free from cheating and plagiarism. Each student is responsible for being aware of what constitutes cheating and plagiarism and for avoiding both. The complete text of the CUNY Academic Integrity Policy and the Brooklyn College procedure for implementing that policy can be found here:

http://www.cuny.edu/about/administration/offices/la/Academic_Integrity_Policy.pdf.

According to this policy, "A faculty member who suspects that a student has committed a violation of the CUNY Academic Integrity Policy shall review with the student the facts and circumstances of the suspected violation whenever feasible. Thereafter, a faculty member who concludes there has been an incident of academic dishonesty sufficient to affect the student's final course grade shall report such incidents...."

I take this policy very seriously. Among the actions which may constitute a policy violation in this course:

You are responsible for understanding the entirety of CUNY's policy; if you have questions, don't hesitate to ask me.

In particular, if I determine that part or all of one coding assignment has been copied from another, all students involved will get a zero on the assignment. You are responsible for safeguarding your work.

In general, I will encourage collaboration during class, but I also expect you to be able to work effectively on your own. You are responsible for understanding the entirety of CUNY's policy; if you have questions, don't hesitate to ask me.

Diversity, Inclusion, and Accessibility

I believe that the diversity of Brooklyn College classrooms is one of the most important characteristics of a Brooklyn College education. I am committed to creating an inclusive classroom that respects a wide range of experiences, viewpoints, and abilities.

If you have a documented disability, or suspect you may have a disability, I encourage you to set up an appointment with the Director of the Center for Student Disability Services, Ms. Valerie Stewart-Lovell, at 718.951.5538. If you have already registered with the Center for Student Disability Services, please provide me with the course accommodation form and discuss your specific accommodation with me. I will be more than happy to help.

Career Services

Most computer science courses, certainly including this one, are about enhancing your abilities and providing skills you will need to be a successful professional. In addition to your coursework, I strongly recommend you engage with the College's excellent career center. It's never too early to start preparing for your career; if you're interested in preparing a resume, finding a job or internship, connecting your college experience with a career or developing professional skills, visit the Magner Career Center at: 1303 James Hall, call 718-951-5696 or sign up for workshops and jobs and internship notifications on the WebCentral Portal (http://portal.brooklyn.cuny.edu).